[
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n## User settings\nxcuserdata/\n\n## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)\n*.xcscmblueprint\n*.xccheckout\n\n## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)\nbuild/\nDerivedData/\n*.moved-aside\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\n\n## Obj-C/Swift specific\n*.hmap\n\n## App packaging\n*.ipa\n*.dSYM.zip\n*.dSYM\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n#\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\n# Packages/\n# Package.pins\n# Package.resolved\n# *.xcodeproj\n#\n# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata\n# hence it is not needed unless you have added a package configuration file to your project\n# .swiftpm\n\n.build/\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n#\n# Pods/\n#\n# Add this line if you want to avoid checking in source code from the Xcode workspace\n# *.xcworkspace\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build/\n\n# Accio dependency management\nDependencies/\n.accio/\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo.\n# Instead, use fastlane to re-generate the screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://docs.fastlane.tools/best-practices/source-control/#source-control\n\nfastlane/report.xml\nfastlane/Preview.html\nfastlane/screenshots/**/*.png\nfastlane/test_output\n\n# Code Injection\n#\n# After new code Injection tools there's a generated folder /iOSInjectionProject\n# https://github.com/johnno1962/injectionforxcode\n\niOSInjectionProject/\n\n.DS_Store\n**/.DS_Store\n\n**/Secrets.swift\n\n**/*.xcuserstate\n\n*.xcuserstate\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/AnchorToHeadApp.swift",
    "content": "//\n//  AnchorToHeadApp.swift\n//  AnchorToHead\n//\n//  Created by IVAN CAMPOS on 2/21/24.\n//\n\nimport SwiftUI\n\n@main\nstruct AnchorToHeadApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n        \n        ImmersiveSpace(id: \"ImmersiveSpace\") {\n            ImmersiveView()\n        }\n    }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "AnchorToHead/AnchorToHead/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  AnchorToHead\n//\n//  Created by IVAN CAMPOS on 2/21/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport RealityKitContent\n\nstruct ContentView: View {\n    \n    @State private var showImmersiveSpace = false\n    @State private var immersiveSpaceIsShown = false\n    \n    @Environment(\\.openImmersiveSpace) var openImmersiveSpace\n    @Environment(\\.dismissImmersiveSpace) var dismissImmersiveSpace\n    \n    var body: some View {\n        VStack {\n            Text(\"Head Tracking Anchor\")\n            \n            Toggle(\"Show Immersive Space\", isOn: $showImmersiveSpace)\n                .toggleStyle(.button)\n                .padding(.top, 50)\n        }\n        .padding()\n        .onChange(of: showImmersiveSpace) { _, newValue in\n            Task {\n                if newValue {\n                    switch await openImmersiveSpace(id: \"ImmersiveSpace\") {\n                    case .opened:\n                        immersiveSpaceIsShown = true\n                    case .error, .userCancelled:\n                        fallthrough\n                    @unknown default:\n                        immersiveSpaceIsShown = false\n                        showImmersiveSpace = false\n                    }\n                } else if immersiveSpaceIsShown {\n                    await dismissImmersiveSpace()\n                    immersiveSpaceIsShown = false\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/ImmersiveView.swift",
    "content": "//\n//  ImmersiveView.swift\n//  AnchorToHead\n//\n//  Created by IVAN CAMPOS on 2/21/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport RealityKitContent\n\nstruct ImmersiveView: View {\n    \n    @State var headTrackedEntity: Entity = {\n        let headAnchor = AnchorEntity(.head)\n        headAnchor.position = [0, -0.15, -1]\n        return headAnchor\n    }()\n    \n    var body: some View {\n        RealityView { content in\n            \n            let boxEntity = ModelEntity(\n                mesh: .generateBox(size: 0.1),\n                materials: [UnlitMaterial(color: UIColor(hex: \"7DFDFE\"))]\n            )\n            \n            headTrackedEntity.addChild(boxEntity)\n            content.add(headTrackedEntity)\n            \n        }\n    }\n}\n\n// Function to create UIColor from hex string\nextension UIColor {\n    convenience init(hex: String) {\n        \n        let hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines)\n        let scanner = Scanner(string: hexString)\n        \n        var color: UInt64 = 0\n        scanner.scanHexInt64(&color)\n        \n        let r = CGFloat((color & 0xFF0000) >> 16) / 255.0\n        let g = CGFloat((color & 0x00FF00) >> 8) / 255.0\n        let b = CGFloat(color & 0x0000FF) / 255.0\n        \n        self.init(red: r, green: g, blue: b, alpha: 1.0)\n    }\n}\n\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B2421A92B86D53900BDC25D /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B2421A82B86D53900BDC25D /* RealityKitContent */; };\n\t\t3B2421AB2B86D53900BDC25D /* AnchorToHeadApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421AA2B86D53900BDC25D /* AnchorToHeadApp.swift */; };\n\t\t3B2421AD2B86D53900BDC25D /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421AC2B86D53900BDC25D /* ContentView.swift */; };\n\t\t3B2421AF2B86D53900BDC25D /* ImmersiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421AE2B86D53900BDC25D /* ImmersiveView.swift */; };\n\t\t3B2421B12B86D53A00BDC25D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2421B02B86D53A00BDC25D /* Assets.xcassets */; };\n\t\t3B2421B42B86D53A00BDC25D /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2421B32B86D53A00BDC25D /* Preview Assets.xcassets */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B2421A32B86D53900BDC25D /* AnchorToHead.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnchorToHead.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B2421A72B86D53900BDC25D /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3B2421AA2B86D53900BDC25D /* AnchorToHeadApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnchorToHeadApp.swift; sourceTree = \"<group>\"; };\n\t\t3B2421AC2B86D53900BDC25D /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3B2421AE2B86D53900BDC25D /* ImmersiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImmersiveView.swift; sourceTree = \"<group>\"; };\n\t\t3B2421B02B86D53A00BDC25D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3B2421B32B86D53A00BDC25D /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3B2421B52B86D53A00BDC25D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B2421A02B86D53900BDC25D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2421A92B86D53900BDC25D /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B24219A2B86D53900BDC25D = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421A52B86D53900BDC25D /* AnchorToHead */,\n\t\t\t\t3B2421A62B86D53900BDC25D /* Packages */,\n\t\t\t\t3B2421A42B86D53900BDC25D /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2421A42B86D53900BDC25D /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421A32B86D53900BDC25D /* AnchorToHead.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2421A52B86D53900BDC25D /* AnchorToHead */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421AA2B86D53900BDC25D /* AnchorToHeadApp.swift */,\n\t\t\t\t3B2421AC2B86D53900BDC25D /* ContentView.swift */,\n\t\t\t\t3B2421AE2B86D53900BDC25D /* ImmersiveView.swift */,\n\t\t\t\t3B2421B02B86D53A00BDC25D /* Assets.xcassets */,\n\t\t\t\t3B2421B52B86D53A00BDC25D /* Info.plist */,\n\t\t\t\t3B2421B22B86D53A00BDC25D /* Preview Content */,\n\t\t\t);\n\t\t\tpath = AnchorToHead;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2421A62B86D53900BDC25D /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421A72B86D53900BDC25D /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2421B22B86D53A00BDC25D /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421B32B86D53A00BDC25D /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B2421A22B86D53900BDC25D /* AnchorToHead */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B2421B82B86D53A00BDC25D /* Build configuration list for PBXNativeTarget \"AnchorToHead\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B24219F2B86D53900BDC25D /* Sources */,\n\t\t\t\t3B2421A02B86D53900BDC25D /* Frameworks */,\n\t\t\t\t3B2421A12B86D53900BDC25D /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = AnchorToHead;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B2421A82B86D53900BDC25D /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = AnchorToHead;\n\t\t\tproductReference = 3B2421A32B86D53900BDC25D /* AnchorToHead.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B24219B2B86D53900BDC25D /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B2421A22B86D53900BDC25D = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B24219E2B86D53900BDC25D /* Build configuration list for PBXProject \"AnchorToHead\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B24219A2B86D53900BDC25D;\n\t\t\tproductRefGroup = 3B2421A42B86D53900BDC25D /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B2421A22B86D53900BDC25D /* AnchorToHead */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B2421A12B86D53900BDC25D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2421B42B86D53A00BDC25D /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3B2421B12B86D53A00BDC25D /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B24219F2B86D53900BDC25D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2421AD2B86D53900BDC25D /* ContentView.swift in Sources */,\n\t\t\t\t3B2421AB2B86D53900BDC25D /* AnchorToHeadApp.swift in Sources */,\n\t\t\t\t3B2421AF2B86D53900BDC25D /* ImmersiveView.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B2421B62B86D53A00BDC25D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B2421B72B86D53A00BDC25D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B2421B92B86D53A00BDC25D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"AnchorToHead/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.AnchorToHead;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B2421BA2B86D53A00BDC25D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"AnchorToHead/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.AnchorToHead;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B24219E2B86D53900BDC25D /* Build configuration list for PBXProject \"AnchorToHead\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B2421B62B86D53A00BDC25D /* Debug */,\n\t\t\t\t3B2421B72B86D53A00BDC25D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B2421B82B86D53A00BDC25D /* Build configuration list for PBXNativeTarget \"AnchorToHead\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B2421B92B86D53A00BDC25D /* Debug */,\n\t\t\t\t3B2421BA2B86D53A00BDC25D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B2421A82B86D53900BDC25D /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B24219B2B86D53900BDC25D /* Project object */;\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"D66134B1-3681-4A8E-AFE5-29F257229F3B\"\n  }\n}"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n      0.86602545,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.86602545,\n      0,\n      0.0035969093,\n      0.35542378,\n      0.62919164,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"65F6F990-A780-4474-B78B-572E0E4E273D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.86602545,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.86602545,\n      0,\n      1.1972517e-08,\n      2.6179132,\n      0.43191218,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"66168B71-AB05-424E-8B6C-D33D6E61B08F\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.5,\n      0,\n      0,\n      0.5,\n      0.8660254,\n      0,\n      0,\n      0.23875366,\n      0.4135335,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"AF09ED6F-1707-48FD-8720-65B998362C09\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      2.8836339,\n      -0.107588194,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Left\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Right\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"CB766F92-EE55-4A63-9401-E7B8C009764D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"D66134B1-3681-4A8E-AFE5-29F257229F3B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.26894823,\n      0.26934713,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\",\n        \"GridMaterial\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere_Left\", \"Sphere_Right\", \"GridMaterial\"]\n    def Sphere \"Sphere_Right\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Sphere \"Sphere_Left\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (-0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "AnchorToHead/README.md",
    "content": "# Anchor To Head\n\n_Allow an entity to automatically follow your head, hands-free._\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/5dbb1c74-0dbe-40a0-8df7-16d762ee7482\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Battery Life/Battery Life/Battery_LifeApp.swift",
    "content": "//\n//  Battery_LifeApp.swift\n//  Battery Life\n//\n//  Created by IVAN CAMPOS on 3/13/24.\n//\n\nimport SwiftUI\n\n@main\nstruct Battery_LifeApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n        .defaultSize(width: 600, height: 300)\n    }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  Battery Life\n//\n//  Created by IVAN CAMPOS on 3/13/24.\n//\n\nimport SwiftUI\n\nstruct ContentView: View {\n    @ObservedObject var viewModel = ViewModel()\n    \n    var body: some View {\n        VStack {\n            Text(batteryLevelText)\n                .font(.custom(\"SFProDisplay-Regular\", size: 100))\n                .foregroundColor(batteryColor)\n                .padding()\n            \n            Text(batteryStateText)\n                .font(.custom(\"SFProDisplay-Regular\", size: 50))\n                .padding()\n        }\n    }\n    \n    private var batteryLevelText: String {\n        let level = viewModel.batteryLevel\n        return level >= 0 ? \"\\(Int(level * 100))%\" : \"Unknown\"\n    }\n    \n    private var batteryColor: Color {\n        switch viewModel.batteryLevel {\n        case 0.0..<0.2: return .red\n        case 0.2..<0.4: return .orange\n        case 0.4..<0.6: return .yellow\n        default: return .green\n        }\n    }\n    \n    private var batteryStateText: String {\n        switch viewModel.batteryState {\n        case .charging: return \"􀢋\"\n        case .unplugged: return \"Unplugged\"\n        case .full: return \"􀛨\"\n        default: return \"Unknown\"\n        }\n    }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIAppFonts</key>\n\t<array>\n\t\t<string>SF-Pro-Display-Regular.otf</string>\n\t</array>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Battery Life/Battery Life/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B9E088E2BA158C5008297EC /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B9E088D2BA158C5008297EC /* ViewModel.swift */; };\n\t\t3B9E08902BA163B3008297EC /* SF-Pro-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 3B9E088F2BA163B3008297EC /* SF-Pro-Display-Regular.otf */; };\n\t\t3BDFB9412B7D439600474AFB /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3BDFB9402B7D439600474AFB /* RealityKitContent */; };\n\t\t3BDFB9432B7D439600474AFB /* Battery_LifeApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFB9422B7D439600474AFB /* Battery_LifeApp.swift */; };\n\t\t3BDFB9452B7D439600474AFB /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFB9442B7D439600474AFB /* ContentView.swift */; };\n\t\t3BDFB9472B7D439700474AFB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BDFB9462B7D439700474AFB /* Assets.xcassets */; };\n\t\t3BDFB94A2B7D439700474AFB /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BDFB9492B7D439700474AFB /* Preview Assets.xcassets */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B9E088D2BA158C5008297EC /* ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ViewModel.swift; path = ../ViewModel.swift; sourceTree = \"<group>\"; };\n\t\t3B9E088F2BA163B3008297EC /* SF-Pro-Display-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = \"SF-Pro-Display-Regular.otf\"; sourceTree = \"<group>\"; };\n\t\t3BDFB93B2B7D439600474AFB /* Battery Life.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"Battery Life.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3BDFB93F2B7D439600474AFB /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3BDFB9422B7D439600474AFB /* Battery_LifeApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Battery_LifeApp.swift; sourceTree = \"<group>\"; };\n\t\t3BDFB9442B7D439600474AFB /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3BDFB9462B7D439700474AFB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3BDFB9492B7D439700474AFB /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3BDFB94B2B7D439700474AFB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3BDFB9382B7D439600474AFB /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFB9412B7D439600474AFB /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B9E08912BA1658B008297EC /* Fonts */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B9E088F2BA163B3008297EC /* SF-Pro-Display-Regular.otf */,\n\t\t\t);\n\t\t\tpath = Fonts;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFB9322B7D439600474AFB = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFB93D2B7D439600474AFB /* Battery Life */,\n\t\t\t\t3BDFB93E2B7D439600474AFB /* Packages */,\n\t\t\t\t3BDFB93C2B7D439600474AFB /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFB93C2B7D439600474AFB /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFB93B2B7D439600474AFB /* Battery Life.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFB93D2B7D439600474AFB /* Battery Life */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B9E08912BA1658B008297EC /* Fonts */,\n\t\t\t\t3BDFB9422B7D439600474AFB /* Battery_LifeApp.swift */,\n\t\t\t\t3B9E088D2BA158C5008297EC /* ViewModel.swift */,\n\t\t\t\t3BDFB9442B7D439600474AFB /* ContentView.swift */,\n\t\t\t\t3BDFB9462B7D439700474AFB /* Assets.xcassets */,\n\t\t\t\t3BDFB94B2B7D439700474AFB /* Info.plist */,\n\t\t\t\t3BDFB9482B7D439700474AFB /* Preview Content */,\n\t\t\t);\n\t\t\tpath = \"Battery Life\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFB93E2B7D439600474AFB /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFB93F2B7D439600474AFB /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFB9482B7D439700474AFB /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFB9492B7D439700474AFB /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3BDFB93A2B7D439600474AFB /* Battery Life */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3BDFB94E2B7D439700474AFB /* Build configuration list for PBXNativeTarget \"Battery Life\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3BDFB9372B7D439600474AFB /* Sources */,\n\t\t\t\t3BDFB9382B7D439600474AFB /* Frameworks */,\n\t\t\t\t3BDFB9392B7D439600474AFB /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Battery Life\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3BDFB9402B7D439600474AFB /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = \"Battery Life\";\n\t\t\tproductReference = 3BDFB93B2B7D439600474AFB /* Battery Life.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3BDFB9332B7D439600474AFB /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3BDFB93A2B7D439600474AFB = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3BDFB9362B7D439600474AFB /* Build configuration list for PBXProject \"Battery Life\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3BDFB9322B7D439600474AFB;\n\t\t\tproductRefGroup = 3BDFB93C2B7D439600474AFB /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3BDFB93A2B7D439600474AFB /* Battery Life */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3BDFB9392B7D439600474AFB /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFB94A2B7D439700474AFB /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3B9E08902BA163B3008297EC /* SF-Pro-Display-Regular.otf in Resources */,\n\t\t\t\t3BDFB9472B7D439700474AFB /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3BDFB9372B7D439600474AFB /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFB9452B7D439600474AFB /* ContentView.swift in Sources */,\n\t\t\t\t3BDFB9432B7D439600474AFB /* Battery_LifeApp.swift in Sources */,\n\t\t\t\t3B9E088E2BA158C5008297EC /* ViewModel.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3BDFB94C2B7D439700474AFB /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3BDFB94D2B7D439700474AFB /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3BDFB94F2B7D439700474AFB /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Battery Life/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.Battery-Life\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3BDFB9502B7D439700474AFB /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Battery Life/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.Battery-Life\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3BDFB9362B7D439600474AFB /* Build configuration list for PBXProject \"Battery Life\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3BDFB94C2B7D439700474AFB /* Debug */,\n\t\t\t\t3BDFB94D2B7D439700474AFB /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3BDFB94E2B7D439700474AFB /* Build configuration list for PBXNativeTarget \"Battery Life\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3BDFB94F2B7D439700474AFB /* Debug */,\n\t\t\t\t3BDFB9502B7D439700474AFB /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3BDFB9402B7D439600474AFB /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3BDFB9332B7D439600474AFB /* Project object */;\n}\n"
  },
  {
    "path": "Battery Life/Battery Life.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Battery Life/Battery Life.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"03E02005-EFA6-48D6-8A76-05B2822A74E9\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"1CBF3893-ABFD-408C-8B91-045BFD257808\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\"\n  }\n}"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      0.9807314,\n      -1.9820146e-10,\n      -0.195361,\n      0,\n      -0.10051192,\n      0.85749435,\n      -0.5045798,\n      0,\n      0.16752096,\n      0.51449335,\n      0.84097165,\n      0,\n      0.09084191,\n      0.05849296,\n      0.13903293,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"Sphere\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"1CBF3893-ABFD-408C-8B91-045BFD257808\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"03E02005-EFA6-48D6-8A76-05B2822A74E9\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.2681068,\n      0.26850593,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"440DE5B4-E4E4-459B-AABF-9ACE96319272\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"FBD8436F-6B8B-4B82-99B5-995D538B4704\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "Battery Life/README.md",
    "content": "# Battery Life\n\nDisplay the Apple Vision Pro's battery level and status\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/e7f392f8-ea44-4ca8-9d55-457e35365acc\n"
  },
  {
    "path": "Battery Life/ViewModel.swift",
    "content": "//\n//  ViewModel.swift\n//  Battery Life\n//\n//  Created by IVAN CAMPOS on 3/13/24.\n//\n\nimport SwiftUI\n\n// BatteryViewModel.swift\nclass ViewModel: ObservableObject {\n    @Published var batteryLevel: Float = UIDevice.current.batteryLevel\n    @Published var batteryState: UIDevice.BatteryState = UIDevice.current.batteryState\n    \n    init() {\n        UIDevice.current.isBatteryMonitoringEnabled = true\n        \n        updateBatteryStatus()\n        \n        NotificationCenter.default.addObserver(self, selector: #selector(updateBatteryStatus), name: UIDevice.batteryLevelDidChangeNotification, object: nil)\n        NotificationCenter.default.addObserver(self, selector: #selector(updateBatteryStatus), name: UIDevice.batteryStateDidChangeNotification, object: nil)\n    }\n    \n    @objc private func updateBatteryStatus() {\n        self.batteryLevel = UIDevice.current.batteryLevel\n        self.batteryState = UIDevice.current.batteryState\n    }\n    \n    deinit {\n        NotificationCenter.default.removeObserver(self)\n    }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "ChatAVP/ChatAVP/ChatAVPApp.swift",
    "content": "//\n//  ChatAVPApp.swift\n//  ChatAVP\n//\n//  Created by IVAN CAMPOS on 1/26/24.\n//\n\nimport SwiftUI\n\n@main\nstruct ChatAVPApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n    }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  ChatAVP\n//\n//  Created by IVAN CAMPOS on 1/26/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport RealityKitContent\n\nstruct ContentView: View {\n    \n    @State private var userInput: String = \"\"\n    \n    //API Response will be rendered here\n    @State private var apiResponse: String = \"\"\n    \n    private var openAiApiKey: String = Secrets.OPENAI_API_KEY // Replace this with your actual OpenAI API key\n    \n    var body: some View {\n        VStack {\n            \n            SearchBar(text: $userInput, onSearchButtonClicked: {\n                sendToOpenAI(input: userInput)\n            })\n            \n            ScrollView {\n                TypewriterText(fullText: apiResponse, speed: 0.05)\n                    .padding()\n            }\n        }\n        .padding(.top)\n    }\n    \n    func sendToOpenAI(input: String) {\n        // Ensure the URL is correct and safe to use\n        guard let url = URL(string: \"https://api.openai.com/v1/chat/completions\") else {\n            print(\"Invalid URL\")\n            return\n        }\n        \n        var request = URLRequest(url: url)\n        request.httpMethod = \"POST\"\n        request.addValue(\"Bearer \\(openAiApiKey)\", forHTTPHeaderField: \"Authorization\") // Replace YOUR_API_KEY with your actual API key\n        request.addValue(\"application/json\", forHTTPHeaderField: \"Content-Type\")\n        \n        // Prepare the body with correct parameters\n        let body: [String: Any] = [\n            \"model\": \"gpt-3.5-turbo\",\n            \"messages\": [\n                [\"role\": \"user\", \"content\": input]\n            ]\n        ]\n        \n        // Ensure the request's body can be encoded\n        guard let httpBody = try? JSONSerialization.data(withJSONObject: body, options: []) else {\n            print(\"Failed to serialize body\")\n            return\n        }\n        request.httpBody = httpBody\n        \n        let task = URLSession.shared.dataTask(with: request) { data, response, error in\n            if let error = error {\n                DispatchQueue.main.async {\n                    self.apiResponse = \"Error making request: \\(error.localizedDescription)\"\n                }\n                return\n            }\n            \n            guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else {\n                DispatchQueue.main.async {\n                    self.apiResponse = \"Error: Server returned an error status code.\"\n                }\n                return\n            }\n            \n            guard let data = data else {\n                DispatchQueue.main.async {\n                    self.apiResponse = \"Error: No data received.\"\n                }\n                return\n            }\n            \n            // Decode the JSON response\n            do {\n                let decoder = JSONDecoder()\n                let response = try decoder.decode(OpenAIResponse.self, from: data)\n                DispatchQueue.main.async {\n                    // Update the UI with the first choice's text\n                    self.apiResponse = response.choices.first?.message.content ?? \"No response text.\"\n                }\n            } catch {\n                DispatchQueue.main.async {\n                    self.apiResponse = \"Error decoding response: \\(error.localizedDescription)\"\n                }\n            }\n        }\n        task.resume()\n    }\n    \n    struct OpenAIResponse: Codable {\n        let choices: [Choice]\n    }\n    \n    struct Choice: Codable {\n        let message: Message\n    }\n    \n    struct Message: Codable {\n        let role: String\n        let content: String\n    }\n    \n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/SearchBar.swift",
    "content": "//\n//  SearchBar.swift\n//  ChatAVP\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\n\nstruct SearchBar: UIViewRepresentable {\n    @Binding var text: String\n    var onSearchButtonClicked: () -> Void\n    \n    class Coordinator: NSObject, UISearchBarDelegate {\n        var parent: SearchBar\n        \n        init(_ parent: SearchBar) {\n            self.parent = parent\n        }\n        \n        func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {\n            parent.text = searchText\n        }\n        \n        func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {\n            parent.onSearchButtonClicked()\n            searchBar.resignFirstResponder()\n        }\n        \n        func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {\n            searchBar.resignFirstResponder()\n        }\n    }\n    \n    func makeCoordinator() -> Coordinator {\n        Coordinator(self)\n    }\n    \n    func makeUIView(context: Context) -> UISearchBar {\n        let searchBar = UISearchBar(frame: .zero)\n        searchBar.delegate = context.coordinator\n        searchBar.searchBarStyle = .minimal\n        searchBar.placeholder = \"Enter your prompt here\"\n        \n        return searchBar\n    }\n    \n    func updateUIView(_ uiView: UISearchBar, context: Context) {\n        uiView.text = text\n    }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/TypewriterEffect.swift",
    "content": "//\n//  TypewriterEffect.swift\n//  ChatAVP\n//\n//  Created by IVAN CAMPOS on 2/18/24.\n//\n\nimport SwiftUI\n\nstruct TypewriterText: View {\n    let fullText: String\n    let speed: TimeInterval\n    @State private var visibleCharactersCount: Int = 0\n    private let timer = Timer.publish(every: 0.05, on: .main, in: .common).autoconnect()\n\n    var body: some View {\n        Text(String(fullText.prefix(visibleCharactersCount)))\n            .font(.system(size: 24, weight: .bold, design: .monospaced)) // Customize font as needed\n            .padding()\n            .lineLimit(nil) // Ensure there is no line limit\n            .fixedSize(horizontal: false, vertical: true) // Allow the text to grow vertically\n            .multilineTextAlignment(.leading) // Align text to the left\n            .onReceive(timer) { _ in\n                // Incrementally reveal the text\n                if visibleCharactersCount < fullText.count {\n                    visibleCharactersCount += 1\n                } else {\n                    timer.upstream.connect().cancel() // Stop the timer when the entire text is displayed\n                }\n            }\n            .onAppear {\n                // Reset the visible character count when the view appears\n                visibleCharactersCount = 0\n            }\n    }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B3A05B52B64B149008FF558 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B3A05B42B64B149008FF558 /* RealityKitContent */; };\n\t\t3B3A05B72B64B149008FF558 /* ChatAVPApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A05B62B64B149008FF558 /* ChatAVPApp.swift */; };\n\t\t3B3A05B92B64B149008FF558 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A05B82B64B149008FF558 /* ContentView.swift */; };\n\t\t3B3A05BB2B64B14A008FF558 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B3A05BA2B64B14A008FF558 /* Assets.xcassets */; };\n\t\t3B3A05BE2B64B14A008FF558 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B3A05BD2B64B14A008FF558 /* Preview Assets.xcassets */; };\n\t\t3B3C71E32B82A30E00167B5B /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3C71E22B82A30E00167B5B /* SearchBar.swift */; };\n\t\t3B3C71E52B82AC9E00167B5B /* TypewriterEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3C71E42B82AC9E00167B5B /* TypewriterEffect.swift */; };\n\t\t3B3D81C72B829D6900096853 /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3D81C62B829D6900096853 /* Secrets.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B3A05AF2B64B149008FF558 /* ChatAVP.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ChatAVP.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B3A05B32B64B149008FF558 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3B3A05B62B64B149008FF558 /* ChatAVPApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatAVPApp.swift; sourceTree = \"<group>\"; };\n\t\t3B3A05B82B64B149008FF558 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3B3A05BA2B64B14A008FF558 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3B3A05BD2B64B14A008FF558 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3B3A05BF2B64B14A008FF558 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3B3C71E22B82A30E00167B5B /* SearchBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = \"<group>\"; };\n\t\t3B3C71E42B82AC9E00167B5B /* TypewriterEffect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypewriterEffect.swift; sourceTree = \"<group>\"; };\n\t\t3B3D81C62B829D6900096853 /* Secrets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Secrets.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B3A05AC2B64B149008FF558 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B3A05B52B64B149008FF558 /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B3A05A62B64B149008FF558 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A05B12B64B149008FF558 /* ChatAVP */,\n\t\t\t\t3B3A05B22B64B149008FF558 /* Packages */,\n\t\t\t\t3B3A05B02B64B149008FF558 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B3A05B02B64B149008FF558 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A05AF2B64B149008FF558 /* ChatAVP.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B3A05B12B64B149008FF558 /* ChatAVP */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A05B62B64B149008FF558 /* ChatAVPApp.swift */,\n\t\t\t\t3B3A05B82B64B149008FF558 /* ContentView.swift */,\n\t\t\t\t3B3C71E22B82A30E00167B5B /* SearchBar.swift */,\n\t\t\t\t3B3D81C62B829D6900096853 /* Secrets.swift */,\n\t\t\t\t3B3C71E42B82AC9E00167B5B /* TypewriterEffect.swift */,\n\t\t\t\t3B3A05BA2B64B14A008FF558 /* Assets.xcassets */,\n\t\t\t\t3B3A05BF2B64B14A008FF558 /* Info.plist */,\n\t\t\t\t3B3A05BC2B64B14A008FF558 /* Preview Content */,\n\t\t\t);\n\t\t\tpath = ChatAVP;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B3A05B22B64B149008FF558 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A05B32B64B149008FF558 /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B3A05BC2B64B14A008FF558 /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A05BD2B64B14A008FF558 /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B3A05AE2B64B149008FF558 /* ChatAVP */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B3A05C22B64B14A008FF558 /* Build configuration list for PBXNativeTarget \"ChatAVP\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B3A05AB2B64B149008FF558 /* Sources */,\n\t\t\t\t3B3A05AC2B64B149008FF558 /* Frameworks */,\n\t\t\t\t3B3A05AD2B64B149008FF558 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = ChatAVP;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B3A05B42B64B149008FF558 /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = chatAVP;\n\t\t\tproductReference = 3B3A05AF2B64B149008FF558 /* ChatAVP.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B3A05A72B64B149008FF558 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B3A05AE2B64B149008FF558 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B3A05AA2B64B149008FF558 /* Build configuration list for PBXProject \"ChatAVP\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B3A05A62B64B149008FF558;\n\t\t\tproductRefGroup = 3B3A05B02B64B149008FF558 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B3A05AE2B64B149008FF558 /* ChatAVP */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B3A05AD2B64B149008FF558 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B3A05BE2B64B14A008FF558 /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3B3A05BB2B64B14A008FF558 /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B3A05AB2B64B149008FF558 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B3A05B92B64B149008FF558 /* ContentView.swift in Sources */,\n\t\t\t\t3B3C71E32B82A30E00167B5B /* SearchBar.swift in Sources */,\n\t\t\t\t3B3D81C72B829D6900096853 /* Secrets.swift in Sources */,\n\t\t\t\t3B3A05B72B64B149008FF558 /* ChatAVPApp.swift in Sources */,\n\t\t\t\t3B3C71E52B82AC9E00167B5B /* TypewriterEffect.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B3A05C02B64B14A008FF558 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B3A05C12B64B14A008FF558 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B3A05C32B64B14A008FF558 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"chatAVP/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.chatAVP;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B3A05C42B64B14A008FF558 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"chatAVP/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.chatAVP;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B3A05AA2B64B149008FF558 /* Build configuration list for PBXProject \"ChatAVP\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B3A05C02B64B14A008FF558 /* Debug */,\n\t\t\t\t3B3A05C12B64B14A008FF558 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B3A05C22B64B14A008FF558 /* Build configuration list for PBXNativeTarget \"ChatAVP\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B3A05C32B64B14A008FF558 /* Debug */,\n\t\t\t\t3B3A05C42B64B14A008FF558 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B3A05B42B64B149008FF558 /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B3A05A72B64B149008FF558 /* Project object */;\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/ivancampos/Code/visionOS/ChatAVP/ChatAVP.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "ChatAVP/ChatAVP.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"03E02005-EFA6-48D6-8A76-05B2822A74E9\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"1CBF3893-ABFD-408C-8B91-045BFD257808\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\"\n  }\n}"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      0.9807314,\n      -1.9820146e-10,\n      -0.195361,\n      0,\n      -0.10051192,\n      0.85749435,\n      -0.5045798,\n      0,\n      0.16752096,\n      0.51449335,\n      0.84097165,\n      0,\n      0.09084191,\n      0.05849296,\n      0.13903293,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"Sphere\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"1CBF3893-ABFD-408C-8B91-045BFD257808\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"03E02005-EFA6-48D6-8A76-05B2822A74E9\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.2681068,\n      0.26850593,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"440DE5B4-E4E4-459B-AABF-9ACE96319272\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"FBD8436F-6B8B-4B82-99B5-995D538B4704\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "ChatAVP/README.md",
    "content": "# ChatAVP\n**Chat Apple Vision Pro (ChatAVP):** Chat with the OpenAI API for visionOS  \n\n## Instructions\n***Before running locally,*** be sure to update the following line in ContentView.swift:\n* **From:**\n`private var openAiApiKey: String = Secrets.OPENAI_API_KEY // Replace this with your actual OpenAI API key`\n* **To:**\n`private var openAiApiKey: String = \"sk-##############...\"`\n<br/>\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/11528bf5-edcf-457b-b822-7b430fc1dd30\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Countdown/Countdown/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  Countdown\n//\n//  Created by IVAN CAMPOS on 3/17/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport RealityKitContent\n\nstruct ContentView: View {\n    \n    @State private var showImmersiveSpace = false\n    @State private var immersiveSpaceIsShown = false\n    \n    @Environment(\\.openImmersiveSpace) var openImmersiveSpace\n    @Environment(\\.dismissImmersiveSpace) var dismissImmersiveSpace\n    \n    var body: some View {\n        VStack {\n            Model3D(named: \"Scene\", bundle: realityKitContentBundle)\n                .padding(.bottom, 50)\n            \n            Toggle(\"Show Immersive Space\", isOn: $showImmersiveSpace)\n                .toggleStyle(.button)\n                .padding(.top, 50)\n        }\n        .padding()\n        .onChange(of: showImmersiveSpace) { _, newValue in\n            Task {\n                if newValue {\n                    switch await openImmersiveSpace(id: \"ImmersiveSpace\") {\n                    case .opened:\n                        immersiveSpaceIsShown = true\n                    case .error, .userCancelled:\n                        fallthrough\n                    @unknown default:\n                        immersiveSpaceIsShown = false\n                        showImmersiveSpace = false\n                    }\n                } else if immersiveSpaceIsShown {\n                    await dismissImmersiveSpace()\n                    immersiveSpaceIsShown = false\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Countdown/Countdown/CountdownApp.swift",
    "content": "//\n//  CountdownApp.swift\n//  Countdown\n//\n//  Created by IVAN CAMPOS on 3/17/24.\n//\n\nimport SwiftUI\n\n@main\nstruct CountdownApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n        \n        ImmersiveSpace(id: \"ImmersiveSpace\") {\n            ImmersiveView()\n        }\n    }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Extensions.swift",
    "content": "//\n//  Extensions.swift\n//  Countdown\n//\n//  Created by IVAN CAMPOS on 3/17/24.\n//\n\nimport SwiftUI\n\n// Function to create UIColor from hex string\nextension UIColor {\n    convenience init(hex: String) {\n        \n        let hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines)\n        let scanner = Scanner(string: hexString)\n        \n        var color: UInt64 = 0\n        scanner.scanHexInt64(&color)\n        \n        let r = CGFloat((color & 0xFF0000) >> 16) / 255.0\n        let g = CGFloat((color & 0x00FF00) >> 8) / 255.0\n        let b = CGFloat(color & 0x0000FF) / 255.0\n        \n        self.init(red: r, green: g, blue: b, alpha: 1.0)\n    }\n}\n"
  },
  {
    "path": "Countdown/Countdown/ImmersiveView.swift",
    "content": "//\n//  ImmersiveView.swift\n//  Countdown\n//\n//  Created by IVAN CAMPOS on 3/17/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport RealityKitContent\n\nstruct ImmersiveView: View {\n    \n    let BASE_FONT = \"Audiowide-Regular\"\n    let BASE_TEXTURE = \"Starfield.jpg\"\n    let TEXTURE_NOT_FOUND = \"Base Texture Not Found!\"\n    let COUNTDOWN_COLOR = \"ff9900\"\n    let END_MESSAGE = \"GAME\\nOVER\"\n    let END_MESSAGE_COLOR = \"FF0000\"\n    let FONT_SIZE = 0.3\n    \n    var body: some View {\n        \n        let timerEntity = createTimer()\n        \n        RealityView { content in\n            content.add(timerEntity)\n            \n            var resource = try! await TextureResource.load(named: BASE_TEXTURE)\n            \n            var material = SimpleMaterial()\n            material.color = SimpleMaterial.BaseColor(tint: .white, texture: .init(resource))\n            \n            let environment = Entity()\n            environment.components.set(ModelComponent(\n                mesh: .generateSphere(radius: 2000),\n                materials: [material]\n            ))\n            environment.scale *= .init(x: -2, y: 2, z: 2)\n            content.add(environment)\n        }\n    }\n    \n    func updatePosition(entity: Entity, x: Float, y: Float, z: Float) {\n        entity.position = SIMD3<Float>(x, y, z)\n    }\n    \n    func createTimer() -> ModelEntity {\n        \n        var startTime = 10\n        var timer: Timer?\n        \n        let timerEntity = ModelEntity(\n            mesh: .generateText(String(startTime), extrusionDepth: 0, font: UIFont(name: BASE_FONT, size: FONT_SIZE) ?? .systemFont(ofSize: FONT_SIZE), containerFrame: .zero,\n                                alignment: .center, lineBreakMode: .byCharWrapping),\n            materials: [SimpleMaterial(color: UIColor(hex: COUNTDOWN_COLOR), isMetallic: false)]\n        )\n        \n        updatePosition(entity: timerEntity, x: 0.0, y: 1.75, z: -2)\n        \n        timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in\n            startTime = startTime - 1\n            \n            if (startTime >= 0) {\n                \n                DispatchQueue.main.async {\n                    timerEntity.model?.mesh = .generateText(String(startTime), extrusionDepth: 0, font: UIFont(name: BASE_FONT, size: FONT_SIZE) ?? .systemFont(ofSize: FONT_SIZE), containerFrame: .zero, alignment: .center, lineBreakMode: .byCharWrapping)\n                    pulseEffect(entity: timerEntity)\n                }\n            } else {\n                timer?.invalidate()\n                \n                DispatchQueue.main.async {\n                    updatePosition(entity: timerEntity, x: -1.25, y: 1.75, z: -2)\n                    timerEntity.model?.mesh = .generateText(END_MESSAGE, extrusionDepth: 0, font: UIFont(name: BASE_FONT, size: FONT_SIZE) ?? .systemFont(ofSize: FONT_SIZE), containerFrame: .zero, alignment: .center, lineBreakMode: .byCharWrapping)\n                    timerEntity.model?.materials = [SimpleMaterial(color: UIColor(hex: END_MESSAGE_COLOR), isMetallic: false)]\n                }\n            }\n        }\n        \n        return timerEntity\n    }\n    \n    func pulseEffect(entity: ModelEntity) {\n        \n        let initialScale = entity.scale\n        let SCALE: Float = 3.0\n        let largerScale = SIMD3<Float>(initialScale.x * SCALE, initialScale.y * SCALE, initialScale.z * SCALE)\n        \n        entity.scale = largerScale\n        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {\n            entity.scale = initialScale\n            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {\n                entity.scale = initialScale\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIAppFonts</key>\n\t<array>\n\t\t<string>Audiowide-Regular.ttf</string>\n\t</array>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UISceneSessionRoleImmersiveSpaceApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Countdown/Countdown/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B2A044F2BA78446005543D6 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B2A044E2BA78446005543D6 /* RealityKitContent */; };\n\t\t3B2A04512BA78446005543D6 /* CountdownApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A04502BA78446005543D6 /* CountdownApp.swift */; };\n\t\t3B2A04532BA78446005543D6 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A04522BA78446005543D6 /* ContentView.swift */; };\n\t\t3B2A04552BA78446005543D6 /* ImmersiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A04542BA78446005543D6 /* ImmersiveView.swift */; };\n\t\t3B2A04572BA78447005543D6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A04562BA78447005543D6 /* Assets.xcassets */; };\n\t\t3B2A045A2BA78447005543D6 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A04592BA78447005543D6 /* Preview Assets.xcassets */; };\n\t\t3B2A04692BA7878B005543D6 /* Starfield.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A04672BA78737005543D6 /* Starfield.jpg */; };\n\t\t3B2A046A2BA7878B005543D6 /* Audiowide-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A04682BA7873F005543D6 /* Audiowide-Regular.ttf */; };\n\t\t3B2A046E2BA7886F005543D6 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A046D2BA7886F005543D6 /* Extensions.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B2A04492BA78446005543D6 /* Countdown.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Countdown.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B2A044D2BA78446005543D6 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3B2A04502BA78446005543D6 /* CountdownApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountdownApp.swift; sourceTree = \"<group>\"; };\n\t\t3B2A04522BA78446005543D6 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3B2A04542BA78446005543D6 /* ImmersiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImmersiveView.swift; sourceTree = \"<group>\"; };\n\t\t3B2A04562BA78447005543D6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3B2A04592BA78447005543D6 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3B2A045B2BA78447005543D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3B2A04672BA78737005543D6 /* Starfield.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = Starfield.jpg; sourceTree = \"<group>\"; };\n\t\t3B2A04682BA7873F005543D6 /* Audiowide-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = \"Audiowide-Regular.ttf\"; sourceTree = \"<group>\"; };\n\t\t3B2A046D2BA7886F005543D6 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B2A04462BA78446005543D6 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2A044F2BA78446005543D6 /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B2A04402BA78446005543D6 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2A044B2BA78446005543D6 /* Countdown */,\n\t\t\t\t3B2A044C2BA78446005543D6 /* Packages */,\n\t\t\t\t3B2A044A2BA78446005543D6 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2A044A2BA78446005543D6 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2A04492BA78446005543D6 /* Countdown.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2A044B2BA78446005543D6 /* Countdown */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2A046C2BA787BB005543D6 /* Fonts */,\n\t\t\t\t3B2A046B2BA787B1005543D6 /* Textures */,\n\t\t\t\t3B2A04502BA78446005543D6 /* CountdownApp.swift */,\n\t\t\t\t3B2A04522BA78446005543D6 /* ContentView.swift */,\n\t\t\t\t3B2A04542BA78446005543D6 /* ImmersiveView.swift */,\n\t\t\t\t3B2A046D2BA7886F005543D6 /* Extensions.swift */,\n\t\t\t\t3B2A04562BA78447005543D6 /* Assets.xcassets */,\n\t\t\t\t3B2A045B2BA78447005543D6 /* Info.plist */,\n\t\t\t\t3B2A04582BA78447005543D6 /* Preview Content */,\n\t\t\t);\n\t\t\tpath = Countdown;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2A044C2BA78446005543D6 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2A044D2BA78446005543D6 /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2A04582BA78447005543D6 /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2A04592BA78447005543D6 /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2A046B2BA787B1005543D6 /* Textures */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2A04672BA78737005543D6 /* Starfield.jpg */,\n\t\t\t);\n\t\t\tpath = Textures;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2A046C2BA787BB005543D6 /* Fonts */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2A04682BA7873F005543D6 /* Audiowide-Regular.ttf */,\n\t\t\t);\n\t\t\tpath = Fonts;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B2A04482BA78446005543D6 /* Countdown */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B2A045E2BA78447005543D6 /* Build configuration list for PBXNativeTarget \"Countdown\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B2A04452BA78446005543D6 /* Sources */,\n\t\t\t\t3B2A04462BA78446005543D6 /* Frameworks */,\n\t\t\t\t3B2A04472BA78446005543D6 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Countdown;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B2A044E2BA78446005543D6 /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = Countdown;\n\t\t\tproductReference = 3B2A04492BA78446005543D6 /* Countdown.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B2A04412BA78446005543D6 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B2A04482BA78446005543D6 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B2A04442BA78446005543D6 /* Build configuration list for PBXProject \"Countdown\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B2A04402BA78446005543D6;\n\t\t\tproductRefGroup = 3B2A044A2BA78446005543D6 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B2A04482BA78446005543D6 /* Countdown */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B2A04472BA78446005543D6 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2A04692BA7878B005543D6 /* Starfield.jpg in Resources */,\n\t\t\t\t3B2A046A2BA7878B005543D6 /* Audiowide-Regular.ttf in Resources */,\n\t\t\t\t3B2A045A2BA78447005543D6 /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3B2A04572BA78447005543D6 /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B2A04452BA78446005543D6 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2A04532BA78446005543D6 /* ContentView.swift in Sources */,\n\t\t\t\t3B2A046E2BA7886F005543D6 /* Extensions.swift in Sources */,\n\t\t\t\t3B2A04512BA78446005543D6 /* CountdownApp.swift in Sources */,\n\t\t\t\t3B2A04552BA78446005543D6 /* ImmersiveView.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B2A045C2BA78447005543D6 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B2A045D2BA78447005543D6 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B2A045F2BA78447005543D6 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Countdown/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.Countdown;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B2A04602BA78447005543D6 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Countdown/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.Countdown;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B2A04442BA78446005543D6 /* Build configuration list for PBXProject \"Countdown\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B2A045C2BA78447005543D6 /* Debug */,\n\t\t\t\t3B2A045D2BA78447005543D6 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B2A045E2BA78447005543D6 /* Build configuration list for PBXNativeTarget \"Countdown\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B2A045F2BA78447005543D6 /* Debug */,\n\t\t\t\t3B2A04602BA78447005543D6 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B2A044E2BA78446005543D6 /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B2A04412BA78446005543D6 /* Project object */;\n}\n"
  },
  {
    "path": "Countdown/Countdown.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Countdown/Countdown.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"D66134B1-3681-4A8E-AFE5-29F257229F3B\"\n  }\n}"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n      0.86602545,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.86602545,\n      0,\n      0.0035969093,\n      0.35542378,\n      0.62919164,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"65F6F990-A780-4474-B78B-572E0E4E273D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.86602545,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.86602545,\n      0,\n      1.1972517e-08,\n      2.6179132,\n      0.43191218,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"66168B71-AB05-424E-8B6C-D33D6E61B08F\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.5,\n      0,\n      0,\n      0.5,\n      0.8660254,\n      0,\n      0,\n      0.23875366,\n      0.4135335,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"AF09ED6F-1707-48FD-8720-65B998362C09\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      2.8836339,\n      -0.107588194,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Left\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Right\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"CB766F92-EE55-4A63-9401-E7B8C009764D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"D66134B1-3681-4A8E-AFE5-29F257229F3B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.26894823,\n      0.26934713,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\",\n        \"GridMaterial\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere_Left\", \"Sphere_Right\", \"GridMaterial\"]\n    def Sphere \"Sphere_Right\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Sphere \"Sphere_Left\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (-0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "Countdown/README.md",
    "content": "**Countdown:** Countdown in Immersive Space\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/9c1d8406-d95c-436c-bfd1-e4fd3daf2529\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  DualSense\n//\n//  Created by IVAN CAMPOS on 1/12/25.\n//\n\nimport SwiftUI\nimport GameController\n\nstruct ContentView: View {\n    @StateObject private var controllerManager = ControllerManager()\n    \n    // MARK: - Predefined Rainbow Colors (ROYGBIV)\n    private let rainbowColors: [(name: String, color: Color, rgb: (Float, Float, Float))] = [\n        (\"Red\",    .red,    (1.0, 0.0, 0.0)),\n        (\"Orange\", .orange, (1.0, 0.5, 0.0)),\n        (\"Yellow\", .yellow, (1.0, 1.0, 0.0)),\n        (\"Green\",  .green,  (0.0, 1.0, 0.0)),\n        (\"Blue\",   .blue,   (0.0, 0.0, 1.0)),\n        (\"Indigo\", Color(red: 0.29, green: 0.0, blue: 0.51), (0.29, 0.0, 0.51)),\n        (\"Violet\", Color(red: 0.56, green: 0.0, blue: 1.0),  (0.56, 0.0, 1.0))\n    ]\n    \n    var body: some View {\n        VStack(spacing: 20) {\n            \n            if (controllerManager.controllerName != nil) {\n                \n                VStack(spacing: 20) {\n                    \n                    ZStack {\n                        Group {\n                            Image(systemName: \"battery.0percent\")\n                                .font(.system(size: 50))\n                        }\n                        \n                        // The text is drawn *in front of* the battery image\n                        Text(\n                            controllerManager.batteryLevel != nil\n                            ? \"\\(String(format: \"%.0f\", controllerManager.batteryLevel! * 100))%\"\n                            : \"N/A\"\n                        )\n                        .font(.subheadline)\n                        .foregroundColor(.green)\n                    }\n\n                    VStack {\n                        \n                        HStack(spacing: 20) {\n                            VStack {\n                                Text(\n                                    \"\\(String(format: \"%.2f\", controllerManager.leftTriggerValue))\"\n                                )\n                                .font(.headline)\n                                if (controllerManager.leftTriggerValue > 0.00) {\n                                    Image(\n                                        systemName: \"l2.button.angledtop.vertical.left.fill\"\n                                    )\n                                    .font(.system(size: 50))\n                                } else {\n                                    Image(\n                                        systemName: \"l2.button.angledtop.vertical.left\"\n                                    )\n                                    .font(.system(size: 50))\n                                }\n                            }\n                            \n                            VStack {\n                                Text(\n                                    \"\\(String(format: \"%.2f\", controllerManager.rightTriggerValue))\"\n                                )\n                                .font(.headline)\n                                if (\n                                    controllerManager.rightTriggerValue > 0.00\n                                ) {\n                                    Image(\n                                        systemName: \"r2.button.angledtop.vertical.right.fill\"\n                                    )\n                                    .font(.system(size: 50))\n                                } else {\n                                    Image(\n                                        systemName: \"r2.button.angledtop.vertical.right\"\n                                    )\n                                    .font(.system(size: 50))\n                                }\n                            }\n                        }\n                        \n                        HStack {\n                            \n                            if (controllerManager.leftShoulderValue > 0.00) {\n                                Image(\n                                    systemName: \"l1.button.roundedbottom.horizontal.fill\"\n                                )\n                                .font(.system(size: 50))\n                            } else {\n                                Image(\n                                    systemName: \"l1.button.roundedbottom.horizontal\"\n                                )\n                                .font(.system(size: 50))\n                            }\n                            \n                            if (controllerManager.rightShoulderValue > 0.00) {\n                                Image(\n                                    systemName: \"r1.button.roundedbottom.horizontal.fill\"\n                                )\n                                .font(.system(size: 50))\n                            } else {\n                                Image(\n                                    systemName: \"r1.button.roundedbottom.horizontal\"\n                                )\n                                .font(.system(size: 50))\n                            }\n                        }\n                    }\n                    \n                    HStack(spacing: 20) {\n                        \n                        //Options\n                        if (controllerManager.buttonOptions > 0.0) {\n                            Image(systemName: \"light.max\")\n                                .font(.system(size: 50))\n                                .foregroundColor(controllerManager.lightBar?.imageColor)\n                        } else {\n                            Image(systemName: \"light.max\")\n                                .font(.system(size: 50))\n                        }\n                        \n                        if (controllerManager.touchpad == true) {\n                            Image(systemName: \"inset.filled.rectangle\")\n                                .font(.system(size: 50))\n                                .foregroundColor(controllerManager.lightBar?.imageColor)\n                        } else {\n                            Image(systemName: \"rectangle\")\n                                .font(.system(size: 50))\n                        }\n                        \n                        //Menu\n                        if (controllerManager.buttonMenu > 0.0) {\n                            Image(systemName: \"line.3.horizontal\")\n                                .font(.system(size: 50))\n                                .foregroundColor(controllerManager.lightBar?.imageColor)\n                        } else {\n                            Image(systemName: \"line.3.horizontal\")\n                                .font(.system(size: 50))\n                        }\n                    }\n                    \n                    HStack(spacing: 20) {\n                        \n                        if (controllerManager.dPadDown > 0.0) {\n                            Image(systemName: \"dpad.down.fill\")\n                                .font(.system(size: 50))\n                                .padding(.trailing, 20)\n                        } else if (controllerManager.dPadLeft > 0.0) {\n                            Image(systemName: \"dpad.left.fill\")\n                                .font(.system(size: 50))\n                                .padding(.trailing, 20)\n                        } else if (controllerManager.dPadRight > 0.0) {\n                            Image(systemName: \"dpad.right.fill\")\n                                .font(.system(size: 50))\n                                .padding(.trailing, 20)\n                        } else if (controllerManager.dPadUp > 0.0) {\n                            Image(systemName: \"dpad.up.fill\")\n                                .font(.system(size: 50))\n                                .padding(.trailing, 20)\n                        } else {\n                            Image(systemName: \"dpad\")\n                                .font(.system(size: 50))\n                                .padding(.trailing, 20)\n                        }\n                            \n                        if (controllerManager.buttonX == true) {\n                            Image(systemName: \"square.circle.fill\")\n                                .font(.system(size: 50))\n                        } else {\n                            Image(systemName: \"square.circle\")\n                                .font(.system(size: 50))\n                        }\n                        \n                        if (controllerManager.buttonY == true) {\n                            Image(systemName: \"triangle.circle.fill\")\n                                .font(.system(size: 50))\n                        } else {\n                            Image(systemName: \"triangle.circle\")\n                                .font(.system(size: 50))\n                        }\n                        \n                        if (controllerManager.buttonA == true) {\n                            Image(systemName: \"x.circle.fill\")\n                                .font(.system(size: 50))\n                        } else {\n                            Image(systemName: \"x.circle\")\n                                .font(.system(size: 50))\n                        }\n                        \n                        if (controllerManager.buttonB == true) {\n                            Image(systemName: \"circle.circle.fill\")\n                                .font(.system(size: 50))\n                        } else {\n                            Image(systemName: \"circle.circle\")\n                                .font(.system(size: 50))\n                        }\n                    \n                    }\n                    \n                    HStack(spacing: 20) {\n                        \n                        if (controllerManager.leftThumbstick > 0.0) {\n                            Image(systemName: \"l.joystick.tilt.down.fill\")\n                                .font(.system(size: 50))\n                        } else {\n                            Image(systemName: \"l.joystick.tilt.down\")\n                                .font(.system(size: 50))\n                        }\n                        \n                        Text(\"\\(Image(systemName: \"playstation.logo\"))\")\n                            .font(.system(size: 35))\n                            .foregroundColor(Color(UIColor.darkGray))\n                            .padding(.horizontal, 25)\n                        \n                        if (controllerManager.rightThumbstick > 0.0) {\n                            Image(systemName: \"r.joystick.tilt.down.fill\")\n                                .font(.system(size: 50))\n                        } else {\n                            Image(systemName: \"r.joystick.tilt.down\")\n                                .font(.system(size: 50))\n                        }\n                        \n                    }\n                    \n                    // MARK: - Thumbstick Axes & Angles\n                    VStack(spacing: 6) {\n                        Text(\"Left Thumbstick: X=\\(String(format: \"%.2f\", controllerManager.leftThumbstickX))  Y=\\(String(format: \"%.2f\", controllerManager.leftThumbstickY))\")\n                            .font(.subheadline)\n                        Text(\"Angle=\\(String(format: \"%.0f\", controllerManager.leftThumbstickAngle))°\")\n                            .font(.subheadline)\n                            .foregroundColor(.secondary)\n                    }\n                    \n                    VStack(spacing: 6) {\n                        Text(\"Right Thumbstick: X=\\(String(format: \"%.2f\", controllerManager.rightThumbstickX))  Y=\\(String(format: \"%.2f\", controllerManager.rightThumbstickY))\")\n                            .font(.subheadline)\n                        Text(\"Angle=\\(String(format: \"%.0f\", controllerManager.rightThumbstickAngle))°\")\n                            .font(.subheadline)\n                            .foregroundColor(.secondary)\n                    }\n                    \n                    // MARK: - Touchpad Finger Locations\n                    VStack(spacing: 6) {\n                        Text(\"Touchpad Primary: (X=\\(String(format: \"%.2f\", controllerManager.touchpadPrimaryX)), Y=\\(String(format: \"%.2f\", controllerManager.touchpadPrimaryY)))\")\n                            .font(.subheadline)\n                        Text(\"Swipe Direction: \\(String(describing: controllerManager.touchpadSwipeDirection))\")\n                            .font(.subheadline)\n                    }\n                    \n                    // MARK: - Color Circles (ROYGBIV)\n                    HStack(spacing: 12) {\n                        ForEach(rainbowColors, id: \\.name) { colorItem in\n                            Button {\n                                let (r, g, b) = colorItem.rgb\n                                // Call your manager's function to change the light bar color\n                                controllerManager.setLightBarColor(red: r, green: g, blue: b)\n                            } label: {\n                                Circle()\n                                    .fill(colorItem.color)\n                                    .frame(width: 30, height: 30)\n                                    .overlay(\n                                        Circle()\n                                            .strokeBorder(Color.white.opacity(0.8), lineWidth: 1)\n                                    )\n                            }\n                            .buttonStyle(.plain)\n                            .accessibilityLabel(colorItem.name)\n                        }\n                    }\n                    .padding(.top, 10)\n                    \n                }\n                .padding()\n                \n            } else {\n                Text(\"\\(Image(systemName: \"playstation.logo\"))\")\n                    .font(.system(size: 50))\n                Text(\"No PS5 DualSense controller connected\")\n                    .font(.headline)\n                    .foregroundColor(.red)\n            }\n            \n        }\n        .onAppear {\n            controllerManager.startMonitoringControllers()\n        }\n        .onDisappear {\n            controllerManager.stopMonitoringControllers()\n        }\n    }\n}\n\nextension GCColor {\n    var imageColor: Color {\n        Color(red: Double(self.red), green: Double(self.green), blue:  Double(self.blue))\n    }\n}\n"
  },
  {
    "path": "DualSense/DualSense/ControllerManager.swift",
    "content": "//\n//  ControllerManager.swift\n//  DualSense\n//\n//  Created by IVAN CAMPOS on 1/12/25.\n//\nimport SwiftUI\nimport GameController\nimport AVFoundation\n\nclass ControllerManager: ObservableObject {\n    @Published var controllerName: String?\n    @Published var lightBar: GCColor?\n    @Published var batteryLevel: Float?\n    \n    // Face Buttons\n    @Published var buttonA: Bool = false\n    @Published var buttonB: Bool = false\n    @Published var buttonX: Bool = false\n    @Published var buttonY: Bool = false\n\n    // Trigger values\n    @Published var leftTriggerValue: Float = 0.0\n    @Published var rightTriggerValue: Float = 0.0\n    \n    // Shoulder values\n    @Published var leftShoulderValue: Float = 0.0\n    @Published var rightShoulderValue: Float = 0.0\n    \n    // DualSense’s touchpad\n    @Published var touchpad: Bool = false\n    \n    // Finger locations on the touchpad (0.0 to 1.0)\n    @Published var touchpadPrimaryX: Float = 0.0\n    @Published var touchpadPrimaryY: Float = 0.0\n    @Published var touchpadSwipeDirection: SwipeDirection?\n    \n    // Misc Buttons\n    @Published var buttonMenu: Float = 0.0\n    @Published var buttonOptions: Float = 0.0\n\n    // D-Pad\n    @Published var dPadUp: Float = 0.0\n    @Published var dPadDown: Float = 0.0\n    @Published var dPadLeft: Float = 0.0\n    @Published var dPadRight: Float = 0.0\n    \n    // Thumbsticks\n    @Published var leftThumbstick: Float = 0.0\n    @Published var rightThumbstick: Float = 0.0\n    \n    // Thumbstick axis values\n    @Published var leftThumbstickX: Float = 0.0\n    @Published var leftThumbstickY: Float = 0.0\n    @Published var rightThumbstickX: Float = 0.0\n    @Published var rightThumbstickY: Float = 0.0\n    \n    // Thumbstick angles (in degrees, -180...180)\n    @Published var leftThumbstickAngle: Float = 0.0\n    @Published var rightThumbstickAngle: Float = 0.0\n    \n    // MARK: - Sequence Tracking\n    enum ControllerInput {\n        case dPadUp\n        case dPadDown\n        case dPadLeft\n        case dPadRight\n        case buttonA\n        case buttonB\n        case buttonX\n        case buttonY\n        case buttonMenu\n        case buttonOptions\n    }\n    \n    enum SwipeDirection {\n        case left\n        case right\n        case up\n        case down\n    }\n    \n    struct CheatSequence {\n        let name: String\n        let steps: [ControllerInput]\n        let audioFile: String\n        var currentIndex: Int = 0\n    }\n    \n    private var cheatSequences: [CheatSequence] = [\n        CheatSequence(\n            name: \"Konami Code\",\n            steps: [\n                .dPadUp, .dPadUp, .dPadDown, .dPadDown,\n                .dPadLeft, .dPadRight, .dPadLeft, .dPadRight,\n                .buttonA, .buttonB, .buttonMenu\n            ],\n            audioFile: \"cheat1.mp3\"\n        ),\n        CheatSequence(\n            name: \"Secret Mode\",\n            steps: [\n                .dPadLeft, .dPadLeft, .buttonB, .buttonA\n            ],\n            audioFile: \"cheat2.mp3\"\n        )\n        // Add more if needed...\n    ]\n    \n    // MARK: - Audio\n    private var audioPlayer: AVAudioPlayer?\n    \n    // MARK: - For Gesture Detection\n    // A simple approach to detect tap/swipe on the primary touch.\n    private var lastTouchPosition: CGPoint?\n    private var touchStartTime: Date?\n    private let swipeThreshold: CGFloat = 0.5    // 0.5 of the trackpad's range\n    private let tapMaxDuration: TimeInterval = 0.25\n    \n    private var currentController: GCController?\n    private var dualSensePad: GCDualSenseGamepad?\n\n    // MARK: - Start Monitoring\n    func startMonitoringControllers() {\n        NotificationCenter.default.addObserver(\n            self,\n            selector: #selector(controllerDidConnect(_:)),\n            name: .GCControllerDidConnect,\n            object: nil\n        )\n        \n        NotificationCenter.default.addObserver(\n            self,\n            selector: #selector(controllerDidDisconnect(_:)),\n            name: .GCControllerDidDisconnect,\n            object: nil\n        )\n\n        // If a controller is already connected at launch\n        if let controller = GCController.controllers().first {\n            setupController(controller)\n        }\n    }\n\n    // MARK: - Stop Monitoring\n    func stopMonitoringControllers() {\n        NotificationCenter.default.removeObserver(self, name: .GCControllerDidConnect, object: nil)\n        NotificationCenter.default.removeObserver(self, name: .GCControllerDidDisconnect, object: nil)\n    }\n\n    // MARK: - Notifications\n    @objc private func controllerDidConnect(_ notification: Notification) {\n        guard let controller = notification.object as? GCController else { return }\n        setupController(controller)\n    }\n\n    @objc private func controllerDidDisconnect(_ notification: Notification) {\n        guard let controller = notification.object as? GCController else { return }\n        // If the currently tracked controller disconnected, clear references\n        if controller == currentController {\n            clearCurrentController()\n        }\n    }\n\n    private func clearCurrentController() {\n        DispatchQueue.main.async {\n            self.currentController = nil\n            self.dualSensePad = nil\n            self.controllerName = nil\n            // Reset all published properties to default\n            self.resetAllValues()\n        }\n    }\n    \n    private func resetAllValues() {\n        batteryLevel = nil\n        lightBar = nil\n        buttonA = false\n        buttonB = false\n        buttonX = false\n        buttonY = false\n        leftTriggerValue = 0.0\n        rightTriggerValue = 0.0\n        leftShoulderValue = 0.0\n        rightShoulderValue = 0.0\n        touchpad = false\n        buttonMenu = 0.0\n        buttonOptions = 0.0\n        dPadUp = 0.0\n        dPadDown = 0.0\n        dPadLeft = 0.0\n        dPadRight = 0.0\n        leftThumbstick = 0.0\n        rightThumbstick = 0.0\n        lastTouchPosition = nil\n        touchStartTime = nil\n    }\n\n    // MARK: - Setup Controller\n    private func setupController(_ controller: GCController) {\n        currentController = controller\n        controllerName = controller.vendorName ?? \"Unknown Controller\"\n\n        guard let dualSense = controller.extendedGamepad as? GCDualSenseGamepad else {\n            print(\"Controller is not recognized as a DualSense.\")\n            return\n        }\n        \n        // Store the DualSense reference for later (e.g. adaptive triggers)\n        dualSensePad = dualSense\n        \n        // MARK: Battery\n        if let battery = controller.battery {\n            DispatchQueue.main.async {\n                self.batteryLevel = battery.batteryLevel\n            }\n        }\n\n        // MARK: Light Bar\n        // Example: set to green at start\n        let defaultColor = GCColor(red: 0.0, green: 1.0, blue: 0.0)\n        lightBar = defaultColor\n        controller.light?.color = defaultColor\n\n        // MARK: Thumbsticks (Buttons on L3/R3)\n        controller.extendedGamepad?.leftThumbstickButton?.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.leftThumbstick = value\n            }\n        }\n        \n        controller.extendedGamepad?.rightThumbstickButton?.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.rightThumbstick = value\n            }\n        }\n        \n        // MARK: Thumbstick Directions (x, y)\n        // This allows capturing the actual axes of each thumbstick\n        controller.extendedGamepad?.leftThumbstick.valueChangedHandler = { [weak self] _, xValue, yValue in\n            DispatchQueue.main.async {\n                self?.leftThumbstickX = xValue\n                self?.leftThumbstickY = yValue\n                self?.leftThumbstickAngle = self?.calculateAngle(x: xValue, y: yValue) ?? 0.0\n            }\n        }\n        \n        controller.extendedGamepad?.rightThumbstick.valueChangedHandler = { [weak self] _, xValue, yValue in\n            DispatchQueue.main.async {\n                self?.rightThumbstickX = xValue\n                self?.rightThumbstickY = yValue\n                self?.rightThumbstickAngle = self?.calculateAngle(x: xValue, y: yValue) ?? 0.0\n            }\n        }\n        \n        \n        // MARK: D-Pad\n        controller.extendedGamepad?.dpad.up.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.dPadUp = value\n                if value > 0.0 {\n                    self?.handleInput(.dPadUp)\n                }\n            }\n        }\n        \n        controller.extendedGamepad?.dpad.down.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.dPadDown = value\n                if value > 0.0 {\n                    self?.handleInput(.dPadDown)\n                }\n            }\n        }\n        \n        controller.extendedGamepad?.dpad.left.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.dPadLeft = value\n                if value > 0.0 {\n                    self?.handleInput(.dPadLeft)\n                }\n            }\n        }\n        \n        controller.extendedGamepad?.dpad.right.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.dPadRight = value\n                if value > 0.0 {\n                    self?.handleInput(.dPadRight)\n                }\n            }\n        }\n        \n        // MARK: Face Buttons\n        dualSense.buttonA.pressedChangedHandler = { [weak self] _, _, pressed in\n            DispatchQueue.main.async {\n                self?.buttonA = pressed\n                if pressed {\n                    self?.handleInput(.buttonA)\n                }\n            }\n        }\n        \n        dualSense.buttonB.pressedChangedHandler = { [weak self] _, _, pressed in\n            DispatchQueue.main.async {\n                self?.buttonB = pressed\n                if pressed {\n                    self?.handleInput(.buttonB)\n                }\n            }\n        }\n        \n        dualSense.buttonX.pressedChangedHandler = { [weak self] _, _, pressed in\n            DispatchQueue.main.async {\n                self?.buttonX = pressed\n                if pressed {\n                    self?.handleInput(.buttonX)\n                }\n            }\n        }\n        \n        dualSense.buttonY.pressedChangedHandler = { [weak self] _, _, pressed in\n            DispatchQueue.main.async {\n                self?.buttonY = pressed\n                if pressed {\n                    self?.handleInput(.buttonY)\n                }\n            }\n        }\n        \n        // MARK: Menu / Options Buttons\n        \n        if let menuButton = controller.extendedGamepad?.buttonMenu {\n            menuButton.valueChangedHandler = { [weak self] _, value, _ in\n                DispatchQueue.main.async {\n                    // e.g. interpret this as \"Options\" or \"Pause\"\n                    self?.buttonMenu = value\n                    if value > 0.0 {\n                        self?.handleInput(.buttonMenu)\n                    }\n                }\n            }\n        }\n        \n        if let optionsButton = controller.extendedGamepad?.buttonOptions {\n            optionsButton.valueChangedHandler = { [weak self] _, value, _ in\n                DispatchQueue.main.async {\n                    // e.g. interpret this as \"Menu\" or \"Select\"\n                    self?.buttonOptions = value\n                    if value > 0.0 {\n                        self?.handleInput(.buttonOptions)\n                    }\n                }\n            }\n        }\n        \n        // MARK: Triggers and Shoulders\n        dualSense.leftTrigger.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.leftTriggerValue = value\n            }\n        }\n        \n        dualSense.rightTrigger.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.rightTriggerValue = value\n            }\n        }\n        \n        controller.extendedGamepad?.leftShoulder.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.leftShoulderValue = value\n            }\n        }\n        \n        controller.extendedGamepad?.rightShoulder.valueChangedHandler = { [weak self] _, value, _ in\n            DispatchQueue.main.async {\n                self?.rightShoulderValue = value\n            }\n        }\n\n        // MARK: Touchpad\n        dualSense.touchpadButton.pressedChangedHandler = { [weak self] _, _, pressed in\n            DispatchQueue.main.async {\n                self?.touchpad = pressed\n            }\n        }\n        \n        // Primary Touchpad Finger (xValue, yValue range: 0.0 to 1.0)\n        dualSense.touchpadPrimary.valueChangedHandler = { [weak self] _, xValue, yValue in\n            DispatchQueue.main.async {\n                self?.touchpadPrimaryX = xValue\n                self?.touchpadPrimaryY = yValue\n                self?.touchpadSwipeDirection = self?.detectTouchpadGestures(xValue: xValue, yValue: yValue)\n            }\n        }\n        \n        // Up/Down/Left/Right on the primary portion of the touchpad\n        dualSense.touchpadPrimary.down.valueChangedHandler = { _, value, _ in\n            // print(\"Touchpad Primary Down: \\(value)\")\n        }\n        \n        dualSense.touchpadPrimary.up.valueChangedHandler = { _, value, _ in\n            // print(\"Touchpad Primary Up: \\(value)\")\n        }\n        \n        dualSense.touchpadPrimary.left.valueChangedHandler = { _, value, _ in\n            // print(\"Touchpad Primary Left: \\(value)\")\n        }\n        \n        dualSense.touchpadPrimary.right.valueChangedHandler = { _, value, _ in\n            // print(\"Touchpad Primary Right: \\(value)\")\n        }\n    }\n\n    // MARK: - Manage Tap or Swipe Gestures on the Touchpad\n    /// Detects a tap or swipe gesture on the touchpad, returning a direction\n    /// if the gesture qualifies as a swipe.\n    ///\n    /// - Parameters:\n    ///   - xValue: The current X coordinate of the primary touch (range 0–1)\n    ///   - yValue: The current Y coordinate of the primary touch (range 0–1)\n    ///\n    /// - Returns: A `SwipeDirection` if this call detects a swipe, otherwise `nil`.\n    func detectTouchpadGestures(xValue: Float, yValue: Float) -> SwipeDirection? {\n        let currentPoint = CGPoint(x: CGFloat(xValue), y: CGFloat(yValue))\n        \n        // If we have no recorded position yet, treat this as a \"touch began.\"\n        guard let start = lastTouchPosition else {\n            lastTouchPosition = currentPoint\n            touchStartTime = Date()\n            return nil\n        }\n        \n        // If xValue or yValue jumps quickly, check for swipe\n        let dx = currentPoint.x - start.x\n        let dy = currentPoint.y - start.y\n        let distance = sqrt(dx*dx + dy*dy)\n        \n        // Check for swipe if the distance exceeds the threshold\n        if distance > swipeThreshold {\n            // It's a swipe!\n            print(\"Detected swipe on touchpad: dx=\\(dx), dy=\\(dy)\")\n            \n            let swipeDirection: SwipeDirection\n            \n            if abs(dx) > abs(dy) {\n                // Horizontal swipe\n                swipeDirection = dx > 0 ? .right : .left\n            } else {\n                // Vertical swipe\n                swipeDirection = dy > 0 ? .down : .up\n            }\n            \n            touchpadSwipeDirection = swipeDirection\n            print(\"Swipe Direction: \\(swipeDirection)\")\n            \n            // Reset state for the next gesture\n            lastTouchPosition = nil\n            touchStartTime = nil\n            \n            return swipeDirection\n        }\n        \n        // If the user lifts their finger or movement is minimal, you might interpret a tap.\n        // In this example, we detect a \"tap\" if the user quickly pressed and did NOT move far.\n        if let startTime = touchStartTime {\n            let elapsed = Date().timeIntervalSince(startTime)\n            if elapsed > tapMaxDuration && distance < swipeThreshold {\n                // This was a longer hold, so maybe not a tap; do nothing yet\n                return nil\n            }\n        }\n        \n        // No swipe detected yet\n        return nil\n    }\n    \n    // MARK: - Compute Angle Helper\n    private func calculateAngle(x: Float, y: Float) -> Float {\n        // atan2 returns angle in radians; convert to degrees for clarity\n        let radians = atan2(y, x)\n        return radians * 180.0 / .pi\n    }\n    \n    // MARK: - Adaptive Feedback\n    func triggerAdaptiveFeedback() {\n        guard let dualSense = dualSensePad else { return }\n\n        let adaptiveTrigger = dualSense.rightTrigger\n        // Example: a simple adaptive feedback effect\n        let resistiveStrength = min(1.0, 0.2 + adaptiveTrigger.value)\n        \n        if adaptiveTrigger.value < 0.9 {\n            adaptiveTrigger.setModeFeedbackWithStartPosition(\n                0.0,\n                resistiveStrength: resistiveStrength\n            )\n        } else {\n            adaptiveTrigger.setModeVibrationWithStartPosition(\n                0.0,\n                amplitude: resistiveStrength,\n                frequency: 0.03\n            )\n        }\n        \n        // Turn it off after 1 second\n        DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {\n            adaptiveTrigger.setModeOff()\n        }\n    }\n    \n    // MARK: - Handle Multiple Cheat Sequences\n    private func handleInput(_ input: ControllerInput) {\n        for i in cheatSequences.indices {\n            let expected = cheatSequences[i].steps[cheatSequences[i].currentIndex]\n            if input == expected {\n                cheatSequences[i].currentIndex += 1\n                \n                // Check for completion\n                if cheatSequences[i].currentIndex == cheatSequences[i].steps.count {\n                    playCheatCodeAudio(filename: cheatSequences[i].audioFile)\n                    print(\"\\(cheatSequences[i].name) completed!\")\n                    // Reset so user can attempt it again if they want\n                    cheatSequences[i].currentIndex = 0\n                }\n            } else {\n                // Mismatch, reset index\n                cheatSequences[i].currentIndex = 0\n            }\n        }\n    }\n    \n    // MARK: - Audio Playback\n    private func playCheatCodeAudio(filename: String) {\n        guard let url = Bundle.main.url(forResource: filename, withExtension: nil) else {\n            print(\"Audio file not found: \\(filename)\")\n            return\n        }\n        do {\n            audioPlayer = try AVAudioPlayer(contentsOf: url)\n            audioPlayer?.play()\n        } catch {\n            print(\"Error playing audio: \\(error.localizedDescription)\")\n        }\n    }\n    \n    // MARK: - Light Bar Color Changer\n    func setLightBarColor(red: Float, green: Float, blue: Float) {\n        guard let controller = currentController else { return }\n        let color = GCColor(red: red, green: green, blue: blue)\n        controller.light?.color = color\n        self.lightBar = color\n    }\n}\n"
  },
  {
    "path": "DualSense/DualSense/DualSenseApp.swift",
    "content": "//\n//  DualSenseApp.swift\n//  DualSense\n//\n//  Created by IVAN CAMPOS on 1/12/25.\n//\n\nimport SwiftUI\n\n@main\nstruct DualSenseApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n                .handlesGameControllerEvents(matching: .gamepad)\n        }\n    }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "DualSense/DualSense/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 77;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3BDEF2272D338B300005B577 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3BDEF2262D338B300005B577 /* RealityKitContent */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3BDEF2212D338B300005B577 /* DualSense.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DualSense.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3BDEF2252D338B300005B577 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */\n\t\t3BDEF2322D338B310005B577 /* Exceptions for \"DualSense\" folder in \"DualSense\" target */ = {\n\t\t\tisa = PBXFileSystemSynchronizedBuildFileExceptionSet;\n\t\t\tmembershipExceptions = (\n\t\t\t\tInfo.plist,\n\t\t\t);\n\t\t\ttarget = 3BDEF2202D338B300005B577 /* DualSense */;\n\t\t};\n/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */\n\n/* Begin PBXFileSystemSynchronizedRootGroup section */\n\t\t3BDEF2232D338B300005B577 /* DualSense */ = {\n\t\t\tisa = PBXFileSystemSynchronizedRootGroup;\n\t\t\texceptions = (\n\t\t\t\t3BDEF2322D338B310005B577 /* Exceptions for \"DualSense\" folder in \"DualSense\" target */,\n\t\t\t);\n\t\t\tpath = DualSense;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXFileSystemSynchronizedRootGroup section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3BDEF21E2D338B300005B577 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDEF2272D338B300005B577 /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3BDEF2182D338B300005B577 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDEF2232D338B300005B577 /* DualSense */,\n\t\t\t\t3BDEF2242D338B300005B577 /* Packages */,\n\t\t\t\t3BDEF2222D338B300005B577 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDEF2222D338B300005B577 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDEF2212D338B300005B577 /* DualSense.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDEF2242D338B300005B577 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDEF2252D338B300005B577 /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3BDEF2202D338B300005B577 /* DualSense */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3BDEF2332D338B310005B577 /* Build configuration list for PBXNativeTarget \"DualSense\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3BDEF21D2D338B300005B577 /* Sources */,\n\t\t\t\t3BDEF21E2D338B300005B577 /* Frameworks */,\n\t\t\t\t3BDEF21F2D338B300005B577 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tfileSystemSynchronizedGroups = (\n\t\t\t\t3BDEF2232D338B300005B577 /* DualSense */,\n\t\t\t);\n\t\t\tname = DualSense;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3BDEF2262D338B300005B577 /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = DualSense;\n\t\t\tproductReference = 3BDEF2212D338B300005B577 /* DualSense.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3BDEF2192D338B300005B577 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1620;\n\t\t\t\tLastUpgradeCheck = 1620;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3BDEF2202D338B300005B577 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 16.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3BDEF21C2D338B300005B577 /* Build configuration list for PBXProject \"DualSense\" */;\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3BDEF2182D338B300005B577;\n\t\t\tminimizedProjectReferenceProxies = 1;\n\t\t\tpreferredProjectObjectVersion = 77;\n\t\t\tproductRefGroup = 3BDEF2222D338B300005B577 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3BDEF2202D338B300005B577 /* DualSense */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3BDEF21F2D338B300005B577 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3BDEF21D2D338B300005B577 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3BDEF2342D338B310005B577 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"DualSense/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.DualSense;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 7;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3BDEF2352D338B310005B577 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"DualSense/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.DualSense;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 7;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3BDEF2362D338B310005B577 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 2.1;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3BDEF2372D338B310005B577 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 2.1;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3BDEF21C2D338B300005B577 /* Build configuration list for PBXProject \"DualSense\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3BDEF2362D338B310005B577 /* Debug */,\n\t\t\t\t3BDEF2372D338B310005B577 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3BDEF2332D338B310005B577 /* Build configuration list for PBXNativeTarget \"DualSense\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3BDEF2342D338B310005B577 /* Debug */,\n\t\t\t\t3BDEF2352D338B310005B577 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3BDEF2262D338B300005B577 /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3BDEF2192D338B300005B577 /* Project object */;\n}\n"
  },
  {
    "path": "DualSense/DualSense.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"03E02005-EFA6-48D6-8A76-05B2822A74E9\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"1CBF3893-ABFD-408C-8B91-045BFD257808\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\"\n  }\n}"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      0.9807314,\n      -1.9820146e-10,\n      -0.195361,\n      0,\n      -0.10051192,\n      0.85749435,\n      -0.5045798,\n      0,\n      0.16752096,\n      0.51449335,\n      0.84097165,\n      0,\n      0.09084191,\n      0.05849296,\n      0.13903293,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"Sphere\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"1CBF3893-ABFD-408C-8B91-045BFD257808\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"03E02005-EFA6-48D6-8A76-05B2822A74E9\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.2681068,\n      0.26850593,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"440DE5B4-E4E4-459B-AABF-9ACE96319272\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"FBD8436F-6B8B-4B82-99B5-995D538B4704\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:6.0\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    platforms: [\n        .visionOS(.v2),\n        .macOS(.v15),\n        .iOS(.v18)\n    ],\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "DualSense/README.md",
    "content": "**DualSense**\n\nPS5 DualSense Controller integration for Apple Vision Pro\n\nhttps://github.com/user-attachments/assets/b759d180-0bb0-4ab4-a039-a814aab1199a\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Colors.swift",
    "content": "//\n//  Colors.swift\n//  Swift Helpers\n//\n//  Created by IVAN CAMPOS on 2/13/24.\n//\n\nimport UIKit\n\nenum ColorName: String {\n    case money = \"#85bb65\"\n    case tron = \"#18CAE6\"\n    case matrix = \"#00ff2b\"\n    case offWhite = \"#fffff0\"\n    case akira = \"#9C3111\"\n    case dark = \"#424242\"\n    case orange = \"#E65100\"\n    case dolphinsAqua = \"#008E97\"\n    case dolphinsOrange = \"#FC4C02\"\n    case usRed = \"#BF0A30\"\n    case usBlue = \"#002868\"\n    case coolGrey = \"#5E6167\"\n    case yeezy1 = \"#EF4657\"\n    case foams = \"#1E3F9F\"\n    case tiffany = \"#00FFEC\"\n    case jordan1 = \"#B01301\"\n    case volt = \"#CEFF00\"\n    case violet = \"#6B5B95\"\n    case sailor = \"#2E4A62\"\n    case tomato = \"#E94B3C\"\n    case ok = \"#00ff7f\"\n    case seafoam = \"#C4DFE6\"\n    case darkG = \"#474747\"\n    case yellow = \"#F7DB4F\"\n    case lightG = \"#f4f4f8\"\n    case rb = \"#251e3e\"\n    case blue = \"#0392cf\"\n    case coffee = \"#be9b7b\"\n    case tone = \"#f1c27d\"\n    case fall = \"#c9cba3\"\n    case blueGray = \"#6497b1\"\n    case lightY = \"#fdf498\"\n    case prBlue = \"#50eee0\"\n    case prRed = \"#ed0000\"\n    case dodgers = \"#1e90ff\"\n    case nikeBox = \"#ec4e33\"\n    case bitcoin = \"#ff9900\"\n    case supreme = \"#FF0400\"\n    case nvidia = \"#76b900\"\n    case playstation = \"#003087\"\n    case spotify = \"#191414\"\n    case tesla = \"#cc0000\"\n    \n    var color: UIColor {\n        return UIColor(hex: self.rawValue) ?? .black\n    }\n}\n\nextension UIColor {\n    convenience init?(hex: String) {\n        let r, g, b, a: CGFloat\n        \n        if hex.hasPrefix(\"#\") {\n            let start = hex.index(hex.startIndex, offsetBy: 1)\n            let hexColor = String(hex[start...])\n            \n            if hexColor.count == 6 {\n                let scanner = Scanner(string: hexColor)\n                var hexNumber: UInt64 = 0\n                \n                if scanner.scanHexInt64(&hexNumber) {\n                    r = CGFloat((hexNumber & 0xff0000) >> 16) / 255\n                    g = CGFloat((hexNumber & 0x00ff00) >> 8) / 255\n                    b = CGFloat(hexNumber & 0x0000ff) / 255\n                    a = 1.0\n                    \n                    self.init(red: r, green: g, blue: b, alpha: a)\n                    return\n                }\n            }\n        }\n        \n        return nil\n    }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  FearAndGreed\n//\n//  Created by IVAN CAMPOS on 2/16/24.\n//\n\nimport SwiftUI\n\nlet EXTREME_FEAR = \"EXTREME FEAR\"\nlet FEAR = \"FEAR\"\nlet GREED = \"GREED\"\nlet EXTREME_GREED = \"EXTREME GREED\"\n\nstruct ContentView: View {\n    @StateObject var viewModel = FearGreedIndexViewModel()\n    \n    var body: some View {\n        VStack {\n            RectangleView(classification: EXTREME_FEAR, currentClassification: $viewModel.classification)\n            RectangleView(classification: FEAR, currentClassification: $viewModel.classification)\n            RectangleView(classification: GREED, currentClassification: $viewModel.classification)\n            RectangleView(classification: EXTREME_GREED, currentClassification: $viewModel.classification)\n        }\n    }\n}\n\nstruct RectangleView: View {\n    let classification: String\n    @Binding var currentClassification: String\n    \n    var body: some View {\n        \n        var classificationColor = colorForClassification(classification)\n        \n        Text(classification)\n            .bold()\n            .font(.largeTitle)\n            .frame(width: 400, height: 100)\n            .background(classificationColor)\n            .cornerRadius(10)\n            .padding()\n            .scaleEffect(currentClassification == classification ? 1.1 : 1.0)\n            .shadow(color: classificationColor, radius: 12, x: 0, y: 0)\n            .animation(.easeInOut(duration: 1).repeatForever(), value: currentClassification == classification)\n    }\n    \n    func colorForClassification(_ classification: String) -> Color {\n        guard classification == currentClassification else { return Color(uiColor: UIColor(hex: ColorName.coolGrey.rawValue)!) }\n        switch classification {\n        case EXTREME_FEAR:\n            return Color(uiColor: UIColor(hex: ColorName.supreme.rawValue)!)\n        case FEAR:\n            return Color(uiColor: UIColor(hex: ColorName.yeezy1.rawValue)!)\n        case GREED:\n            return Color(uiColor: UIColor(hex: ColorName.ok.rawValue)!)\n        case EXTREME_GREED:\n            return Color(uiColor: UIColor(hex: ColorName.matrix.rawValue)!)\n        default:\n            return Color(uiColor: UIColor(hex: ColorName.coolGrey.rawValue)!)\n        }\n    }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/FearAndGreedApp.swift",
    "content": "//\n//  FearAndGreedApp.swift\n//  FearAndGreed\n//\n//  Created by IVAN CAMPOS on 2/16/24.\n//\n\nimport SwiftUI\n\n@main\nstruct FearAndGreedApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n                .persistentSystemOverlays(.hidden)\n        }\n        .windowStyle(.volumetric)\n        .defaultSize(width: 0.5, height: 0.5, depth: 0.1, in: .meters)\n    }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/FearGreedIndexService.swift",
    "content": "//\n//  FearGreedIndexService.swift\n//  FearAndGreed\n//\n//  Created by IVAN CAMPOS on 2/16/24.\n//\n\nimport Foundation\n\nclass FearGreedIndexService {\n    func fetchIndex(completion: @escaping (FearGreedIndex?) -> Void) {\n        guard let url = URL(string: \"https://api.alternative.me/fng/\") else { return }\n        \n        URLSession.shared.dataTask(with: url) { data, _, error in\n            guard let data = data, error == nil else {\n                completion(nil)\n                return\n            }\n            \n            let response = try? JSONDecoder().decode(FearGreedIndex.self, from: data)\n            completion(response)\n        }.resume()\n    }\n}\n\nstruct FearGreedIndex: Decodable {\n    let data: [IndexData]\n    \n    struct IndexData: Decodable {\n        let value_classification: String\n    }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/FearGreedIndexViewModel.swift",
    "content": "//\n//  FearGreedIndexViewModel.swift\n//  FearAndGreed\n//\n//  Created by IVAN CAMPOS on 2/16/24.\n//\n\nimport Combine\nimport SwiftUI\n\nclass FearGreedIndexViewModel: ObservableObject {\n    private var service = FearGreedIndexService()\n    private var timer: Timer?\n    \n    @Published var classification: String = \"\"\n    \n    init() {\n        fetchData()\n        timer = Timer.scheduledTimer(withTimeInterval: 300, repeats: true) { _ in\n            self.fetchData()\n        }\n    }\n    \n    func fetchData() {\n        service.fetchIndex { [weak self] response in\n            DispatchQueue.main.async {\n                self?.classification = \"\"\n                self?.classification = response?.data.first?.value_classification.uppercased() ?? \"\"\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleVolumetricApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3BDFBA722B7F256200474AFB /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3BDFBA712B7F256200474AFB /* RealityKitContent */; };\n\t\t3BDFBA742B7F256200474AFB /* FearAndGreedApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA732B7F256200474AFB /* FearAndGreedApp.swift */; };\n\t\t3BDFBA762B7F256200474AFB /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA752B7F256200474AFB /* ContentView.swift */; };\n\t\t3BDFBA782B7F256300474AFB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BDFBA772B7F256300474AFB /* Assets.xcassets */; };\n\t\t3BDFBA7B2B7F256300474AFB /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BDFBA7A2B7F256300474AFB /* Preview Assets.xcassets */; };\n\t\t3BDFBA832B7F258800474AFB /* FearGreedIndexService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA822B7F258800474AFB /* FearGreedIndexService.swift */; };\n\t\t3BDFBA852B7F25A000474AFB /* FearGreedIndexViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA842B7F25A000474AFB /* FearGreedIndexViewModel.swift */; };\n\t\t3BDFBA872B7F274D00474AFB /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA862B7F274D00474AFB /* Colors.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3BDFBA6C2B7F256200474AFB /* FearAndGreed.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FearAndGreed.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3BDFBA702B7F256200474AFB /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3BDFBA732B7F256200474AFB /* FearAndGreedApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FearAndGreedApp.swift; sourceTree = \"<group>\"; };\n\t\t3BDFBA752B7F256200474AFB /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3BDFBA772B7F256300474AFB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3BDFBA7A2B7F256300474AFB /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3BDFBA7C2B7F256300474AFB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3BDFBA822B7F258800474AFB /* FearGreedIndexService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FearGreedIndexService.swift; sourceTree = \"<group>\"; };\n\t\t3BDFBA842B7F25A000474AFB /* FearGreedIndexViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FearGreedIndexViewModel.swift; sourceTree = \"<group>\"; };\n\t\t3BDFBA862B7F274D00474AFB /* Colors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3BDFBA692B7F256200474AFB /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFBA722B7F256200474AFB /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3BDFBA632B7F256200474AFB = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA6E2B7F256200474AFB /* FearAndGreed */,\n\t\t\t\t3BDFBA6F2B7F256200474AFB /* Packages */,\n\t\t\t\t3BDFBA6D2B7F256200474AFB /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFBA6D2B7F256200474AFB /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA6C2B7F256200474AFB /* FearAndGreed.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFBA6E2B7F256200474AFB /* FearAndGreed */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA732B7F256200474AFB /* FearAndGreedApp.swift */,\n\t\t\t\t3BDFBA752B7F256200474AFB /* ContentView.swift */,\n\t\t\t\t3BDFBA822B7F258800474AFB /* FearGreedIndexService.swift */,\n\t\t\t\t3BDFBA842B7F25A000474AFB /* FearGreedIndexViewModel.swift */,\n\t\t\t\t3BDFBA862B7F274D00474AFB /* Colors.swift */,\n\t\t\t\t3BDFBA772B7F256300474AFB /* Assets.xcassets */,\n\t\t\t\t3BDFBA7C2B7F256300474AFB /* Info.plist */,\n\t\t\t\t3BDFBA792B7F256300474AFB /* Preview Content */,\n\t\t\t);\n\t\t\tpath = FearAndGreed;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFBA6F2B7F256200474AFB /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA702B7F256200474AFB /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFBA792B7F256300474AFB /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA7A2B7F256300474AFB /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3BDFBA6B2B7F256200474AFB /* FearAndGreed */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3BDFBA7F2B7F256300474AFB /* Build configuration list for PBXNativeTarget \"FearAndGreed\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3BDFBA682B7F256200474AFB /* Sources */,\n\t\t\t\t3BDFBA692B7F256200474AFB /* Frameworks */,\n\t\t\t\t3BDFBA6A2B7F256200474AFB /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = FearAndGreed;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3BDFBA712B7F256200474AFB /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = FearAndGreed;\n\t\t\tproductReference = 3BDFBA6C2B7F256200474AFB /* FearAndGreed.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3BDFBA642B7F256200474AFB /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3BDFBA6B2B7F256200474AFB = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3BDFBA672B7F256200474AFB /* Build configuration list for PBXProject \"FearAndGreed\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3BDFBA632B7F256200474AFB;\n\t\t\tproductRefGroup = 3BDFBA6D2B7F256200474AFB /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3BDFBA6B2B7F256200474AFB /* FearAndGreed */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3BDFBA6A2B7F256200474AFB /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFBA7B2B7F256300474AFB /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3BDFBA782B7F256300474AFB /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3BDFBA682B7F256200474AFB /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFBA762B7F256200474AFB /* ContentView.swift in Sources */,\n\t\t\t\t3BDFBA872B7F274D00474AFB /* Colors.swift in Sources */,\n\t\t\t\t3BDFBA852B7F25A000474AFB /* FearGreedIndexViewModel.swift in Sources */,\n\t\t\t\t3BDFBA832B7F258800474AFB /* FearGreedIndexService.swift in Sources */,\n\t\t\t\t3BDFBA742B7F256200474AFB /* FearAndGreedApp.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3BDFBA7D2B7F256300474AFB /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3BDFBA7E2B7F256300474AFB /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3BDFBA802B7F256300474AFB /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"FearAndGreed/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.FearAndGreed;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3BDFBA812B7F256300474AFB /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"FearAndGreed/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.FearAndGreed;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3BDFBA672B7F256200474AFB /* Build configuration list for PBXProject \"FearAndGreed\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3BDFBA7D2B7F256300474AFB /* Debug */,\n\t\t\t\t3BDFBA7E2B7F256300474AFB /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3BDFBA7F2B7F256300474AFB /* Build configuration list for PBXNativeTarget \"FearAndGreed\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3BDFBA802B7F256300474AFB /* Debug */,\n\t\t\t\t3BDFBA812B7F256300474AFB /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3BDFBA712B7F256200474AFB /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3BDFBA642B7F256200474AFB /* Project object */;\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"70F99620-18FE-438F-B2D5-5E0DA02AB759\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"388995CA-80FC-432E-BA88-78270E4EFD9D\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"90C576A0-F90A-43B8-9998-14918A66F863\"\n  }\n}"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n      0.86602545,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.86602545,\n      0,\n      -0.0016454058,\n      0.3609597,\n      0.6486591,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"Sphere\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"70F99620-18FE-438F-B2D5-5E0DA02AB759\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"70F99620-18FE-438F-B2D5-5E0DA02AB759\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"90C576A0-F90A-43B8-9998-14918A66F863\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.36125332,\n      0.6257093,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"90C576A0-F90A-43B8-9998-14918A66F863\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"90C576A0-F90A-43B8-9998-14918A66F863\",\n        \"Root\",\n        \"Sphere\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"388995CA-80FC-432E-BA88-78270E4EFD9D\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"388995CA-80FC-432E-BA88-78270E4EFD9D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere\", \"GridMaterial\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.1\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "FearAndGreed/README.md",
    "content": "# Fear and Greed\n_Volumetric View of the Fear & Greed Index for Bitcoin and other large cryptocurrencies_\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/edf5753a-c0d0-4d2f-8c5b-11f8f9fb1971\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "HandTracking/HandTracking/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  HandTracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport RealityKitContent\n\nstruct ContentView: View {\n    \n    @State private var showImmersiveSpace = false\n    @State private var immersiveSpaceIsShown = false\n    \n    @Environment(\\.openImmersiveSpace) var openImmersiveSpace\n    @Environment(\\.dismissImmersiveSpace) var dismissImmersiveSpace\n    \n    var body: some View {\n        VStack {\n            Text(\"Hand Tracking\")\n            \n            Toggle(\"Show Immersive Space\", isOn: $showImmersiveSpace)\n                .toggleStyle(.button)\n                .padding(.top, 50)\n        }\n        .padding()\n        .onChange(of: showImmersiveSpace) { _, newValue in\n            Task {\n                if newValue {\n                    switch await openImmersiveSpace(id: \"ImmersiveSpace\") {\n                    case .opened:\n                        immersiveSpaceIsShown = true\n                    case .error, .userCancelled:\n                        fallthrough\n                    @unknown default:\n                        immersiveSpaceIsShown = false\n                        showImmersiveSpace = false\n                    }\n                } else if immersiveSpaceIsShown {\n                    await dismissImmersiveSpace()\n                    immersiveSpaceIsShown = false\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Extensions.swift",
    "content": "//\n//  ModelEntity+Extensions.swift\n//  HandTracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport SwiftUI\nimport RealityKit\n\nextension ModelEntity {\n    static func createHandEntity() -> ModelEntity {\n        let simpleMaterial = SimpleMaterial(color: UIColor(hex: \"FFFFFF\"), isMetallic: true)\n        return ModelEntity(mesh: .generateBox(size: 0.042), materials: [simpleMaterial])\n    }\n    \n    static func createArmEntity() -> ModelEntity {\n        let simpleMaterial = SimpleMaterial(color: UIColor(hex: \"D92121\"), isMetallic: true)\n        return ModelEntity(mesh: .generateBox(width: 0.5, height: 0.125, depth: 0.15), materials: [simpleMaterial])\n    }\n    \n    static func createEnvironmentEntity() -> Entity {\n        let bgColor: UIColor = .white\n        var material = UnlitMaterial()\n        material.color = UnlitMaterial.BaseColor(tint: bgColor)\n        \n        let environment = Entity()\n        environment.components.set(ModelComponent(\n            mesh: .generateSphere(radius: 2000),\n            materials: [material]\n        ))\n        environment.scale *= .init(x: -2, y: 2, z: 2)\n        return environment\n    }\n}\n\nextension UIColor {\n    convenience init(hex: String) {\n        let scanner = Scanner(string: hex)\n        var color: UInt64 = 0\n        scanner.scanHexInt64(&color)\n        let r = CGFloat((color & 0xFF0000) >> 16) / 255.0\n        let g = CGFloat((color & 0x00FF00) >> 8) / 255.0\n        let b = CGFloat(color & 0x0000FF) / 255.0\n        self.init(red: r, green: g, blue: b, alpha: 1.0)\n    }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/HandTrackingApp.swift",
    "content": "//\n//  HandTrackingApp.swift\n//  Hand Tracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport SwiftUI\n\n@main\nstruct HandTrackingApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n        \n        ImmersiveSpace(id: \"ImmersiveSpace\") {\n            ImmersiveView()\n                .preferredSurroundingsEffect(.systemDark)\n        }\n        .immersionStyle(selection: .constant(.mixed), in: .mixed)\n    }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/HandTrackingModel.swift",
    "content": "//\n//  HandTrackingModel.swift\n//  HandTracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport RealityKit\nimport ARKit\nimport SwiftUI\n\nstruct HandsUpdates {\n    var left: HandAnchor?\n    var right: HandAnchor?\n}\n\nclass HandTrackingModel: ObservableObject {\n    let session = ARKitSession()\n    var handTrackingProvider = HandTrackingProvider()\n    @Published var latestHandTracking: HandsUpdates = .init(left: nil, right: nil)\n    \n    // State variables for sphere model entities\n    @Published var leftWristModelEntity = ModelEntity.createHandEntity()\n    @Published var leftThumbKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var leftThumbIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var leftThumbIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftThumbTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftIndexFingerMetacarpalModelEntity = ModelEntity.createHandEntity()\n    @Published var leftIndexFingerKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var leftIndexFingerIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var leftIndexFingerIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftIndexFingerTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftMiddleFingerMetacarpalModelEntity = ModelEntity.createHandEntity()\n    @Published var leftMiddleFingerKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var leftMiddleFingerIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var leftMiddleFingerIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftMiddleFingerTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftRingFingerMetacarpalModelEntity = ModelEntity.createHandEntity()\n    @Published var leftRingFingerKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var leftRingFingerIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var leftRingFingerIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftRingFingerTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftLittleFingerMetacarpalModelEntity = ModelEntity.createHandEntity()\n    @Published var leftLittleFingerKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var leftLittleFingerIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var leftLittleFingerIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftLittleFingerTipModelEntity = ModelEntity.createHandEntity()\n    @Published var leftForearmWristModelEntity = ModelEntity.createHandEntity()\n    \n    // State variables for box model entities\n    @Published var leftForearmArmModelEntity = ModelEntity.createArmEntity()\n    \n    // Repeat the pattern for right hand and forearm entities\n    @Published var rightWristModelEntity = ModelEntity.createHandEntity()\n    @Published var rightThumbKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var rightThumbIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var rightThumbIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightThumbTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightIndexFingerMetacarpalModelEntity = ModelEntity.createHandEntity()\n    @Published var rightIndexFingerKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var rightIndexFingerIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var rightIndexFingerIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightIndexFingerTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightMiddleFingerMetacarpalModelEntity = ModelEntity.createHandEntity()\n    @Published var rightMiddleFingerKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var rightMiddleFingerIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var rightMiddleFingerIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightMiddleFingerTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightRingFingerMetacarpalModelEntity = ModelEntity.createHandEntity()\n    @Published var rightRingFingerKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var rightRingFingerIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var rightRingFingerIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightRingFingerTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightLittleFingerMetacarpalModelEntity = ModelEntity.createHandEntity()\n    @Published var rightLittleFingerKnuckleModelEntity = ModelEntity.createHandEntity()\n    @Published var rightLittleFingerIntermediateBaseModelEntity = ModelEntity.createHandEntity()\n    @Published var rightLittleFingerIntermediateTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightLittleFingerTipModelEntity = ModelEntity.createHandEntity()\n    @Published var rightForearmWristModelEntity = ModelEntity.createHandEntity()\n    @Published var rightForearmArmModelEntity = ModelEntity.createArmEntity()\n    \n    func handTracking() {\n        if HandTrackingProvider.isSupported {\n            Task {\n                do {\n                    try await session.run([handTrackingProvider])\n                    for await update in handTrackingProvider.anchorUpdates {\n                        DispatchQueue.main.async { // Ensure updates are on the main thread\n                            switch update.event {\n                            case .updated:\n                                let anchor = update.anchor\n                                if !anchor.isTracked {\n                                    return // Use 'return' instead of 'continue' outside loops\n                                }\n                                if anchor.chirality == .left {\n                                    self.latestHandTracking.left = anchor\n                                } else if anchor.chirality == .right {\n                                    self.latestHandTracking.right = anchor\n                                }\n                            default:\n                                break\n                            }\n                        }\n                    }\n                } catch {\n                    print(\"Error starting hand tracking: \\(error)\")\n                }\n            }\n        }\n    }\n    \n    func computeTransformHeartTracking() {\n        guard let leftHandAnchor = latestHandTracking.left,\n              let rightHandAnchor = latestHandTracking.right,\n              leftHandAnchor.isTracked, rightHandAnchor.isTracked else {\n            return\n        }\n        leftWristModelEntity.transform = getTransform(leftHandAnchor, .wrist, leftWristModelEntity.transform)\n        leftThumbKnuckleModelEntity.transform = getTransform(leftHandAnchor, .thumbKnuckle, leftThumbKnuckleModelEntity.transform)\n        leftThumbIntermediateBaseModelEntity.transform = getTransform(leftHandAnchor, .thumbIntermediateBase, leftThumbIntermediateBaseModelEntity.transform)\n        leftThumbIntermediateTipModelEntity.transform = getTransform(leftHandAnchor, .thumbIntermediateTip, leftThumbIntermediateTipModelEntity.transform)\n        leftThumbTipModelEntity.transform = getTransform(leftHandAnchor, .thumbTip, leftThumbTipModelEntity.transform)\n        leftIndexFingerMetacarpalModelEntity.transform = getTransform(leftHandAnchor, .indexFingerMetacarpal, leftIndexFingerMetacarpalModelEntity.transform)\n        leftIndexFingerKnuckleModelEntity.transform = getTransform(leftHandAnchor, .indexFingerKnuckle, leftMiddleFingerKnuckleModelEntity.transform)\n        leftIndexFingerIntermediateBaseModelEntity.transform = getTransform(leftHandAnchor, .indexFingerIntermediateBase, leftIndexFingerIntermediateBaseModelEntity.transform)\n        leftIndexFingerIntermediateTipModelEntity.transform = getTransform(leftHandAnchor, .indexFingerIntermediateTip, leftIndexFingerIntermediateTipModelEntity.transform)\n        leftIndexFingerTipModelEntity.transform = getTransform(leftHandAnchor, .indexFingerTip, leftIndexFingerTipModelEntity.transform)\n        leftMiddleFingerMetacarpalModelEntity.transform = getTransform(leftHandAnchor, .middleFingerMetacarpal, leftMiddleFingerMetacarpalModelEntity.transform)\n        leftMiddleFingerKnuckleModelEntity.transform = getTransform(leftHandAnchor, .middleFingerKnuckle,leftMiddleFingerKnuckleModelEntity.transform)\n        leftMiddleFingerIntermediateBaseModelEntity.transform = getTransform(leftHandAnchor, .middleFingerIntermediateBase,leftMiddleFingerIntermediateBaseModelEntity.transform)\n        leftMiddleFingerIntermediateTipModelEntity.transform = getTransform(leftHandAnchor, .middleFingerIntermediateTip,leftMiddleFingerIntermediateTipModelEntity.transform)\n        leftMiddleFingerTipModelEntity.transform = getTransform(leftHandAnchor, .middleFingerTip,leftMiddleFingerTipModelEntity.transform)\n        leftRingFingerMetacarpalModelEntity.transform = getTransform(leftHandAnchor, .ringFingerMetacarpal,leftRingFingerMetacarpalModelEntity.transform)\n        leftRingFingerKnuckleModelEntity.transform = getTransform(leftHandAnchor, .ringFingerKnuckle,leftRingFingerKnuckleModelEntity.transform)\n        leftRingFingerIntermediateBaseModelEntity.transform = getTransform(leftHandAnchor, .ringFingerIntermediateBase,leftRingFingerIntermediateBaseModelEntity.transform)\n        leftRingFingerIntermediateTipModelEntity.transform = getTransform(leftHandAnchor, .ringFingerIntermediateTip,leftRingFingerIntermediateTipModelEntity.transform)\n        leftRingFingerTipModelEntity.transform = getTransform(leftHandAnchor, .ringFingerTip,leftRingFingerTipModelEntity.transform)\n        leftLittleFingerMetacarpalModelEntity.transform = getTransform(leftHandAnchor, .littleFingerMetacarpal,leftLittleFingerMetacarpalModelEntity.transform)\n        leftLittleFingerKnuckleModelEntity.transform = getTransform(leftHandAnchor, .littleFingerKnuckle,leftLittleFingerKnuckleModelEntity.transform)\n        leftLittleFingerIntermediateBaseModelEntity.transform = getTransform(leftHandAnchor, .littleFingerIntermediateBase, leftLittleFingerIntermediateBaseModelEntity.transform)\n        leftLittleFingerIntermediateTipModelEntity.transform = getTransform(leftHandAnchor, .littleFingerIntermediateTip,leftLittleFingerIntermediateTipModelEntity.transform)\n        leftLittleFingerTipModelEntity.transform = getTransform(leftHandAnchor, .littleFingerTip,leftLittleFingerTipModelEntity.transform)\n        leftForearmWristModelEntity.transform = getTransform(leftHandAnchor, .forearmWrist,leftForearmWristModelEntity.transform)\n        leftForearmArmModelEntity.transform = getTransform(leftHandAnchor, .forearmArm,leftForearmArmModelEntity.transform)\n        \n        rightWristModelEntity.transform = getTransform(rightHandAnchor, .wrist,rightWristModelEntity.transform)\n        rightThumbKnuckleModelEntity.transform = getTransform(rightHandAnchor, .thumbKnuckle,rightThumbKnuckleModelEntity.transform)\n        rightThumbIntermediateBaseModelEntity.transform = getTransform(rightHandAnchor, .thumbIntermediateBase,rightThumbIntermediateBaseModelEntity.transform)\n        rightThumbIntermediateTipModelEntity.transform = getTransform(rightHandAnchor, .thumbIntermediateTip,rightThumbIntermediateTipModelEntity.transform)\n        rightThumbTipModelEntity.transform = getTransform(rightHandAnchor, .thumbTip,rightThumbTipModelEntity.transform)\n        rightIndexFingerMetacarpalModelEntity.transform = getTransform(rightHandAnchor, .indexFingerMetacarpal,rightIndexFingerMetacarpalModelEntity.transform)\n        rightIndexFingerKnuckleModelEntity.transform = getTransform(rightHandAnchor, .indexFingerKnuckle,rightIndexFingerKnuckleModelEntity.transform)\n        rightIndexFingerIntermediateBaseModelEntity.transform = getTransform(rightHandAnchor, .indexFingerIntermediateBase,rightIndexFingerIntermediateBaseModelEntity.transform)\n        rightIndexFingerIntermediateTipModelEntity.transform = getTransform(rightHandAnchor, .indexFingerIntermediateTip,rightIndexFingerIntermediateTipModelEntity.transform)\n        rightIndexFingerTipModelEntity.transform = getTransform(rightHandAnchor, .indexFingerTip,rightIndexFingerTipModelEntity.transform)\n        rightMiddleFingerMetacarpalModelEntity.transform = getTransform(rightHandAnchor, .middleFingerMetacarpal,rightMiddleFingerMetacarpalModelEntity.transform)\n        rightMiddleFingerKnuckleModelEntity.transform = getTransform(rightHandAnchor, .middleFingerKnuckle,rightMiddleFingerKnuckleModelEntity.transform)\n        rightMiddleFingerIntermediateBaseModelEntity.transform = getTransform(rightHandAnchor, .middleFingerIntermediateBase,rightMiddleFingerIntermediateBaseModelEntity.transform)\n        rightMiddleFingerIntermediateTipModelEntity.transform = getTransform(rightHandAnchor, .middleFingerIntermediateTip, rightMiddleFingerIntermediateTipModelEntity.transform)\n        rightMiddleFingerTipModelEntity.transform = getTransform(rightHandAnchor, .middleFingerTip,rightMiddleFingerTipModelEntity.transform)\n        rightRingFingerMetacarpalModelEntity.transform = getTransform(rightHandAnchor, .ringFingerMetacarpal,rightRingFingerMetacarpalModelEntity.transform)\n        rightRingFingerKnuckleModelEntity.transform = getTransform(rightHandAnchor, .ringFingerKnuckle,rightRingFingerKnuckleModelEntity.transform)\n        rightRingFingerIntermediateBaseModelEntity.transform = getTransform(rightHandAnchor, .ringFingerIntermediateBase,rightRingFingerIntermediateBaseModelEntity.transform)\n        rightRingFingerIntermediateTipModelEntity.transform = getTransform(rightHandAnchor, .ringFingerIntermediateTip, rightRingFingerIntermediateTipModelEntity.transform)\n        rightRingFingerTipModelEntity.transform = getTransform(rightHandAnchor, .ringFingerTip,rightRingFingerTipModelEntity.transform)\n        rightLittleFingerMetacarpalModelEntity.transform = getTransform(rightHandAnchor, .littleFingerMetacarpal,rightLittleFingerMetacarpalModelEntity.transform)\n        rightLittleFingerKnuckleModelEntity.transform = getTransform(rightHandAnchor, .littleFingerKnuckle, rightLittleFingerKnuckleModelEntity.transform)\n        rightLittleFingerIntermediateBaseModelEntity.transform = getTransform(rightHandAnchor, .littleFingerIntermediateBase, rightLittleFingerIntermediateBaseModelEntity.transform)\n        rightLittleFingerIntermediateTipModelEntity.transform = getTransform(rightHandAnchor, .littleFingerIntermediateTip, rightLittleFingerIntermediateTipModelEntity.transform)\n        rightLittleFingerTipModelEntity.transform = getTransform(rightHandAnchor, .littleFingerTip, rightLittleFingerTipModelEntity.transform)\n        rightForearmWristModelEntity.transform = getTransform(rightHandAnchor, .forearmWrist, rightForearmWristModelEntity.transform)\n        rightForearmArmModelEntity.transform = getTransform(rightHandAnchor, .forearmArm, rightForearmArmModelEntity.transform)\n    }\n    \n    func getTransform(_ anchor: HandAnchor, _ jointName: HandSkeleton.JointName, _ beforeTransform: Transform) -> Transform {\n        let joint = anchor.handSkeleton?.joint(jointName)\n        if ((joint?.isTracked) != nil) {\n            let t = matrix_multiply(anchor.originFromAnchorTransform, (anchor.handSkeleton?.joint(jointName).anchorFromJointTransform)!)\n            return Transform(matrix: t)\n        }\n        return beforeTransform\n    }\n    \n    func addToContent(_ content: RealityKit.RealityViewContent) {\n        // Skeleton Joints to Track in View\n        let modelEntities = [\n            //Skeleton Joints to Track in View\n            leftWristModelEntity,\n            leftThumbKnuckleModelEntity,\n            leftThumbIntermediateBaseModelEntity,\n            leftThumbIntermediateTipModelEntity,\n            leftThumbTipModelEntity,\n            leftIndexFingerMetacarpalModelEntity,\n            leftIndexFingerKnuckleModelEntity,\n            leftIndexFingerIntermediateBaseModelEntity,\n            leftIndexFingerIntermediateTipModelEntity,\n            leftIndexFingerTipModelEntity,\n            leftMiddleFingerMetacarpalModelEntity,\n            leftMiddleFingerKnuckleModelEntity,\n            leftMiddleFingerIntermediateBaseModelEntity,\n            leftMiddleFingerIntermediateTipModelEntity,\n            leftMiddleFingerTipModelEntity,\n            leftRingFingerMetacarpalModelEntity,\n            leftRingFingerKnuckleModelEntity,\n            leftRingFingerIntermediateBaseModelEntity,\n            leftRingFingerIntermediateTipModelEntity,\n            leftRingFingerTipModelEntity,\n            leftLittleFingerMetacarpalModelEntity,\n            leftLittleFingerKnuckleModelEntity,\n            leftLittleFingerIntermediateBaseModelEntity,\n            leftLittleFingerIntermediateTipModelEntity,\n            leftLittleFingerTipModelEntity,\n            leftForearmWristModelEntity,\n            leftForearmArmModelEntity,\n            \n            rightWristModelEntity,\n            rightThumbKnuckleModelEntity,\n            rightThumbIntermediateBaseModelEntity,\n            rightThumbIntermediateTipModelEntity,\n            rightThumbTipModelEntity,\n            rightIndexFingerMetacarpalModelEntity,\n            rightIndexFingerKnuckleModelEntity,\n            rightIndexFingerIntermediateBaseModelEntity,\n            rightIndexFingerIntermediateTipModelEntity,\n            rightIndexFingerTipModelEntity,\n            rightMiddleFingerMetacarpalModelEntity,\n            rightMiddleFingerKnuckleModelEntity,\n            rightMiddleFingerIntermediateBaseModelEntity,\n            rightMiddleFingerIntermediateTipModelEntity,\n            rightMiddleFingerTipModelEntity,\n            rightRingFingerMetacarpalModelEntity,\n            rightRingFingerKnuckleModelEntity,\n            rightRingFingerIntermediateBaseModelEntity,\n            rightRingFingerIntermediateTipModelEntity,\n            rightRingFingerTipModelEntity,\n            rightLittleFingerMetacarpalModelEntity,\n            rightLittleFingerKnuckleModelEntity,\n            rightLittleFingerIntermediateBaseModelEntity,\n            rightLittleFingerIntermediateTipModelEntity,\n            rightLittleFingerTipModelEntity,\n            rightForearmWristModelEntity,\n            rightForearmArmModelEntity\n        ]\n        \n        modelEntities.forEach { content.add($0) }\n    }\n    \n}\n"
  },
  {
    "path": "HandTracking/HandTracking/ImmersiveView.swift",
    "content": "//\n//  ImmersiveView.swift\n//  HandTracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport RealityKitContent\nimport ARKit\n\nstruct ImmersiveView: View {\n    \n    @StateObject var handTrackingModel = HandTrackingModel()\n    \n    var body: some View {\n        VStack {\n            RealityView { content in\n                handTrackingModel.addToContent(content)\n            } update: { content in\n                handTrackingModel.computeTransformHeartTracking()\n            }\n        }\n        .upperLimbVisibility(.hidden)\n        .ignoresSafeArea()\n        .onAppear {\n            handTrackingModel.handTracking()\n        }\n    }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSHandsTrackingUsageDescription</key>\n\t<string>Track Hands</string>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "HandTracking/HandTracking/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B2421E92B8872C000BDC25D /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B2421E82B8872C000BDC25D /* RealityKitContent */; };\n\t\t3B2421EB2B8872C000BDC25D /* HandTrackingApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421EA2B8872C000BDC25D /* HandTrackingApp.swift */; };\n\t\t3B2421ED2B8872C000BDC25D /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421EC2B8872C000BDC25D /* ContentView.swift */; };\n\t\t3B2421EF2B8872C000BDC25D /* ImmersiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421EE2B8872C000BDC25D /* ImmersiveView.swift */; };\n\t\t3B2421F32B8872C100BDC25D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2421F22B8872C100BDC25D /* Assets.xcassets */; };\n\t\t3B2421F62B8872C100BDC25D /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2421F52B8872C100BDC25D /* Preview Assets.xcassets */; };\n\t\t3B2422152B88807B00BDC25D /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2422142B88807B00BDC25D /* Extensions.swift */; };\n\t\t3BAC410E2B88842C00E5FD68 /* HandTrackingModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BAC410D2B88842C00E5FD68 /* HandTrackingModel.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B2421E32B8872C000BDC25D /* HandTracking.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HandTracking.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B2421E72B8872C000BDC25D /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3B2421EA2B8872C000BDC25D /* HandTrackingApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HandTrackingApp.swift; sourceTree = \"<group>\"; };\n\t\t3B2421EC2B8872C000BDC25D /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3B2421EE2B8872C000BDC25D /* ImmersiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImmersiveView.swift; sourceTree = \"<group>\"; };\n\t\t3B2421F22B8872C100BDC25D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3B2421F52B8872C100BDC25D /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3B2421F72B8872C100BDC25D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3B2422142B88807B00BDC25D /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = \"<group>\"; };\n\t\t3BAC410D2B88842C00E5FD68 /* HandTrackingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HandTrackingModel.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B2421E02B8872C000BDC25D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2421E92B8872C000BDC25D /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B2421DA2B8872C000BDC25D = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421E52B8872C000BDC25D /* HandTracking */,\n\t\t\t\t3B2421E62B8872C000BDC25D /* Packages */,\n\t\t\t\t3B2421E42B8872C000BDC25D /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2421E42B8872C000BDC25D /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421E32B8872C000BDC25D /* HandTracking.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2421E52B8872C000BDC25D /* HandTracking */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421EA2B8872C000BDC25D /* HandTrackingApp.swift */,\n\t\t\t\t3B2421EC2B8872C000BDC25D /* ContentView.swift */,\n\t\t\t\t3B2421EE2B8872C000BDC25D /* ImmersiveView.swift */,\n\t\t\t\t3BAC410D2B88842C00E5FD68 /* HandTrackingModel.swift */,\n\t\t\t\t3B2422142B88807B00BDC25D /* Extensions.swift */,\n\t\t\t\t3B2421F22B8872C100BDC25D /* Assets.xcassets */,\n\t\t\t\t3B2421F72B8872C100BDC25D /* Info.plist */,\n\t\t\t\t3B2421F42B8872C100BDC25D /* Preview Content */,\n\t\t\t);\n\t\t\tpath = HandTracking;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2421E62B8872C000BDC25D /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421E72B8872C000BDC25D /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B2421F42B8872C100BDC25D /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B2421F52B8872C100BDC25D /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B2421E22B8872C000BDC25D /* HandTracking */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B2421FA2B8872C100BDC25D /* Build configuration list for PBXNativeTarget \"HandTracking\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B2421DF2B8872C000BDC25D /* Sources */,\n\t\t\t\t3B2421E02B8872C000BDC25D /* Frameworks */,\n\t\t\t\t3B2421E12B8872C000BDC25D /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = HandTracking;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B2421E82B8872C000BDC25D /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = \"Optimus Prime\";\n\t\t\tproductReference = 3B2421E32B8872C000BDC25D /* HandTracking.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B2421DB2B8872C000BDC25D /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B2421E22B8872C000BDC25D = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B2421DE2B8872C000BDC25D /* Build configuration list for PBXProject \"HandTracking\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B2421DA2B8872C000BDC25D;\n\t\t\tproductRefGroup = 3B2421E42B8872C000BDC25D /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B2421E22B8872C000BDC25D /* HandTracking */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B2421E12B8872C000BDC25D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2421F32B8872C100BDC25D /* Assets.xcassets in Resources */,\n\t\t\t\t3B2421F62B8872C100BDC25D /* Preview Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B2421DF2B8872C000BDC25D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B2421ED2B8872C000BDC25D /* ContentView.swift in Sources */,\n\t\t\t\t3B2421EB2B8872C000BDC25D /* HandTrackingApp.swift in Sources */,\n\t\t\t\t3BAC410E2B88842C00E5FD68 /* HandTrackingModel.swift in Sources */,\n\t\t\t\t3B2422152B88807B00BDC25D /* Extensions.swift in Sources */,\n\t\t\t\t3B2421EF2B8872C000BDC25D /* ImmersiveView.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B2421F82B8872C100BDC25D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B2421F92B8872C100BDC25D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B2421FB2B8872C100BDC25D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"HandTracking/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.HandTracking;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B2421FC2B8872C100BDC25D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"HandTracking/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.HandTracking;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B2421DE2B8872C000BDC25D /* Build configuration list for PBXProject \"HandTracking\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B2421F82B8872C100BDC25D /* Debug */,\n\t\t\t\t3B2421F92B8872C100BDC25D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B2421FA2B8872C100BDC25D /* Build configuration list for PBXNativeTarget \"HandTracking\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B2421FB2B8872C100BDC25D /* Debug */,\n\t\t\t\t3B2421FC2B8872C100BDC25D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B2421E82B8872C000BDC25D /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B2421DB2B8872C000BDC25D /* Project object */;\n}\n"
  },
  {
    "path": "HandTracking/HandTracking.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/ivancampos/Code/visionOS/Optimus Prime/HandTracking.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "HandTracking/HandTracking.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"D66134B1-3681-4A8E-AFE5-29F257229F3B\"\n  }\n}"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n      0.86602545,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.86602545,\n      0,\n      0.0035969093,\n      0.35542378,\n      0.62919164,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"65F6F990-A780-4474-B78B-572E0E4E273D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.86602545,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.86602545,\n      0,\n      1.1972517e-08,\n      2.6179132,\n      0.43191218,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"66168B71-AB05-424E-8B6C-D33D6E61B08F\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.5,\n      0,\n      0,\n      0.5,\n      0.8660254,\n      0,\n      0,\n      0.23875366,\n      0.4135335,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"AF09ED6F-1707-48FD-8720-65B998362C09\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      2.8836339,\n      -0.107588194,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Left\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Right\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"CB766F92-EE55-4A63-9401-E7B8C009764D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"D66134B1-3681-4A8E-AFE5-29F257229F3B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.26894823,\n      0.26934713,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\",\n        \"GridMaterial\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere_Left\", \"Sphere_Right\", \"GridMaterial\"]\n    def Sphere \"Sphere_Right\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Sphere \"Sphere_Left\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (-0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "HandTracking/README.md",
    "content": "# Hand Tracking\nQuickly add hand tracking to your visionOS app.\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/f08b197e-9c59-491f-b696-f0c6a07cf092\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2024 Ivan Campos\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "LLLM/LLLM/APIResponseService.swift",
    "content": "//\n//  APIResponseService.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport Foundation\n\nstruct APIService {\n    static func fetchResponse(userPrompt: String, completion: @escaping (String) -> Void) {\n        \n        var isRunningOnSimulator: Bool {\n                #if targetEnvironment(simulator)\n                // Code runs on Simulator\n                return true\n                #else\n                // Code runs on Device\n                return false\n                #endif\n            }\n        \n        var domain = \"localhost\"\n        if (isRunningOnSimulator == false) {\n            // ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'\n            domain = \"ENTER THE IP ADDRESS OF THE MACHINE RUNNING LM STUDIO HERE\"\n        }\n        //print(domain)\n        \n        let url = URL(string: \"http://\\(domain):1234/v1/chat/completions\")!\n        var request = URLRequest(url: url)\n        request.httpMethod = \"POST\"\n        request.setValue(\"application/json\", forHTTPHeaderField: \"Content-Type\")\n        \n        let body: [String: Any] = [\n            \"messages\": [\n                [\"role\": \"system\", \"content\": \"You are a helpful assistant.\"],\n                [\"role\": \"user\", \"content\": userPrompt]\n            ],\n            \"temperature\": 0.7,\n            \"max_tokens\": -1,\n            \"stream\": false\n        ]\n        \n        request.httpBody = try? JSONSerialization.data(withJSONObject: body, options: [])\n        \n        URLSession.shared.dataTask(with: request) { data, _, _ in\n            guard let data = data else { return }\n            do {\n                let decodedResponse = try JSONDecoder().decode(APIResponse.self, from: data)\n                if let message = decodedResponse.choices.first?.message.content {\n                    DispatchQueue.main.async {\n                        completion(message)\n                    }\n                }\n            } catch {\n                print(\"Failed to decode response: \\(error)\")\n            }\n        }.resume()\n    }\n}\n\nstruct APIResponse: Codable {\n    let choices: [Choice]\n}\n\nstruct Choice: Codable {\n    let message: Message\n}\n\nstruct Message: Codable {\n    let role: String\n    let content: String\n}\n"
  },
  {
    "path": "LLLM/LLLM/APIResponseView.swift",
    "content": "//\n//  APIResponseView.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\n\nstruct APIResponseView: View {\n    @StateObject private var viewModel = APIResponseViewModel()\n    \n    var body: some View {\n        VStack {\n            \n            SearchBar(text: $viewModel.prompt, onSearchButtonClicked: {\n                viewModel.fetchAPIResponse(with: viewModel.prompt)\n            })\n            .padding()\n            \n            Button(\"Send Prompt\") {\n                viewModel.fetchAPIResponse(with: viewModel.prompt)\n            }\n            .padding()\n            \n            if !viewModel.responseMessage.isEmpty {\n                Text(\"Response: \\(viewModel.responseMessage)\")\n                    .padding()\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LLLM/LLLM/APIResponseViewModel.swift",
    "content": "//\n//  APIResponseViewModel.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\nimport Combine\n\nclass APIResponseViewModel: ObservableObject {\n    @Published var prompt: String = \"\"\n    @Published var responseMessage: String = \"\"\n    \n    func fetchAPIResponse(with userPrompt: String) {\n        APIService.fetchResponse(userPrompt: userPrompt) { response in\n            DispatchQueue.main.async {\n                self.responseMessage = response\n            }\n        }\n    }\n}\n\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "LLLM/LLLM/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSBonjourServices</key>\n\t<array>\n\t\t<string>_http._tcp</string>\n\t</array>\n\t<key>NSLocalNetworkUsageDescription</key>\n        <string>Allow access to LM Studio</string>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "LLLM/LLLM/LLLMApp.swift",
    "content": "//\n//  LLLMApp.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\n\n@main\nstruct LLLMApp: App {\n    \n    var body: some Scene {\n        \n        WindowGroup {\n            APIResponseView()\n        }\n        \n    }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/SearchBar.swift",
    "content": "//\n//  SearchBar.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\n\nstruct SearchBar: UIViewRepresentable {\n    @Binding var text: String\n    var onSearchButtonClicked: () -> Void\n    \n    class Coordinator: NSObject, UISearchBarDelegate {\n        var parent: SearchBar\n        \n        init(_ parent: SearchBar) {\n            self.parent = parent\n        }\n        \n        func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {\n            parent.text = searchText\n        }\n        \n        func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {\n            parent.onSearchButtonClicked()\n            searchBar.resignFirstResponder()\n        }\n        \n        func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {\n            searchBar.resignFirstResponder()\n        }\n    }\n    \n    func makeCoordinator() -> Coordinator {\n        Coordinator(self)\n    }\n    \n    func makeUIView(context: Context) -> UISearchBar {\n        let searchBar = UISearchBar(frame: .zero)\n        searchBar.delegate = context.coordinator\n        searchBar.searchBarStyle = .minimal\n        searchBar.placeholder = \"Enter your prompt here\"\n        return searchBar\n    }\n    \n    func updateUIView(_ uiView: UISearchBar, context: Context) {\n        uiView.text = text\n    }\n}\n"
  },
  {
    "path": "LLLM/LLLM.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3BDFBA492B7DE79E00474AFB /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3BDFBA482B7DE79E00474AFB /* RealityKitContent */; };\n\t\t3BDFBA4B2B7DE79E00474AFB /* LLLMApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA4A2B7DE79E00474AFB /* LLLMApp.swift */; };\n\t\t3BDFBA512B7DE79F00474AFB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BDFBA502B7DE79F00474AFB /* Assets.xcassets */; };\n\t\t3BDFBA542B7DE79F00474AFB /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BDFBA532B7DE79F00474AFB /* Preview Assets.xcassets */; };\n\t\t3BDFBA5C2B7DEADA00474AFB /* APIResponseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA5B2B7DEADA00474AFB /* APIResponseViewModel.swift */; };\n\t\t3BDFBA5E2B7DEAEF00474AFB /* APIResponseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA5D2B7DEAEF00474AFB /* APIResponseView.swift */; };\n\t\t3BDFBA602B7DEB0500474AFB /* APIResponseService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA5F2B7DEB0500474AFB /* APIResponseService.swift */; };\n\t\t3BDFBA622B7DF77B00474AFB /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFBA612B7DF77B00474AFB /* SearchBar.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3BDFBA432B7DE79E00474AFB /* LLLM.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LLLM.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3BDFBA472B7DE79E00474AFB /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3BDFBA4A2B7DE79E00474AFB /* LLLMApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LLLMApp.swift; sourceTree = \"<group>\"; };\n\t\t3BDFBA502B7DE79F00474AFB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3BDFBA532B7DE79F00474AFB /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3BDFBA552B7DE79F00474AFB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3BDFBA5B2B7DEADA00474AFB /* APIResponseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIResponseViewModel.swift; sourceTree = \"<group>\"; };\n\t\t3BDFBA5D2B7DEAEF00474AFB /* APIResponseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIResponseView.swift; sourceTree = \"<group>\"; };\n\t\t3BDFBA5F2B7DEB0500474AFB /* APIResponseService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIResponseService.swift; sourceTree = \"<group>\"; };\n\t\t3BDFBA612B7DF77B00474AFB /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3BDFBA402B7DE79E00474AFB /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFBA492B7DE79E00474AFB /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3BDFBA3A2B7DE79E00474AFB = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA452B7DE79E00474AFB /* LLLM */,\n\t\t\t\t3BDFBA462B7DE79E00474AFB /* Packages */,\n\t\t\t\t3BDFBA442B7DE79E00474AFB /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFBA442B7DE79E00474AFB /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA432B7DE79E00474AFB /* LLLM.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFBA452B7DE79E00474AFB /* LLLM */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA4A2B7DE79E00474AFB /* LLLMApp.swift */,\n\t\t\t\t3BDFBA5F2B7DEB0500474AFB /* APIResponseService.swift */,\n\t\t\t\t3BDFBA5D2B7DEAEF00474AFB /* APIResponseView.swift */,\n\t\t\t\t3BDFBA5B2B7DEADA00474AFB /* APIResponseViewModel.swift */,\n\t\t\t\t3BDFBA612B7DF77B00474AFB /* SearchBar.swift */,\n\t\t\t\t3BDFBA502B7DE79F00474AFB /* Assets.xcassets */,\n\t\t\t\t3BDFBA552B7DE79F00474AFB /* Info.plist */,\n\t\t\t\t3BDFBA522B7DE79F00474AFB /* Preview Content */,\n\t\t\t);\n\t\t\tpath = LLLM;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFBA462B7DE79E00474AFB /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA472B7DE79E00474AFB /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3BDFBA522B7DE79F00474AFB /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3BDFBA532B7DE79F00474AFB /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3BDFBA422B7DE79E00474AFB /* LLLM */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3BDFBA582B7DE79F00474AFB /* Build configuration list for PBXNativeTarget \"LLLM\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3BDFBA3F2B7DE79E00474AFB /* Sources */,\n\t\t\t\t3BDFBA402B7DE79E00474AFB /* Frameworks */,\n\t\t\t\t3BDFBA412B7DE79E00474AFB /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = LLLM;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3BDFBA482B7DE79E00474AFB /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = LLLM;\n\t\t\tproductReference = 3BDFBA432B7DE79E00474AFB /* LLLM.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3BDFBA3B2B7DE79E00474AFB /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3BDFBA422B7DE79E00474AFB = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3BDFBA3E2B7DE79E00474AFB /* Build configuration list for PBXProject \"LLLM\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3BDFBA3A2B7DE79E00474AFB;\n\t\t\tproductRefGroup = 3BDFBA442B7DE79E00474AFB /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3BDFBA422B7DE79E00474AFB /* LLLM */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3BDFBA412B7DE79E00474AFB /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFBA542B7DE79F00474AFB /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3BDFBA512B7DE79F00474AFB /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3BDFBA3F2B7DE79E00474AFB /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3BDFBA4B2B7DE79E00474AFB /* LLLMApp.swift in Sources */,\n\t\t\t\t3BDFBA5C2B7DEADA00474AFB /* APIResponseViewModel.swift in Sources */,\n\t\t\t\t3BDFBA622B7DF77B00474AFB /* SearchBar.swift in Sources */,\n\t\t\t\t3BDFBA5E2B7DEAEF00474AFB /* APIResponseView.swift in Sources */,\n\t\t\t\t3BDFBA602B7DEB0500474AFB /* APIResponseService.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3BDFBA562B7DE79F00474AFB /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3BDFBA572B7DE79F00474AFB /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3BDFBA592B7DE79F00474AFB /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"LLLM/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.LLLM;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3BDFBA5A2B7DE79F00474AFB /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"LLLM/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.LLLM;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3BDFBA3E2B7DE79E00474AFB /* Build configuration list for PBXProject \"LLLM\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3BDFBA562B7DE79F00474AFB /* Debug */,\n\t\t\t\t3BDFBA572B7DE79F00474AFB /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3BDFBA582B7DE79F00474AFB /* Build configuration list for PBXNativeTarget \"LLLM\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3BDFBA592B7DE79F00474AFB /* Debug */,\n\t\t\t\t3BDFBA5A2B7DE79F00474AFB /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3BDFBA482B7DE79E00474AFB /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3BDFBA3B2B7DE79E00474AFB /* Project object */;\n}\n"
  },
  {
    "path": "LLLM/LLLM.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "LLLM/LLLM.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "LLLM/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"95052448-183C-40B5-9E52-3717AF9B48FA\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"A21C1E11-ABB0-4972-8159-55AD3A9AA5B3\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"1D572CEB-057A-41C3-B575-04C37501A3C0\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"D66134B1-3681-4A8E-AFE5-29F257229F3B\"\n  }\n}"
  },
  {
    "path": "LLLM/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n      0.86602545,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.86602545,\n      0,\n      -7.719708e-08,\n      0.36129734,\n      0.62580043,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"1D572CEB-057A-41C3-B575-04C37501A3C0\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      2.8834329,\n      -0.1072194,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"1D572CEB-057A-41C3-B575-04C37501A3C0\",\n        \"Root\",\n        \"Sphere_Left\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"1D572CEB-057A-41C3-B575-04C37501A3C0\",\n        \"Root\",\n        \"Sphere_Right\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"1D572CEB-057A-41C3-B575-04C37501A3C0\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"65F6F990-A780-4474-B78B-572E0E4E273D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.86602545,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.86602545,\n      0,\n      1.1972517e-08,\n      2.6179132,\n      0.43191218,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"95052448-183C-40B5-9E52-3717AF9B48FA\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"95052448-183C-40B5-9E52-3717AF9B48FA\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"A21C1E11-ABB0-4972-8159-55AD3A9AA5B3\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.5,\n      0,\n      0,\n      0.5,\n      0.8660254,\n      0,\n      0,\n      0.23875366,\n      0.4135335,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"D66134B1-3681-4A8E-AFE5-29F257229F3B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.53307986,\n      0.53307986,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\",\n        \"Sphere\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "LLLM/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "LLLM/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "LLLM/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "LLLM/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\nreorder rootPrims = [\"Root\", \"GridMaterial\"]\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere_Left\", \"Sphere_Right\", \"GridMaterial\"]\n    def Sphere \"Sphere_Right\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Sphere \"Sphere_Left\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (-0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        references = @Materials/GridMaterial.usda@\n    )\n    {\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "LLLM/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "LLLM/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\nreorder rootPrims = [\"Root\", \"GridMaterial\"]\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        reorder nameChildren = [\"Collider\", \"InputTarget\", \"GridMaterial\"]\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.1\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "LLLM/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "LLLM/README.md",
    "content": "# LLLM\n**Local Large Language Model (LLLM):** Call your LM Studio models from your Apple Vision Pro   \n![GIF](https://github.com/IvanCampos/visionOS-examples/assets/872137/a691758a-4e3a-4b58-9c72-06d9ed655ae8)\n\n## Requirements\n* Install [LM Studio](https://lmstudio.ai/) on your Apple Silicon (M-Series) Mac\n  * Click on Local Server in Left Menu\n    * Download your model of choice (e.g. TheBloke/*)\n    * Load your desired local Model\n    * Click \"Start Server\" button for Port 1234\n* Xcode 15.2+\n\n# Instructions\n## Simulator\n* Open in Project in Xcode\n* Set your run destination to a Vision Pro Simulator\n* Play\n\n## Apple Vision Pro\n* Open in Project in Xcode\n* Set your run destination to a Vision Pro Simulator\n* Open APIResponseService.swift\n  * Get your IP address\n    * In Terminal, run: ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'\n  * Replace the text \"ENTER THE IP ADDRESS OF THE MACHINE RUNNING LM STUDIO HERE\" with your IP address\n* Play\n* When sending your prompt for the first time, Allow Network Access\n"
  },
  {
    "path": "Music Kit/Music Kit/AppModel.swift",
    "content": "//\n//  AppModel.swift\n//  Music Kit\n//\n//  Created by IVAN CAMPOS on 3/7/25.\n//\n\nimport SwiftUI\n\n/// Maintains app-wide state\n@MainActor\n@Observable\nclass AppModel {\n    let immersiveSpaceID = \"ImmersiveSpace\"\n    enum ImmersiveSpaceState {\n        case closed\n        case inTransition\n        case open\n    }\n    var immersiveSpaceState = ImmersiveSpaceState.closed\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  Music Kit\n//\n//  Created by IVAN CAMPOS on 3/7/25.\n//\n\nimport SwiftUI\n\n/// This View now allows the user to enter an artist name,\n/// then calls `musicManager.fetchSongsForArtist(artistName:)`.\nstruct ContentView: View {\n    @EnvironmentObject var musicManager: MusicManager\n    \n    @State private var artistName: String = \"XG\"\n    \n    var body: some View {\n        VStack(spacing: 20) {\n            Text(\"MusicKit Demo\")\n                .font(.title)\n                .padding(.top, 40)\n            \n            // TextField to capture any artist name\n            HStack {\n                TextField(\"Enter artist name\", text: $artistName)\n                    .textFieldStyle(.roundedBorder)\n                    .frame(width: 200)\n                \n                Button(\"Fetch Artist Songs\") {\n                    Task {\n                        if musicManager.isAuthorized {\n                            musicManager.customSongs.removeAll()\n                            await musicManager.fetchSongsForArtist(artistName: artistName)\n                        }\n                    }\n                }\n            }\n            .padding(.horizontal, 20)\n            \n            // Button to show or hide the immersive space\n            ToggleImmersiveSpaceButton()\n                .padding(.bottom, 40)\n            \n            Text(\"Enter an artist above, fetch their songs, then open the immersive space.\")\n                .multilineTextAlignment(.center)\n                .padding(.horizontal, 20)\n        }\n    }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Extensions.swift",
    "content": "//\n//  Extensions.swift\n//  Music Kit\n//\n//  Created by IVAN CAMPOS on 6/10/24.\n//\n\nimport SwiftUI\n\n/// An extension that provides a way to chunk an array into smaller arrays\nextension Array {\n    func chunked(into size: Int) -> [[Element]] {\n        return stride(from: 0, to: self.count, by: size).map {\n            Array(self[$0..<Swift.min($0 + size, self.count)])\n        }\n    }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Helpers.swift",
    "content": "//\n//  Helpers.swift\n//  Music Kit\n//\n//  Created by IVAN CAMPOS on 2/22/25.\n//\n\nimport SwiftUI\nimport RealityKit\nimport MusicKit\nimport UIKit\n\n/// A RealityKit component that holds a reference to the associated `Song`.\nstruct SongReferenceComponent: Component {\n    let song: Song\n}\n\n/// Make the component codable if needed (optional).\nextension SongReferenceComponent: Codable {}\n\n/// Convert an Apple MusicKit Artwork to a CGImage.\nfunc cgImageFromArtwork(artwork: Artwork, width: Int) async throws -> CGImage {\n    // Provide a URL with the desired width x height\n    guard let imageURL = artwork.url(width: width, height: width) else {\n        throw NSError(domain: \"ArtworkConversionError\", code: -1,\n                      userInfo: [NSLocalizedDescriptionKey: \"Invalid artwork URL\"])\n    }\n    \n    let (data, _) = try await URLSession.shared.data(from: imageURL)\n    guard let uiImage = UIImage(data: data) else {\n        throw NSError(domain: \"ArtworkConversionError\", code: -1,\n                      userInfo: [NSLocalizedDescriptionKey: \"Unable to convert data into a UIImage\"])\n    }\n    \n    if let directCG = uiImage.cgImage {\n        return directCG\n    } else {\n        let renderer = UIGraphicsImageRenderer(size: uiImage.size)\n        let rendered = renderer.image { _ in uiImage.draw(at: .zero) }\n        guard let renderedCG = rendered.cgImage else {\n            throw NSError(domain: \"ArtworkConversionError\", code: -1,\n                          userInfo: [NSLocalizedDescriptionKey: \"Unable to generate CGImage\"])\n        }\n        return renderedCG\n    }\n}\n\n/// Create a ModelEntity using a Song's artwork (unlit plane).\n@MainActor\nfunc createArtworkEntity(\n    for song: Song,\n    width: Float = 0.2,\n    height: Float = 0.2\n) async -> ModelEntity? {\n    guard let artwork = song.artwork else { return nil }\n    \n    do {\n        let cgImage = try await cgImageFromArtwork(artwork: artwork, width: 300)\n        let texture = try await TextureResource(image: cgImage, options: .init(semantic: .color))\n        \n        var material = SimpleMaterial()\n        let matTexture = MaterialParameters.Texture(texture)\n        material.color = .init(texture: matTexture)\n        \n        let planeMesh = MeshResource.generatePlane(width: width, height: height)\n        let entity = ModelEntity(mesh: planeMesh, materials: [material])\n        return entity\n    } catch {\n        print(\"Error creating artwork entity: \\(error)\")\n        return nil\n    }\n}\n\n/// A sample SwiftUI view for playback controls. Attach or modify as needed.\nstruct PlaybackControlsView: View {\n    @EnvironmentObject var musicManager: MusicManager\n    \n    var body: some View {\n        VStack(spacing: 8) {\n            Text(\"Playback Controls\")\n                .font(.headline)\n            HStack {\n                Button(\"Stop\") {\n                    musicManager.stopPlayback()\n                }\n                Button(\"Pause\") {\n                    musicManager.pausePlayback()\n                }\n            }\n            .buttonStyle(.borderedProminent)\n        }\n        .padding()\n        .background(.regularMaterial)\n        .cornerRadius(12)\n    }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/ImmersiveView.swift",
    "content": "//\n//  ImmersiveView.swift\n//  Music Kit\n//\n//  Created by IVAN CAMPOS on 3/7/25.\n//\n\nimport SwiftUI\nimport RealityKit\nimport MusicKit\n\n/// Adjust this to define how many songs appear in one row / chunk\nlet CHUNK_SIZE = 9\n\nstruct ImmersiveView: View {\n    @EnvironmentObject var musicManager: MusicManager\n    \n    var body: some View {\n        RealityView { content, attachments in\n            // Create a ModelEntity to serve as a parent anchor\n            let nameEntity = ModelEntity(\n                mesh: .generateText(\n                    \"\",\n                    extrusionDepth: 0.001,\n                    font: .systemFont(ofSize: 12),\n                    containerFrame: .zero,\n                    alignment: .center,\n                    lineBreakMode: .byCharWrapping\n                ),\n                materials: [UnlitMaterial(color: .black)]\n            )\n            nameEntity.position = [0.1, 1.5, -1]\n            nameEntity.name = \"name\"\n            content.add(nameEntity)\n            \n            // Add attachments to that entity\n            let attachmentData: [(name: String, position: SIMD3<Float>)] = [\n                (name: \"Artwork\", position: [0, 0, 0]),\n                (name: \"Titles\",  position: [0, 0, 0.1])\n            ]\n            \n            for data in attachmentData {\n                if let attachment = attachments.entity(for: data.name) {\n                    attachment.name = data.name\n                    attachment.components.set(InputTargetComponent())\n                    attachment.generateCollisionShapes(recursive: true)\n                    attachment.position = data.position\n                    nameEntity.addChild(attachment)\n                }\n            }\n        } attachments: {\n            // Attachment for listing songs (simple list)\n            Attachment(id: \"Songs\") {\n                List(musicManager.customSongs, id: \\.id) { song in\n                    HStack {\n                        Text(song.title)\n                        Spacer()\n                        Button(action: {\n                            musicManager.playSong(song)\n                        }) {\n                            Image(systemName: \"play.circle\")\n                                .font(.system(size: 36))\n                        }\n                    }\n                }\n            }\n            \n            // Attachment for Artwork\n            Attachment(id: \"Artwork\") {\n                let chunkedSongs = musicManager.customSongs.chunked(into: CHUNK_SIZE)\n                \n                ScrollView {\n                    VStack {\n                        ForEach(chunkedSongs, id: \\.self) { songChunk in\n                            HStack {\n                                ForEach(songChunk, id: \\.id) { song in\n                                    if let artwork = song.artwork {\n                                        ArtworkImage(artwork, width: 350)\n                                            .hoverEffect(LiftHoverEffect())\n                                    }\n                                }\n                            }\n                        }\n                    }\n                    .padding()\n                }\n            }\n            \n            // Attachment for Titles / custom UI\n            Attachment(id: \"Titles\") {\n                TitlesView()\n                HStack {\n                    // A separate \"Stop Playback\" UI\n                    StopView {\n                        musicManager.stopPlayback()\n                    }\n                }\n                .frame(width: 350)\n            }\n        }\n    }\n}\n\n/// Format a time interval into mm:ss if needed\nfunc formatTimeInterval(_ timeInterval: TimeInterval) -> String {\n    let seconds = Int(timeInterval) % 60\n    let minutes = (Int(timeInterval) / 60) % 60\n    return String(format: \"%02d:%02d\", minutes, seconds)\n}\n\nstruct TitlesView: View {\n    @EnvironmentObject var musicManager: MusicManager\n    \n    var body: some View {\n        let chunkedSongs = musicManager.customSongs.chunked(into: CHUNK_SIZE)\n        \n        ScrollView {\n            VStack {\n                ForEach(chunkedSongs, id: \\.self) { songChunk in\n                    HStack {\n                        ForEach(songChunk, id: \\.id) { song in\n                            VStack {\n                                Button(action: {\n                                    musicManager.playSong(song)\n                                }) {\n                                    VStack {\n                                        Text(song.title)\n                                    }\n                                    .padding(30)\n                                    .frame(width: 350)\n                                }\n                                .buttonStyle(StyledButton())\n                                .frame(width: 350)\n                            }\n                        }\n                        .frame(height: 400)\n                    }\n                }\n            }\n        }\n    }\n}\n\n/// Custom button style for the titles\nstruct StyledButton: ButtonStyle {\n    func makeBody(configuration: Configuration) -> some View {\n        configuration.label\n            .background(.thinMaterial)\n            .hoverEffect(.highlight)\n            .foregroundColor(.white)\n            .clipShape(.capsule)\n            .hoverEffect { effect, isActive, _ in\n                effect.scaleEffect(isActive ? 1.0 : 0.8)\n            }\n    }\n}\n\n/// A custom \"Stop\" button that animates a text label into view on hover.\nstruct StopView: View {\n    var action: () -> Void\n    @Namespace var hoverNamespace\n    \n    var hoverGroup: HoverEffectGroup {\n        HoverEffectGroup(hoverNamespace)\n    }\n    \n    var body: some View {\n        Button(action: action) {\n            HStack(spacing: 2) {\n                StopButtonView {\n                    action()\n                }\n                .hoverEffect(in: hoverGroup) { effect, isActive, _ in\n                    effect.scaleEffect(isActive ? 1.05 : 1.0)\n                }\n                \n                StopTextView()\n                    .hoverEffect(in: hoverGroup) { effect, isActive, _ in\n                        effect.opacity(isActive ? 1 : 0)\n                    }\n            }\n        }\n        .frame(width: 350)\n        .buttonStyle(StopButtonStyle(hoverGroup: hoverGroup))\n    }\n}\n\nstruct StopButtonView: View {\n    var action: () -> Void\n    \n    var body: some View {\n        Button(action: {\n            action()\n        }) {\n            Image(systemName: \"stop.circle\")\n                .resizable()\n                .scaledToFit()\n                .frame(width: 42, height: 42)\n                .padding(6)\n                .foregroundColor(.white)\n                .background(Color.clear)\n        }\n    }\n}\n\n/// Animates the capsule shape when hovered\nstruct StopButtonStyle: ButtonStyle {\n    var hoverGroup: HoverEffectGroup?\n    \n    func makeBody(configuration: Configuration) -> some View {\n        configuration.label\n            .background(.thinMaterial)\n            .hoverEffect(.highlight)\n            .hoverEffect { effect, isActive, proxy in\n                effect.animation(.default.delay(isActive ? 0.2 : 0.1)) {\n                    $0.clipShape(.capsule.size(\n                        width: isActive ? proxy.size.width : proxy.size.width - 121,\n                        height: proxy.size.height,\n                        anchor: .leading\n                    ))\n                }\n            }\n    }\n}\n\nstruct StopTextView: View {\n    var body: some View {\n        Text(\"Stop Playing\")\n            .font(.subheadline)\n            .foregroundStyle(.white)\n            .padding(.trailing, 24)\n            .padding(.leading, 12)\n    }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSAppleMusicUsageDescription</key>\n\t<string>Enable MusicKit Access</string>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Music Kit/Music Kit/MusicManager.swift",
    "content": "//\n//  MusicManager.swift\n//  Music Kit\n//\n//  Created by IVAN CAMPOS on 2/22/25.\n//\n\nimport Foundation\nimport MusicKit\nimport SwiftUI\n\n/// Potential custom error types for your MusicManager\nenum MusicManagerError: Error {\n    case notAuthorized\n}\n\n/// Manages Apple Music authorization, data fetching, and playback.\n@MainActor\nclass MusicManager: ObservableObject {\n    \n    // MARK: - Published Properties\n    @Published var albums: [Album] = []\n    @Published var songs: [Song] = []\n    @Published var customSongs: [Song] = []\n    @Published var playlists: [Playlist] = []\n    @Published var selectedTracks: [Track] = []\n    @Published var isAuthorized: Bool = false\n    \n    // (Optional) You can store the last error so the UI can display it if needed\n    @Published var lastError: Error?\n\n    // MARK: - Private Properties\n    private var player: ApplicationMusicPlayer = .shared\n    private let requestLimit = 12\n\n    // MARK: - Authorization\n    func requestAuthorization() {\n        Task {\n            let status = await MusicAuthorization.request()\n            isAuthorized = (status == .authorized)\n            if isAuthorized {\n                print(\"Authorization granted\")\n            } else {\n                print(\"Authorization denied or restricted\")\n            }\n        }\n    }\n    \n    // MARK: - Generic Catalog Search\n    /// A reusable method for searching Apple Music for any MusicCatalogSearchable type\n    func searchCatalog<T: MusicCatalogSearchable>(\n        ofType type: T.Type,\n        for searchTerm: String,\n        limit: Int? = nil\n    ) async throws -> MusicCatalogSearchResponse {\n        guard isAuthorized else {\n            throw MusicManagerError.notAuthorized\n        }\n        var request = MusicCatalogSearchRequest(term: searchTerm, types: [T.self])\n        request.limit = limit ?? requestLimit\n        return try await request.response()\n    }\n    \n    // MARK: - Specific Search Examples\n    func searchAlbums(for searchTerm: String) async {\n        do {\n            let response: MusicCatalogSearchResponse =\n                try await searchCatalog(ofType: Album.self, for: searchTerm)\n            albums = Array(response.albums)\n        } catch {\n            handleError(error, message: \"Error searching albums\")\n        }\n    }\n    \n    func searchSongs(for searchTerm: String) async {\n        do {\n            let response: MusicCatalogSearchResponse =\n                try await searchCatalog(ofType: Song.self, for: searchTerm)\n            songs = Array(response.songs)\n        } catch {\n            handleError(error, message: \"Error searching songs\")\n        }\n    }\n    \n    func searchPlaylists(for searchTerm: String) async {\n        do {\n            let response: MusicCatalogSearchResponse =\n                try await searchCatalog(ofType: Playlist.self, for: searchTerm)\n            playlists = Array(response.playlists)\n        } catch {\n            handleError(error, message: \"Error searching playlists\")\n        }\n    }\n\n    // MARK: - Fetching Detailed Resources\n    func fetchTracks(for album: Album) {\n        guard isAuthorized else {\n            print(\"Not authorized to access Apple Music\")\n            return\n        }\n        Task {\n            do {\n                let detailedAlbum = try await album.with([.tracks])\n                selectedTracks = Array(detailedAlbum.tracks ?? [])\n            } catch {\n                handleError(error, message: \"Error fetching album tracks\")\n            }\n        }\n    }\n    \n    func fetchPlaylistItems(for playlist: Playlist) {\n        guard isAuthorized else {\n            print(\"Not authorized to access Apple Music\")\n            return\n        }\n        Task {\n            do {\n                let detailedPlaylist = try await playlist.with([.tracks])\n                selectedTracks = Array(detailedPlaylist.tracks ?? [])\n            } catch {\n                handleError(error, message: \"Error fetching playlist tracks\")\n            }\n        }\n    }\n\n    // MARK: - Specific Custom Songs\n    func getCustomSongs() async {\n        // Just an example array of fixed IDs\n        var request = MusicCatalogResourceRequest<Song>(matching: \\.id, memberOf: [\"1737281142\", \"1742262123\", \"1757581944\", \"1660487909\", \"1692289011\", \"1770737897\", \"1703356592\", \"1609402381\", \"1717738435\", \"1702984168\",\n            \"1624618717\", \"1703356821\"])\n        request.limit = requestLimit\n        \n        do {\n            let response = try await request.response()\n            customSongs = Array(response.items)\n        } catch {\n            handleError(error, message: \"Error getting custom songs\")\n        }\n    }\n    \n    // MARK: - Playback\n    func playTrack(_ track: Track) {\n        guard isAuthorized else {\n            print(\"Not authorized to access Apple Music\")\n            return\n        }\n        Task {\n            do {\n                player.queue = [track]\n                try await player.play()\n            } catch {\n                handleError(error, message: \"Error playing track\")\n            }\n        }\n    }\n    \n    func playSong(_ song: Song) {\n        guard isAuthorized else {\n            print(\"Not authorized to access Apple Music\")\n            return\n        }\n        Task {\n            do {\n                player.queue = [song]\n                try await player.play()\n            } catch {\n                handleError(error, message: \"Error playing song\")\n            }\n        }\n    }\n    \n    func stopPlayback() {\n        Task {\n            player.stop()\n        }\n    }\n    \n    func pausePlayback() {\n        Task {\n            player.pause()\n        }\n    }\n    \n    func getPlaybackStatus() -> MusicPlayer.PlaybackStatus {\n        player.state.playbackStatus\n    }\n    \n    func isPlaying() -> Bool {\n        getPlaybackStatus() == .playing\n    }\n    \n    // MARK: - Fetching Single Items or Music Videos\n    func fetchSongMetadata(songID: MusicItemID) async throws -> Song? {\n        let request = MusicCatalogResourceRequest<Song>(matching: \\.id, equalTo: songID)\n        let response = try await request.response()\n        return response.items.first\n    }\n\n    func fetchMusicVideos(for artistName: String) async throws -> MusicItemCollection<MusicVideo> {\n        let request = MusicCatalogSearchRequest(term: artistName, types: [MusicVideo.self])\n        let response = try await request.response()\n        return response.musicVideos\n    }\n    \n    // MARK: - Fetch All Songs for an Artist\n    func fetchSongsForArtist(artistName: String) async {\n        do {\n            // 1. Search for the artist\n            var searchRequest = MusicCatalogSearchRequest(term: artistName, types: [Artist.self])\n            searchRequest.limit = 1\n            let searchResponse = try await searchRequest.response()\n            \n            guard let artist = searchResponse.artists.first else {\n                print(\"Artist not found.\")\n                return\n            }\n            \n            // 2. Fetch detailed artist info\n            let artistRequest = MusicCatalogResourceRequest<Artist>(matching: \\.id, equalTo: artist.id)\n            let artistResponse = try await artistRequest.response()\n            \n            guard let detailedArtist = artistResponse.items.first else {\n                print(\"Could not fetch detailed artist info.\")\n                return\n            }\n            \n            // 3. Fetch the artist's songs\n            var songsRequest = MusicCatalogSearchRequest(term: detailedArtist.name, types: [Song.self])\n            songsRequest.limit = 25\n            let songsResponse = try await songsRequest.response()\n            \n            let fetchedSongs = songsResponse.songs\n            let filteredSongs = fetchedSongs.filter { $0.artistName.contains(detailedArtist.name) }\n            \n            // Modify customSongs (already published)\n            customSongs.append(contentsOf: filteredSongs)\n            \n        } catch {\n            handleError(error, message: \"Error fetching songs for artist\")\n        }\n    }\n    \n    // MARK: - Error Handling\n    private func handleError(_ error: Error, message: String) {\n        print(\"\\(message): \\(error)\")\n        lastError = error // Store if you'd like to display it in the UI\n    }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/Music_KitApp.swift",
    "content": "//\n//  Music_KitApp.swift\n//  Music Kit\n//\n//  Created by IVAN CAMPOS on 3/7/25.\n//\n\nimport SwiftUI\n\n@main\nstruct Music_KitApp: App {\n    \n    @State private var appModel = AppModel()\n    @StateObject private var musicManager = MusicManager()\n    \n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n                .environment(appModel)\n                .environmentObject(musicManager)\n                .onAppear() {\n                    musicManager.requestAuthorization()\n                }\n        }\n        \n        ImmersiveSpace(id: appModel.immersiveSpaceID) {\n            ImmersiveView()\n                .environment(appModel)\n                .environmentObject(musicManager)\n                .onAppear {\n                    appModel.immersiveSpaceState = .open\n                }\n                .onDisappear {\n                    appModel.immersiveSpaceState = .closed\n                }\n        }\n        .immersionStyle(selection: .constant(.mixed), in: .mixed)\n    }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit/ToggleImmersiveSpaceButton.swift",
    "content": "//\n//  ToggleImmersiveSpaceButton.swift\n//  Music Kit\n//\n//  Created by IVAN CAMPOS on 3/7/25.\n//\n\nimport SwiftUI\n\nstruct ToggleImmersiveSpaceButton: View {\n\n    @Environment(AppModel.self) private var appModel\n\n    @Environment(\\.dismissImmersiveSpace) private var dismissImmersiveSpace\n    @Environment(\\.openImmersiveSpace) private var openImmersiveSpace\n\n    var body: some View {\n        Button {\n            Task { @MainActor in\n                switch appModel.immersiveSpaceState {\n                    case .open:\n                        appModel.immersiveSpaceState = .inTransition\n                        await dismissImmersiveSpace()\n                        // Don't set immersiveSpaceState to .closed because there\n                        // are multiple paths to ImmersiveView.onDisappear().\n                        // Only set .closed in ImmersiveView.onDisappear().\n\n                    case .closed:\n                        appModel.immersiveSpaceState = .inTransition\n                        switch await openImmersiveSpace(id: appModel.immersiveSpaceID) {\n                            case .opened:\n                                // Don't set immersiveSpaceState to .open because there\n                                // may be multiple paths to ImmersiveView.onAppear().\n                                // Only set .open in ImmersiveView.onAppear().\n                                break\n\n                            case .userCancelled, .error:\n                                // On error, we need to mark the immersive space\n                                // as closed because it failed to open.\n                                fallthrough\n                            @unknown default:\n                                // On unknown response, assume space did not open.\n                                appModel.immersiveSpaceState = .closed\n                        }\n\n                    case .inTransition:\n                        // This case should not ever happen because button is disabled for this case.\n                        break\n                }\n            }\n        } label: {\n            Text(appModel.immersiveSpaceState == .open ? \"Hide Immersive Space\" : \"Show Immersive Space\")\n        }\n        .disabled(appModel.immersiveSpaceState == .inTransition)\n        .animation(.none, value: 0)\n        .fontWeight(.semibold)\n    }\n}\n"
  },
  {
    "path": "Music Kit/Music Kit.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 77;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B7AC3EA2D7BFD9C00CBC8FA /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B7AC3E92D7BFD9C00CBC8FA /* RealityKitContent */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B7AC3E42D7BFD9C00CBC8FA /* Music Kit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"Music Kit.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B7AC3E82D7BFD9C00CBC8FA /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */\n\t\t3B7AC3FC2D7BFD9D00CBC8FA /* Exceptions for \"Music Kit\" folder in \"Music Kit\" target */ = {\n\t\t\tisa = PBXFileSystemSynchronizedBuildFileExceptionSet;\n\t\t\tmembershipExceptions = (\n\t\t\t\tInfo.plist,\n\t\t\t);\n\t\t\ttarget = 3B7AC3E32D7BFD9C00CBC8FA /* Music Kit */;\n\t\t};\n/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */\n\n/* Begin PBXFileSystemSynchronizedRootGroup section */\n\t\t3B7AC3E62D7BFD9C00CBC8FA /* Music Kit */ = {\n\t\t\tisa = PBXFileSystemSynchronizedRootGroup;\n\t\t\texceptions = (\n\t\t\t\t3B7AC3FC2D7BFD9D00CBC8FA /* Exceptions for \"Music Kit\" folder in \"Music Kit\" target */,\n\t\t\t);\n\t\t\tpath = \"Music Kit\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXFileSystemSynchronizedRootGroup section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B7AC3E12D7BFD9C00CBC8FA /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B7AC3EA2D7BFD9C00CBC8FA /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B7AC3DB2D7BFD9C00CBC8FA = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B7AC3E62D7BFD9C00CBC8FA /* Music Kit */,\n\t\t\t\t3B7AC3E72D7BFD9C00CBC8FA /* Packages */,\n\t\t\t\t3B7AC3E52D7BFD9C00CBC8FA /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B7AC3E52D7BFD9C00CBC8FA /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B7AC3E42D7BFD9C00CBC8FA /* Music Kit.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B7AC3E72D7BFD9C00CBC8FA /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B7AC3E82D7BFD9C00CBC8FA /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B7AC3E32D7BFD9C00CBC8FA /* Music Kit */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B7AC3FD2D7BFD9D00CBC8FA /* Build configuration list for PBXNativeTarget \"Music Kit\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B7AC3E02D7BFD9C00CBC8FA /* Sources */,\n\t\t\t\t3B7AC3E12D7BFD9C00CBC8FA /* Frameworks */,\n\t\t\t\t3B7AC3E22D7BFD9C00CBC8FA /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tfileSystemSynchronizedGroups = (\n\t\t\t\t3B7AC3E62D7BFD9C00CBC8FA /* Music Kit */,\n\t\t\t);\n\t\t\tname = \"Music Kit\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B7AC3E92D7BFD9C00CBC8FA /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = \"Music Kit\";\n\t\t\tproductReference = 3B7AC3E42D7BFD9C00CBC8FA /* Music Kit.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B7AC3DC2D7BFD9C00CBC8FA /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1630;\n\t\t\t\tLastUpgradeCheck = 1630;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B7AC3E32D7BFD9C00CBC8FA = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 16.3;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B7AC3DF2D7BFD9C00CBC8FA /* Build configuration list for PBXProject \"Music Kit\" */;\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B7AC3DB2D7BFD9C00CBC8FA;\n\t\t\tminimizedProjectReferenceProxies = 1;\n\t\t\tpreferredProjectObjectVersion = 77;\n\t\t\tproductRefGroup = 3B7AC3E52D7BFD9C00CBC8FA /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B7AC3E32D7BFD9C00CBC8FA /* Music Kit */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B7AC3E22D7BFD9C00CBC8FA /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B7AC3E02D7BFD9C00CBC8FA /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B7AC3FE2D7BFD9D00CBC8FA /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.Music-Kit\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 7;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B7AC3FF2D7BFD9D00CBC8FA /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.Music-Kit\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 7;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B7AC4002D7BFD9D00CBC8FA /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 2.4;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B7AC4012D7BFD9D00CBC8FA /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 2.4;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B7AC3DF2D7BFD9C00CBC8FA /* Build configuration list for PBXProject \"Music Kit\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B7AC4002D7BFD9D00CBC8FA /* Debug */,\n\t\t\t\t3B7AC4012D7BFD9D00CBC8FA /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B7AC3FD2D7BFD9D00CBC8FA /* Build configuration list for PBXNativeTarget \"Music Kit\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B7AC3FE2D7BFD9D00CBC8FA /* Debug */,\n\t\t\t\t3B7AC3FF2D7BFD9D00CBC8FA /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B7AC3E92D7BFD9C00CBC8FA /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B7AC3DC2D7BFD9C00CBC8FA /* Project object */;\n}\n"
  },
  {
    "path": "Music Kit/Music Kit.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Music Kit/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\"\n  }\n}"
  },
  {
    "path": "Music Kit/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\" : {\n    \"objectMetadataList\" : [\n      [\n        \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\",\n        \"Root\"\n      ],\n      {\n        \"disallowsFraming\" : false,\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\",\n        \"Root\",\n        \"Video_Dock\"\n      ],\n      {\n        \"disallowsFraming\" : false,\n        \"isExpanded\" : false,\n        \"isLocked\" : false\n      },\n      [\n        \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\",\n        \"Root\",\n        \"SkyDome\"\n      ],\n      {\n        \"disallowsFraming\" : true,\n        \"isExpanded\" : false,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "Music Kit/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"kg⋅m²\" : \"kg⋅m²\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "Music Kit/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:6.0\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    platforms: [\n        .visionOS(.v2),\n        .macOS(.v15),\n        .iOS(.v18)\n    ],\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "Music Kit/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "Music Kit/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Ground/Ground.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Ground\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Ground\"\n{\n    float3 xformOp:translate = (0, 0.1, 0)\n    uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n    def Mesh \"Mesh\" (\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        float3[] extent = [(-2.5, 0, -2), (2.5, 0, 3)]\n        int[] faceVertexCounts = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]\n        int[] faceVertexIndices = [0, 1, 26, 25, 1, 2, 27, 26, 2, 3, 28, 27, 3, 4, 29, 28, 4, 5, 30, 29, 5, 6, 31, 30, 6, 7, 32, 31, 7, 8, 33, 32, 8, 9, 34, 33, 9, 10, 35, 34, 10, 11, 36, 35, 11, 12, 37, 36, 12, 13, 38, 37, 13, 14, 39, 38, 14, 15, 40, 39, 15, 16, 41, 40, 16, 17, 42, 41, 17, 18, 43, 42, 18, 19, 44, 43, 19, 20, 45, 44, 20, 21, 46, 45, 21, 22, 47, 46, 22, 23, 48, 47, 23, 24, 49, 48, 25, 26, 51, 50, 26, 27, 52, 51, 27, 28, 53, 52, 28, 29, 54, 53, 29, 30, 55, 54, 30, 31, 56, 55, 31, 32, 57, 56, 32, 33, 58, 57, 33, 34, 59, 58, 34, 35, 60, 59, 35, 36, 61, 60, 36, 37, 62, 61, 37, 38, 63, 62, 38, 39, 64, 63, 39, 40, 65, 64, 40, 41, 66, 65, 41, 42, 67, 66, 42, 43, 68, 67, 43, 44, 69, 68, 44, 45, 70, 69, 45, 46, 71, 70, 46, 47, 72, 71, 47, 48, 73, 72, 48, 49, 74, 73, 50, 51, 76, 75, 51, 52, 77, 76, 52, 53, 78, 77, 53, 54, 79, 78, 54, 55, 80, 79, 55, 56, 81, 80, 56, 57, 82, 81, 57, 58, 83, 82, 58, 59, 84, 83, 59, 60, 85, 84, 60, 61, 86, 85, 61, 62, 87, 86, 62, 63, 88, 87, 63, 64, 89, 88, 64, 65, 90, 89, 65, 66, 91, 90, 66, 67, 92, 91, 67, 68, 93, 92, 68, 69, 94, 93, 69, 70, 95, 94, 70, 71, 96, 95, 71, 72, 97, 96, 72, 73, 98, 97, 73, 74, 99, 98, 75, 76, 101, 100, 76, 77, 102, 101, 77, 78, 103, 102, 78, 79, 104, 103, 79, 80, 105, 104, 80, 81, 106, 105, 81, 82, 107, 106, 82, 83, 108, 107, 83, 84, 109, 108, 84, 85, 110, 109, 85, 86, 111, 110, 86, 87, 112, 111, 87, 88, 113, 112, 88, 89, 114, 113, 89, 90, 115, 114, 90, 91, 116, 115, 91, 92, 117, 116, 92, 93, 118, 117, 93, 94, 119, 118, 94, 95, 120, 119, 95, 96, 121, 120, 96, 97, 122, 121, 97, 98, 123, 122, 98, 99, 124, 123, 100, 101, 126, 125, 101, 102, 127, 126, 102, 103, 128, 127, 103, 104, 129, 128, 104, 105, 130, 129, 105, 106, 131, 130, 106, 107, 132, 131, 107, 108, 133, 132, 108, 109, 134, 133, 109, 110, 135, 134, 110, 111, 136, 135, 111, 112, 137, 136, 112, 113, 138, 137, 113, 114, 139, 138, 114, 115, 140, 139, 115, 116, 141, 140, 116, 117, 142, 141, 117, 118, 143, 142, 118, 119, 144, 143, 119, 120, 145, 144, 120, 121, 146, 145, 121, 122, 147, 146, 122, 123, 148, 147, 123, 124, 149, 148, 125, 126, 151, 150, 126, 127, 152, 151, 127, 128, 153, 152, 128, 129, 154, 153, 129, 130, 155, 154, 130, 131, 156, 155, 131, 132, 157, 156, 132, 133, 158, 157, 133, 134, 159, 158, 134, 135, 160, 159, 135, 136, 161, 160, 136, 137, 162, 161, 137, 138, 163, 162, 138, 139, 164, 163, 139, 140, 165, 164, 140, 141, 166, 165, 141, 142, 167, 166, 142, 143, 168, 167, 143, 144, 169, 168, 144, 145, 170, 169, 145, 146, 171, 170, 146, 147, 172, 171, 147, 148, 173, 172, 148, 149, 174, 173, 150, 151, 176, 175, 151, 152, 177, 176, 152, 153, 178, 177, 153, 154, 179, 178, 154, 155, 180, 179, 155, 156, 181, 180, 156, 157, 182, 181, 157, 158, 183, 182, 158, 159, 184, 183, 159, 160, 185, 184, 160, 161, 186, 185, 161, 162, 187, 186, 162, 163, 188, 187, 163, 164, 189, 188, 164, 165, 190, 189, 165, 166, 191, 190, 166, 167, 192, 191, 167, 168, 193, 192, 168, 169, 194, 193, 169, 170, 195, 194, 170, 171, 196, 195, 171, 172, 197, 196, 172, 173, 198, 197, 173, 174, 199, 198, 175, 176, 201, 200, 176, 177, 202, 201, 177, 178, 203, 202, 178, 179, 204, 203, 179, 180, 205, 204, 180, 181, 206, 205, 181, 182, 207, 206, 182, 183, 208, 207, 183, 184, 209, 208, 184, 185, 210, 209, 185, 186, 211, 210, 186, 187, 212, 211, 187, 188, 213, 212, 188, 189, 214, 213, 189, 190, 215, 214, 190, 191, 216, 215, 191, 192, 217, 216, 192, 193, 218, 217, 193, 194, 219, 218, 194, 195, 220, 219, 195, 196, 221, 220, 196, 197, 222, 221, 197, 198, 223, 222, 198, 199, 224, 223, 200, 201, 226, 225, 201, 202, 227, 226, 202, 203, 228, 227, 203, 204, 229, 228, 204, 205, 230, 229, 205, 206, 231, 230, 206, 207, 232, 231, 207, 208, 233, 232, 208, 209, 234, 233, 209, 210, 235, 234, 210, 211, 236, 235, 211, 212, 237, 236, 212, 213, 238, 237, 213, 214, 239, 238, 214, 215, 240, 239, 215, 216, 241, 240, 216, 217, 242, 241, 217, 218, 243, 242, 218, 219, 244, 243, 219, 220, 245, 244, 220, 221, 246, 245, 221, 222, 247, 246, 222, 223, 248, 247, 223, 224, 249, 248, 225, 226, 251, 250, 226, 227, 252, 251, 227, 228, 253, 252, 228, 229, 254, 253, 229, 230, 255, 254, 230, 231, 256, 255, 231, 232, 257, 256, 232, 233, 258, 257, 233, 234, 259, 258, 234, 235, 260, 259, 235, 236, 261, 260, 236, 237, 262, 261, 237, 238, 263, 262, 238, 239, 264, 263, 239, 240, 265, 264, 240, 241, 266, 265, 241, 242, 267, 266, 242, 243, 268, 267, 243, 244, 269, 268, 244, 245, 270, 269, 245, 246, 271, 270, 246, 247, 272, 271, 247, 248, 273, 272, 248, 249, 274, 273, 250, 251, 276, 275, 251, 252, 277, 276, 252, 253, 278, 277, 253, 254, 279, 278, 254, 255, 280, 279, 255, 256, 281, 280, 256, 257, 282, 281, 257, 258, 283, 282, 258, 259, 284, 283, 259, 260, 285, 284, 260, 261, 286, 285, 261, 262, 287, 286, 262, 263, 288, 287, 263, 264, 289, 288, 264, 265, 290, 289, 265, 266, 291, 290, 266, 267, 292, 291, 267, 268, 293, 292, 268, 269, 294, 293, 269, 270, 295, 294, 270, 271, 296, 295, 271, 272, 297, 296, 272, 273, 298, 297, 273, 274, 299, 298, 275, 276, 301, 300, 276, 277, 302, 301, 277, 278, 303, 302, 278, 279, 304, 303, 279, 280, 305, 304, 280, 281, 306, 305, 281, 282, 307, 306, 282, 283, 308, 307, 283, 284, 309, 308, 284, 285, 310, 309, 285, 286, 311, 310, 286, 287, 312, 311, 287, 288, 313, 312, 288, 289, 314, 313, 289, 290, 315, 314, 290, 291, 316, 315, 291, 292, 317, 316, 292, 293, 318, 317, 293, 294, 319, 318, 294, 295, 320, 319, 295, 296, 321, 320, 296, 297, 322, 321, 297, 298, 323, 322, 298, 299, 324, 323, 300, 301, 326, 325, 301, 302, 327, 326, 302, 303, 328, 327, 303, 304, 329, 328, 304, 305, 330, 329, 305, 306, 331, 330, 306, 307, 332, 331, 307, 308, 333, 332, 308, 309, 334, 333, 309, 310, 335, 334, 310, 311, 336, 335, 311, 312, 337, 336, 312, 313, 338, 337, 313, 314, 339, 338, 314, 315, 340, 339, 315, 316, 341, 340, 316, 317, 342, 341, 317, 318, 343, 342, 318, 319, 344, 343, 319, 320, 345, 344, 320, 321, 346, 345, 321, 322, 347, 346, 322, 323, 348, 347, 323, 324, 349, 348, 325, 326, 351, 350, 326, 327, 352, 351, 327, 328, 353, 352, 328, 329, 354, 353, 329, 330, 355, 354, 330, 331, 356, 355, 331, 332, 357, 356, 332, 333, 358, 357, 333, 334, 359, 358, 334, 335, 360, 359, 335, 336, 361, 360, 336, 337, 362, 361, 337, 338, 363, 362, 338, 339, 364, 363, 339, 340, 365, 364, 340, 341, 366, 365, 341, 342, 367, 366, 342, 343, 368, 367, 343, 344, 369, 368, 344, 345, 370, 369, 345, 346, 371, 370, 346, 347, 372, 371, 347, 348, 373, 372, 348, 349, 374, 373, 350, 351, 376, 375, 351, 352, 377, 376, 352, 353, 378, 377, 353, 354, 379, 378, 354, 355, 380, 379, 355, 356, 381, 380, 356, 357, 382, 381, 357, 358, 383, 382, 358, 359, 384, 383, 359, 360, 385, 384, 360, 361, 386, 385, 361, 362, 387, 386, 362, 363, 388, 387, 363, 364, 389, 388, 364, 365, 390, 389, 365, 366, 391, 390, 366, 367, 392, 391, 367, 368, 393, 392, 368, 369, 394, 393, 369, 370, 395, 394, 370, 371, 396, 395, 371, 372, 397, 396, 372, 373, 398, 397, 373, 374, 399, 398, 375, 376, 401, 400, 376, 377, 402, 401, 377, 378, 403, 402, 378, 379, 404, 403, 379, 380, 405, 404, 380, 381, 406, 405, 381, 382, 407, 406, 382, 383, 408, 407, 383, 384, 409, 408, 384, 385, 410, 409, 385, 386, 411, 410, 386, 387, 412, 411, 387, 388, 413, 412, 388, 389, 414, 413, 389, 390, 415, 414, 390, 391, 416, 415, 391, 392, 417, 416, 392, 393, 418, 417, 393, 394, 419, 418, 394, 395, 420, 419, 395, 396, 421, 420, 396, 397, 422, 421, 397, 398, 423, 422, 398, 399, 424, 423, 400, 401, 426, 425, 401, 402, 427, 426, 402, 403, 428, 427, 403, 404, 429, 428, 404, 405, 430, 429, 405, 406, 431, 430, 406, 407, 432, 431, 407, 408, 433, 432, 408, 409, 434, 433, 409, 410, 435, 434, 410, 411, 436, 435, 411, 412, 437, 436, 412, 413, 438, 437, 413, 414, 439, 438, 414, 415, 440, 439, 415, 416, 441, 440, 416, 417, 442, 441, 417, 418, 443, 442, 418, 419, 444, 443, 419, 420, 445, 444, 420, 421, 446, 445, 421, 422, 447, 446, 422, 423, 448, 447, 423, 424, 449, 448, 425, 426, 451, 450, 426, 427, 452, 451, 427, 428, 453, 452, 428, 429, 454, 453, 429, 430, 455, 454, 430, 431, 456, 455, 431, 432, 457, 456, 432, 433, 458, 457, 433, 434, 459, 458, 434, 435, 460, 459, 435, 436, 461, 460, 436, 437, 462, 461, 437, 438, 463, 462, 438, 439, 464, 463, 439, 440, 465, 464, 440, 441, 466, 465, 441, 442, 467, 466, 442, 443, 468, 467, 443, 444, 469, 468, 444, 445, 470, 469, 445, 446, 471, 470, 446, 447, 472, 471, 447, 448, 473, 472, 448, 449, 474, 473, 450, 451, 476, 475, 451, 452, 477, 476, 452, 453, 478, 477, 453, 454, 479, 478, 454, 455, 480, 479, 455, 456, 481, 480, 456, 457, 482, 481, 457, 458, 483, 482, 458, 459, 484, 483, 459, 460, 485, 484, 460, 461, 486, 485, 461, 462, 487, 486, 462, 463, 488, 487, 463, 464, 489, 488, 464, 465, 490, 489, 465, 466, 491, 490, 466, 467, 492, 491, 467, 468, 493, 492, 468, 469, 494, 493, 469, 470, 495, 494, 470, 471, 496, 495, 471, 472, 497, 496, 472, 473, 498, 497, 473, 474, 499, 498, 475, 476, 501, 500, 476, 477, 502, 501, 477, 478, 503, 502, 478, 479, 504, 503, 479, 480, 505, 504, 480, 481, 506, 505, 481, 482, 507, 506, 482, 483, 508, 507, 483, 484, 509, 508, 484, 485, 510, 509, 485, 486, 511, 510, 486, 487, 512, 511, 487, 488, 513, 512, 488, 489, 514, 513, 489, 490, 515, 514, 490, 491, 516, 515, 491, 492, 517, 516, 492, 493, 518, 517, 493, 494, 519, 518, 494, 495, 520, 519, 495, 496, 521, 520, 496, 497, 522, 521, 497, 498, 523, 522, 498, 499, 524, 523, 500, 501, 526, 525, 501, 502, 527, 526, 502, 503, 528, 527, 503, 504, 529, 528, 504, 505, 530, 529, 505, 506, 531, 530, 506, 507, 532, 531, 507, 508, 533, 532, 508, 509, 534, 533, 509, 510, 535, 534, 510, 511, 536, 535, 511, 512, 537, 536, 512, 513, 538, 537, 513, 514, 539, 538, 514, 515, 540, 539, 515, 516, 541, 540, 516, 517, 542, 541, 517, 518, 543, 542, 518, 519, 544, 543, 519, 520, 545, 544, 520, 521, 546, 545, 521, 522, 547, 546, 522, 523, 548, 547, 523, 524, 549, 548, 525, 526, 551, 550, 526, 527, 552, 551, 527, 528, 553, 552, 528, 529, 554, 553, 529, 530, 555, 554, 530, 531, 556, 555, 531, 532, 557, 556, 532, 533, 558, 557, 533, 534, 559, 558, 534, 535, 560, 559, 535, 536, 561, 560, 536, 537, 562, 561, 537, 538, 563, 562, 538, 539, 564, 563, 539, 540, 565, 564, 540, 541, 566, 565, 541, 542, 567, 566, 542, 543, 568, 567, 543, 544, 569, 568, 544, 545, 570, 569, 545, 546, 571, 570, 546, 547, 572, 571, 547, 548, 573, 572, 548, 549, 574, 573, 550, 551, 576, 575, 551, 552, 577, 576, 552, 553, 578, 577, 553, 554, 579, 578, 554, 555, 580, 579, 555, 556, 581, 580, 556, 557, 582, 581, 557, 558, 583, 582, 558, 559, 584, 583, 559, 560, 585, 584, 560, 561, 586, 585, 561, 562, 587, 586, 562, 563, 588, 587, 563, 564, 589, 588, 564, 565, 590, 589, 565, 566, 591, 590, 566, 567, 592, 591, 567, 568, 593, 592, 568, 569, 594, 593, 569, 570, 595, 594, 570, 571, 596, 595, 571, 572, 597, 596, 572, 573, 598, 597, 573, 574, 599, 598, 575, 576, 601, 600, 576, 577, 602, 601, 577, 578, 603, 602, 578, 579, 604, 603, 579, 580, 605, 604, 580, 581, 606, 605, 581, 582, 607, 606, 582, 583, 608, 607, 583, 584, 609, 608, 584, 585, 610, 609, 585, 586, 611, 610, 586, 587, 612, 611, 587, 588, 613, 612, 588, 589, 614, 613, 589, 590, 615, 614, 590, 591, 616, 615, 591, 592, 617, 616, 592, 593, 618, 617, 593, 594, 619, 618, 594, 595, 620, 619, 595, 596, 621, 620, 596, 597, 622, 621, 597, 598, 623, 622, 598, 599, 624, 623]\n        rel material:binding = </Ground/Material> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        uniform token orientation = \"leftHanded\"\n        point3f[] points = [(-2.5, 0, -2), (-2.2916667, 0, -2), (-2.0833333, 0, -2), (-1.875, 0, -2), (-1.6666667, 0, -2), (-1.4583334, 0, -2), (-1.25, 0, -2), (-1.0416667, 0, -2), (-0.8333334, 0, -2), (-0.625, 0, -2), (-0.41666675, 0, -2), (-0.20833349, 0, -2), (0, 0, -2), (0.20833325, 0, -2), (0.4166665, 0, -2), (0.625, 0, -2), (0.83333325, 0, -2), (1.0416665, 0, -2), (1.25, 0, -2), (1.4583333, 0, -2), (1.6666665, 0, -2), (1.875, 0, -2), (2.083333, 0, -2), (2.2916665, 0, -2), (2.5, 0, -2), (-2.5, 0, -1.7916666), (-2.2916667, 0, -1.7916666), (-2.0833333, 0, -1.7916666), (-1.875, 0, -1.7916666), (-1.6666667, 0, -1.7916666), (-1.4583334, 0, -1.7916666), (-1.25, 0, -1.7916666), (-1.0416667, 0, -1.7916666), (-0.8333334, 0, -1.7916666), (-0.625, 0, -1.7916666), (-0.41666675, 0, -1.7916666), (-0.20833349, 0, -1.7916666), (0, 0, -1.7916666), (0.20833325, 0, -1.7916666), (0.4166665, 0, -1.7916666), (0.625, 0, -1.7916666), (0.83333325, 0, -1.7916666), (1.0416665, 0, -1.7916666), (1.25, 0, -1.7916666), (1.4583333, 0, -1.7916666), (1.6666665, 0, -1.7916666), (1.875, 0, -1.7916666), (2.083333, 0, -1.7916666), (2.2916665, 0, -1.7916666), (2.5, 0, -1.7916666), (-2.5, 0, -1.5833334), (-2.2916667, 0, -1.5833334), (-2.0833333, 0, -1.5833334), (-1.875, 0, -1.5833334), (-1.6666667, 0, -1.5833334), (-1.4583334, 0, -1.5833334), (-1.25, 0, -1.5833334), (-1.0416667, 0, -1.5833334), (-0.8333334, 0, -1.5833334), (-0.625, 0, -1.5833334), (-0.41666675, 0, -1.5833334), (-0.20833349, 0, -1.5833334), (0, 0, -1.5833334), (0.20833325, 0, -1.5833334), (0.4166665, 0, -1.5833334), (0.625, 0, -1.5833334), (0.83333325, 0, -1.5833334), (1.0416665, 0, -1.5833334), (1.25, 0, -1.5833334), (1.4583333, 0, -1.5833334), (1.6666665, 0, -1.5833334), (1.875, 0, -1.5833334), (2.083333, 0, -1.5833334), (2.2916665, 0, -1.5833334), (2.5, 0, -1.5833334), (-2.5, 0, -1.375), (-2.2916667, 0, -1.375), (-2.0833333, 0, -1.375), (-1.875, 0, -1.375), (-1.6666667, 0, -1.375), (-1.4583334, 0, -1.375), (-1.25, 0, -1.375), (-1.0416667, 0, -1.375), (-0.8333334, 0, -1.375), (-0.625, 0, -1.375), (-0.41666675, 0, -1.375), (-0.20833349, 0, -1.375), (0, 0, -1.375), (0.20833325, 0, -1.375), (0.4166665, 0, -1.375), (0.625, 0, -1.375), (0.83333325, 0, -1.375), (1.0416665, 0, -1.375), (1.25, 0, -1.375), (1.4583333, 0, -1.375), (1.6666665, 0, -1.375), (1.875, 0, -1.375), (2.083333, 0, -1.375), (2.2916665, 0, -1.375), (2.5, 0, -1.375), (-2.5, 0, -1.1666667), (-2.2916667, 0, -1.1666667), (-2.0833333, 0, -1.1666667), (-1.875, 0, -1.1666667), (-1.6666667, 0, -1.1666667), (-1.4583334, 0, -1.1666667), (-1.25, 0, -1.1666667), (-1.0416667, 0, -1.1666667), (-0.8333334, 0, -1.1666667), (-0.625, 0, -1.1666667), (-0.41666675, 0, -1.1666667), (-0.20833349, 0, -1.1666667), (0, 0, -1.1666667), (0.20833325, 0, -1.1666667), (0.4166665, 0, -1.1666667), (0.625, 0, -1.1666667), (0.83333325, 0, -1.1666667), (1.0416665, 0, -1.1666667), (1.25, 0, -1.1666667), (1.4583333, 0, -1.1666667), (1.6666665, 0, -1.1666667), (1.875, 0, -1.1666667), (2.083333, 0, -1.1666667), (2.2916665, 0, -1.1666667), (2.5, 0, -1.1666667), (-2.5, 0, -0.9583334), (-2.2916667, 0, -0.9583334), (-2.0833333, 0, -0.9583334), (-1.875, 0, -0.9583334), (-1.6666667, 0, -0.9583334), (-1.4583334, 0, -0.9583334), (-1.25, 0, -0.9583334), (-1.0416667, 0, -0.9583334), (-0.8333334, 0, -0.9583334), (-0.625, 0, -0.9583334), (-0.41666675, 0, -0.9583334), (-0.20833349, 0, -0.9583334), (0, 0, -0.9583334), (0.20833325, 0, -0.9583334), (0.4166665, 0, -0.9583334), (0.625, 0, -0.9583334), (0.83333325, 0, -0.9583334), (1.0416665, 0, -0.9583334), (1.25, 0, -0.9583334), (1.4583333, 0, -0.9583334), (1.6666665, 0, -0.9583334), (1.875, 0, -0.9583334), (2.083333, 0, -0.9583334), (2.2916665, 0, -0.9583334), (2.5, 0, -0.9583334), (-2.5, 0, -0.75), (-2.2916667, 0, -0.75), (-2.0833333, 0, -0.75), (-1.875, 0, -0.75), (-1.6666667, 0, -0.75), (-1.4583334, 0, -0.75), (-1.25, 0, -0.75), (-1.0416667, 0, -0.75), (-0.8333334, 0, -0.75), (-0.625, 0, -0.75), (-0.41666675, 0, -0.75), (-0.20833349, 0, -0.75), (0, 0, -0.75), (0.20833325, 0, -0.75), (0.4166665, 0, -0.75), (0.625, 0, -0.75), (0.83333325, 0, -0.75), (1.0416665, 0, -0.75), (1.25, 0, -0.75), (1.4583333, 0, -0.75), (1.6666665, 0, -0.75), (1.875, 0, -0.75), (2.083333, 0, -0.75), (2.2916665, 0, -0.75), (2.5, 0, -0.75), (-2.5, 0, -0.54166675), (-2.2916667, 0, -0.54166675), (-2.0833333, 0, -0.54166675), (-1.875, 0, -0.54166675), (-1.6666667, 0, -0.54166675), (-1.4583334, 0, -0.54166675), (-1.25, 0, -0.54166675), (-1.0416667, 0, -0.54166675), (-0.8333334, 0, -0.54166675), (-0.625, 0, -0.54166675), (-0.41666675, 0, -0.54166675), (-0.20833349, 0, -0.54166675), (0, 0, -0.54166675), (0.20833325, 0, -0.54166675), (0.4166665, 0, -0.54166675), (0.625, 0, -0.54166675), (0.83333325, 0, -0.54166675), (1.0416665, 0, -0.54166675), (1.25, 0, -0.54166675), (1.4583333, 0, -0.54166675), (1.6666665, 0, -0.54166675), (1.875, 0, -0.54166675), (2.083333, 0, -0.54166675), (2.2916665, 0, -0.54166675), (2.5, 0, -0.54166675), (-2.5, 0, -0.33333337), (-2.2916667, 0, -0.33333337), (-2.0833333, 0, -0.33333337), (-1.875, 0, -0.33333337), (-1.6666667, 0, -0.33333337), (-1.4583334, 0, -0.33333337), (-1.25, 0, -0.33333337), (-1.0416667, 0, -0.33333337), (-0.8333334, 0, -0.33333337), (-0.625, 0, -0.33333337), (-0.41666675, 0, -0.33333337), (-0.20833349, 0, -0.33333337), (0, 0, -0.33333337), (0.20833325, 0, -0.33333337), (0.4166665, 0, -0.33333337), (0.625, 0, -0.33333337), (0.83333325, 0, -0.33333337), (1.0416665, 0, -0.33333337), (1.25, 0, -0.33333337), (1.4583333, 0, -0.33333337), (1.6666665, 0, -0.33333337), (1.875, 0, -0.33333337), (2.083333, 0, -0.33333337), (2.2916665, 0, -0.33333337), (2.5, 0, -0.33333337), (-2.5, 0, -0.125), (-2.2916667, 0, -0.125), (-2.0833333, 0, -0.125), (-1.875, 0, -0.125), (-1.6666667, 0, -0.125), (-1.4583334, 0, -0.125), (-1.25, 0, -0.125), (-1.0416667, 0, -0.125), (-0.8333334, 0, -0.125), (-0.625, 0, -0.125), (-0.41666675, 0, -0.125), (-0.20833349, 0, -0.125), (0, 0, -0.125), (0.20833325, 0, -0.125), (0.4166665, 0, -0.125), (0.625, 0, -0.125), (0.83333325, 0, -0.125), (1.0416665, 0, -0.125), (1.25, 0, -0.125), (1.4583333, 0, -0.125), (1.6666665, 0, -0.125), (1.875, 0, -0.125), (2.083333, 0, -0.125), (2.2916665, 0, -0.125), (2.5, 0, -0.125), (-2.5, 0, 0.083333254), (-2.2916667, 0, 0.083333254), (-2.0833333, 0, 0.083333254), (-1.875, 0, 0.083333254), (-1.6666667, 0, 0.083333254), (-1.4583334, 0, 0.083333254), (-1.25, 0, 0.083333254), (-1.0416667, 0, 0.083333254), (-0.8333334, 0, 0.083333254), (-0.625, 0, 0.083333254), (-0.41666675, 0, 0.083333254), (-0.20833349, 0, 0.083333254), (0, 0, 0.083333254), (0.20833325, 0, 0.083333254), (0.4166665, 0, 0.083333254), (0.625, 0, 0.083333254), (0.83333325, 0, 0.083333254), (1.0416665, 0, 0.083333254), (1.25, 0, 0.083333254), (1.4583333, 0, 0.083333254), (1.6666665, 0, 0.083333254), (1.875, 0, 0.083333254), (2.083333, 0, 0.083333254), (2.2916665, 0, 0.083333254), (2.5, 0, 0.083333254), (-2.5, 0, 0.2916665), (-2.2916667, 0, 0.2916665), (-2.0833333, 0, 0.2916665), (-1.875, 0, 0.2916665), (-1.6666667, 0, 0.2916665), (-1.4583334, 0, 0.2916665), (-1.25, 0, 0.2916665), (-1.0416667, 0, 0.2916665), (-0.8333334, 0, 0.2916665), (-0.625, 0, 0.2916665), (-0.41666675, 0, 0.2916665), (-0.20833349, 0, 0.2916665), (0, 0, 0.2916665), (0.20833325, 0, 0.2916665), (0.4166665, 0, 0.2916665), (0.625, 0, 0.2916665), (0.83333325, 0, 0.2916665), (1.0416665, 0, 0.2916665), (1.25, 0, 0.2916665), (1.4583333, 0, 0.2916665), (1.6666665, 0, 0.2916665), (1.875, 0, 0.2916665), (2.083333, 0, 0.2916665), (2.2916665, 0, 0.2916665), (2.5, 0, 0.2916665), (-2.5, 0, 0.5), (-2.2916667, 0, 0.5), (-2.0833333, 0, 0.5), (-1.875, 0, 0.5), (-1.6666667, 0, 0.5), (-1.4583334, 0, 0.5), (-1.25, 0, 0.5), (-1.0416667, 0, 0.5), (-0.8333334, 0, 0.5), (-0.625, 0, 0.5), (-0.41666675, 0, 0.5), (-0.20833349, 0, 0.5), (0, 0, 0.5), (0.20833325, 0, 0.5), (0.4166665, 0, 0.5), (0.625, 0, 0.5), (0.83333325, 0, 0.5), (1.0416665, 0, 0.5), (1.25, 0, 0.5), (1.4583333, 0, 0.5), (1.6666665, 0, 0.5), (1.875, 0, 0.5), (2.083333, 0, 0.5), (2.2916665, 0, 0.5), (2.5, 0, 0.5), (-2.5, 0, 0.70833325), (-2.2916667, 0, 0.70833325), (-2.0833333, 0, 0.70833325), (-1.875, 0, 0.70833325), (-1.6666667, 0, 0.70833325), (-1.4583334, 0, 0.70833325), (-1.25, 0, 0.70833325), (-1.0416667, 0, 0.70833325), (-0.8333334, 0, 0.70833325), (-0.625, 0, 0.70833325), (-0.41666675, 0, 0.70833325), (-0.20833349, 0, 0.70833325), (0, 0, 0.70833325), (0.20833325, 0, 0.70833325), (0.4166665, 0, 0.70833325), (0.625, 0, 0.70833325), (0.83333325, 0, 0.70833325), (1.0416665, 0, 0.70833325), (1.25, 0, 0.70833325), (1.4583333, 0, 0.70833325), (1.6666665, 0, 0.70833325), (1.875, 0, 0.70833325), (2.083333, 0, 0.70833325), (2.2916665, 0, 0.70833325), (2.5, 0, 0.70833325), (-2.5, 0, 0.9166665), (-2.2916667, 0, 0.9166665), (-2.0833333, 0, 0.9166665), (-1.875, 0, 0.9166665), (-1.6666667, 0, 0.9166665), (-1.4583334, 0, 0.9166665), (-1.25, 0, 0.9166665), (-1.0416667, 0, 0.9166665), (-0.8333334, 0, 0.9166665), (-0.625, 0, 0.9166665), (-0.41666675, 0, 0.9166665), (-0.20833349, 0, 0.9166665), (0, 0, 0.9166665), (0.20833325, 0, 0.9166665), (0.4166665, 0, 0.9166665), (0.625, 0, 0.9166665), (0.83333325, 0, 0.9166665), (1.0416665, 0, 0.9166665), (1.25, 0, 0.9166665), (1.4583333, 0, 0.9166665), (1.6666665, 0, 0.9166665), (1.875, 0, 0.9166665), (2.083333, 0, 0.9166665), (2.2916665, 0, 0.9166665), (2.5, 0, 0.9166665), (-2.5, 0, 1.125), (-2.2916667, 0, 1.125), (-2.0833333, 0, 1.125), (-1.875, 0, 1.125), (-1.6666667, 0, 1.125), (-1.4583334, 0, 1.125), (-1.25, 0, 1.125), (-1.0416667, 0, 1.125), (-0.8333334, 0, 1.125), (-0.625, 0, 1.125), (-0.41666675, 0, 1.125), (-0.20833349, 0, 1.125), (0, 0, 1.125), (0.20833325, 0, 1.125), (0.4166665, 0, 1.125), (0.625, 0, 1.125), (0.83333325, 0, 1.125), (1.0416665, 0, 1.125), (1.25, 0, 1.125), (1.4583333, 0, 1.125), (1.6666665, 0, 1.125), (1.875, 0, 1.125), (2.083333, 0, 1.125), (2.2916665, 0, 1.125), (2.5, 0, 1.125), (-2.5, 0, 1.3333333), (-2.2916667, 0, 1.3333333), (-2.0833333, 0, 1.3333333), (-1.875, 0, 1.3333333), (-1.6666667, 0, 1.3333333), (-1.4583334, 0, 1.3333333), (-1.25, 0, 1.3333333), (-1.0416667, 0, 1.3333333), (-0.8333334, 0, 1.3333333), (-0.625, 0, 1.3333333), (-0.41666675, 0, 1.3333333), (-0.20833349, 0, 1.3333333), (0, 0, 1.3333333), (0.20833325, 0, 1.3333333), (0.4166665, 0, 1.3333333), (0.625, 0, 1.3333333), (0.83333325, 0, 1.3333333), (1.0416665, 0, 1.3333333), (1.25, 0, 1.3333333), (1.4583333, 0, 1.3333333), (1.6666665, 0, 1.3333333), (1.875, 0, 1.3333333), (2.083333, 0, 1.3333333), (2.2916665, 0, 1.3333333), (2.5, 0, 1.3333333), (-2.5, 0, 1.5416665), (-2.2916667, 0, 1.5416665), (-2.0833333, 0, 1.5416665), (-1.875, 0, 1.5416665), (-1.6666667, 0, 1.5416665), (-1.4583334, 0, 1.5416665), (-1.25, 0, 1.5416665), (-1.0416667, 0, 1.5416665), (-0.8333334, 0, 1.5416665), (-0.625, 0, 1.5416665), (-0.41666675, 0, 1.5416665), (-0.20833349, 0, 1.5416665), (0, 0, 1.5416665), (0.20833325, 0, 1.5416665), (0.4166665, 0, 1.5416665), (0.625, 0, 1.5416665), (0.83333325, 0, 1.5416665), (1.0416665, 0, 1.5416665), (1.25, 0, 1.5416665), (1.4583333, 0, 1.5416665), (1.6666665, 0, 1.5416665), (1.875, 0, 1.5416665), (2.083333, 0, 1.5416665), (2.2916665, 0, 1.5416665), (2.5, 0, 1.5416665), (-2.5, 0, 1.75), (-2.2916667, 0, 1.75), (-2.0833333, 0, 1.75), (-1.875, 0, 1.75), (-1.6666667, 0, 1.75), (-1.4583334, 0, 1.75), (-1.25, 0, 1.75), (-1.0416667, 0, 1.75), (-0.8333334, 0, 1.75), (-0.625, 0, 1.75), (-0.41666675, 0, 1.75), (-0.20833349, 0, 1.75), (0, 0, 1.75), (0.20833325, 0, 1.75), (0.4166665, 0, 1.75), (0.625, 0, 1.75), (0.83333325, 0, 1.75), (1.0416665, 0, 1.75), (1.25, 0, 1.75), (1.4583333, 0, 1.75), (1.6666665, 0, 1.75), (1.875, 0, 1.75), (2.083333, 0, 1.75), (2.2916665, 0, 1.75), (2.5, 0, 1.75), (-2.5, 0, 1.9583333), (-2.2916667, 0, 1.9583333), (-2.0833333, 0, 1.9583333), (-1.875, 0, 1.9583333), (-1.6666667, 0, 1.9583333), (-1.4583334, 0, 1.9583333), (-1.25, 0, 1.9583333), (-1.0416667, 0, 1.9583333), (-0.8333334, 0, 1.9583333), (-0.625, 0, 1.9583333), (-0.41666675, 0, 1.9583333), (-0.20833349, 0, 1.9583333), (0, 0, 1.9583333), (0.20833325, 0, 1.9583333), (0.4166665, 0, 1.9583333), (0.625, 0, 1.9583333), (0.83333325, 0, 1.9583333), (1.0416665, 0, 1.9583333), (1.25, 0, 1.9583333), (1.4583333, 0, 1.9583333), (1.6666665, 0, 1.9583333), (1.875, 0, 1.9583333), (2.083333, 0, 1.9583333), (2.2916665, 0, 1.9583333), (2.5, 0, 1.9583333), (-2.5, 0, 2.1666665), (-2.2916667, 0, 2.1666665), (-2.0833333, 0, 2.1666665), (-1.875, 0, 2.1666665), (-1.6666667, 0, 2.1666665), (-1.4583334, 0, 2.1666665), (-1.25, 0, 2.1666665), (-1.0416667, 0, 2.1666665), (-0.8333334, 0, 2.1666665), (-0.625, 0, 2.1666665), (-0.41666675, 0, 2.1666665), (-0.20833349, 0, 2.1666665), (0, 0, 2.1666665), (0.20833325, 0, 2.1666665), (0.4166665, 0, 2.1666665), (0.625, 0, 2.1666665), (0.83333325, 0, 2.1666665), (1.0416665, 0, 2.1666665), (1.25, 0, 2.1666665), (1.4583333, 0, 2.1666665), (1.6666665, 0, 2.1666665), (1.875, 0, 2.1666665), (2.083333, 0, 2.1666665), (2.2916665, 0, 2.1666665), (2.5, 0, 2.1666665), (-2.5, 0, 2.375), (-2.2916667, 0, 2.375), (-2.0833333, 0, 2.375), (-1.875, 0, 2.375), (-1.6666667, 0, 2.375), (-1.4583334, 0, 2.375), (-1.25, 0, 2.375), (-1.0416667, 0, 2.375), (-0.8333334, 0, 2.375), (-0.625, 0, 2.375), (-0.41666675, 0, 2.375), (-0.20833349, 0, 2.375), (0, 0, 2.375), (0.20833325, 0, 2.375), (0.4166665, 0, 2.375), (0.625, 0, 2.375), (0.83333325, 0, 2.375), (1.0416665, 0, 2.375), (1.25, 0, 2.375), (1.4583333, 0, 2.375), (1.6666665, 0, 2.375), (1.875, 0, 2.375), (2.083333, 0, 2.375), (2.2916665, 0, 2.375), (2.5, 0, 2.375), (-2.5, 0, 2.583333), (-2.2916667, 0, 2.583333), (-2.0833333, 0, 2.583333), (-1.875, 0, 2.583333), (-1.6666667, 0, 2.583333), (-1.4583334, 0, 2.583333), (-1.25, 0, 2.583333), (-1.0416667, 0, 2.583333), (-0.8333334, 0, 2.583333), (-0.625, 0, 2.583333), (-0.41666675, 0, 2.583333), (-0.20833349, 0, 2.583333), (0, 0, 2.583333), (0.20833325, 0, 2.583333), (0.4166665, 0, 2.583333), (0.625, 0, 2.583333), (0.83333325, 0, 2.583333), (1.0416665, 0, 2.583333), (1.25, 0, 2.583333), (1.4583333, 0, 2.583333), (1.6666665, 0, 2.583333), (1.875, 0, 2.583333), (2.083333, 0, 2.583333), (2.2916665, 0, 2.583333), (2.5, 0, 2.583333), (-2.5, 0, 2.7916665), (-2.2916667, 0, 2.7916665), (-2.0833333, 0, 2.7916665), (-1.875, 0, 2.7916665), (-1.6666667, 0, 2.7916665), (-1.4583334, 0, 2.7916665), (-1.25, 0, 2.7916665), (-1.0416667, 0, 2.7916665), (-0.8333334, 0, 2.7916665), (-0.625, 0, 2.7916665), (-0.41666675, 0, 2.7916665), (-0.20833349, 0, 2.7916665), (0, 0, 2.7916665), (0.20833325, 0, 2.7916665), (0.4166665, 0, 2.7916665), (0.625, 0, 2.7916665), (0.83333325, 0, 2.7916665), (1.0416665, 0, 2.7916665), (1.25, 0, 2.7916665), (1.4583333, 0, 2.7916665), (1.6666665, 0, 2.7916665), (1.875, 0, 2.7916665), (2.083333, 0, 2.7916665), (2.2916665, 0, 2.7916665), (2.5, 0, 2.7916665), (-2.5, 0, 3), (-2.2916667, 0, 3), (-2.0833333, 0, 3), (-1.875, 0, 3), (-1.6666667, 0, 3), (-1.4583334, 0, 3), (-1.25, 0, 3), (-1.0416667, 0, 3), (-0.8333334, 0, 3), (-0.625, 0, 3), (-0.41666675, 0, 3), (-0.20833349, 0, 3), (0, 0, 3), (0.20833325, 0, 3), (0.4166665, 0, 3), (0.625, 0, 3), (0.83333325, 0, 3), (1.0416665, 0, 3), (1.25, 0, 3), (1.4583333, 0, 3), (1.6666665, 0, 3), (1.875, 0, 3), (2.083333, 0, 3), (2.2916665, 0, 3), (2.5, 0, 3)] (\n            interpolation = \"vertex\"\n        )\n        texCoord2f[] primvars:attenuationUV = [(0.28333333, 1.2388333), (0.3013889, 1.2388333), (0.3013889, 1.2038507), (0.28333333, 1.2038507), (0.3013889, 1.2388333), (0.31944445, 1.2388333), (0.31944445, 1.2038507), (0.3013889, 1.2038507), (0.31944445, 1.2388333), (0.3375, 1.2388333), (0.3375, 1.2038507), (0.31944445, 1.2038507), (0.3375, 1.2388333), (0.35555553, 1.2388333), (0.35555553, 1.2038507), (0.3375, 1.2038507), (0.35555553, 1.2388333), (0.37361112, 1.2388333), (0.37361112, 1.2038507), (0.35555553, 1.2038507), (0.37361112, 1.2388333), (0.39166668, 1.2388333), (0.39166668, 1.2038507), (0.37361112, 1.2038507), (0.39166668, 1.2388333), (0.4097222, 1.2388333), (0.4097222, 1.2038507), (0.39166668, 1.2038507), (0.4097222, 1.2388333), (0.42777777, 1.2388333), (0.42777777, 1.2038507), (0.4097222, 1.2038507), (0.42777777, 1.2388333), (0.44583333, 1.2388333), (0.44583333, 1.2038507), (0.42777777, 1.2038507), (0.44583333, 1.2388333), (0.46388888, 1.2388333), (0.46388888, 1.2038507), (0.44583333, 1.2038507), (0.46388888, 1.2388333), (0.48194444, 1.2388333), (0.48194444, 1.2038507), (0.46388888, 1.2038507), (0.48194444, 1.2388333), (0.5, 1.2388333), (0.5, 1.2038507), (0.48194444, 1.2038507), (0.5, 1.2388333), (0.51805556, 1.2388333), (0.51805556, 1.2038507), (0.5, 1.2038507), (0.51805556, 1.2388333), (0.5361111, 1.2388333), (0.5361111, 1.2038507), (0.51805556, 1.2038507), (0.5361111, 1.2388333), (0.5541667, 1.2388333), (0.5541667, 1.2038507), (0.5361111, 1.2038507), (0.5541667, 1.2388333), (0.57222223, 1.2388333), (0.57222223, 1.2038507), (0.5541667, 1.2038507), (0.57222223, 1.2388333), (0.5902778, 1.2388333), (0.5902778, 1.2038507), (0.57222223, 1.2038507), (0.5902778, 1.2388333), (0.60833335, 1.2388333), (0.60833335, 1.2038507), (0.5902778, 1.2038507), (0.60833335, 1.2388333), (0.6263889, 1.2388333), (0.6263889, 1.2038507), (0.60833335, 1.2038507), (0.6263889, 1.2388333), (0.6444444, 1.2388333), (0.6444444, 1.2038507), (0.6263889, 1.2038507), (0.6444444, 1.2388333), (0.6625, 1.2388333), (0.6625, 1.2038507), (0.6444444, 1.2038507), (0.6625, 1.2388333), (0.6805555, 1.2388333), (0.6805555, 1.2038507), (0.6625, 1.2038507), (0.6805555, 1.2388333), (0.69861114, 1.2388333), (0.69861114, 1.2038507), (0.6805555, 1.2038507), (0.69861114, 1.2388333), (0.7166667, 1.2388333), (0.7166667, 1.2038507), (0.69861114, 1.2038507), (0.28333333, 1.2038507), (0.3013889, 1.2038507), (0.3013889, 1.1688681), (0.28333333, 1.1688681), (0.3013889, 1.2038507), (0.31944445, 1.2038507), (0.31944445, 1.1688681), (0.3013889, 1.1688681), (0.31944445, 1.2038507), (0.3375, 1.2038507), (0.3375, 1.1688681), (0.31944445, 1.1688681), (0.3375, 1.2038507), (0.35555553, 1.2038507), (0.35555553, 1.1688681), (0.3375, 1.1688681), (0.35555553, 1.2038507), (0.37361112, 1.2038507), (0.37361112, 1.1688681), (0.35555553, 1.1688681), (0.37361112, 1.2038507), (0.39166668, 1.2038507), (0.39166668, 1.1688681), (0.37361112, 1.1688681), (0.39166668, 1.2038507), (0.4097222, 1.2038507), (0.4097222, 1.1688681), (0.39166668, 1.1688681), (0.4097222, 1.2038507), (0.42777777, 1.2038507), (0.42777777, 1.1688681), (0.4097222, 1.1688681), (0.42777777, 1.2038507), (0.44583333, 1.2038507), (0.44583333, 1.1688681), (0.42777777, 1.1688681), (0.44583333, 1.2038507), (0.46388888, 1.2038507), (0.46388888, 1.1688681), (0.44583333, 1.1688681), (0.46388888, 1.2038507), (0.48194444, 1.2038507), (0.48194444, 1.1688681), (0.46388888, 1.1688681), (0.48194444, 1.2038507), (0.5, 1.2038507), (0.5, 1.1688681), (0.48194444, 1.1688681), (0.5, 1.2038507), (0.51805556, 1.2038507), (0.51805556, 1.1688681), (0.5, 1.1688681), (0.51805556, 1.2038507), (0.5361111, 1.2038507), (0.5361111, 1.1688681), (0.51805556, 1.1688681), (0.5361111, 1.2038507), (0.5541667, 1.2038507), (0.5541667, 1.1688681), (0.5361111, 1.1688681), (0.5541667, 1.2038507), (0.57222223, 1.2038507), (0.57222223, 1.1688681), (0.5541667, 1.1688681), (0.57222223, 1.2038507), (0.5902778, 1.2038507), (0.5902778, 1.1688681), (0.57222223, 1.1688681), (0.5902778, 1.2038507), (0.60833335, 1.2038507), (0.60833335, 1.1688681), (0.5902778, 1.1688681), (0.60833335, 1.2038507), (0.6263889, 1.2038507), (0.6263889, 1.1688681), (0.60833335, 1.1688681), (0.6263889, 1.2038507), (0.6444444, 1.2038507), (0.6444444, 1.1688681), (0.6263889, 1.1688681), (0.6444444, 1.2038507), (0.6625, 1.2038507), (0.6625, 1.1688681), (0.6444444, 1.1688681), (0.6625, 1.2038507), (0.6805555, 1.2038507), (0.6805555, 1.1688681), (0.6625, 1.1688681), (0.6805555, 1.2038507), (0.69861114, 1.2038507), (0.69861114, 1.1688681), (0.6805555, 1.1688681), (0.69861114, 1.2038507), (0.7166667, 1.2038507), (0.7166667, 1.1688681), (0.69861114, 1.1688681), (0.28333333, 1.1688681), (0.3013889, 1.1688681), (0.3013889, 1.1338854), (0.28333333, 1.1338854), (0.3013889, 1.1688681), (0.31944445, 1.1688681), (0.31944445, 1.1338854), (0.3013889, 1.1338854), (0.31944445, 1.1688681), (0.3375, 1.1688681), (0.3375, 1.1338854), (0.31944445, 1.1338854), (0.3375, 1.1688681), (0.35555553, 1.1688681), (0.35555553, 1.1338854), (0.3375, 1.1338854), (0.35555553, 1.1688681), (0.37361112, 1.1688681), (0.37361112, 1.1338854), (0.35555553, 1.1338854), (0.37361112, 1.1688681), (0.39166668, 1.1688681), (0.39166668, 1.1338854), (0.37361112, 1.1338854), (0.39166668, 1.1688681), (0.4097222, 1.1688681), (0.4097222, 1.1338854), (0.39166668, 1.1338854), (0.4097222, 1.1688681), (0.42777777, 1.1688681), (0.42777777, 1.1338854), (0.4097222, 1.1338854), (0.42777777, 1.1688681), (0.44583333, 1.1688681), (0.44583333, 1.1338854), (0.42777777, 1.1338854), (0.44583333, 1.1688681), (0.46388888, 1.1688681), (0.46388888, 1.1338854), (0.44583333, 1.1338854), (0.46388888, 1.1688681), (0.48194444, 1.1688681), (0.48194444, 1.1338854), (0.46388888, 1.1338854), (0.48194444, 1.1688681), (0.5, 1.1688681), (0.5, 1.1338854), (0.48194444, 1.1338854), (0.5, 1.1688681), (0.51805556, 1.1688681), (0.51805556, 1.1338854), (0.5, 1.1338854), (0.51805556, 1.1688681), (0.5361111, 1.1688681), (0.5361111, 1.1338854), (0.51805556, 1.1338854), (0.5361111, 1.1688681), (0.5541667, 1.1688681), (0.5541667, 1.1338854), (0.5361111, 1.1338854), (0.5541667, 1.1688681), (0.57222223, 1.1688681), (0.57222223, 1.1338854), (0.5541667, 1.1338854), (0.57222223, 1.1688681), (0.5902778, 1.1688681), (0.5902778, 1.1338854), (0.57222223, 1.1338854), (0.5902778, 1.1688681), (0.60833335, 1.1688681), (0.60833335, 1.1338854), (0.5902778, 1.1338854), (0.60833335, 1.1688681), (0.6263889, 1.1688681), (0.6263889, 1.1338854), (0.60833335, 1.1338854), (0.6263889, 1.1688681), (0.6444444, 1.1688681), (0.6444444, 1.1338854), (0.6263889, 1.1338854), (0.6444444, 1.1688681), (0.6625, 1.1688681), (0.6625, 1.1338854), (0.6444444, 1.1338854), (0.6625, 1.1688681), (0.6805555, 1.1688681), (0.6805555, 1.1338854), (0.6625, 1.1338854), (0.6805555, 1.1688681), (0.69861114, 1.1688681), (0.69861114, 1.1338854), (0.6805555, 1.1338854), (0.69861114, 1.1688681), (0.7166667, 1.1688681), (0.7166667, 1.1338854), (0.69861114, 1.1338854), (0.28333333, 1.1338854), (0.3013889, 1.1338854), (0.3013889, 1.0989028), (0.28333333, 1.0989028), (0.3013889, 1.1338854), (0.31944445, 1.1338854), (0.31944445, 1.0989028), (0.3013889, 1.0989028), (0.31944445, 1.1338854), (0.3375, 1.1338854), (0.3375, 1.0989028), (0.31944445, 1.0989028), (0.3375, 1.1338854), (0.35555553, 1.1338854), (0.35555553, 1.0989028), (0.3375, 1.0989028), (0.35555553, 1.1338854), (0.37361112, 1.1338854), (0.37361112, 1.0989028), (0.35555553, 1.0989028), (0.37361112, 1.1338854), (0.39166668, 1.1338854), (0.39166668, 1.0989028), (0.37361112, 1.0989028), (0.39166668, 1.1338854), (0.4097222, 1.1338854), (0.4097222, 1.0989028), (0.39166668, 1.0989028), (0.4097222, 1.1338854), (0.42777777, 1.1338854), (0.42777777, 1.0989028), (0.4097222, 1.0989028), (0.42777777, 1.1338854), (0.44583333, 1.1338854), (0.44583333, 1.0989028), (0.42777777, 1.0989028), (0.44583333, 1.1338854), (0.46388888, 1.1338854), (0.46388888, 1.0989028), (0.44583333, 1.0989028), (0.46388888, 1.1338854), (0.48194444, 1.1338854), (0.48194444, 1.0989028), (0.46388888, 1.0989028), (0.48194444, 1.1338854), (0.5, 1.1338854), (0.5, 1.0989028), (0.48194444, 1.0989028), (0.5, 1.1338854), (0.51805556, 1.1338854), (0.51805556, 1.0989028), (0.5, 1.0989028), (0.51805556, 1.1338854), (0.5361111, 1.1338854), (0.5361111, 1.0989028), (0.51805556, 1.0989028), (0.5361111, 1.1338854), (0.5541667, 1.1338854), (0.5541667, 1.0989028), (0.5361111, 1.0989028), (0.5541667, 1.1338854), (0.57222223, 1.1338854), (0.57222223, 1.0989028), (0.5541667, 1.0989028), (0.57222223, 1.1338854), (0.5902778, 1.1338854), (0.5902778, 1.0989028), (0.57222223, 1.0989028), (0.5902778, 1.1338854), (0.60833335, 1.1338854), (0.60833335, 1.0989028), (0.5902778, 1.0989028), (0.60833335, 1.1338854), (0.6263889, 1.1338854), (0.6263889, 1.0989028), (0.60833335, 1.0989028), (0.6263889, 1.1338854), (0.6444444, 1.1338854), (0.6444444, 1.0989028), (0.6263889, 1.0989028), (0.6444444, 1.1338854), (0.6625, 1.1338854), (0.6625, 1.0989028), (0.6444444, 1.0989028), (0.6625, 1.1338854), (0.6805555, 1.1338854), (0.6805555, 1.0989028), (0.6625, 1.0989028), (0.6805555, 1.1338854), (0.69861114, 1.1338854), (0.69861114, 1.0989028), (0.6805555, 1.0989028), (0.69861114, 1.1338854), (0.7166667, 1.1338854), (0.7166667, 1.0989028), (0.69861114, 1.0989028), (0.28333333, 1.0989028), (0.3013889, 1.0989028), (0.3013889, 1.0639201), (0.28333333, 1.0639201), (0.3013889, 1.0989028), (0.31944445, 1.0989028), (0.31944445, 1.0639201), (0.3013889, 1.0639201), (0.31944445, 1.0989028), (0.3375, 1.0989028), (0.3375, 1.0639201), (0.31944445, 1.0639201), (0.3375, 1.0989028), (0.35555553, 1.0989028), (0.35555553, 1.0639201), (0.3375, 1.0639201), (0.35555553, 1.0989028), (0.37361112, 1.0989028), (0.37361112, 1.0639201), (0.35555553, 1.0639201), (0.37361112, 1.0989028), (0.39166668, 1.0989028), (0.39166668, 1.0639201), (0.37361112, 1.0639201), (0.39166668, 1.0989028), (0.4097222, 1.0989028), (0.4097222, 1.0639201), (0.39166668, 1.0639201), (0.4097222, 1.0989028), (0.42777777, 1.0989028), (0.42777777, 1.0639201), (0.4097222, 1.0639201), (0.42777777, 1.0989028), (0.44583333, 1.0989028), (0.44583333, 1.0639201), (0.42777777, 1.0639201), (0.44583333, 1.0989028), (0.46388888, 1.0989028), (0.46388888, 1.0639201), (0.44583333, 1.0639201), (0.46388888, 1.0989028), (0.48194444, 1.0989028), (0.48194444, 1.0639201), (0.46388888, 1.0639201), (0.48194444, 1.0989028), (0.5, 1.0989028), (0.5, 1.0639201), (0.48194444, 1.0639201), (0.5, 1.0989028), (0.51805556, 1.0989028), (0.51805556, 1.0639201), (0.5, 1.0639201), (0.51805556, 1.0989028), (0.5361111, 1.0989028), (0.5361111, 1.0639201), (0.51805556, 1.0639201), (0.5361111, 1.0989028), (0.5541667, 1.0989028), (0.5541667, 1.0639201), (0.5361111, 1.0639201), (0.5541667, 1.0989028), (0.57222223, 1.0989028), (0.57222223, 1.0639201), (0.5541667, 1.0639201), (0.57222223, 1.0989028), (0.5902778, 1.0989028), (0.5902778, 1.0639201), (0.57222223, 1.0639201), (0.5902778, 1.0989028), (0.60833335, 1.0989028), (0.60833335, 1.0639201), (0.5902778, 1.0639201), (0.60833335, 1.0989028), (0.6263889, 1.0989028), (0.6263889, 1.0639201), (0.60833335, 1.0639201), (0.6263889, 1.0989028), (0.6444444, 1.0989028), (0.6444444, 1.0639201), (0.6263889, 1.0639201), (0.6444444, 1.0989028), (0.6625, 1.0989028), (0.6625, 1.0639201), (0.6444444, 1.0639201), (0.6625, 1.0989028), (0.6805555, 1.0989028), (0.6805555, 1.0639201), (0.6625, 1.0639201), (0.6805555, 1.0989028), (0.69861114, 1.0989028), (0.69861114, 1.0639201), (0.6805555, 1.0639201), (0.69861114, 1.0989028), (0.7166667, 1.0989028), (0.7166667, 1.0639201), (0.69861114, 1.0639201), (0.28333333, 1.0639201), (0.3013889, 1.0639201), (0.3013889, 1.0289375), (0.28333333, 1.0289375), (0.3013889, 1.0639201), (0.31944445, 1.0639201), (0.31944445, 1.0289375), (0.3013889, 1.0289375), (0.31944445, 1.0639201), (0.3375, 1.0639201), (0.3375, 1.0289375), (0.31944445, 1.0289375), (0.3375, 1.0639201), (0.35555553, 1.0639201), (0.35555553, 1.0289375), (0.3375, 1.0289375), (0.35555553, 1.0639201), (0.37361112, 1.0639201), (0.37361112, 1.0289375), (0.35555553, 1.0289375), (0.37361112, 1.0639201), (0.39166668, 1.0639201), (0.39166668, 1.0289375), (0.37361112, 1.0289375), (0.39166668, 1.0639201), (0.4097222, 1.0639201), (0.4097222, 1.0289375), (0.39166668, 1.0289375), (0.4097222, 1.0639201), (0.42777777, 1.0639201), (0.42777777, 1.0289375), (0.4097222, 1.0289375), (0.42777777, 1.0639201), (0.44583333, 1.0639201), (0.44583333, 1.0289375), (0.42777777, 1.0289375), (0.44583333, 1.0639201), (0.46388888, 1.0639201), (0.46388888, 1.0289375), (0.44583333, 1.0289375), (0.46388888, 1.0639201), (0.48194444, 1.0639201), (0.48194444, 1.0289375), (0.46388888, 1.0289375), (0.48194444, 1.0639201), (0.5, 1.0639201), (0.5, 1.0289375), (0.48194444, 1.0289375), (0.5, 1.0639201), (0.51805556, 1.0639201), (0.51805556, 1.0289375), (0.5, 1.0289375), (0.51805556, 1.0639201), (0.5361111, 1.0639201), (0.5361111, 1.0289375), (0.51805556, 1.0289375), (0.5361111, 1.0639201), (0.5541667, 1.0639201), (0.5541667, 1.0289375), (0.5361111, 1.0289375), (0.5541667, 1.0639201), (0.57222223, 1.0639201), (0.57222223, 1.0289375), (0.5541667, 1.0289375), (0.57222223, 1.0639201), (0.5902778, 1.0639201), (0.5902778, 1.0289375), (0.57222223, 1.0289375), (0.5902778, 1.0639201), (0.60833335, 1.0639201), (0.60833335, 1.0289375), (0.5902778, 1.0289375), (0.60833335, 1.0639201), (0.6263889, 1.0639201), (0.6263889, 1.0289375), (0.60833335, 1.0289375), (0.6263889, 1.0639201), (0.6444444, 1.0639201), (0.6444444, 1.0289375), (0.6263889, 1.0289375), (0.6444444, 1.0639201), (0.6625, 1.0639201), (0.6625, 1.0289375), (0.6444444, 1.0289375), (0.6625, 1.0639201), (0.6805555, 1.0639201), (0.6805555, 1.0289375), (0.6625, 1.0289375), (0.6805555, 1.0639201), (0.69861114, 1.0639201), (0.69861114, 1.0289375), (0.6805555, 1.0289375), (0.69861114, 1.0639201), (0.7166667, 1.0639201), (0.7166667, 1.0289375), (0.69861114, 1.0289375), (0.28333333, 1.0289375), (0.3013889, 1.0289375), (0.3013889, 0.9939549), (0.28333333, 0.9939549), (0.3013889, 1.0289375), (0.31944445, 1.0289375), (0.31944445, 0.9939549), (0.3013889, 0.9939549), (0.31944445, 1.0289375), (0.3375, 1.0289375), (0.3375, 0.9939549), (0.31944445, 0.9939549), (0.3375, 1.0289375), (0.35555553, 1.0289375), (0.35555553, 0.9939549), (0.3375, 0.9939549), (0.35555553, 1.0289375), (0.37361112, 1.0289375), (0.37361112, 0.9939549), (0.35555553, 0.9939549), (0.37361112, 1.0289375), (0.39166668, 1.0289375), (0.39166668, 0.9939549), (0.37361112, 0.9939549), (0.39166668, 1.0289375), (0.4097222, 1.0289375), (0.4097222, 0.9939549), (0.39166668, 0.9939549), (0.4097222, 1.0289375), (0.42777777, 1.0289375), (0.42777777, 0.9939549), (0.4097222, 0.9939549), (0.42777777, 1.0289375), (0.44583333, 1.0289375), (0.44583333, 0.9939549), (0.42777777, 0.9939549), (0.44583333, 1.0289375), (0.46388888, 1.0289375), (0.46388888, 0.9939549), (0.44583333, 0.9939549), (0.46388888, 1.0289375), (0.48194444, 1.0289375), (0.48194444, 0.9939549), (0.46388888, 0.9939549), (0.48194444, 1.0289375), (0.5, 1.0289375), (0.5, 0.9939549), (0.48194444, 0.9939549), (0.5, 1.0289375), (0.51805556, 1.0289375), (0.51805556, 0.9939549), (0.5, 0.9939549), (0.51805556, 1.0289375), (0.5361111, 1.0289375), (0.5361111, 0.9939549), (0.51805556, 0.9939549), (0.5361111, 1.0289375), (0.5541667, 1.0289375), (0.5541667, 0.9939549), (0.5361111, 0.9939549), (0.5541667, 1.0289375), (0.57222223, 1.0289375), (0.57222223, 0.9939549), (0.5541667, 0.9939549), (0.57222223, 1.0289375), (0.5902778, 1.0289375), (0.5902778, 0.9939549), (0.57222223, 0.9939549), (0.5902778, 1.0289375), (0.60833335, 1.0289375), (0.60833335, 0.9939549), (0.5902778, 0.9939549), (0.60833335, 1.0289375), (0.6263889, 1.0289375), (0.6263889, 0.9939549), (0.60833335, 0.9939549), (0.6263889, 1.0289375), (0.6444444, 1.0289375), (0.6444444, 0.9939549), (0.6263889, 0.9939549), (0.6444444, 1.0289375), (0.6625, 1.0289375), (0.6625, 0.9939549), (0.6444444, 0.9939549), (0.6625, 1.0289375), (0.6805555, 1.0289375), (0.6805555, 0.9939549), (0.6625, 0.9939549), (0.6805555, 1.0289375), (0.69861114, 1.0289375), (0.69861114, 0.9939549), (0.6805555, 0.9939549), (0.69861114, 1.0289375), (0.7166667, 1.0289375), (0.7166667, 0.9939549), (0.69861114, 0.9939549), (0.28333333, 0.9939549), (0.3013889, 0.9939549), (0.3013889, 0.9589722), (0.28333333, 0.9589722), (0.3013889, 0.9939549), (0.31944445, 0.9939549), (0.31944445, 0.9589722), (0.3013889, 0.9589722), (0.31944445, 0.9939549), (0.3375, 0.9939549), (0.3375, 0.9589722), (0.31944445, 0.9589722), (0.3375, 0.9939549), (0.35555553, 0.9939549), (0.35555553, 0.9589722), (0.3375, 0.9589722), (0.35555553, 0.9939549), (0.37361112, 0.9939549), (0.37361112, 0.9589722), (0.35555553, 0.9589722), (0.37361112, 0.9939549), (0.39166668, 0.9939549), (0.39166668, 0.9589722), (0.37361112, 0.9589722), (0.39166668, 0.9939549), (0.4097222, 0.9939549), (0.4097222, 0.9589722), (0.39166668, 0.9589722), (0.4097222, 0.9939549), (0.42777777, 0.9939549), (0.42777777, 0.9589722), (0.4097222, 0.9589722), (0.42777777, 0.9939549), (0.44583333, 0.9939549), (0.44583333, 0.9589722), (0.42777777, 0.9589722), (0.44583333, 0.9939549), (0.46388888, 0.9939549), (0.46388888, 0.9589722), (0.44583333, 0.9589722), (0.46388888, 0.9939549), (0.48194444, 0.9939549), (0.48194444, 0.9589722), (0.46388888, 0.9589722), (0.48194444, 0.9939549), (0.5, 0.9939549), (0.5, 0.9589722), (0.48194444, 0.9589722), (0.5, 0.9939549), (0.51805556, 0.9939549), (0.51805556, 0.9589722), (0.5, 0.9589722), (0.51805556, 0.9939549), (0.5361111, 0.9939549), (0.5361111, 0.9589722), (0.51805556, 0.9589722), (0.5361111, 0.9939549), (0.5541667, 0.9939549), (0.5541667, 0.9589722), (0.5361111, 0.9589722), (0.5541667, 0.9939549), (0.57222223, 0.9939549), (0.57222223, 0.9589722), (0.5541667, 0.9589722), (0.57222223, 0.9939549), (0.5902778, 0.9939549), (0.5902778, 0.9589722), (0.57222223, 0.9589722), (0.5902778, 0.9939549), (0.60833335, 0.9939549), (0.60833335, 0.9589722), (0.5902778, 0.9589722), (0.60833335, 0.9939549), (0.6263889, 0.9939549), (0.6263889, 0.9589722), (0.60833335, 0.9589722), (0.6263889, 0.9939549), (0.6444444, 0.9939549), (0.6444444, 0.9589722), (0.6263889, 0.9589722), (0.6444444, 0.9939549), (0.6625, 0.9939549), (0.6625, 0.9589722), (0.6444444, 0.9589722), (0.6625, 0.9939549), (0.6805555, 0.9939549), (0.6805555, 0.9589722), (0.6625, 0.9589722), (0.6805555, 0.9939549), (0.69861114, 0.9939549), (0.69861114, 0.9589722), (0.6805555, 0.9589722), (0.69861114, 0.9939549), (0.7166667, 0.9939549), (0.7166667, 0.9589722), (0.69861114, 0.9589722), (0.28333333, 0.9589722), (0.3013889, 0.9589722), (0.3013889, 0.9239896), (0.28333333, 0.9239896), (0.3013889, 0.9589722), (0.31944445, 0.9589722), (0.31944445, 0.9239896), (0.3013889, 0.9239896), (0.31944445, 0.9589722), (0.3375, 0.9589722), (0.3375, 0.9239896), (0.31944445, 0.9239896), (0.3375, 0.9589722), (0.35555553, 0.9589722), (0.35555553, 0.9239896), (0.3375, 0.9239896), (0.35555553, 0.9589722), (0.37361112, 0.9589722), (0.37361112, 0.9239896), (0.35555553, 0.9239896), (0.37361112, 0.9589722), (0.39166668, 0.9589722), (0.39166668, 0.9239896), (0.37361112, 0.9239896), (0.39166668, 0.9589722), (0.4097222, 0.9589722), (0.4097222, 0.9239896), (0.39166668, 0.9239896), (0.4097222, 0.9589722), (0.42777777, 0.9589722), (0.42777777, 0.9239896), (0.4097222, 0.9239896), (0.42777777, 0.9589722), (0.44583333, 0.9589722), (0.44583333, 0.9239896), (0.42777777, 0.9239896), (0.44583333, 0.9589722), (0.46388888, 0.9589722), (0.46388888, 0.9239896), (0.44583333, 0.9239896), (0.46388888, 0.9589722), (0.48194444, 0.9589722), (0.48194444, 0.9239896), (0.46388888, 0.9239896), (0.48194444, 0.9589722), (0.5, 0.9589722), (0.5, 0.9239896), (0.48194444, 0.9239896), (0.5, 0.9589722), (0.51805556, 0.9589722), (0.51805556, 0.9239896), (0.5, 0.9239896), (0.51805556, 0.9589722), (0.5361111, 0.9589722), (0.5361111, 0.9239896), (0.51805556, 0.9239896), (0.5361111, 0.9589722), (0.5541667, 0.9589722), (0.5541667, 0.9239896), (0.5361111, 0.9239896), (0.5541667, 0.9589722), (0.57222223, 0.9589722), (0.57222223, 0.9239896), (0.5541667, 0.9239896), (0.57222223, 0.9589722), (0.5902778, 0.9589722), (0.5902778, 0.9239896), (0.57222223, 0.9239896), (0.5902778, 0.9589722), (0.60833335, 0.9589722), (0.60833335, 0.9239896), (0.5902778, 0.9239896), (0.60833335, 0.9589722), (0.6263889, 0.9589722), (0.6263889, 0.9239896), (0.60833335, 0.9239896), (0.6263889, 0.9589722), (0.6444444, 0.9589722), (0.6444444, 0.9239896), (0.6263889, 0.9239896), (0.6444444, 0.9589722), (0.6625, 0.9589722), (0.6625, 0.9239896), (0.6444444, 0.9239896), (0.6625, 0.9589722), (0.6805555, 0.9589722), (0.6805555, 0.9239896), (0.6625, 0.9239896), (0.6805555, 0.9589722), (0.69861114, 0.9589722), (0.69861114, 0.9239896), (0.6805555, 0.9239896), (0.69861114, 0.9589722), (0.7166667, 0.9589722), (0.7166667, 0.9239896), (0.69861114, 0.9239896), (0.28333333, 0.9239896), (0.3013889, 0.9239896), (0.3013889, 0.889007), (0.28333333, 0.889007), (0.3013889, 0.9239896), (0.31944445, 0.9239896), (0.31944445, 0.889007), (0.3013889, 0.889007), (0.31944445, 0.9239896), (0.3375, 0.9239896), (0.3375, 0.889007), (0.31944445, 0.889007), (0.3375, 0.9239896), (0.35555553, 0.9239896), (0.35555553, 0.889007), (0.3375, 0.889007), (0.35555553, 0.9239896), (0.37361112, 0.9239896), (0.37361112, 0.889007), (0.35555553, 0.889007), (0.37361112, 0.9239896), (0.39166668, 0.9239896), (0.39166668, 0.889007), (0.37361112, 0.889007), (0.39166668, 0.9239896), (0.4097222, 0.9239896), (0.4097222, 0.889007), (0.39166668, 0.889007), (0.4097222, 0.9239896), (0.42777777, 0.9239896), (0.42777777, 0.889007), (0.4097222, 0.889007), (0.42777777, 0.9239896), (0.44583333, 0.9239896), (0.44583333, 0.889007), (0.42777777, 0.889007), (0.44583333, 0.9239896), (0.46388888, 0.9239896), (0.46388888, 0.889007), (0.44583333, 0.889007), (0.46388888, 0.9239896), (0.48194444, 0.9239896), (0.48194444, 0.889007), (0.46388888, 0.889007), (0.48194444, 0.9239896), (0.5, 0.9239896), (0.5, 0.889007), (0.48194444, 0.889007), (0.5, 0.9239896), (0.51805556, 0.9239896), (0.51805556, 0.889007), (0.5, 0.889007), (0.51805556, 0.9239896), (0.5361111, 0.9239896), (0.5361111, 0.889007), (0.51805556, 0.889007), (0.5361111, 0.9239896), (0.5541667, 0.9239896), (0.5541667, 0.889007), (0.5361111, 0.889007), (0.5541667, 0.9239896), (0.57222223, 0.9239896), (0.57222223, 0.889007), (0.5541667, 0.889007), (0.57222223, 0.9239896), (0.5902778, 0.9239896), (0.5902778, 0.889007), (0.57222223, 0.889007), (0.5902778, 0.9239896), (0.60833335, 0.9239896), (0.60833335, 0.889007), (0.5902778, 0.889007), (0.60833335, 0.9239896), (0.6263889, 0.9239896), (0.6263889, 0.889007), (0.60833335, 0.889007), (0.6263889, 0.9239896), (0.6444444, 0.9239896), (0.6444444, 0.889007), (0.6263889, 0.889007), (0.6444444, 0.9239896), (0.6625, 0.9239896), (0.6625, 0.889007), (0.6444444, 0.889007), (0.6625, 0.9239896), (0.6805555, 0.9239896), (0.6805555, 0.889007), (0.6625, 0.889007), (0.6805555, 0.9239896), (0.69861114, 0.9239896), (0.69861114, 0.889007), (0.6805555, 0.889007), (0.69861114, 0.9239896), (0.7166667, 0.9239896), (0.7166667, 0.889007), (0.69861114, 0.889007), (0.28333333, 0.889007), (0.3013889, 0.889007), (0.3013889, 0.85402435), (0.28333333, 0.85402435), (0.3013889, 0.889007), (0.31944445, 0.889007), (0.31944445, 0.85402435), (0.3013889, 0.85402435), (0.31944445, 0.889007), (0.3375, 0.889007), (0.3375, 0.85402435), (0.31944445, 0.85402435), (0.3375, 0.889007), (0.35555553, 0.889007), (0.35555553, 0.85402435), (0.3375, 0.85402435), (0.35555553, 0.889007), (0.37361112, 0.889007), (0.37361112, 0.85402435), (0.35555553, 0.85402435), (0.37361112, 0.889007), (0.39166668, 0.889007), (0.39166668, 0.85402435), (0.37361112, 0.85402435), (0.39166668, 0.889007), (0.4097222, 0.889007), (0.4097222, 0.85402435), (0.39166668, 0.85402435), (0.4097222, 0.889007), (0.42777777, 0.889007), (0.42777777, 0.85402435), (0.4097222, 0.85402435), (0.42777777, 0.889007), (0.44583333, 0.889007), (0.44583333, 0.85402435), (0.42777777, 0.85402435), (0.44583333, 0.889007), (0.46388888, 0.889007), (0.46388888, 0.85402435), (0.44583333, 0.85402435), (0.46388888, 0.889007), (0.48194444, 0.889007), (0.48194444, 0.85402435), (0.46388888, 0.85402435), (0.48194444, 0.889007), (0.5, 0.889007), (0.5, 0.85402435), (0.48194444, 0.85402435), (0.5, 0.889007), (0.51805556, 0.889007), (0.51805556, 0.85402435), (0.5, 0.85402435), (0.51805556, 0.889007), (0.5361111, 0.889007), (0.5361111, 0.85402435), (0.51805556, 0.85402435), (0.5361111, 0.889007), (0.5541667, 0.889007), (0.5541667, 0.85402435), (0.5361111, 0.85402435), (0.5541667, 0.889007), (0.57222223, 0.889007), (0.57222223, 0.85402435), (0.5541667, 0.85402435), (0.57222223, 0.889007), (0.5902778, 0.889007), (0.5902778, 0.85402435), (0.57222223, 0.85402435), (0.5902778, 0.889007), (0.60833335, 0.889007), (0.60833335, 0.85402435), (0.5902778, 0.85402435), (0.60833335, 0.889007), (0.6263889, 0.889007), (0.6263889, 0.85402435), (0.60833335, 0.85402435), (0.6263889, 0.889007), (0.6444444, 0.889007), (0.6444444, 0.85402435), (0.6263889, 0.85402435), (0.6444444, 0.889007), (0.6625, 0.889007), (0.6625, 0.85402435), (0.6444444, 0.85402435), (0.6625, 0.889007), (0.6805555, 0.889007), (0.6805555, 0.85402435), (0.6625, 0.85402435), (0.6805555, 0.889007), (0.69861114, 0.889007), (0.69861114, 0.85402435), (0.6805555, 0.85402435), (0.69861114, 0.889007), (0.7166667, 0.889007), (0.7166667, 0.85402435), (0.69861114, 0.85402435), (0.28333333, 0.85402435), (0.3013889, 0.85402435), (0.3013889, 0.81904167), (0.28333333, 0.81904167), (0.3013889, 0.85402435), (0.31944445, 0.85402435), (0.31944445, 0.81904167), (0.3013889, 0.81904167), (0.31944445, 0.85402435), (0.3375, 0.85402435), (0.3375, 0.81904167), (0.31944445, 0.81904167), (0.3375, 0.85402435), (0.35555553, 0.85402435), (0.35555553, 0.81904167), (0.3375, 0.81904167), (0.35555553, 0.85402435), (0.37361112, 0.85402435), (0.37361112, 0.81904167), (0.35555553, 0.81904167), (0.37361112, 0.85402435), (0.39166668, 0.85402435), (0.39166668, 0.81904167), (0.37361112, 0.81904167), (0.39166668, 0.85402435), (0.4097222, 0.85402435), (0.4097222, 0.81904167), (0.39166668, 0.81904167), (0.4097222, 0.85402435), (0.42777777, 0.85402435), (0.42777777, 0.81904167), (0.4097222, 0.81904167), (0.42777777, 0.85402435), (0.44583333, 0.85402435), (0.44583333, 0.81904167), (0.42777777, 0.81904167), (0.44583333, 0.85402435), (0.46388888, 0.85402435), (0.46388888, 0.81904167), (0.44583333, 0.81904167), (0.46388888, 0.85402435), (0.48194444, 0.85402435), (0.48194444, 0.81904167), (0.46388888, 0.81904167), (0.48194444, 0.85402435), (0.5, 0.85402435), (0.5, 0.81904167), (0.48194444, 0.81904167), (0.5, 0.85402435), (0.51805556, 0.85402435), (0.51805556, 0.81904167), (0.5, 0.81904167), (0.51805556, 0.85402435), (0.5361111, 0.85402435), (0.5361111, 0.81904167), (0.51805556, 0.81904167), (0.5361111, 0.85402435), (0.5541667, 0.85402435), (0.5541667, 0.81904167), (0.5361111, 0.81904167), (0.5541667, 0.85402435), (0.57222223, 0.85402435), (0.57222223, 0.81904167), (0.5541667, 0.81904167), (0.57222223, 0.85402435), (0.5902778, 0.85402435), (0.5902778, 0.81904167), (0.57222223, 0.81904167), (0.5902778, 0.85402435), (0.60833335, 0.85402435), (0.60833335, 0.81904167), (0.5902778, 0.81904167), (0.60833335, 0.85402435), (0.6263889, 0.85402435), (0.6263889, 0.81904167), (0.60833335, 0.81904167), (0.6263889, 0.85402435), (0.6444444, 0.85402435), (0.6444444, 0.81904167), (0.6263889, 0.81904167), (0.6444444, 0.85402435), (0.6625, 0.85402435), (0.6625, 0.81904167), (0.6444444, 0.81904167), (0.6625, 0.85402435), (0.6805555, 0.85402435), (0.6805555, 0.81904167), (0.6625, 0.81904167), (0.6805555, 0.85402435), (0.69861114, 0.85402435), (0.69861114, 0.81904167), (0.6805555, 0.81904167), (0.69861114, 0.85402435), (0.7166667, 0.85402435), (0.7166667, 0.81904167), (0.69861114, 0.81904167), (0.28333333, 0.81904167), (0.3013889, 0.81904167), (0.3013889, 0.78405905), (0.28333333, 0.78405905), (0.3013889, 0.81904167), (0.31944445, 0.81904167), (0.31944445, 0.78405905), (0.3013889, 0.78405905), (0.31944445, 0.81904167), (0.3375, 0.81904167), (0.3375, 0.78405905), (0.31944445, 0.78405905), (0.3375, 0.81904167), (0.35555553, 0.81904167), (0.35555553, 0.78405905), (0.3375, 0.78405905), (0.35555553, 0.81904167), (0.37361112, 0.81904167), (0.37361112, 0.78405905), (0.35555553, 0.78405905), (0.37361112, 0.81904167), (0.39166668, 0.81904167), (0.39166668, 0.78405905), (0.37361112, 0.78405905), (0.39166668, 0.81904167), (0.4097222, 0.81904167), (0.4097222, 0.78405905), (0.39166668, 0.78405905), (0.4097222, 0.81904167), (0.42777777, 0.81904167), (0.42777777, 0.78405905), (0.4097222, 0.78405905), (0.42777777, 0.81904167), (0.44583333, 0.81904167), (0.44583333, 0.78405905), (0.42777777, 0.78405905), (0.44583333, 0.81904167), (0.46388888, 0.81904167), (0.46388888, 0.78405905), (0.44583333, 0.78405905), (0.46388888, 0.81904167), (0.48194444, 0.81904167), (0.48194444, 0.78405905), (0.46388888, 0.78405905), (0.48194444, 0.81904167), (0.5, 0.81904167), (0.5, 0.78405905), (0.48194444, 0.78405905), (0.5, 0.81904167), (0.51805556, 0.81904167), (0.51805556, 0.78405905), (0.5, 0.78405905), (0.51805556, 0.81904167), (0.5361111, 0.81904167), (0.5361111, 0.78405905), (0.51805556, 0.78405905), (0.5361111, 0.81904167), (0.5541667, 0.81904167), (0.5541667, 0.78405905), (0.5361111, 0.78405905), (0.5541667, 0.81904167), (0.57222223, 0.81904167), (0.57222223, 0.78405905), (0.5541667, 0.78405905), (0.57222223, 0.81904167), (0.5902778, 0.81904167), (0.5902778, 0.78405905), (0.57222223, 0.78405905), (0.5902778, 0.81904167), (0.60833335, 0.81904167), (0.60833335, 0.78405905), (0.5902778, 0.78405905), (0.60833335, 0.81904167), (0.6263889, 0.81904167), (0.6263889, 0.78405905), (0.60833335, 0.78405905), (0.6263889, 0.81904167), (0.6444444, 0.81904167), (0.6444444, 0.78405905), (0.6263889, 0.78405905), (0.6444444, 0.81904167), (0.6625, 0.81904167), (0.6625, 0.78405905), (0.6444444, 0.78405905), (0.6625, 0.81904167), (0.6805555, 0.81904167), (0.6805555, 0.78405905), (0.6625, 0.78405905), (0.6805555, 0.81904167), (0.69861114, 0.81904167), (0.69861114, 0.78405905), (0.6805555, 0.78405905), (0.69861114, 0.81904167), (0.7166667, 0.81904167), (0.7166667, 0.78405905), (0.69861114, 0.78405905), (0.28333333, 0.78405905), (0.3013889, 0.78405905), (0.3013889, 0.7490764), (0.28333333, 0.7490764), (0.3013889, 0.78405905), (0.31944445, 0.78405905), (0.31944445, 0.7490764), (0.3013889, 0.7490764), (0.31944445, 0.78405905), (0.3375, 0.78405905), (0.3375, 0.7490764), (0.31944445, 0.7490764), (0.3375, 0.78405905), (0.35555553, 0.78405905), (0.35555553, 0.7490764), (0.3375, 0.7490764), (0.35555553, 0.78405905), (0.37361112, 0.78405905), (0.37361112, 0.7490764), (0.35555553, 0.7490764), (0.37361112, 0.78405905), (0.39166668, 0.78405905), (0.39166668, 0.7490764), (0.37361112, 0.7490764), (0.39166668, 0.78405905), (0.4097222, 0.78405905), (0.4097222, 0.7490764), (0.39166668, 0.7490764), (0.4097222, 0.78405905), (0.42777777, 0.78405905), (0.42777777, 0.7490764), (0.4097222, 0.7490764), (0.42777777, 0.78405905), (0.44583333, 0.78405905), (0.44583333, 0.7490764), (0.42777777, 0.7490764), (0.44583333, 0.78405905), (0.46388888, 0.78405905), (0.46388888, 0.7490764), (0.44583333, 0.7490764), (0.46388888, 0.78405905), (0.48194444, 0.78405905), (0.48194444, 0.7490764), (0.46388888, 0.7490764), (0.48194444, 0.78405905), (0.5, 0.78405905), (0.5, 0.7490764), (0.48194444, 0.7490764), (0.5, 0.78405905), (0.51805556, 0.78405905), (0.51805556, 0.7490764), (0.5, 0.7490764), (0.51805556, 0.78405905), (0.5361111, 0.78405905), (0.5361111, 0.7490764), (0.51805556, 0.7490764), (0.5361111, 0.78405905), (0.5541667, 0.78405905), (0.5541667, 0.7490764), (0.5361111, 0.7490764), (0.5541667, 0.78405905), (0.57222223, 0.78405905), (0.57222223, 0.7490764), (0.5541667, 0.7490764), (0.57222223, 0.78405905), (0.5902778, 0.78405905), (0.5902778, 0.7490764), (0.57222223, 0.7490764), (0.5902778, 0.78405905), (0.60833335, 0.78405905), (0.60833335, 0.7490764), (0.5902778, 0.7490764), (0.60833335, 0.78405905), (0.6263889, 0.78405905), (0.6263889, 0.7490764), (0.60833335, 0.7490764), (0.6263889, 0.78405905), (0.6444444, 0.78405905), (0.6444444, 0.7490764), (0.6263889, 0.7490764), (0.6444444, 0.78405905), (0.6625, 0.78405905), (0.6625, 0.7490764), (0.6444444, 0.7490764), (0.6625, 0.78405905), (0.6805555, 0.78405905), (0.6805555, 0.7490764), (0.6625, 0.7490764), (0.6805555, 0.78405905), (0.69861114, 0.78405905), (0.69861114, 0.7490764), (0.6805555, 0.7490764), (0.69861114, 0.78405905), (0.7166667, 0.78405905), (0.7166667, 0.7490764), (0.69861114, 0.7490764), (0.28333333, 0.7490764), (0.3013889, 0.7490764), (0.3013889, 0.71409374), (0.28333333, 0.71409374), (0.3013889, 0.7490764), (0.31944445, 0.7490764), (0.31944445, 0.71409374), (0.3013889, 0.71409374), (0.31944445, 0.7490764), (0.3375, 0.7490764), (0.3375, 0.71409374), (0.31944445, 0.71409374), (0.3375, 0.7490764), (0.35555553, 0.7490764), (0.35555553, 0.71409374), (0.3375, 0.71409374), (0.35555553, 0.7490764), (0.37361112, 0.7490764), (0.37361112, 0.71409374), (0.35555553, 0.71409374), (0.37361112, 0.7490764), (0.39166668, 0.7490764), (0.39166668, 0.71409374), (0.37361112, 0.71409374), (0.39166668, 0.7490764), (0.4097222, 0.7490764), (0.4097222, 0.71409374), (0.39166668, 0.71409374), (0.4097222, 0.7490764), (0.42777777, 0.7490764), (0.42777777, 0.71409374), (0.4097222, 0.71409374), (0.42777777, 0.7490764), (0.44583333, 0.7490764), (0.44583333, 0.71409374), (0.42777777, 0.71409374), (0.44583333, 0.7490764), (0.46388888, 0.7490764), (0.46388888, 0.71409374), (0.44583333, 0.71409374), (0.46388888, 0.7490764), (0.48194444, 0.7490764), (0.48194444, 0.71409374), (0.46388888, 0.71409374), (0.48194444, 0.7490764), (0.5, 0.7490764), (0.5, 0.71409374), (0.48194444, 0.71409374), (0.5, 0.7490764), (0.51805556, 0.7490764), (0.51805556, 0.71409374), (0.5, 0.71409374), (0.51805556, 0.7490764), (0.5361111, 0.7490764), (0.5361111, 0.71409374), (0.51805556, 0.71409374), (0.5361111, 0.7490764), (0.5541667, 0.7490764), (0.5541667, 0.71409374), (0.5361111, 0.71409374), (0.5541667, 0.7490764), (0.57222223, 0.7490764), (0.57222223, 0.71409374), (0.5541667, 0.71409374), (0.57222223, 0.7490764), (0.5902778, 0.7490764), (0.5902778, 0.71409374), (0.57222223, 0.71409374), (0.5902778, 0.7490764), (0.60833335, 0.7490764), (0.60833335, 0.71409374), (0.5902778, 0.71409374), (0.60833335, 0.7490764), (0.6263889, 0.7490764), (0.6263889, 0.71409374), (0.60833335, 0.71409374), (0.6263889, 0.7490764), (0.6444444, 0.7490764), (0.6444444, 0.71409374), (0.6263889, 0.71409374), (0.6444444, 0.7490764), (0.6625, 0.7490764), (0.6625, 0.71409374), (0.6444444, 0.71409374), (0.6625, 0.7490764), (0.6805555, 0.7490764), (0.6805555, 0.71409374), (0.6625, 0.71409374), (0.6805555, 0.7490764), (0.69861114, 0.7490764), (0.69861114, 0.71409374), (0.6805555, 0.71409374), (0.69861114, 0.7490764), (0.7166667, 0.7490764), (0.7166667, 0.71409374), (0.69861114, 0.71409374), (0.28333333, 0.71409374), (0.3013889, 0.71409374), (0.3013889, 0.6791111), (0.28333333, 0.6791111), (0.3013889, 0.71409374), (0.31944445, 0.71409374), (0.31944445, 0.6791111), (0.3013889, 0.6791111), (0.31944445, 0.71409374), (0.3375, 0.71409374), (0.3375, 0.6791111), (0.31944445, 0.6791111), (0.3375, 0.71409374), (0.35555553, 0.71409374), (0.35555553, 0.6791111), (0.3375, 0.6791111), (0.35555553, 0.71409374), (0.37361112, 0.71409374), (0.37361112, 0.6791111), (0.35555553, 0.6791111), (0.37361112, 0.71409374), (0.39166668, 0.71409374), (0.39166668, 0.6791111), (0.37361112, 0.6791111), (0.39166668, 0.71409374), (0.4097222, 0.71409374), (0.4097222, 0.6791111), (0.39166668, 0.6791111), (0.4097222, 0.71409374), (0.42777777, 0.71409374), (0.42777777, 0.6791111), (0.4097222, 0.6791111), (0.42777777, 0.71409374), (0.44583333, 0.71409374), (0.44583333, 0.6791111), (0.42777777, 0.6791111), (0.44583333, 0.71409374), (0.46388888, 0.71409374), (0.46388888, 0.6791111), (0.44583333, 0.6791111), (0.46388888, 0.71409374), (0.48194444, 0.71409374), (0.48194444, 0.6791111), (0.46388888, 0.6791111), (0.48194444, 0.71409374), (0.5, 0.71409374), (0.5, 0.6791111), (0.48194444, 0.6791111), (0.5, 0.71409374), (0.51805556, 0.71409374), (0.51805556, 0.6791111), (0.5, 0.6791111), (0.51805556, 0.71409374), (0.5361111, 0.71409374), (0.5361111, 0.6791111), (0.51805556, 0.6791111), (0.5361111, 0.71409374), (0.5541667, 0.71409374), (0.5541667, 0.6791111), (0.5361111, 0.6791111), (0.5541667, 0.71409374), (0.57222223, 0.71409374), (0.57222223, 0.6791111), (0.5541667, 0.6791111), (0.57222223, 0.71409374), (0.5902778, 0.71409374), (0.5902778, 0.6791111), (0.57222223, 0.6791111), (0.5902778, 0.71409374), (0.60833335, 0.71409374), (0.60833335, 0.6791111), (0.5902778, 0.6791111), (0.60833335, 0.71409374), (0.6263889, 0.71409374), (0.6263889, 0.6791111), (0.60833335, 0.6791111), (0.6263889, 0.71409374), (0.6444444, 0.71409374), (0.6444444, 0.6791111), (0.6263889, 0.6791111), (0.6444444, 0.71409374), (0.6625, 0.71409374), (0.6625, 0.6791111), (0.6444444, 0.6791111), (0.6625, 0.71409374), (0.6805555, 0.71409374), (0.6805555, 0.6791111), (0.6625, 0.6791111), (0.6805555, 0.71409374), (0.69861114, 0.71409374), (0.69861114, 0.6791111), (0.6805555, 0.6791111), (0.69861114, 0.71409374), (0.7166667, 0.71409374), (0.7166667, 0.6791111), (0.69861114, 0.6791111), (0.28333333, 0.6791111), (0.3013889, 0.6791111), (0.3013889, 0.64412856), (0.28333333, 0.64412856), (0.3013889, 0.6791111), (0.31944445, 0.6791111), (0.31944445, 0.64412856), (0.3013889, 0.64412856), (0.31944445, 0.6791111), (0.3375, 0.6791111), (0.3375, 0.64412856), (0.31944445, 0.64412856), (0.3375, 0.6791111), (0.35555553, 0.6791111), (0.35555553, 0.64412856), (0.3375, 0.64412856), (0.35555553, 0.6791111), (0.37361112, 0.6791111), (0.37361112, 0.64412856), (0.35555553, 0.64412856), (0.37361112, 0.6791111), (0.39166668, 0.6791111), (0.39166668, 0.64412856), (0.37361112, 0.64412856), (0.39166668, 0.6791111), (0.4097222, 0.6791111), (0.4097222, 0.64412856), (0.39166668, 0.64412856), (0.4097222, 0.6791111), (0.42777777, 0.6791111), (0.42777777, 0.64412856), (0.4097222, 0.64412856), (0.42777777, 0.6791111), (0.44583333, 0.6791111), (0.44583333, 0.64412856), (0.42777777, 0.64412856), (0.44583333, 0.6791111), (0.46388888, 0.6791111), (0.46388888, 0.64412856), (0.44583333, 0.64412856), (0.46388888, 0.6791111), (0.48194444, 0.6791111), (0.48194444, 0.64412856), (0.46388888, 0.64412856), (0.48194444, 0.6791111), (0.5, 0.6791111), (0.5, 0.64412856), (0.48194444, 0.64412856), (0.5, 0.6791111), (0.51805556, 0.6791111), (0.51805556, 0.64412856), (0.5, 0.64412856), (0.51805556, 0.6791111), (0.5361111, 0.6791111), (0.5361111, 0.64412856), (0.51805556, 0.64412856), (0.5361111, 0.6791111), (0.5541667, 0.6791111), (0.5541667, 0.64412856), (0.5361111, 0.64412856), (0.5541667, 0.6791111), (0.57222223, 0.6791111), (0.57222223, 0.64412856), (0.5541667, 0.64412856), (0.57222223, 0.6791111), (0.5902778, 0.6791111), (0.5902778, 0.64412856), (0.57222223, 0.64412856), (0.5902778, 0.6791111), (0.60833335, 0.6791111), (0.60833335, 0.64412856), (0.5902778, 0.64412856), (0.60833335, 0.6791111), (0.6263889, 0.6791111), (0.6263889, 0.64412856), (0.60833335, 0.64412856), (0.6263889, 0.6791111), (0.6444444, 0.6791111), (0.6444444, 0.64412856), (0.6263889, 0.64412856), (0.6444444, 0.6791111), (0.6625, 0.6791111), (0.6625, 0.64412856), (0.6444444, 0.64412856), (0.6625, 0.6791111), (0.6805555, 0.6791111), (0.6805555, 0.64412856), (0.6625, 0.64412856), (0.6805555, 0.6791111), (0.69861114, 0.6791111), (0.69861114, 0.64412856), (0.6805555, 0.64412856), (0.69861114, 0.6791111), (0.7166667, 0.6791111), (0.7166667, 0.64412856), (0.69861114, 0.64412856), (0.28333333, 0.64412856), (0.3013889, 0.64412856), (0.3013889, 0.6091458), (0.28333333, 0.6091458), (0.3013889, 0.64412856), (0.31944445, 0.64412856), (0.31944445, 0.6091458), (0.3013889, 0.6091458), (0.31944445, 0.64412856), (0.3375, 0.64412856), (0.3375, 0.6091458), (0.31944445, 0.6091458), (0.3375, 0.64412856), (0.35555553, 0.64412856), (0.35555553, 0.6091458), (0.3375, 0.6091458), (0.35555553, 0.64412856), (0.37361112, 0.64412856), (0.37361112, 0.6091458), (0.35555553, 0.6091458), (0.37361112, 0.64412856), (0.39166668, 0.64412856), (0.39166668, 0.6091458), (0.37361112, 0.6091458), (0.39166668, 0.64412856), (0.4097222, 0.64412856), (0.4097222, 0.6091458), (0.39166668, 0.6091458), (0.4097222, 0.64412856), (0.42777777, 0.64412856), (0.42777777, 0.6091458), (0.4097222, 0.6091458), (0.42777777, 0.64412856), (0.44583333, 0.64412856), (0.44583333, 0.6091458), (0.42777777, 0.6091458), (0.44583333, 0.64412856), (0.46388888, 0.64412856), (0.46388888, 0.6091458), (0.44583333, 0.6091458), (0.46388888, 0.64412856), (0.48194444, 0.64412856), (0.48194444, 0.6091458), (0.46388888, 0.6091458), (0.48194444, 0.64412856), (0.5, 0.64412856), (0.5, 0.6091458), (0.48194444, 0.6091458), (0.5, 0.64412856), (0.51805556, 0.64412856), (0.51805556, 0.6091458), (0.5, 0.6091458), (0.51805556, 0.64412856), (0.5361111, 0.64412856), (0.5361111, 0.6091458), (0.51805556, 0.6091458), (0.5361111, 0.64412856), (0.5541667, 0.64412856), (0.5541667, 0.6091458), (0.5361111, 0.6091458), (0.5541667, 0.64412856), (0.57222223, 0.64412856), (0.57222223, 0.6091458), (0.5541667, 0.6091458), (0.57222223, 0.64412856), (0.5902778, 0.64412856), (0.5902778, 0.6091458), (0.57222223, 0.6091458), (0.5902778, 0.64412856), (0.60833335, 0.64412856), (0.60833335, 0.6091458), (0.5902778, 0.6091458), (0.60833335, 0.64412856), (0.6263889, 0.64412856), (0.6263889, 0.6091458), (0.60833335, 0.6091458), (0.6263889, 0.64412856), (0.6444444, 0.64412856), (0.6444444, 0.6091458), (0.6263889, 0.6091458), (0.6444444, 0.64412856), (0.6625, 0.64412856), (0.6625, 0.6091458), (0.6444444, 0.6091458), (0.6625, 0.64412856), (0.6805555, 0.64412856), (0.6805555, 0.6091458), (0.6625, 0.6091458), (0.6805555, 0.64412856), (0.69861114, 0.64412856), (0.69861114, 0.6091458), (0.6805555, 0.6091458), (0.69861114, 0.64412856), (0.7166667, 0.64412856), (0.7166667, 0.6091458), (0.69861114, 0.6091458), (0.28333333, 0.6091458), (0.3013889, 0.6091458), (0.3013889, 0.5741632), (0.28333333, 0.5741632), (0.3013889, 0.6091458), (0.31944445, 0.6091458), (0.31944445, 0.5741632), (0.3013889, 0.5741632), (0.31944445, 0.6091458), (0.3375, 0.6091458), (0.3375, 0.5741632), (0.31944445, 0.5741632), (0.3375, 0.6091458), (0.35555553, 0.6091458), (0.35555553, 0.5741632), (0.3375, 0.5741632), (0.35555553, 0.6091458), (0.37361112, 0.6091458), (0.37361112, 0.5741632), (0.35555553, 0.5741632), (0.37361112, 0.6091458), (0.39166668, 0.6091458), (0.39166668, 0.5741632), (0.37361112, 0.5741632), (0.39166668, 0.6091458), (0.4097222, 0.6091458), (0.4097222, 0.5741632), (0.39166668, 0.5741632), (0.4097222, 0.6091458), (0.42777777, 0.6091458), (0.42777777, 0.5741632), (0.4097222, 0.5741632), (0.42777777, 0.6091458), (0.44583333, 0.6091458), (0.44583333, 0.5741632), (0.42777777, 0.5741632), (0.44583333, 0.6091458), (0.46388888, 0.6091458), (0.46388888, 0.5741632), (0.44583333, 0.5741632), (0.46388888, 0.6091458), (0.48194444, 0.6091458), (0.48194444, 0.5741632), (0.46388888, 0.5741632), (0.48194444, 0.6091458), (0.5, 0.6091458), (0.5, 0.5741632), (0.48194444, 0.5741632), (0.5, 0.6091458), (0.51805556, 0.6091458), (0.51805556, 0.5741632), (0.5, 0.5741632), (0.51805556, 0.6091458), (0.5361111, 0.6091458), (0.5361111, 0.5741632), (0.51805556, 0.5741632), (0.5361111, 0.6091458), (0.5541667, 0.6091458), (0.5541667, 0.5741632), (0.5361111, 0.5741632), (0.5541667, 0.6091458), (0.57222223, 0.6091458), (0.57222223, 0.5741632), (0.5541667, 0.5741632), (0.57222223, 0.6091458), (0.5902778, 0.6091458), (0.5902778, 0.5741632), (0.57222223, 0.5741632), (0.5902778, 0.6091458), (0.60833335, 0.6091458), (0.60833335, 0.5741632), (0.5902778, 0.5741632), (0.60833335, 0.6091458), (0.6263889, 0.6091458), (0.6263889, 0.5741632), (0.60833335, 0.5741632), (0.6263889, 0.6091458), (0.6444444, 0.6091458), (0.6444444, 0.5741632), (0.6263889, 0.5741632), (0.6444444, 0.6091458), (0.6625, 0.6091458), (0.6625, 0.5741632), (0.6444444, 0.5741632), (0.6625, 0.6091458), (0.6805555, 0.6091458), (0.6805555, 0.5741632), (0.6625, 0.5741632), (0.6805555, 0.6091458), (0.69861114, 0.6091458), (0.69861114, 0.5741632), (0.6805555, 0.5741632), (0.69861114, 0.6091458), (0.7166667, 0.6091458), (0.7166667, 0.5741632), (0.69861114, 0.5741632), (0.28333333, 0.5741632), (0.3013889, 0.5741632), (0.3013889, 0.5391806), (0.28333333, 0.5391806), (0.3013889, 0.5741632), (0.31944445, 0.5741632), (0.31944445, 0.5391806), (0.3013889, 0.5391806), (0.31944445, 0.5741632), (0.3375, 0.5741632), (0.3375, 0.5391806), (0.31944445, 0.5391806), (0.3375, 0.5741632), (0.35555553, 0.5741632), (0.35555553, 0.5391806), (0.3375, 0.5391806), (0.35555553, 0.5741632), (0.37361112, 0.5741632), (0.37361112, 0.5391806), (0.35555553, 0.5391806), (0.37361112, 0.5741632), (0.39166668, 0.5741632), (0.39166668, 0.5391806), (0.37361112, 0.5391806), (0.39166668, 0.5741632), (0.4097222, 0.5741632), (0.4097222, 0.5391806), (0.39166668, 0.5391806), (0.4097222, 0.5741632), (0.42777777, 0.5741632), (0.42777777, 0.5391806), (0.4097222, 0.5391806), (0.42777777, 0.5741632), (0.44583333, 0.5741632), (0.44583333, 0.5391806), (0.42777777, 0.5391806), (0.44583333, 0.5741632), (0.46388888, 0.5741632), (0.46388888, 0.5391806), (0.44583333, 0.5391806), (0.46388888, 0.5741632), (0.48194444, 0.5741632), (0.48194444, 0.5391806), (0.46388888, 0.5391806), (0.48194444, 0.5741632), (0.5, 0.5741632), (0.5, 0.5391806), (0.48194444, 0.5391806), (0.5, 0.5741632), (0.51805556, 0.5741632), (0.51805556, 0.5391806), (0.5, 0.5391806), (0.51805556, 0.5741632), (0.5361111, 0.5741632), (0.5361111, 0.5391806), (0.51805556, 0.5391806), (0.5361111, 0.5741632), (0.5541667, 0.5741632), (0.5541667, 0.5391806), (0.5361111, 0.5391806), (0.5541667, 0.5741632), (0.57222223, 0.5741632), (0.57222223, 0.5391806), (0.5541667, 0.5391806), (0.57222223, 0.5741632), (0.5902778, 0.5741632), (0.5902778, 0.5391806), (0.57222223, 0.5391806), (0.5902778, 0.5741632), (0.60833335, 0.5741632), (0.60833335, 0.5391806), (0.5902778, 0.5391806), (0.60833335, 0.5741632), (0.6263889, 0.5741632), (0.6263889, 0.5391806), (0.60833335, 0.5391806), (0.6263889, 0.5741632), (0.6444444, 0.5741632), (0.6444444, 0.5391806), (0.6263889, 0.5391806), (0.6444444, 0.5741632), (0.6625, 0.5741632), (0.6625, 0.5391806), (0.6444444, 0.5391806), (0.6625, 0.5741632), (0.6805555, 0.5741632), (0.6805555, 0.5391806), (0.6625, 0.5391806), (0.6805555, 0.5741632), (0.69861114, 0.5741632), (0.69861114, 0.5391806), (0.6805555, 0.5391806), (0.69861114, 0.5741632), (0.7166667, 0.5741632), (0.7166667, 0.5391806), (0.69861114, 0.5391806), (0.28333333, 0.5391806), (0.3013889, 0.5391806), (0.3013889, 0.50419796), (0.28333333, 0.50419796), (0.3013889, 0.5391806), (0.31944445, 0.5391806), (0.31944445, 0.50419796), (0.3013889, 0.50419796), (0.31944445, 0.5391806), (0.3375, 0.5391806), (0.3375, 0.50419796), (0.31944445, 0.50419796), (0.3375, 0.5391806), (0.35555553, 0.5391806), (0.35555553, 0.50419796), (0.3375, 0.50419796), (0.35555553, 0.5391806), (0.37361112, 0.5391806), (0.37361112, 0.50419796), (0.35555553, 0.50419796), (0.37361112, 0.5391806), (0.39166668, 0.5391806), (0.39166668, 0.50419796), (0.37361112, 0.50419796), (0.39166668, 0.5391806), (0.4097222, 0.5391806), (0.4097222, 0.50419796), (0.39166668, 0.50419796), (0.4097222, 0.5391806), (0.42777777, 0.5391806), (0.42777777, 0.50419796), (0.4097222, 0.50419796), (0.42777777, 0.5391806), (0.44583333, 0.5391806), (0.44583333, 0.50419796), (0.42777777, 0.50419796), (0.44583333, 0.5391806), (0.46388888, 0.5391806), (0.46388888, 0.50419796), (0.44583333, 0.50419796), (0.46388888, 0.5391806), (0.48194444, 0.5391806), (0.48194444, 0.50419796), (0.46388888, 0.50419796), (0.48194444, 0.5391806), (0.5, 0.5391806), (0.5, 0.50419796), (0.48194444, 0.50419796), (0.5, 0.5391806), (0.51805556, 0.5391806), (0.51805556, 0.50419796), (0.5, 0.50419796), (0.51805556, 0.5391806), (0.5361111, 0.5391806), (0.5361111, 0.50419796), (0.51805556, 0.50419796), (0.5361111, 0.5391806), (0.5541667, 0.5391806), (0.5541667, 0.50419796), (0.5361111, 0.50419796), (0.5541667, 0.5391806), (0.57222223, 0.5391806), (0.57222223, 0.50419796), (0.5541667, 0.50419796), (0.57222223, 0.5391806), (0.5902778, 0.5391806), (0.5902778, 0.50419796), (0.57222223, 0.50419796), (0.5902778, 0.5391806), (0.60833335, 0.5391806), (0.60833335, 0.50419796), (0.5902778, 0.50419796), (0.60833335, 0.5391806), (0.6263889, 0.5391806), (0.6263889, 0.50419796), (0.60833335, 0.50419796), (0.6263889, 0.5391806), (0.6444444, 0.5391806), (0.6444444, 0.50419796), (0.6263889, 0.50419796), (0.6444444, 0.5391806), (0.6625, 0.5391806), (0.6625, 0.50419796), (0.6444444, 0.50419796), (0.6625, 0.5391806), (0.6805555, 0.5391806), (0.6805555, 0.50419796), (0.6625, 0.50419796), (0.6805555, 0.5391806), (0.69861114, 0.5391806), (0.69861114, 0.50419796), (0.6805555, 0.50419796), (0.69861114, 0.5391806), (0.7166667, 0.5391806), (0.7166667, 0.50419796), (0.69861114, 0.50419796), (0.28333333, 0.50419796), (0.3013889, 0.50419796), (0.3013889, 0.46921533), (0.28333333, 0.46921533), (0.3013889, 0.50419796), (0.31944445, 0.50419796), (0.31944445, 0.46921533), (0.3013889, 0.46921533), (0.31944445, 0.50419796), (0.3375, 0.50419796), (0.3375, 0.46921533), (0.31944445, 0.46921533), (0.3375, 0.50419796), (0.35555553, 0.50419796), (0.35555553, 0.46921533), (0.3375, 0.46921533), (0.35555553, 0.50419796), (0.37361112, 0.50419796), (0.37361112, 0.46921533), (0.35555553, 0.46921533), (0.37361112, 0.50419796), (0.39166668, 0.50419796), (0.39166668, 0.46921533), (0.37361112, 0.46921533), (0.39166668, 0.50419796), (0.4097222, 0.50419796), (0.4097222, 0.46921533), (0.39166668, 0.46921533), (0.4097222, 0.50419796), (0.42777777, 0.50419796), (0.42777777, 0.46921533), (0.4097222, 0.46921533), (0.42777777, 0.50419796), (0.44583333, 0.50419796), (0.44583333, 0.46921533), (0.42777777, 0.46921533), (0.44583333, 0.50419796), (0.46388888, 0.50419796), (0.46388888, 0.46921533), (0.44583333, 0.46921533), (0.46388888, 0.50419796), (0.48194444, 0.50419796), (0.48194444, 0.46921533), (0.46388888, 0.46921533), (0.48194444, 0.50419796), (0.5, 0.50419796), (0.5, 0.46921533), (0.48194444, 0.46921533), (0.5, 0.50419796), (0.51805556, 0.50419796), (0.51805556, 0.46921533), (0.5, 0.46921533), (0.51805556, 0.50419796), (0.5361111, 0.50419796), (0.5361111, 0.46921533), (0.51805556, 0.46921533), (0.5361111, 0.50419796), (0.5541667, 0.50419796), (0.5541667, 0.46921533), (0.5361111, 0.46921533), (0.5541667, 0.50419796), (0.57222223, 0.50419796), (0.57222223, 0.46921533), (0.5541667, 0.46921533), (0.57222223, 0.50419796), (0.5902778, 0.50419796), (0.5902778, 0.46921533), (0.57222223, 0.46921533), (0.5902778, 0.50419796), (0.60833335, 0.50419796), (0.60833335, 0.46921533), (0.5902778, 0.46921533), (0.60833335, 0.50419796), (0.6263889, 0.50419796), (0.6263889, 0.46921533), (0.60833335, 0.46921533), (0.6263889, 0.50419796), (0.6444444, 0.50419796), (0.6444444, 0.46921533), (0.6263889, 0.46921533), (0.6444444, 0.50419796), (0.6625, 0.50419796), (0.6625, 0.46921533), (0.6444444, 0.46921533), (0.6625, 0.50419796), (0.6805555, 0.50419796), (0.6805555, 0.46921533), (0.6625, 0.46921533), (0.6805555, 0.50419796), (0.69861114, 0.50419796), (0.69861114, 0.46921533), (0.6805555, 0.46921533), (0.69861114, 0.50419796), (0.7166667, 0.50419796), (0.7166667, 0.46921533), (0.69861114, 0.46921533), (0.28333333, 0.46921533), (0.3013889, 0.46921533), (0.3013889, 0.4342327), (0.28333333, 0.4342327), (0.3013889, 0.46921533), (0.31944445, 0.46921533), (0.31944445, 0.4342327), (0.3013889, 0.4342327), (0.31944445, 0.46921533), (0.3375, 0.46921533), (0.3375, 0.4342327), (0.31944445, 0.4342327), (0.3375, 0.46921533), (0.35555553, 0.46921533), (0.35555553, 0.4342327), (0.3375, 0.4342327), (0.35555553, 0.46921533), (0.37361112, 0.46921533), (0.37361112, 0.4342327), (0.35555553, 0.4342327), (0.37361112, 0.46921533), (0.39166668, 0.46921533), (0.39166668, 0.4342327), (0.37361112, 0.4342327), (0.39166668, 0.46921533), (0.4097222, 0.46921533), (0.4097222, 0.4342327), (0.39166668, 0.4342327), (0.4097222, 0.46921533), (0.42777777, 0.46921533), (0.42777777, 0.4342327), (0.4097222, 0.4342327), (0.42777777, 0.46921533), (0.44583333, 0.46921533), (0.44583333, 0.4342327), (0.42777777, 0.4342327), (0.44583333, 0.46921533), (0.46388888, 0.46921533), (0.46388888, 0.4342327), (0.44583333, 0.4342327), (0.46388888, 0.46921533), (0.48194444, 0.46921533), (0.48194444, 0.4342327), (0.46388888, 0.4342327), (0.48194444, 0.46921533), (0.5, 0.46921533), (0.5, 0.4342327), (0.48194444, 0.4342327), (0.5, 0.46921533), (0.51805556, 0.46921533), (0.51805556, 0.4342327), (0.5, 0.4342327), (0.51805556, 0.46921533), (0.5361111, 0.46921533), (0.5361111, 0.4342327), (0.51805556, 0.4342327), (0.5361111, 0.46921533), (0.5541667, 0.46921533), (0.5541667, 0.4342327), (0.5361111, 0.4342327), (0.5541667, 0.46921533), (0.57222223, 0.46921533), (0.57222223, 0.4342327), (0.5541667, 0.4342327), (0.57222223, 0.46921533), (0.5902778, 0.46921533), (0.5902778, 0.4342327), (0.57222223, 0.4342327), (0.5902778, 0.46921533), (0.60833335, 0.46921533), (0.60833335, 0.4342327), (0.5902778, 0.4342327), (0.60833335, 0.46921533), (0.6263889, 0.46921533), (0.6263889, 0.4342327), (0.60833335, 0.4342327), (0.6263889, 0.46921533), (0.6444444, 0.46921533), (0.6444444, 0.4342327), (0.6263889, 0.4342327), (0.6444444, 0.46921533), (0.6625, 0.46921533), (0.6625, 0.4342327), (0.6444444, 0.4342327), (0.6625, 0.46921533), (0.6805555, 0.46921533), (0.6805555, 0.4342327), (0.6625, 0.4342327), (0.6805555, 0.46921533), (0.69861114, 0.46921533), (0.69861114, 0.4342327), (0.6805555, 0.4342327), (0.69861114, 0.46921533), (0.7166667, 0.46921533), (0.7166667, 0.4342327), (0.69861114, 0.4342327), (0.28333333, 0.4342327), (0.3013889, 0.4342327), (0.3013889, 0.39925003), (0.28333333, 0.39925003), (0.3013889, 0.4342327), (0.31944445, 0.4342327), (0.31944445, 0.39925003), (0.3013889, 0.39925003), (0.31944445, 0.4342327), (0.3375, 0.4342327), (0.3375, 0.39925003), (0.31944445, 0.39925003), (0.3375, 0.4342327), (0.35555553, 0.4342327), (0.35555553, 0.39925003), (0.3375, 0.39925003), (0.35555553, 0.4342327), (0.37361112, 0.4342327), (0.37361112, 0.39925003), (0.35555553, 0.39925003), (0.37361112, 0.4342327), (0.39166668, 0.4342327), (0.39166668, 0.39925003), (0.37361112, 0.39925003), (0.39166668, 0.4342327), (0.4097222, 0.4342327), (0.4097222, 0.39925003), (0.39166668, 0.39925003), (0.4097222, 0.4342327), (0.42777777, 0.4342327), (0.42777777, 0.39925003), (0.4097222, 0.39925003), (0.42777777, 0.4342327), (0.44583333, 0.4342327), (0.44583333, 0.39925003), (0.42777777, 0.39925003), (0.44583333, 0.4342327), (0.46388888, 0.4342327), (0.46388888, 0.39925003), (0.44583333, 0.39925003), (0.46388888, 0.4342327), (0.48194444, 0.4342327), (0.48194444, 0.39925003), (0.46388888, 0.39925003), (0.48194444, 0.4342327), (0.5, 0.4342327), (0.5, 0.39925003), (0.48194444, 0.39925003), (0.5, 0.4342327), (0.51805556, 0.4342327), (0.51805556, 0.39925003), (0.5, 0.39925003), (0.51805556, 0.4342327), (0.5361111, 0.4342327), (0.5361111, 0.39925003), (0.51805556, 0.39925003), (0.5361111, 0.4342327), (0.5541667, 0.4342327), (0.5541667, 0.39925003), (0.5361111, 0.39925003), (0.5541667, 0.4342327), (0.57222223, 0.4342327), (0.57222223, 0.39925003), (0.5541667, 0.39925003), (0.57222223, 0.4342327), (0.5902778, 0.4342327), (0.5902778, 0.39925003), (0.57222223, 0.39925003), (0.5902778, 0.4342327), (0.60833335, 0.4342327), (0.60833335, 0.39925003), (0.5902778, 0.39925003), (0.60833335, 0.4342327), (0.6263889, 0.4342327), (0.6263889, 0.39925003), (0.60833335, 0.39925003), (0.6263889, 0.4342327), (0.6444444, 0.4342327), (0.6444444, 0.39925003), (0.6263889, 0.39925003), (0.6444444, 0.4342327), (0.6625, 0.4342327), (0.6625, 0.39925003), (0.6444444, 0.39925003), (0.6625, 0.4342327), (0.6805555, 0.4342327), (0.6805555, 0.39925003), (0.6625, 0.39925003), (0.6805555, 0.4342327), (0.69861114, 0.4342327), (0.69861114, 0.39925003), (0.6805555, 0.39925003), (0.69861114, 0.4342327), (0.7166667, 0.4342327), (0.7166667, 0.39925003), (0.69861114, 0.39925003)] (\n            interpolation = \"faceVarying\"\n        )\n        texCoord2f[] primvars:emissionUV = [(0.23552485, 0.46207106), (0.23694484, 0.45838705), (0.21867196, 0.45276937), (0.21873009, 0.45747212), (0.23694484, 0.45838705), (0.24066626, 0.4545901), (0.22096747, 0.4478328), (0.21867196, 0.45276937), (0.24066626, 0.4545901), (0.24724846, 0.45082122), (0.22628973, 0.4428584), (0.22096747, 0.4478328), (0.24724846, 0.45082122), (0.25729614, 0.4472493), (0.23540068, 0.43809742), (0.22628973, 0.4428584), (0.25729614, 0.4472493), (0.27141488, 0.44405353), (0.2491072, 0.43382663), (0.23540068, 0.43809742), (0.27141488, 0.44405353), (0.29014078, 0.44139242), (0.268159, 0.43029872), (0.2491072, 0.43382663), (0.29014078, 0.44139242), (0.31384882, 0.43938208), (0.29311824, 0.42768055), (0.268159, 0.43029872), (0.31384882, 0.43938208), (0.34264544, 0.43806684), (0.3242043, 0.42602533), (0.29311824, 0.42768055), (0.34264544, 0.43806684), (0.3762902, 0.43742633), (0.36118877, 0.42527953), (0.3242043, 0.42602533), (0.3762902, 0.43742633), (0.4141495, 0.4373784), (0.40333664, 0.42529824), (0.36118877, 0.42527953), (0.4141495, 0.4373784), (0.45520452, 0.43780896), (0.44942057, 0.42589006), (0.40333664, 0.42529824), (0.45520452, 0.43780896), (0.49810207, 0.43860164), (0.49780917, 0.42687014), (0.44942057, 0.42589006), (0.49810207, 0.43860164), (0.54125977, 0.43965244), (0.5465601, 0.42809352), (0.49780917, 0.42687014), (0.54125977, 0.43965244), (0.5830314, 0.44090694), (0.59361684, 0.42948768), (0.5465601, 0.42809352), (0.5830314, 0.44090694), (0.62187403, 0.44235536), (0.6370585, 0.43106136), (0.59361684, 0.42948768), (0.62187403, 0.44235536), (0.6565548, 0.4440375), (0.6753414, 0.4328988), (0.6370585, 0.43106136), (0.6565548, 0.4440375), (0.6862751, 0.4460224), (0.7075035, 0.43514863), (0.6753414, 0.4328988), (0.6862751, 0.4460224), (0.71070737, 0.44838592), (0.73322237, 0.43795922), (0.7075035, 0.43514863), (0.71070737, 0.44838592), (0.72994083, 0.45115933), (0.7527487, 0.44141993), (0.73322237, 0.43795922), (0.72994083, 0.45115933), (0.7443882, 0.4543227), (0.7667091, 0.44548726), (0.7527487, 0.44141993), (0.7443882, 0.4543227), (0.7546272, 0.45778304), (0.7759398, 0.4500083), (0.7667091, 0.44548726), (0.7546272, 0.45778304), (0.7613093, 0.46141127), (0.7812944, 0.4547574), (0.7759398, 0.4500083), (0.7613093, 0.46141127), (0.7650775, 0.46506658), (0.78358305, 0.4595041), (0.7812944, 0.4547574), (0.7650775, 0.46506658), (0.7665021, 0.46862152), (0.7834932, 0.46405825), (0.78358305, 0.4595041), (0.21873009, 0.45747212), (0.21867196, 0.45276937), (0.20001219, 0.4460658), (0.20180358, 0.452133), (0.21867196, 0.45276937), (0.22096747, 0.4478328), (0.20055968, 0.43955413), (0.20001219, 0.4460658), (0.22096747, 0.4478328), (0.22628973, 0.4428584), (0.20424113, 0.43286538), (0.20055968, 0.43955413), (0.22628973, 0.4428584), (0.23540068, 0.43809742), (0.21201032, 0.42638093), (0.20424113, 0.43286538), (0.23540068, 0.43809742), (0.2491072, 0.43382663), (0.22493032, 0.42055333), (0.21201032, 0.42638093), (0.2491072, 0.43382663), (0.268159, 0.43029872), (0.24404308, 0.41578484), (0.22493032, 0.42055333), (0.268159, 0.43029872), (0.29311824, 0.42768055), (0.2701716, 0.4123363), (0.24404308, 0.41578484), (0.29311824, 0.42768055), (0.3242043, 0.42602533), (0.3036868, 0.41026297), (0.2701716, 0.4123363), (0.3242043, 0.42602533), (0.36118877, 0.42527953), (0.34434506, 0.40943518), (0.3036868, 0.41026297), (0.36118877, 0.42527953), (0.40333664, 0.42529824), (0.3912565, 0.40960237), (0.34434506, 0.40943518), (0.40333664, 0.42529824), (0.44942057, 0.42589006), (0.44294825, 0.41044924), (0.3912565, 0.40960237), (0.44942057, 0.42589006), (0.49780917, 0.42687014), (0.49746346, 0.41168153), (0.44294825, 0.41044924), (0.49780917, 0.42687014), (0.5465601, 0.42809352), (0.5524789, 0.41309983), (0.49746346, 0.41168153), (0.5465601, 0.42809352), (0.59361684, 0.42948768), (0.6054928, 0.4146161), (0.5524789, 0.41309983), (0.59361684, 0.42948768), (0.6370585, 0.43106136), (0.6541059, 0.4162642), (0.6054928, 0.4146161), (0.6370585, 0.43106136), (0.6753414, 0.4328988), (0.6963666, 0.41819856), (0.6541059, 0.4162642), (0.6753414, 0.4328988), (0.7075035, 0.43514863), (0.7310858, 0.42069867), (0.6963666, 0.41819856), (0.7075035, 0.43514863), (0.73322237, 0.43795922), (0.7579611, 0.42407274), (0.7310858, 0.42069867), (0.73322237, 0.43795922), (0.7527487, 0.44141993), (0.77744496, 0.42849708), (0.7579611, 0.42407274), (0.7527487, 0.44141993), (0.7667091, 0.44548726), (0.7905041, 0.43390864), (0.77744496, 0.42849708), (0.7667091, 0.44548726), (0.7759398, 0.4500083), (0.7982901, 0.44001234), (0.7905041, 0.43390864), (0.7759398, 0.4500083), (0.7812944, 0.4547574), (0.80193204, 0.44640493), (0.7982901, 0.44001234), (0.7812944, 0.4547574), (0.78358305, 0.4595041), (0.8024206, 0.45270464), (0.80193204, 0.44640493), (0.78358305, 0.4595041), (0.7834932, 0.46405825), (0.80057144, 0.45862743), (0.8024206, 0.45270464), (0.20180358, 0.452133), (0.20001219, 0.4460658), (0.18132615, 0.43809727), (0.18509188, 0.4459862), (0.20001219, 0.4460658), (0.20055968, 0.43955413), (0.17978995, 0.42939043), (0.18132615, 0.43809727), (0.20055968, 0.43955413), (0.20424113, 0.43286538), (0.1814003, 0.42022076), (0.17978995, 0.42939043), (0.20424113, 0.43286538), (0.21201032, 0.42638093), (0.18733099, 0.41118154), (0.1814003, 0.42022076), (0.21201032, 0.42638093), (0.22493032, 0.42055333), (0.19898044, 0.40301928), (0.18733099, 0.41118154), (0.22493032, 0.42055333), (0.24404308, 0.41578484), (0.21781096, 0.39644042), (0.19898044, 0.40301928), (0.24404308, 0.41578484), (0.2701716, 0.4123363), (0.24502634, 0.39185658), (0.21781096, 0.39644042), (0.2701716, 0.4123363), (0.3036868, 0.41026297), (0.28117603, 0.3892827), (0.24502634, 0.39185658), (0.3036868, 0.41026297), (0.34434506, 0.40943518), (0.32592344, 0.38843468), (0.28117603, 0.3892827), (0.34434506, 0.40943518), (0.3912565, 0.40960237), (0.37809768, 0.38887602), (0.32592344, 0.38843468), (0.3912565, 0.40960237), (0.44294825, 0.41044924), (0.43590504, 0.39010796), (0.37809768, 0.38887602), (0.44294825, 0.41044924), (0.49746346, 0.41168153), (0.49707046, 0.39167547), (0.43590504, 0.39010796), (0.49746346, 0.41168153), (0.5524789, 0.41309983), (0.55891395, 0.393301), (0.49707046, 0.39167547), (0.5524789, 0.41309983), (0.6054928, 0.4146161), (0.6185021, 0.39490938), (0.55891395, 0.393301), (0.6054928, 0.4146161), (0.6541059, 0.4162642), (0.6728884, 0.3965516), (0.6185021, 0.39490938), (0.6541059, 0.4162642), (0.6963666, 0.41819856), (0.7195733, 0.3984587), (0.6728884, 0.3965516), (0.6963666, 0.41819856), (0.7310858, 0.42069867), (0.7570054, 0.4011305), (0.7195733, 0.3984587), (0.7310858, 0.42069867), (0.7579611, 0.42407274), (0.78485215, 0.40519932), (0.7570054, 0.4011305), (0.7579611, 0.42407274), (0.77744496, 0.42849708), (0.8038819, 0.41104892), (0.78485215, 0.40519932), (0.77744496, 0.42849708), (0.7905041, 0.43390864), (0.81550974, 0.4185369), (0.8038819, 0.41104892), (0.7905041, 0.43390864), (0.7982901, 0.44001234), (0.82134086, 0.42707404), (0.81550974, 0.4185369), (0.7982901, 0.44001234), (0.80193204, 0.44640493), (0.8228417, 0.43592012), (0.82134086, 0.42707404), (0.80193204, 0.44640493), (0.8024206, 0.45270464), (0.82120764, 0.44444332), (0.8228417, 0.43592012), (0.8024206, 0.45270464), (0.80057144, 0.45862743), (0.8173633, 0.45224065), (0.82120764, 0.44444332), (0.18509188, 0.4459862), (0.18132615, 0.43809727), (0.1630847, 0.4287443), (0.1690303, 0.43903527), (0.18132615, 0.43809727), (0.17978995, 0.42939043), (0.15913548, 0.41698533), (0.1630847, 0.4287443), (0.17978995, 0.42939043), (0.1814003, 0.42022076), (0.15819511, 0.4041888), (0.15913548, 0.41698533), (0.1814003, 0.42022076), (0.18733099, 0.41118154), (0.16167726, 0.3912639), (0.15819511, 0.4041888), (0.18733099, 0.41118154), (0.19898044, 0.40301928), (0.17142044, 0.37951556), (0.16167726, 0.3912639), (0.19898044, 0.40301928), (0.21781096, 0.39644042), (0.18951422, 0.37023917), (0.17142044, 0.37951556), (0.21781096, 0.39644042), (0.24502634, 0.39185658), (0.21776454, 0.36412287), (0.18951422, 0.37023917), (0.24502634, 0.39185658), (0.28117603, 0.3892827), (0.25693503, 0.36100507), (0.21776454, 0.36412287), (0.28117603, 0.3892827), (0.32592344, 0.38843468), (0.30636236, 0.3602478), (0.25693503, 0.36100507), (0.32592344, 0.38843468), (0.37809768, 0.38887602), (0.36432394, 0.36113924), (0.30636236, 0.3602478), (0.37809768, 0.38887602), (0.43590504, 0.39010796), (0.4286045, 0.36292136), (0.36432394, 0.36113924), (0.43590504, 0.39010796), (0.49707046, 0.39167547), (0.4966711, 0.36488807), (0.4286045, 0.36292136), (0.49707046, 0.39167547), (0.55891395, 0.393301), (0.56561327, 0.36670664), (0.4966711, 0.36488807), (0.55891395, 0.393301), (0.6185021, 0.39490938), (0.63220036, 0.36838925), (0.56561327, 0.36670664), (0.6185021, 0.39490938), (0.6728884, 0.3965516), (0.6929811, 0.36995298), (0.63220036, 0.36838925), (0.6728884, 0.3965516), (0.7195733, 0.3984587), (0.7447013, 0.37160242), (0.6929811, 0.36995298), (0.7195733, 0.3984587), (0.7570054, 0.4011305), (0.7851302, 0.37420827), (0.7447013, 0.37160242), (0.7570054, 0.4011305), (0.78485215, 0.40519932), (0.81377745, 0.3791114), (0.7851302, 0.37420827), (0.78485215, 0.40519932), (0.8038819, 0.41104892), (0.8318105, 0.3871442), (0.81377745, 0.3791114), (0.8038819, 0.41104892), (0.81550974, 0.4185369), (0.84134316, 0.39796284), (0.8318105, 0.3871442), (0.81550974, 0.4185369), (0.82134086, 0.42707404), (0.8446172, 0.41033524), (0.84134316, 0.39796284), (0.82134086, 0.42707404), (0.8228417, 0.43592012), (0.8435174, 0.4228734), (0.8446172, 0.41033524), (0.8228417, 0.43592012), (0.82120764, 0.44444332), (0.8394566, 0.43456635), (0.8435174, 0.4228734), (0.82120764, 0.44444332), (0.8173633, 0.45224065), (0.83343333, 0.4448886), (0.8394566, 0.43456635), (0.1690303, 0.43903527), (0.1630847, 0.4287443), (0.14588307, 0.41806287), (0.1541402, 0.431432), (0.1630847, 0.4287443), (0.15913548, 0.41698533), (0.13923302, 0.40213066), (0.14588307, 0.41806287), (0.15913548, 0.41698533), (0.15819511, 0.4041888), (0.13523857, 0.38405263), (0.13923302, 0.40213066), (0.15819511, 0.4041888), (0.16167726, 0.3912639), (0.1355193, 0.36514816), (0.13523857, 0.38405263), (0.16167726, 0.3912639), (0.17142044, 0.37951556), (0.14247057, 0.34774113), (0.1355193, 0.36514816), (0.17142044, 0.37951556), (0.18951422, 0.37023917), (0.15916923, 0.33438575), (0.14247057, 0.34774113), (0.18951422, 0.37023917), (0.21776454, 0.36412287), (0.18849434, 0.3263273), (0.15916923, 0.33438575), (0.21776454, 0.36412287), (0.25693503, 0.36100507), (0.23148072, 0.32279366), (0.18849434, 0.3263273), (0.25693503, 0.36100507), (0.30636236, 0.3602478), (0.28652903, 0.32227603), (0.23148072, 0.32279366), (0.30636236, 0.3602478), (0.36432394, 0.36113924), (0.3507878, 0.32375896), (0.28652903, 0.32227603), (0.36432394, 0.36113924), (0.4286045, 0.36292136), (0.421608, 0.32625762), (0.3507878, 0.32375896), (0.4286045, 0.36292136), (0.4966711, 0.36488807), (0.4963848, 0.3286109), (0.421608, 0.32625762), (0.4966711, 0.36488807), (0.56561327, 0.36670664), (0.5721341, 0.33051488), (0.4963848, 0.3286109), (0.56561327, 0.36670664), (0.63220036, 0.36838925), (0.64570534, 0.332358), (0.5721341, 0.33051488), (0.63220036, 0.36838925), (0.6929811, 0.36995298), (0.7134743, 0.33392414), (0.64570534, 0.332358), (0.6929811, 0.36995298), (0.7447013, 0.37160242), (0.77119184, 0.33494624), (0.7134743, 0.33392414), (0.7447013, 0.37160242), (0.7851302, 0.37420827), (0.8152766, 0.3368695), (0.77119184, 0.33494624), (0.7851302, 0.37420827), (0.81377745, 0.3791114), (0.844611, 0.34266633), (0.8152766, 0.3368695), (0.81377745, 0.3791114), (0.8318105, 0.3871442), (0.8609275, 0.3541951), (0.844611, 0.34266633), (0.8318105, 0.3871442), (0.84134316, 0.39796284), (0.8674903, 0.37052435), (0.8609275, 0.3541951), (0.84134316, 0.39796284), (0.8446172, 0.41033524), (0.86748904, 0.3889832), (0.8674903, 0.37052435), (0.8446172, 0.41033524), (0.8435174, 0.4228734), (0.86331654, 0.4070239), (0.86748904, 0.3889832), (0.8435174, 0.4228734), (0.8394566, 0.43456635), (0.856571, 0.42312276), (0.86331654, 0.4070239), (0.8394566, 0.43456635), (0.83343333, 0.4448886), (0.84826213, 0.43672857), (0.856571, 0.42312276), (0.1541402, 0.431432), (0.14588307, 0.41806287), (0.13043866, 0.4064687), (0.14101212, 0.42356017), (0.14588307, 0.41806287), (0.13923302, 0.40213066), (0.1209163, 0.3851047), (0.13043866, 0.4064687), (0.13923302, 0.40213066), (0.13523857, 0.38405263), (0.11339752, 0.35955605), (0.1209163, 0.3851047), (0.13523857, 0.38405263), (0.1355193, 0.36514816), (0.10957857, 0.33150184), (0.11339752, 0.35955605), (0.1355193, 0.36514816), (0.14247057, 0.34774113), (0.11245854, 0.30500084), (0.10957857, 0.33150184), (0.14247057, 0.34774113), (0.15916923, 0.33438575), (0.12669048, 0.28541395), (0.11245854, 0.30500084), (0.15916923, 0.33438575), (0.18849434, 0.3263273), (0.1572919, 0.27531573), (0.12669048, 0.28541395), (0.18849434, 0.3263273), (0.23148072, 0.32279366), (0.20576034, 0.27203712), (0.1572919, 0.27531573), (0.23148072, 0.32279366), (0.28652903, 0.32227603), (0.26795676, 0.27185112), (0.20576034, 0.27203712), (0.28652903, 0.32227603), (0.3507878, 0.32375896), (0.3388051, 0.27380508), (0.26795676, 0.27185112), (0.3507878, 0.32375896), (0.421608, 0.32625762), (0.4157057, 0.27708113), (0.3388051, 0.27380508), (0.421608, 0.32625762), (0.4963848, 0.3286109), (0.49649346, 0.279545), (0.4157057, 0.27708113), (0.4963848, 0.3286109), (0.5721341, 0.33051488), (0.57790697, 0.2811725), (0.49649346, 0.279545), (0.5721341, 0.33051488), (0.64570534, 0.332358), (0.6575294, 0.2835869), (0.57790697, 0.2811725), (0.64570534, 0.332358), (0.7134743, 0.33392414), (0.732693, 0.2857323), (0.6575294, 0.2835869), (0.7134743, 0.33392414), (0.77119184, 0.33494624), (0.79802215, 0.28562707), (0.732693, 0.2857323), (0.77119184, 0.33494624), (0.8152766, 0.3368695), (0.84724987, 0.28546807), (0.79802215, 0.28562707), (0.8152766, 0.3368695), (0.844611, 0.34266633), (0.8773112, 0.29201373), (0.84724987, 0.28546807), (0.844611, 0.34266633), (0.8609275, 0.3541951), (0.8908353, 0.30938148), (0.8773112, 0.29201373), (0.8609275, 0.3541951), (0.8674903, 0.37052435), (0.8932244, 0.33488426), (0.8908353, 0.30938148), (0.8674903, 0.37052435), (0.86748904, 0.3889832), (0.88911223, 0.36279902), (0.8932244, 0.33488426), (0.86748904, 0.3889832), (0.86331654, 0.4070239), (0.8814419, 0.38869193), (0.88911223, 0.36279902), (0.86331654, 0.4070239), (0.856571, 0.42312276), (0.87186337, 0.41057763), (0.8814419, 0.38869193), (0.856571, 0.42312276), (0.84826213, 0.43672857), (0.8612793, 0.42819035), (0.87186337, 0.41057763), (0.14101212, 0.42356017), (0.13043866, 0.4064687), (0.11757387, 0.39495718), (0.13027748, 0.41611317), (0.13043866, 0.4064687), (0.1209163, 0.3851047), (0.105236225, 0.3671657), (0.11757387, 0.39495718), (0.1209163, 0.3851047), (0.11339752, 0.35955605), (0.09392514, 0.33185828), (0.105236225, 0.3671657), (0.11339752, 0.35955605), (0.10957857, 0.33150184), (0.08507946, 0.2904219), (0.09392514, 0.33185828), (0.10957857, 0.33150184), (0.11245854, 0.30500084), (0.08206037, 0.24927273), (0.08507946, 0.2904219), (0.11245854, 0.30500084), (0.12669048, 0.28541395), (0.091927186, 0.2199224), (0.08206037, 0.24927273), (0.12669048, 0.28541395), (0.1572919, 0.27531573), (0.12428518, 0.20874262), (0.091927186, 0.2199224), (0.1572919, 0.27531573), (0.20576034, 0.27203712), (0.18161073, 0.20779301), (0.12428518, 0.20874262), (0.20576034, 0.27203712), (0.26795676, 0.27185112), (0.25307655, 0.2078593), (0.18161073, 0.20779301), (0.26795676, 0.27185112), (0.3388051, 0.27380508), (0.3300337, 0.20956439), (0.25307655, 0.2078593), (0.3388051, 0.27380508), (0.4157057, 0.27708113), (0.41167188, 0.21338002), (0.3300337, 0.20956439), (0.4157057, 0.27708113), (0.49649346, 0.279545), (0.49754202, 0.21501973), (0.41167188, 0.21338002), (0.49649346, 0.279545), (0.57790697, 0.2811725), (0.58239007, 0.21547061), (0.49754202, 0.21501973), (0.57790697, 0.2811725), (0.6575294, 0.2835869), (0.6657478, 0.21947506), (0.58239007, 0.21547061), (0.6575294, 0.2835869), (0.732693, 0.2857323), (0.7479896, 0.22354329), (0.6657478, 0.21947506), (0.732693, 0.2857323), (0.79802215, 0.28562707), (0.8231717, 0.22192736), (0.7479896, 0.22354329), (0.79802215, 0.28562707), (0.84724987, 0.28546807), (0.88068247, 0.21723165), (0.8231717, 0.22192736), (0.84724987, 0.28546807), (0.8773112, 0.29201373), (0.91167, 0.22425015), (0.88068247, 0.21723165), (0.8773112, 0.29201373), (0.8908353, 0.30938148), (0.92069495, 0.25164124), (0.91167, 0.22425015), (0.8908353, 0.30938148), (0.8932244, 0.33488426), (0.91732913, 0.29179195), (0.92069495, 0.25164124), (0.8932244, 0.33488426), (0.88911223, 0.36279902), (0.9082936, 0.33327463), (0.91732913, 0.29179195), (0.88911223, 0.36279902), (0.8814419, 0.38869193), (0.89689165, 0.3693319), (0.9082936, 0.33327463), (0.8814419, 0.38869193), (0.87186337, 0.41057763), (0.8845508, 0.39806038), (0.89689165, 0.3693319), (0.87186337, 0.41057763), (0.8612793, 0.42819035), (0.87188333, 0.42006162), (0.8845508, 0.39806038), (0.13027748, 0.41611317), (0.11757387, 0.39495718), (0.108154476, 0.3852078), (0.12255007, 0.41007897), (0.11757387, 0.39495718), (0.105236225, 0.3671657), (0.09343662, 0.3510653), (0.108154476, 0.3852078), (0.105236225, 0.3671657), (0.09392514, 0.33185828), (0.0785835, 0.30501288), (0.09343662, 0.3510653), (0.09392514, 0.33185828), (0.08507946, 0.2904219), (0.06423556, 0.24646541), (0.0785835, 0.30501288), (0.08507946, 0.2904219), (0.08206037, 0.24927273), (0.053039692, 0.18303585), (0.06423556, 0.24646541), (0.08206037, 0.24927273), (0.091927186, 0.2199224), (0.05505852, 0.13799687), (0.053039692, 0.18303585), (0.091927186, 0.2199224), (0.12428518, 0.20874262), (0.090887204, 0.1275527), (0.05505852, 0.13799687), (0.12428518, 0.20874262), (0.18161073, 0.20779301), (0.16242693, 0.13236186), (0.090887204, 0.1275527), (0.18161073, 0.20779301), (0.25307655, 0.2078593), (0.2443132, 0.13293035), (0.16242693, 0.13236186), (0.25307655, 0.2078593), (0.3300337, 0.20956439), (0.32606506, 0.13342318), (0.2443132, 0.13293035), (0.3300337, 0.20956439), (0.41167188, 0.21338002), (0.4095642, 0.13687101), (0.32606506, 0.13342318), (0.41167188, 0.21338002), (0.49754202, 0.21501973), (0.5004531, 0.1359111), (0.4095642, 0.13687101), (0.49754202, 0.21501973), (0.58239007, 0.21547061), (0.5850501, 0.13421124), (0.5004531, 0.1359111), (0.58239007, 0.21547061), (0.6657478, 0.21947506), (0.66932684, 0.14025825), (0.5850501, 0.13421124), (0.6657478, 0.21947506), (0.7479896, 0.22354329), (0.7568895, 0.14747661), (0.66932684, 0.14025825), (0.7479896, 0.22354329), (0.8231717, 0.22192736), (0.8418157, 0.14518286), (0.7568895, 0.14747661), (0.8231717, 0.22192736), (0.88068247, 0.21723165), (0.91350704, 0.13438416), (0.8418157, 0.14518286), (0.88068247, 0.21723165), (0.91167, 0.22425015), (0.9461602, 0.1416595), (0.91350704, 0.13438416), (0.91167, 0.22425015), (0.92069495, 0.25164124), (0.9482625, 0.18604259), (0.9461602, 0.1416595), (0.92069495, 0.25164124), (0.91732913, 0.29179195), (0.9375834, 0.24725325), (0.9482625, 0.18604259), (0.91732913, 0.29179195), (0.9082936, 0.33327463), (0.92334735, 0.30510023), (0.9375834, 0.24725325), (0.9082936, 0.33327463), (0.89689165, 0.3693319), (0.90849394, 0.3520283), (0.92334735, 0.30510023), (0.89689165, 0.3693319), (0.8845508, 0.39806038), (0.8938148, 0.38744685), (0.90849394, 0.3520283), (0.8845508, 0.39806038), (0.87188333, 0.42006162), (0.8795018, 0.41345197), (0.8938148, 0.38744685), (0.12255007, 0.41007897), (0.108154476, 0.3852078), (0.102956, 0.37926853), (0.11833881, 0.4065185), (0.108154476, 0.3852078), (0.09343662, 0.3510653), (0.086780116, 0.34080124), (0.102956, 0.37926853), (0.09343662, 0.3510653), (0.0785835, 0.30501288), (0.06955979, 0.28670466), (0.086780116, 0.34080124), (0.0785835, 0.30501288), (0.06423556, 0.24646541), (0.050874438, 0.21320166), (0.06955979, 0.28670466), (0.06423556, 0.24646541), (0.053039692, 0.18303585), (0.030865397, 0.12609695), (0.050874438, 0.21320166), (0.053039692, 0.18303585), (0.05505852, 0.13799687), (0.019119745, 0.06215585), (0.030865397, 0.12609695), (0.05505852, 0.13799687), (0.090887204, 0.1275527), (0.06753936, 0.045739654), (0.019119745, 0.06215585), (0.090887204, 0.1275527), (0.16242693, 0.13236186), (0.15151563, 0.04630157), (0.06753936, 0.045739654), (0.16242693, 0.13236186), (0.2443132, 0.13293035), (0.239299, 0.048891272), (0.15151563, 0.04630157), (0.2443132, 0.13293035), (0.32606506, 0.13342318), (0.32579014, 0.04853702), (0.239299, 0.048891272), (0.32606506, 0.13342318), (0.4095642, 0.13687101), (0.4097668, 0.049638677), (0.32579014, 0.04853702), (0.4095642, 0.13687101), (0.5004531, 0.1359111), (0.50354636, 0.046688624), (0.4097668, 0.049638677), (0.5004531, 0.1359111), (0.5850501, 0.13421124), (0.5861563, 0.047448985), (0.50354636, 0.046688624), (0.5850501, 0.13421124), (0.66932684, 0.14025825), (0.6705173, 0.051568896), (0.5861563, 0.047448985), (0.66932684, 0.14025825), (0.7568895, 0.14747661), (0.75948405, 0.05898819), (0.6705173, 0.051568896), (0.7568895, 0.14747661), (0.8418157, 0.14518286), (0.8451956, 0.055759646), (0.75948405, 0.05898819), (0.8418157, 0.14518286), (0.91350704, 0.13438416), (0.9345597, 0.04901887), (0.8451956, 0.055759646), (0.91350704, 0.13438416), (0.9461602, 0.1416595), (0.98111993, 0.05673781), (0.9345597, 0.04901887), (0.9461602, 0.1416595), (0.9482625, 0.18604259), (0.9688281, 0.12932862), (0.98111993, 0.05673781), (0.9482625, 0.18604259), (0.9375834, 0.24725325), (0.95033777, 0.21492618), (0.9688281, 0.12932862), (0.9375834, 0.24725325), (0.92334735, 0.30510023), (0.9321657, 0.28628704), (0.95033777, 0.21492618), (0.92334735, 0.30510023), (0.90849394, 0.3520283), (0.915025, 0.34106976), (0.9321657, 0.28628704), (0.90849394, 0.3520283), (0.8938148, 0.38744685), (0.89892083, 0.3809864), (0.915025, 0.34106976), (0.8938148, 0.38744685), (0.8795018, 0.41345197), (0.88364553, 0.40954393), (0.89892083, 0.3809864), (0.11833881, 0.4065185), (0.102956, 0.37926853), (0.10247376, 0.3786963), (0.11795062, 0.40617996), (0.102956, 0.37926853), (0.086780116, 0.34080124), (0.086156376, 0.33979148), (0.10247376, 0.3786963), (0.086780116, 0.34080124), (0.06955979, 0.28670466), (0.06869708, 0.28484455), (0.086156376, 0.33979148), (0.06955979, 0.28670466), (0.050874438, 0.21320166), (0.049533654, 0.20963389), (0.06869708, 0.28484455), (0.050874438, 0.21320166), (0.030865397, 0.12609695), (0.028333688, 0.11958926), (0.049533654, 0.20963389), (0.030865397, 0.12609695), (0.019119745, 0.06215585), (0.012920969, 0.05184795), (0.028333688, 0.11958926), (0.019119745, 0.06215585), (0.06753936, 0.045739654), (0.0661119, 0.029464781), (0.012920969, 0.05184795), (0.06753936, 0.045739654), (0.15151563, 0.04630157), (0.1511854, 0.027453383), (0.0661119, 0.029464781), (0.15151563, 0.04630157), (0.239299, 0.048891272), (0.23835237, 0.030046446), (0.1511854, 0.027453383), (0.239299, 0.048891272), (0.32579014, 0.04853702), (0.32549816, 0.030999476), (0.23835237, 0.030046446), (0.32579014, 0.04853702), (0.4097668, 0.049638677), (0.4113055, 0.03088092), (0.32549816, 0.030999476), (0.4097668, 0.049638677), (0.50354636, 0.046688624), (0.5023601, 0.028618297), (0.4113055, 0.03088092), (0.50354636, 0.046688624), (0.5861563, 0.047448985), (0.58640754, 0.029645177), (0.5023601, 0.028618297), (0.5861563, 0.047448985), (0.6705173, 0.051568896), (0.67075056, 0.033442006), (0.58640754, 0.029645177), (0.6705173, 0.051568896), (0.75948405, 0.05898819), (0.7587094, 0.039329655), (0.67075056, 0.033442006), (0.75948405, 0.05898819), (0.8451956, 0.055759646), (0.84580845, 0.033975884), (0.7587094, 0.039329655), (0.8451956, 0.055759646), (0.9345597, 0.04901887), (0.934802, 0.03168096), (0.84580845, 0.033975884), (0.9345597, 0.04901887), (0.98111993, 0.05673781), (0.9883326, 0.043248218), (0.934802, 0.03168096), (0.98111993, 0.05673781), (0.9688281, 0.12932862), (0.9712408, 0.12230276), (0.9883326, 0.043248218), (0.9688281, 0.12932862), (0.95033777, 0.21492618), (0.95160383, 0.21151705), (0.9712408, 0.12230276), (0.95033777, 0.21492618), (0.9321657, 0.28628704), (0.9330035, 0.2843982), (0.95160383, 0.21151705), (0.9321657, 0.28628704), (0.915025, 0.34106976), (0.91563725, 0.33999616), (0.9330035, 0.2843982), (0.915025, 0.34106976), (0.89892083, 0.3809864), (0.89939636, 0.3803638), (0.91563725, 0.33999616), (0.89892083, 0.3809864), (0.88364553, 0.40954393), (0.8840266, 0.40917227), (0.89939636, 0.3803638), (0.11795062, 0.40617996), (0.10247376, 0.3786963), (0.106755905, 0.38365182), (0.121413134, 0.40913677), (0.10247376, 0.3786963), (0.086156376, 0.33979148), (0.09165687, 0.34841195), (0.106755905, 0.38365182), (0.086156376, 0.33979148), (0.06869708, 0.28484455), (0.076201186, 0.3003755), (0.09165687, 0.34841195), (0.06869708, 0.28484455), (0.049533654, 0.20963389), (0.06081047, 0.2383339), (0.076201186, 0.3003755), (0.049533654, 0.20963389), (0.028333688, 0.11958926), (0.04775307, 0.16973364), (0.06081047, 0.2383339), (0.028333688, 0.11958926), (0.012920969, 0.05184795), (0.04757852, 0.12087098), (0.04775307, 0.16973364), (0.012920969, 0.05184795), (0.0661119, 0.029464781), (0.08473821, 0.11042619), (0.04757852, 0.12087098), (0.0661119, 0.029464781), (0.1511854, 0.027453383), (0.15953533, 0.11619047), (0.08473821, 0.11042619), (0.1511854, 0.027453383), (0.23835237, 0.030046446), (0.2432612, 0.11702228), (0.15953533, 0.11619047), (0.23835237, 0.030046446), (0.32549816, 0.030999476), (0.32590607, 0.117201135), (0.2432612, 0.11702228), (0.32549816, 0.030999476), (0.4113055, 0.03088092), (0.40926933, 0.12038572), (0.32590607, 0.117201135), (0.4113055, 0.03088092), (0.5023601, 0.028618297), (0.50133765, 0.11873583), (0.40926933, 0.12038572), (0.5023601, 0.028618297), (0.58640754, 0.029645177), (0.58532447, 0.11685814), (0.50133765, 0.11873583), (0.58640754, 0.029645177), (0.67075056, 0.033442006), (0.6696268, 0.12289219), (0.58532447, 0.11685814), (0.67075056, 0.033442006), (0.7587094, 0.039329655), (0.75793374, 0.1307543), (0.6696268, 0.12289219), (0.7587094, 0.039329655), (0.84580845, 0.033975884), (0.84391797, 0.12860946), (0.75793374, 0.1307543), (0.84580845, 0.033975884), (0.934802, 0.03168096), (0.91938967, 0.11703061), (0.84391797, 0.12860946), (0.934802, 0.03168096), (0.9883326, 0.043248218), (0.952899, 0.12416357), (0.91938967, 0.11703061), (0.9883326, 0.043248218), (0.9712408, 0.12230276), (0.95315826, 0.1731327), (0.952899, 0.12416357), (0.9712408, 0.12230276), (0.95160383, 0.21151705), (0.94087183, 0.23924626), (0.95315826, 0.1731327), (0.95160383, 0.21151705), (0.9330035, 0.2843982), (0.92567664, 0.30029973), (0.94087183, 0.23924626), (0.9330035, 0.2843982), (0.91563725, 0.33999616), (0.91024053, 0.349188), (0.92567664, 0.30029973), (0.91563725, 0.33999616), (0.89939636, 0.3803638), (0.8951916, 0.38575464), (0.91024053, 0.349188), (0.89939636, 0.3803638), (0.8840266, 0.40917227), (0.8806212, 0.41241854), (0.8951916, 0.38575464), (0.121413134, 0.40913677), (0.106755905, 0.38365182), (0.11538715, 0.3928018), (0.12847295, 0.41475883), (0.106755905, 0.38365182), (0.09165687, 0.34841195), (0.1025238, 0.36368182), (0.11538715, 0.3928018), (0.09165687, 0.34841195), (0.076201186, 0.3003755), (0.09046021, 0.32622284), (0.1025238, 0.36368182), (0.076201186, 0.3003755), (0.06081047, 0.2383339), (0.080522485, 0.28158268), (0.09046021, 0.32622284), (0.06081047, 0.2383339), (0.04775307, 0.16973364), (0.0760537, 0.23661079), (0.080522485, 0.28158268), (0.04775307, 0.16973364), (0.04757852, 0.12087098), (0.08469894, 0.20467222), (0.0760537, 0.23661079), (0.04757852, 0.12087098), (0.08473821, 0.11042619), (0.11752498, 0.19352524), (0.08469894, 0.20467222), (0.08473821, 0.11042619), (0.15953533, 0.11619047), (0.17723916, 0.1934821), (0.11752498, 0.19352524), (0.15953533, 0.11619047), (0.2432612, 0.11702228), (0.25079298, 0.1935938), (0.17723916, 0.1934821), (0.2432612, 0.11702228), (0.32590607, 0.117201135), (0.3288142, 0.19512092), (0.25079298, 0.1935938), (0.32590607, 0.117201135), (0.40926933, 0.12038572), (0.41112146, 0.1989645), (0.3288142, 0.19512092), (0.40926933, 0.12038572), (0.50133765, 0.11873583), (0.4979391, 0.200239), (0.41112146, 0.1989645), (0.50133765, 0.11873583), (0.58532447, 0.11685814), (0.58308977, 0.2002948), (0.4979391, 0.200239), (0.58532447, 0.11685814), (0.6696268, 0.12289219), (0.66682106, 0.20476535), (0.58308977, 0.2002948), (0.6696268, 0.12289219), (0.75793374, 0.1307543), (0.750317, 0.2094006), (0.66682106, 0.20476535), (0.75793374, 0.1307543), (0.84391797, 0.12860946), (0.8276623, 0.20751053), (0.750317, 0.2094006), (0.84391797, 0.12860946), (0.91938967, 0.11703061), (0.8874354, 0.20159477), (0.8276623, 0.20751053), (0.91938967, 0.11703061), (0.952899, 0.12416357), (0.91864115, 0.20869826), (0.8874354, 0.20159477), (0.952899, 0.12416357), (0.95315826, 0.1731327), (0.92649746, 0.2388234), (0.91864115, 0.20869826), (0.95315826, 0.1731327), (0.94087183, 0.23924626), (0.9217842, 0.2826759), (0.92649746, 0.2388234), (0.94087183, 0.23924626), (0.92567664, 0.30029973), (0.91169846, 0.32731318), (0.9217842, 0.2826759), (0.92567664, 0.30029973), (0.91024053, 0.349188), (0.89956194, 0.36557934), (0.91169846, 0.32731318), (0.91024053, 0.349188), (0.8951916, 0.38575464), (0.88670313, 0.39571476), (0.89956194, 0.36557934), (0.8951916, 0.38575464), (0.8806212, 0.41241854), (0.8736679, 0.4185792), (0.88670313, 0.39571476), (0.12847295, 0.41475883), (0.11538715, 0.3928018), (0.12763183, 0.40411493), (0.13865395, 0.42200997), (0.11538715, 0.3928018), (0.1025238, 0.36368182), (0.11753191, 0.38152555), (0.12763183, 0.40411493), (0.1025238, 0.36368182), (0.09046021, 0.32622284), (0.109264985, 0.35419464), (0.11753191, 0.38152555), (0.09046021, 0.32622284), (0.080522485, 0.28158268), (0.104511015, 0.3238256), (0.109264985, 0.35419464), (0.080522485, 0.28158268), (0.0760537, 0.23661079), (0.10637648, 0.2949219), (0.104511015, 0.3238256), (0.0760537, 0.23661079), (0.08469894, 0.20467222), (0.119923666, 0.27372664), (0.10637648, 0.2949219), (0.08469894, 0.20467222), (0.11752498, 0.19352524), (0.15082496, 0.26328683), (0.119923666, 0.27372664), (0.11752498, 0.19352524), (0.17723916, 0.1934821), (0.20072183, 0.26024228), (0.15082496, 0.26328683), (0.17723916, 0.1934821), (0.25079298, 0.1935938), (0.26459143, 0.260117), (0.20072183, 0.26024228), (0.25079298, 0.1935938), (0.3288142, 0.19512092), (0.3367377, 0.26210064), (0.26459143, 0.260117), (0.3288142, 0.19512092), (0.41112146, 0.1989645), (0.41473117, 0.26551858), (0.3367377, 0.26210064), (0.41112146, 0.1989645), (0.4979391, 0.200239), (0.49660426, 0.26792246), (0.41473117, 0.26551858), (0.4979391, 0.200239), (0.58308977, 0.2002948), (0.5789204, 0.26940846), (0.49660426, 0.26792246), (0.58308977, 0.2002948), (0.66682106, 0.20476535), (0.65952456, 0.2720397), (0.5789204, 0.26940846), (0.66682106, 0.20476535), (0.750317, 0.2094006), (0.7361633, 0.27444172), (0.65952456, 0.2720397), (0.750317, 0.2094006), (0.8276623, 0.20751053), (0.8032832, 0.2740495), (0.7361633, 0.27444172), (0.8276623, 0.20751053), (0.8874354, 0.20159477), (0.8538434, 0.2732075), (0.8032832, 0.2740495), (0.8874354, 0.20159477), (0.91864115, 0.20869826), (0.8840696, 0.27986613), (0.8538434, 0.2732075), (0.91864115, 0.20869826), (0.92649746, 0.2388234), (0.896859, 0.29882815), (0.8840696, 0.27986613), (0.92649746, 0.2388234), (0.9217842, 0.2826759), (0.8982292, 0.32676902), (0.896859, 0.29882815), (0.9217842, 0.2826759), (0.91169846, 0.32731318), (0.8931895, 0.35706615), (0.8982292, 0.32676902), (0.91169846, 0.32731318), (0.89956194, 0.36557934), (0.88478386, 0.3848296), (0.8931895, 0.35706615), (0.89956194, 0.36557934), (0.88670313, 0.39571476), (0.8746347, 0.4080228), (0.88478386, 0.3848296), (0.88670313, 0.39571476), (0.8736679, 0.4185792), (0.86361384, 0.4265014), (0.8746347, 0.4080228), (0.13865395, 0.42200997), (0.12763183, 0.40411493), (0.14262852, 0.41579476), (0.15135385, 0.429862), (0.12763183, 0.40411493), (0.11753191, 0.38152555), (0.13541271, 0.39887822), (0.14262852, 0.41579476), (0.11753191, 0.38152555), (0.109264985, 0.35419464), (0.13074699, 0.37949437), (0.13541271, 0.39887822), (0.109264985, 0.35419464), (0.104511015, 0.3238256), (0.13028388, 0.35905045), (0.13074699, 0.37949437), (0.104511015, 0.3238256), (0.10637648, 0.2949219), (0.13653883, 0.34015602), (0.13028388, 0.35905045), (0.10637648, 0.2949219), (0.119923666, 0.27372664), (0.15284927, 0.32575852), (0.13653883, 0.34015602), (0.119923666, 0.27372664), (0.15082496, 0.26328683), (0.18240722, 0.31727895), (0.15284927, 0.32575852), (0.15082496, 0.26328683), (0.20072183, 0.26024228), (0.22631593, 0.31371367), (0.18240722, 0.31727895), (0.20072183, 0.26024228), (0.26459143, 0.260117), (0.2826493, 0.3132597), (0.22631593, 0.31371367), (0.26459143, 0.260117), (0.3367377, 0.26210064), (0.34821698, 0.3148617), (0.2826493, 0.3132597), (0.3367377, 0.26210064), (0.41473117, 0.26551858), (0.42031142, 0.31751692), (0.34821698, 0.3148617), (0.41473117, 0.26551858), (0.49660426, 0.26792246), (0.49636188, 0.31992915), (0.42031142, 0.31751692), (0.49660426, 0.26792246), (0.5789204, 0.26940846), (0.5733689, 0.32181963), (0.49636188, 0.31992915), (0.5789204, 0.26940846), (0.65952456, 0.2720397), (0.6482604, 0.3237263), (0.5733689, 0.32181963), (0.65952456, 0.2720397), (0.7361633, 0.27444172), (0.7174932, 0.3253392), (0.6482604, 0.3237263), (0.7361633, 0.27444172), (0.8032832, 0.2740495), (0.77657485, 0.32617798), (0.7174932, 0.3253392), (0.8032832, 0.2740495), (0.8538434, 0.2732075), (0.82153094, 0.32783195), (0.77657485, 0.32617798), (0.8538434, 0.2732075), (0.8840696, 0.27986613), (0.8510027, 0.33379796), (0.82153094, 0.32783195), (0.8840696, 0.27986613), (0.896859, 0.29882815), (0.86686033, 0.34626135), (0.8510027, 0.33379796), (0.896859, 0.29882815), (0.8982292, 0.32676902), (0.8726985, 0.3640748), (0.86686033, 0.34626135), (0.8982292, 0.32676902), (0.8931895, 0.35706615), (0.87194586, 0.38411933), (0.8726985, 0.3640748), (0.8931895, 0.35706615), (0.88478386, 0.3848296), (0.86710817, 0.40353054), (0.87194586, 0.38411933), (0.88478386, 0.3848296), (0.8746347, 0.4080228), (0.85979944, 0.42067593), (0.86710817, 0.40353054), (0.8746347, 0.4080228), (0.86361384, 0.4265014), (0.85102785, 0.43503103), (0.85979944, 0.42067593), (0.15135385, 0.429862), (0.14262852, 0.41579476), (0.15954062, 0.42670846), (0.16594054, 0.437559), (0.14262852, 0.41579476), (0.13541271, 0.39887822), (0.15507044, 0.41420963), (0.15954062, 0.42670846), (0.13541271, 0.39887822), (0.13074699, 0.37949437), (0.15356086, 0.40050885), (0.15507044, 0.41420963), (0.13074699, 0.37949437), (0.13028388, 0.35905045), (0.15646751, 0.38658547), (0.15356086, 0.40050885), (0.13028388, 0.35905045), (0.13653883, 0.34015602), (0.1657333, 0.37390622), (0.15646751, 0.38658547), (0.13653883, 0.34015602), (0.15284927, 0.32575852), (0.18360968, 0.3639438), (0.1657333, 0.37390622), (0.15284927, 0.32575852), (0.18240722, 0.31727895), (0.21206766, 0.3574679), (0.18360968, 0.3639438), (0.18240722, 0.31727895), (0.22631593, 0.31371367), (0.25191826, 0.35424754), (0.21206766, 0.3574679), (0.22631593, 0.31371367), (0.2826493, 0.3132597), (0.30238, 0.35352755), (0.25191826, 0.35424754), (0.2826493, 0.3132597), (0.34821698, 0.3148617), (0.36156264, 0.35452864), (0.30238, 0.35352755), (0.34821698, 0.3148617), (0.42031142, 0.31751692), (0.4271584, 0.3564427), (0.36156264, 0.35452864), (0.42031142, 0.31751692), (0.49636188, 0.31992915), (0.49659812, 0.3584924), (0.4271584, 0.3564427), (0.49636188, 0.31992915), (0.5733689, 0.32181963), (0.56694925, 0.36034226), (0.49659812, 0.3584924), (0.5733689, 0.32181963), (0.6482604, 0.3237263), (0.63495386, 0.3620423), (0.56694925, 0.36034226), (0.6482604, 0.3237263), (0.7174932, 0.3253392), (0.6970898, 0.36359146), (0.63495386, 0.3620423), (0.7174932, 0.3253392), (0.77657485, 0.32617798), (0.74991554, 0.36514977), (0.6970898, 0.36359146), (0.77657485, 0.32617798), (0.82153094, 0.32783195), (0.79100484, 0.36768547), (0.74991554, 0.36514977), (0.82153094, 0.32783195), (0.8510027, 0.33379796), (0.81979316, 0.37276712), (0.79100484, 0.36768547), (0.8510027, 0.33379796), (0.86686033, 0.34626135), (0.83755076, 0.38137156), (0.81979316, 0.37276712), (0.86686033, 0.34626135), (0.8726985, 0.3640748), (0.8465679, 0.39307857), (0.83755076, 0.38137156), (0.8726985, 0.3640748), (0.87194586, 0.38411933), (0.8492475, 0.40645432), (0.8465679, 0.39307857), (0.87194586, 0.38411933), (0.86710817, 0.40353054), (0.8475676, 0.4199276), (0.8492475, 0.40645432), (0.86710817, 0.40353054), (0.85979944, 0.42067593), (0.84298694, 0.432395), (0.8475676, 0.4199276), (0.85979944, 0.42067593), (0.85102785, 0.43503103), (0.8365135, 0.44331107), (0.84298694, 0.432395), (0.16594054, 0.437559), (0.15954062, 0.42670846), (0.177625, 0.43633902), (0.18181099, 0.44465685), (0.15954062, 0.42670846), (0.15507044, 0.41420963), (0.1756324, 0.4271004), (0.177625, 0.43633902), (0.15507044, 0.41420963), (0.15356086, 0.40050885), (0.17677149, 0.41731012), (0.1756324, 0.4271004), (0.15356086, 0.40050885), (0.15646751, 0.38658547), (0.18226537, 0.4076191), (0.17677149, 0.41731012), (0.15646751, 0.38658547), (0.1657333, 0.37390622), (0.19359103, 0.398862), (0.18226537, 0.4076191), (0.1657333, 0.37390622), (0.18360968, 0.3639438), (0.21231528, 0.39182663), (0.19359103, 0.398862), (0.18360968, 0.3639438), (0.21206766, 0.3574679), (0.23973924, 0.38696954), (0.21231528, 0.39182663), (0.21206766, 0.3574679), (0.25191826, 0.35424754), (0.27645397, 0.38428754), (0.23973924, 0.38696954), (0.25191826, 0.35424754), (0.30238, 0.35352755), (0.32208198, 0.3834489), (0.27645397, 0.38428754), (0.30238, 0.35352755), (0.36156264, 0.35452864), (0.3753717, 0.38396442), (0.32208198, 0.3834489), (0.36156264, 0.35452864), (0.4271584, 0.3564427), (0.43445268, 0.38529366), (0.3753717, 0.38396442), (0.4271584, 0.3564427), (0.49659812, 0.3584924), (0.49698922, 0.3869356), (0.43445268, 0.38529366), (0.49659812, 0.3584924), (0.56694925, 0.36034226), (0.56024444, 0.38860315), (0.49698922, 0.3869356), (0.56694925, 0.36034226), (0.63495386, 0.3620423), (0.6212077, 0.39022544), (0.56024444, 0.38860315), (0.63495386, 0.3620423), (0.6970898, 0.36359146), (0.67682165, 0.39185578), (0.6212077, 0.39022544), (0.6970898, 0.36359146), (0.74991554, 0.36514977), (0.72445774, 0.39373446), (0.67682165, 0.39185578), (0.74991554, 0.36514977), (0.79100484, 0.36768547), (0.7624598, 0.39642063), (0.72445774, 0.39373446), (0.79100484, 0.36768547), (0.81979316, 0.37276712), (0.79047906, 0.4006461), (0.7624598, 0.39642063), (0.81979316, 0.37276712), (0.83755076, 0.38137156), (0.8093549, 0.40685663), (0.79047906, 0.4006461), (0.83755076, 0.38137156), (0.8465679, 0.39307857), (0.8206258, 0.41488895), (0.8093549, 0.40685663), (0.8465679, 0.39307857), (0.8492475, 0.40645432), (0.82599497, 0.42405778), (0.8206258, 0.41488895), (0.8492475, 0.40645432), (0.8475676, 0.4199276), (0.8270126, 0.4335275), (0.82599497, 0.42405778), (0.8475676, 0.4199276), (0.84298694, 0.432395), (0.82491773, 0.44259995), (0.8270126, 0.4335275), (0.84298694, 0.432395), (0.8365135, 0.44331107), (0.8206481, 0.45084438), (0.82491773, 0.44259995), (0.18181099, 0.44465685), (0.177625, 0.43633902), (0.19626385, 0.44457778), (0.19843103, 0.4509696), (0.177625, 0.43633902), (0.1756324, 0.4271004), (0.19642216, 0.4376857), (0.19626385, 0.44457778), (0.1756324, 0.4271004), (0.17677149, 0.41731012), (0.19972536, 0.43057203), (0.19642216, 0.4376857), (0.17677149, 0.41731012), (0.18226537, 0.4076191), (0.20716944, 0.42365554), (0.19972536, 0.43057203), (0.18226537, 0.4076191), (0.19359103, 0.398862), (0.21987762, 0.4174339), (0.20716944, 0.42365554), (0.19359103, 0.398862), (0.21231528, 0.39182663), (0.2389644, 0.41235712), (0.21987762, 0.4174339), (0.21231528, 0.39182663), (0.23973924, 0.38696954), (0.26531717, 0.40870994), (0.2389644, 0.41235712), (0.23973924, 0.38696954), (0.27645397, 0.38428754), (0.29933825, 0.4065411), (0.26531717, 0.40870994), (0.27645397, 0.38428754), (0.32208198, 0.3834489), (0.34077704, 0.40570304), (0.29933825, 0.4065411), (0.32208198, 0.3834489), (0.3753717, 0.38396442), (0.38870105, 0.40591228), (0.34077704, 0.40570304), (0.3753717, 0.38396442), (0.43445268, 0.38529366), (0.44157892, 0.40682486), (0.38870105, 0.40591228), (0.43445268, 0.38529366), (0.49698922, 0.3869356), (0.49738708, 0.4081194), (0.44157892, 0.40682486), (0.49698922, 0.3869356), (0.56024444, 0.38860315), (0.5537301, 0.409577), (0.49738708, 0.4081194), (0.56024444, 0.38860315), (0.6212077, 0.39022544), (0.60801333, 0.41111454), (0.5537301, 0.409577), (0.6212077, 0.39022544), (0.67682165, 0.39185578), (0.6577311, 0.41276842), (0.60801333, 0.41111454), (0.67682165, 0.39185578), (0.72445774, 0.39373446), (0.7008404, 0.4147113), (0.6577311, 0.41276842), (0.72445774, 0.39373446), (0.7624598, 0.39642063), (0.73608935, 0.41725525), (0.7008404, 0.4147113), (0.7624598, 0.39642063), (0.79047906, 0.4006461), (0.7631676, 0.42075518), (0.73608935, 0.41725525), (0.79047906, 0.4006461), (0.8093549, 0.40685663), (0.7826014, 0.42542255), (0.7631676, 0.42075518), (0.8093549, 0.40685663), (0.8206258, 0.41488895), (0.7954171, 0.43117645), (0.7826014, 0.42542255), (0.8206258, 0.41488895), (0.82599497, 0.42405778), (0.80285615, 0.43768534), (0.7954171, 0.43117645), (0.82599497, 0.42405778), (0.8270126, 0.4335275), (0.80610555, 0.444493), (0.80285615, 0.43768534), (0.8270126, 0.4335275), (0.82491773, 0.44259995), (0.80619735, 0.4511758), (0.80610555, 0.444493), (0.82491773, 0.44259995), (0.8206481, 0.45084438), (0.80396354, 0.4574277), (0.80619735, 0.4511758), (0.19843103, 0.4509696), (0.19626385, 0.44457778), (0.21496122, 0.4515209), (0.21534613, 0.45646626), (0.19626385, 0.44457778), (0.19642216, 0.4376857), (0.21693264, 0.44630983), (0.21496122, 0.4515209), (0.19642216, 0.4376857), (0.19972536, 0.43057203), (0.22195894, 0.4410398), (0.21693264, 0.44630983), (0.19972536, 0.43057203), (0.20716944, 0.42365554), (0.23083745, 0.43598452), (0.22195894, 0.4410398), (0.20716944, 0.42365554), (0.21987762, 0.4174339), (0.24441878, 0.43144888), (0.23083745, 0.43598452), (0.21987762, 0.4174339), (0.2389644, 0.41235712), (0.26350754, 0.42770734), (0.24441878, 0.43144888), (0.2389644, 0.41235712), (0.26531717, 0.40870994), (0.28870708, 0.4249436), (0.26350754, 0.42770734), (0.26531717, 0.40870994), (0.29933825, 0.4065411), (0.32026622, 0.4232111), (0.28870708, 0.4249436), (0.29933825, 0.4065411), (0.34077704, 0.40570304), (0.35795644, 0.42244533), (0.32026622, 0.4232111), (0.34077704, 0.40570304), (0.38870105, 0.40591228), (0.40101907, 0.4224869), (0.35795644, 0.42244533), (0.38870105, 0.40591228), (0.44157892, 0.40682486), (0.44818014, 0.4231202), (0.40101907, 0.4224869), (0.44157892, 0.40682486), (0.49738708, 0.4081194), (0.49774447, 0.42414534), (0.44818014, 0.4231202), (0.49738708, 0.4081194), (0.5537301, 0.409577), (0.5476944, 0.42540556), (0.49774447, 0.42414534), (0.5537301, 0.409577), (0.60801333, 0.41111454), (0.5958913, 0.4268269), (0.5476944, 0.42540556), (0.60801333, 0.41111454), (0.6577311, 0.41276842), (0.6403205, 0.4284201), (0.5958913, 0.4268269), (0.6577311, 0.41276842), (0.7008404, 0.4147113), (0.6793683, 0.43028492), (0.6403205, 0.4284201), (0.7008404, 0.4147113), (0.73608935, 0.41725525), (0.71203136, 0.4325861), (0.6793683, 0.43028492), (0.73608935, 0.41725525), (0.7631676, 0.42075518), (0.7379936, 0.43550083), (0.71203136, 0.4325861), (0.7631676, 0.42075518), (0.7826014, 0.42542255), (0.7575395, 0.4391248), (0.7379936, 0.43550083), (0.7826014, 0.42542255), (0.7954171, 0.43117645), (0.77135915, 0.4434191), (0.7575395, 0.4391248), (0.7954171, 0.43117645), (0.80285615, 0.43768534), (0.78033465, 0.44820777), (0.77135915, 0.4434191), (0.80285615, 0.43768534), (0.80610555, 0.444493), (0.78538173, 0.45323634), (0.78033465, 0.44820777), (0.80610555, 0.444493), (0.80619735, 0.4511758), (0.7873346, 0.45825124), (0.78538173, 0.45323634), (0.80619735, 0.4511758), (0.80396354, 0.4574277), (0.7869127, 0.46304452), (0.7873346, 0.45825124), (0.21534613, 0.45646626), (0.21496122, 0.4515209), (0.2333345, 0.45734152), (0.23219068, 0.46120557), (0.21496122, 0.4515209), (0.21693264, 0.44630983), (0.2367968, 0.45334575), (0.2333345, 0.45734152), (0.21693264, 0.44630983), (0.22195894, 0.4410398), (0.24315426, 0.4493671), (0.2367968, 0.45334575), (0.22195894, 0.4410398), (0.23083745, 0.43598452), (0.25304297, 0.4455893), (0.24315426, 0.4493671), (0.23083745, 0.43598452), (0.24441878, 0.43144888), (0.26710546, 0.44220796), (0.25304297, 0.4455893), (0.24441878, 0.43144888), (0.26350754, 0.42770734), (0.2859144, 0.43939537), (0.26710546, 0.44220796), (0.26350754, 0.42770734), (0.28870708, 0.4249436), (0.30987847, 0.43727896), (0.2859144, 0.43939537), (0.28870708, 0.4249436), (0.32026622, 0.4232111), (0.33912343, 0.43590033), (0.30987847, 0.43727896), (0.32026622, 0.4232111), (0.35795644, 0.42244533), (0.3734106, 0.43523803), (0.33912343, 0.43590033), (0.35795644, 0.42244533), (0.40101907, 0.4224869), (0.41209027, 0.43519822), (0.3734106, 0.43523803), (0.40101907, 0.4224869), (0.44818014, 0.4231202), (0.4541058, 0.4356575), (0.41209027, 0.43519822), (0.44818014, 0.4231202), (0.49774447, 0.42414534), (0.49804813, 0.43648157), (0.4541058, 0.4356575), (0.49774447, 0.42414534), (0.5476944, 0.42540556), (0.54226846, 0.43756464), (0.49804813, 0.43648157), (0.5476944, 0.42540556), (0.5958913, 0.4268269), (0.58504146, 0.43884736), (0.54226846, 0.43756464), (0.5958913, 0.4268269), (0.6403205, 0.4284201), (0.6247616, 0.44032416), (0.58504146, 0.43884736), (0.6403205, 0.4284201), (0.6793683, 0.43028492), (0.66013545, 0.44204032), (0.6247616, 0.44032416), (0.6793683, 0.43028492), (0.71203136, 0.4325861), (0.6903342, 0.4440773), (0.66013545, 0.44204032), (0.71203136, 0.4325861), (0.7379936, 0.43550083), (0.71503127, 0.4465233), (0.6903342, 0.4440773), (0.7379936, 0.43550083), (0.7575395, 0.4391248), (0.73434794, 0.44941726), (0.71503127, 0.4465233), (0.7575395, 0.4391248), (0.77135915, 0.4434191), (0.74872684, 0.45273617), (0.73434794, 0.44941726), (0.77135915, 0.4434191), (0.78033465, 0.44820777), (0.75879234, 0.4563753), (0.74872684, 0.45273617), (0.78033465, 0.44820777), (0.78538173, 0.45323634), (0.76524127, 0.46019694), (0.75879234, 0.4563753), (0.78538173, 0.45323634), (0.7873346, 0.45825124), (0.7687349, 0.464041), (0.76524127, 0.46019694), (0.7873346, 0.45825124), (0.7869127, 0.46304452), (0.76987827, 0.4677719), (0.7687349, 0.464041), (0.23219068, 0.46120557), (0.2333345, 0.45734152), (0.25110206, 0.46222198), (0.24867927, 0.4652764), (0.2333345, 0.45734152), (0.2367968, 0.45334575), (0.2557531, 0.45911407), (0.25110206, 0.46222198), (0.2367968, 0.45334575), (0.24315426, 0.4493671), (0.2631063, 0.4560599), (0.2557531, 0.45911407), (0.24315426, 0.4493671), (0.25304297, 0.4455893), (0.27365857, 0.45318103), (0.2631063, 0.4560599), (0.25304297, 0.4455893), (0.26710546, 0.44220796), (0.28789103, 0.45061168), (0.27365857, 0.45318103), (0.26710546, 0.44220796), (0.2859144, 0.43939537), (0.30621073, 0.4484638), (0.28789103, 0.45061168), (0.2859144, 0.43939537), (0.30987847, 0.43727896), (0.32887924, 0.44682515), (0.30621073, 0.4484638), (0.30987847, 0.43727896), (0.33912343, 0.43590033), (0.3559303, 0.4457316), (0.32887924, 0.44682515), (0.33912343, 0.43590033), (0.3734106, 0.43523803), (0.3871185, 0.44517776), (0.3559303, 0.4457316), (0.3734106, 0.43523803), (0.41209027, 0.43519822), (0.4218768, 0.44511214), (0.3871185, 0.44517776), (0.41209027, 0.43519822), (0.4541058, 0.4356575), (0.4593212, 0.4454592), (0.4218768, 0.44511214), (0.4541058, 0.4356575), (0.49804813, 0.43648157), (0.4983007, 0.44613564), (0.4593212, 0.4454592), (0.49804813, 0.43648157), (0.54226846, 0.43756464), (0.5374829, 0.44706735), (0.4983007, 0.44613564), (0.54226846, 0.43756464), (0.58504146, 0.43884736), (0.5754866, 0.4482063), (0.5374829, 0.44706735), (0.58504146, 0.43884736), (0.6247616, 0.44032416), (0.6110323, 0.44953766), (0.5754866, 0.4482063), (0.6247616, 0.44032416), (0.66013545, 0.44204032), (0.6430856, 0.45107973), (0.6110323, 0.44953766), (0.66013545, 0.44204032), (0.6903342, 0.4440773), (0.6709436, 0.4528646), (0.6430856, 0.45107973), (0.6903342, 0.4440773), (0.71503127, 0.4465233), (0.6942793, 0.4549314), (0.6709436, 0.4528646), (0.71503127, 0.4465233), (0.73434794, 0.44941726), (0.71310526, 0.45729235), (0.6942793, 0.4549314), (0.73434794, 0.44941726), (0.74872684, 0.45273617), (0.727694, 0.45992914), (0.71310526, 0.45729235), (0.74872684, 0.45273617), (0.75879234, 0.4563753), (0.7384812, 0.46278197), (0.727694, 0.45992914), (0.75879234, 0.4563753), (0.76524127, 0.46019694), (0.7459779, 0.4657632), (0.7384812, 0.46278197), (0.76524127, 0.46019694), (0.7687349, 0.464041), (0.7507066, 0.46877685), (0.7459779, 0.4657632), (0.7687349, 0.464041), (0.76987827, 0.4677719), (0.75316757, 0.4717293), (0.7507066, 0.46877685), (0.24867927, 0.4652764), (0.25110206, 0.46222198), (0.26806954, 0.46633777), (0.26460254, 0.46877524), (0.25110206, 0.46222198), (0.2557531, 0.45911407), (0.2736399, 0.463887), (0.26806954, 0.46633777), (0.2557531, 0.45911407), (0.2631063, 0.4560599), (0.28169984, 0.46150216), (0.2736399, 0.463887), (0.2631063, 0.4560599), (0.27365857, 0.45318103), (0.2926336, 0.4592747), (0.28169984, 0.46150216), (0.27365857, 0.45318103), (0.28789103, 0.45061168), (0.3067982, 0.45728928), (0.2926336, 0.4592747), (0.28789103, 0.45061168), (0.30621073, 0.4484638), (0.32447582, 0.45562795), (0.3067982, 0.45728928), (0.30621073, 0.4484638), (0.32887924, 0.44682515), (0.3458179, 0.45434764), (0.32447582, 0.45562795), (0.32887924, 0.44682515), (0.3559303, 0.4457316), (0.37080023, 0.45347992), (0.3458179, 0.45434764), (0.3559303, 0.4457316), (0.3871185, 0.44517776), (0.39917248, 0.45302948), (0.37080023, 0.45347992), (0.3871185, 0.44517776), (0.4218768, 0.44511214), (0.4304404, 0.45296413), (0.39917248, 0.45302948), (0.4218768, 0.44511214), (0.4593212, 0.4454592), (0.46386594, 0.45324218), (0.4304404, 0.45296413), (0.4593212, 0.4454592), (0.4983007, 0.44613564), (0.49850798, 0.45380628), (0.46386594, 0.45324218), (0.4983007, 0.44613564), (0.5374829, 0.44706735), (0.5332998, 0.4546076), (0.49850798, 0.45380628), (0.5374829, 0.44706735), (0.5754866, 0.4482063), (0.5671426, 0.45561185), (0.5332998, 0.4546076), (0.5754866, 0.4482063), (0.6110323, 0.44953766), (0.5990145, 0.4567949), (0.5671426, 0.45561185), (0.6110323, 0.44953766), (0.6430856, 0.45107973), (0.6280689, 0.45815918), (0.5990145, 0.4567949), (0.6430856, 0.45107973), (0.6709436, 0.4528646), (0.65372294, 0.45971394), (0.6280689, 0.45815918), (0.6709436, 0.4528646), (0.6942793, 0.4549314), (0.6756575, 0.46147105), (0.65372294, 0.45971394), (0.6942793, 0.4549314), (0.71310526, 0.45729235), (0.693812, 0.46343157), (0.6756575, 0.46147105), (0.71310526, 0.45729235), (0.727694, 0.45992914), (0.7083406, 0.46557578), (0.693812, 0.46343157), (0.727694, 0.45992914), (0.7384812, 0.46278197), (0.7195383, 0.46786758), (0.7083406, 0.46557578), (0.7384812, 0.46278197), (0.7459779, 0.4657632), (0.7277764, 0.47024795), (0.7195383, 0.46786758), (0.7459779, 0.4657632), (0.7507066, 0.46877685), (0.7334674, 0.47265923), (0.7277764, 0.47024795), (0.7507066, 0.46877685), (0.75316757, 0.4717293), (0.73700315, 0.4750386), (0.7334674, 0.47265923), (0.26460254, 0.46877524), (0.26806954, 0.46633777), (0.28410763, 0.46982375), (0.2798131, 0.4717883), (0.26806954, 0.46633777), (0.2736399, 0.463887), (0.290366, 0.46787012), (0.28410763, 0.46982375), (0.2736399, 0.463887), (0.28169984, 0.46150216), (0.2988932, 0.46598616), (0.290366, 0.46787012), (0.28169984, 0.46150216), (0.2926336, 0.4592747), (0.3099856, 0.4642351), (0.2988932, 0.46598616), (0.2926336, 0.4592747), (0.3067982, 0.45728928), (0.3239014, 0.46268168), (0.3099856, 0.4642351), (0.3067982, 0.45728928), (0.32447582, 0.45562795), (0.34083018, 0.46138057), (0.3239014, 0.46268168), (0.32447582, 0.45562795), (0.3458179, 0.45434764), (0.3608493, 0.46037376), (0.34083018, 0.46138057), (0.3458179, 0.45434764), (0.37080023, 0.45347992), (0.3838949, 0.45968774), (0.3608493, 0.46037376), (0.37080023, 0.45347992), (0.39917248, 0.45302948), (0.40971982, 0.45932695), (0.3838949, 0.45968774), (0.39917248, 0.45302948), (0.4304404, 0.45296413), (0.4378934, 0.45927447), (0.40971982, 0.45932695), (0.4304404, 0.45296413), (0.46386594, 0.45324218), (0.46780336, 0.45950744), (0.4378934, 0.45927447), (0.46386594, 0.45324218), (0.49850798, 0.45380628), (0.4986823, 0.45998806), (0.46780336, 0.45950744), (0.49850798, 0.45380628), (0.5332998, 0.4546076), (0.5296698, 0.46068075), (0.4986823, 0.45998806), (0.5332998, 0.4546076), (0.5671426, 0.45561185), (0.55989355, 0.46155927), (0.5296698, 0.46068075), (0.5671426, 0.45561185), (0.5990145, 0.4567949), (0.5885321, 0.46260062), (0.55989355, 0.46155927), (0.5990145, 0.4567949), (0.6280689, 0.45815918), (0.61489826, 0.4637988), (0.5885321, 0.46260062), (0.6280689, 0.45815918), (0.65372294, 0.45971394), (0.63849473, 0.4651503), (0.61489826, 0.4637988), (0.65372294, 0.45971394), (0.6756575, 0.46147105), (0.6590264, 0.46665302), (0.63849473, 0.4651503), (0.6756575, 0.46147105), (0.693812, 0.46343157), (0.67639565, 0.46830064), (0.6590264, 0.46665302), (0.693812, 0.46343157), (0.7083406, 0.46557578), (0.6906637, 0.4700788), (0.67639565, 0.46830064), (0.7083406, 0.46557578), (0.7195383, 0.46786758), (0.7020267, 0.4719559), (0.6906637, 0.4700788), (0.7195383, 0.46786758), (0.7277764, 0.47024795), (0.7107553, 0.4738989), (0.7020267, 0.4719559), (0.7277764, 0.47024795), (0.7334674, 0.47265923), (0.71715814, 0.47586566), (0.7107553, 0.4738989), (0.7334674, 0.47265923), (0.73700315, 0.4750386), (0.7215501, 0.4778128), (0.71715814, 0.47586566), (0.2798131, 0.4717883), (0.28410763, 0.46982375), (0.2991512, 0.47279963), (0.29421654, 0.47439817), (0.28410763, 0.46982375), (0.290366, 0.46787012), (0.30589572, 0.4712257), (0.2991512, 0.47279963), (0.290366, 0.46787012), (0.2988932, 0.46598616), (0.31469458, 0.46971866), (0.30589572, 0.4712257), (0.2988932, 0.46598616), (0.3099856, 0.4642351), (0.3257705, 0.46832785), (0.31469458, 0.46971866), (0.3099856, 0.4642351), (0.3239014, 0.46268168), (0.33930865, 0.4670989), (0.3257705, 0.46832785), (0.3239014, 0.46268168), (0.34083018, 0.46138057), (0.35542744, 0.4660705), (0.33930865, 0.4670989), (0.34083018, 0.46138057), (0.3608493, 0.46037376), (0.3741546, 0.46527362), (0.35542744, 0.4660705), (0.3608493, 0.46037376), (0.3838949, 0.45968774), (0.39539832, 0.4647312), (0.3741546, 0.46527362), (0.3838949, 0.45968774), (0.40971982, 0.45932695), (0.41892684, 0.46444625), (0.39539832, 0.4647312), (0.40971982, 0.45932695), (0.4378934, 0.45927447), (0.4443676, 0.46441367), (0.41892684, 0.46444625), (0.4378934, 0.45927447), (0.46780336, 0.45950744), (0.47120816, 0.46461707), (0.4443676, 0.46441367), (0.46780336, 0.45950744), (0.4986823, 0.45998806), (0.49882448, 0.46503204), (0.47120816, 0.46461707), (0.4986823, 0.45998806), (0.5296698, 0.46068075), (0.52652305, 0.46563414), (0.49882448, 0.46503204), (0.5296698, 0.46068075), (0.55989355, 0.46155927), (0.5536028, 0.46639943), (0.52652305, 0.46563414), (0.55989355, 0.46155927), (0.5885321, 0.46260062), (0.579404, 0.4673137), (0.5536028, 0.46639943), (0.5885321, 0.46260062), (0.61489826, 0.4637988), (0.60336703, 0.4683619), (0.579404, 0.4673137), (0.61489826, 0.4637988), (0.63849473, 0.4651503), (0.6250652, 0.46953702), (0.60336703, 0.4683619), (0.63849473, 0.4651503), (0.6590264, 0.46665302), (0.64422625, 0.47082743), (0.6250652, 0.46953702), (0.6590264, 0.46665302), (0.67639565, 0.46830064), (0.6607383, 0.47222817), (0.64422625, 0.47082743), (0.67639565, 0.46830064), (0.6906637, 0.4700788), (0.67460704, 0.4737233), (0.6607383, 0.47222817), (0.6906637, 0.4700788), (0.7020267, 0.4719559), (0.685949, 0.47528887), (0.67460704, 0.4737233), (0.7020267, 0.4719559), (0.7107553, 0.4738989), (0.69495803, 0.4769005), (0.685949, 0.47528887), (0.7107553, 0.4738989), (0.71715814, 0.47586566), (0.7018616, 0.47853178), (0.69495803, 0.4769005), (0.71715814, 0.47586566), (0.7215501, 0.4778128), (0.7069108, 0.4801504), (0.7018616, 0.47853178), (0.29421654, 0.47439817), (0.2991512, 0.47279963), (0.31317115, 0.47535542), (0.3077637, 0.4766672), (0.2991512, 0.47279963), (0.30589572, 0.4712257), (0.32023767, 0.47407702), (0.31317115, 0.47535542), (0.30589572, 0.4712257), (0.31469458, 0.46971866), (0.32915285, 0.47286174), (0.32023767, 0.47407702), (0.31469458, 0.46971866), (0.3257705, 0.46832785), (0.34007892, 0.47174567), (0.32915285, 0.47286174), (0.3257705, 0.46832785), (0.33930865, 0.4670989), (0.35314798, 0.4707625), (0.34007892, 0.47174567), (0.33930865, 0.4670989), (0.35542744, 0.4660705), (0.36842862, 0.46994478), (0.35314798, 0.4707625), (0.35542744, 0.4660705), (0.3741546, 0.46527362), (0.38591224, 0.46931186), (0.36842862, 0.46994478), (0.3741546, 0.46527362), (0.39539832, 0.4647312), (0.40549475, 0.4688833), (0.38591224, 0.46931186), (0.39539832, 0.4647312), (0.41892684, 0.46444625), (0.4269626, 0.46866247), (0.40549475, 0.4688833), (0.41892684, 0.46444625), (0.4443676, 0.46441367), (0.4499935, 0.4686515), (0.4269626, 0.46866247), (0.4443676, 0.46441367), (0.47120816, 0.46461707), (0.47415674, 0.46883327), (0.4499935, 0.4686515), (0.47120816, 0.46461707), (0.49882448, 0.46503204), (0.49894428, 0.4691961), (0.47415674, 0.46883327), (0.49882448, 0.46503204), (0.52652305, 0.46563414), (0.5237951, 0.46972176), (0.49894428, 0.4691961), (0.52652305, 0.46563414), (0.5536028, 0.46639943), (0.54814565, 0.47039178), (0.5237951, 0.46972176), (0.5536028, 0.46639943), (0.579404, 0.4673137), (0.57145745, 0.47119048), (0.54814565, 0.47039178), (0.579404, 0.4673137), (0.60336703, 0.4683619), (0.5932684, 0.4721056), (0.57145745, 0.47119048), (0.60336703, 0.4683619), (0.6250652, 0.46953702), (0.6132253, 0.47312692), (0.5932684, 0.4721056), (0.6250652, 0.46953702), (0.64422625, 0.47082743), (0.63108075, 0.47424275), (0.6132253, 0.47312692), (0.64422625, 0.47082743), (0.6607383, 0.47222817), (0.64670503, 0.47544348), (0.63108075, 0.47424275), (0.6607383, 0.47222817), (0.67460704, 0.4737233), (0.66007525, 0.47671297), (0.64670503, 0.47544348), (0.67460704, 0.4737233), (0.685949, 0.47528887), (0.67125714, 0.47803703), (0.66007525, 0.47671297), (0.685949, 0.47528887), (0.69495803, 0.4769005), (0.6803808, 0.47939476), (0.67125714, 0.47803703), (0.69495803, 0.4769005), (0.7018616, 0.47853178), (0.6876107, 0.48076674), (0.6803808, 0.47939476), (0.7018616, 0.47853178), (0.7069108, 0.4801504), (0.693145, 0.48212957), (0.6876107, 0.48076674)] (\n            interpolation = \"faceVarying\"\n        )\n        texCoord2f[] primvars:st = [(-0.5416666, -0.5416666), (-0.4548611, -0.5416666), (-0.4548611, -0.45486104), (-0.5416666, -0.45486104), (-0.4548611, -0.5416666), (-0.36805552, -0.5416666), (-0.36805552, -0.45486104), (-0.4548611, -0.45486104), (-0.36805552, -0.5416666), (-0.28125, -0.5416666), (-0.28125, -0.45486104), (-0.36805552, -0.45486104), (-0.28125, -0.5416666), (-0.19444448, -0.5416666), (-0.19444448, -0.45486104), (-0.28125, -0.45486104), (-0.19444448, -0.5416666), (-0.107638896, -0.5416666), (-0.107638896, -0.45486104), (-0.19444448, -0.45486104), (-0.107638896, -0.5416666), (-0.020833313, -0.5416666), (-0.020833313, -0.45486104), (-0.107638896, -0.45486104), (-0.020833313, -0.5416666), (0.06597221, -0.5416666), (0.06597221, -0.45486104), (-0.020833313, -0.45486104), (0.06597221, -0.5416666), (0.15277776, -0.5416666), (0.15277776, -0.45486104), (0.06597221, -0.45486104), (0.15277776, -0.5416666), (0.23958334, -0.5416666), (0.23958334, -0.45486104), (0.15277776, -0.45486104), (0.23958334, -0.5416666), (0.32638887, -0.5416666), (0.32638887, -0.45486104), (0.23958334, -0.45486104), (0.32638887, -0.5416666), (0.4131944, -0.5416666), (0.4131944, -0.45486104), (0.32638887, -0.45486104), (0.4131944, -0.5416666), (0.5, -0.5416666), (0.5, -0.45486104), (0.4131944, -0.45486104), (0.5, -0.5416666), (0.5868055, -0.5416666), (0.5868055, -0.45486104), (0.5, -0.45486104), (0.5868055, -0.5416666), (0.67361104, -0.5416666), (0.67361104, -0.45486104), (0.5868055, -0.45486104), (0.67361104, -0.5416666), (0.7604166, -0.5416666), (0.7604166, -0.45486104), (0.67361104, -0.45486104), (0.7604166, -0.5416666), (0.8472222, -0.5416666), (0.8472222, -0.45486104), (0.7604166, -0.45486104), (0.8472222, -0.5416666), (0.9340277, -0.5416666), (0.9340277, -0.45486104), (0.8472222, -0.45486104), (0.9340277, -0.5416666), (1.0208333, -0.5416666), (1.0208333, -0.45486104), (0.9340277, -0.45486104), (1.0208333, -0.5416666), (1.1076388, -0.5416666), (1.1076388, -0.45486104), (1.0208333, -0.45486104), (1.1076388, -0.5416666), (1.1944444, -0.5416666), (1.1944444, -0.45486104), (1.1076388, -0.45486104), (1.1944444, -0.5416666), (1.28125, -0.5416666), (1.28125, -0.45486104), (1.1944444, -0.45486104), (1.28125, -0.5416666), (1.3680553, -0.5416666), (1.3680553, -0.45486104), (1.28125, -0.45486104), (1.3680553, -0.5416666), (1.454861, -0.5416666), (1.454861, -0.45486104), (1.3680553, -0.45486104), (1.454861, -0.5416666), (1.5416666, -0.5416666), (1.5416666, -0.45486104), (1.454861, -0.45486104), (-0.5416666, -0.45486104), (-0.4548611, -0.45486104), (-0.4548611, -0.36805552), (-0.5416666, -0.36805552), (-0.4548611, -0.45486104), (-0.36805552, -0.45486104), (-0.36805552, -0.36805552), (-0.4548611, -0.36805552), (-0.36805552, -0.45486104), (-0.28125, -0.45486104), (-0.28125, -0.36805552), (-0.36805552, -0.36805552), (-0.28125, -0.45486104), (-0.19444448, -0.45486104), (-0.19444448, -0.36805552), (-0.28125, -0.36805552), (-0.19444448, -0.45486104), (-0.107638896, -0.45486104), (-0.107638896, -0.36805552), (-0.19444448, -0.36805552), (-0.107638896, -0.45486104), (-0.020833313, -0.45486104), (-0.020833313, -0.36805552), (-0.107638896, -0.36805552), (-0.020833313, -0.45486104), (0.06597221, -0.45486104), (0.06597221, -0.36805552), (-0.020833313, -0.36805552), (0.06597221, -0.45486104), (0.15277776, -0.45486104), (0.15277776, -0.36805552), (0.06597221, -0.36805552), (0.15277776, -0.45486104), (0.23958334, -0.45486104), (0.23958334, -0.36805552), (0.15277776, -0.36805552), (0.23958334, -0.45486104), (0.32638887, -0.45486104), (0.32638887, -0.36805552), (0.23958334, -0.36805552), (0.32638887, -0.45486104), (0.4131944, -0.45486104), (0.4131944, -0.36805552), (0.32638887, -0.36805552), (0.4131944, -0.45486104), (0.5, -0.45486104), (0.5, -0.36805552), (0.4131944, -0.36805552), (0.5, -0.45486104), (0.5868055, -0.45486104), (0.5868055, -0.36805552), (0.5, -0.36805552), (0.5868055, -0.45486104), (0.67361104, -0.45486104), (0.67361104, -0.36805552), (0.5868055, -0.36805552), (0.67361104, -0.45486104), (0.7604166, -0.45486104), (0.7604166, -0.36805552), (0.67361104, -0.36805552), (0.7604166, -0.45486104), (0.8472222, -0.45486104), (0.8472222, -0.36805552), (0.7604166, -0.36805552), (0.8472222, -0.45486104), (0.9340277, -0.45486104), (0.9340277, -0.36805552), (0.8472222, -0.36805552), (0.9340277, -0.45486104), (1.0208333, -0.45486104), (1.0208333, -0.36805552), (0.9340277, -0.36805552), (1.0208333, -0.45486104), (1.1076388, -0.45486104), (1.1076388, -0.36805552), (1.0208333, -0.36805552), (1.1076388, -0.45486104), (1.1944444, -0.45486104), (1.1944444, -0.36805552), (1.1076388, -0.36805552), (1.1944444, -0.45486104), (1.28125, -0.45486104), (1.28125, -0.36805552), (1.1944444, -0.36805552), (1.28125, -0.45486104), (1.3680553, -0.45486104), (1.3680553, -0.36805552), (1.28125, -0.36805552), (1.3680553, -0.45486104), (1.454861, -0.45486104), (1.454861, -0.36805552), (1.3680553, -0.36805552), (1.454861, -0.45486104), (1.5416666, -0.45486104), (1.5416666, -0.36805552), (1.454861, -0.36805552), (-0.5416666, -0.36805552), (-0.4548611, -0.36805552), (-0.4548611, -0.28124994), (-0.5416666, -0.28124994), (-0.4548611, -0.36805552), (-0.36805552, -0.36805552), (-0.36805552, -0.28124994), (-0.4548611, -0.28124994), (-0.36805552, -0.36805552), (-0.28125, -0.36805552), (-0.28125, -0.28124994), (-0.36805552, -0.28124994), (-0.28125, -0.36805552), (-0.19444448, -0.36805552), (-0.19444448, -0.28124994), (-0.28125, -0.28124994), (-0.19444448, -0.36805552), (-0.107638896, -0.36805552), (-0.107638896, -0.28124994), (-0.19444448, -0.28124994), (-0.107638896, -0.36805552), (-0.020833313, -0.36805552), (-0.020833313, -0.28124994), (-0.107638896, -0.28124994), (-0.020833313, -0.36805552), (0.06597221, -0.36805552), (0.06597221, -0.28124994), (-0.020833313, -0.28124994), (0.06597221, -0.36805552), (0.15277776, -0.36805552), (0.15277776, -0.28124994), (0.06597221, -0.28124994), (0.15277776, -0.36805552), (0.23958334, -0.36805552), (0.23958334, -0.28124994), (0.15277776, -0.28124994), (0.23958334, -0.36805552), (0.32638887, -0.36805552), (0.32638887, -0.28124994), (0.23958334, -0.28124994), (0.32638887, -0.36805552), (0.4131944, -0.36805552), (0.4131944, -0.28124994), (0.32638887, -0.28124994), (0.4131944, -0.36805552), (0.5, -0.36805552), (0.5, -0.28124994), (0.4131944, -0.28124994), (0.5, -0.36805552), (0.5868055, -0.36805552), (0.5868055, -0.28124994), (0.5, -0.28124994), (0.5868055, -0.36805552), (0.67361104, -0.36805552), (0.67361104, -0.28124994), (0.5868055, -0.28124994), (0.67361104, -0.36805552), (0.7604166, -0.36805552), (0.7604166, -0.28124994), (0.67361104, -0.28124994), (0.7604166, -0.36805552), (0.8472222, -0.36805552), (0.8472222, -0.28124994), (0.7604166, -0.28124994), (0.8472222, -0.36805552), (0.9340277, -0.36805552), (0.9340277, -0.28124994), (0.8472222, -0.28124994), (0.9340277, -0.36805552), (1.0208333, -0.36805552), (1.0208333, -0.28124994), (0.9340277, -0.28124994), (1.0208333, -0.36805552), (1.1076388, -0.36805552), (1.1076388, -0.28124994), (1.0208333, -0.28124994), (1.1076388, -0.36805552), (1.1944444, -0.36805552), (1.1944444, -0.28124994), (1.1076388, -0.28124994), (1.1944444, -0.36805552), (1.28125, -0.36805552), (1.28125, -0.28124994), (1.1944444, -0.28124994), (1.28125, -0.36805552), (1.3680553, -0.36805552), (1.3680553, -0.28124994), (1.28125, -0.28124994), (1.3680553, -0.36805552), (1.454861, -0.36805552), (1.454861, -0.28124994), (1.3680553, -0.28124994), (1.454861, -0.36805552), (1.5416666, -0.36805552), (1.5416666, -0.28124994), (1.454861, -0.28124994), (-0.5416666, -0.28124994), (-0.4548611, -0.28124994), (-0.4548611, -0.19444448), (-0.5416666, -0.19444448), (-0.4548611, -0.28124994), (-0.36805552, -0.28124994), (-0.36805552, -0.19444448), (-0.4548611, -0.19444448), (-0.36805552, -0.28124994), (-0.28125, -0.28124994), (-0.28125, -0.19444448), (-0.36805552, -0.19444448), (-0.28125, -0.28124994), (-0.19444448, -0.28124994), (-0.19444448, -0.19444448), (-0.28125, -0.19444448), (-0.19444448, -0.28124994), (-0.107638896, -0.28124994), (-0.107638896, -0.19444448), (-0.19444448, -0.19444448), (-0.107638896, -0.28124994), (-0.020833313, -0.28124994), (-0.020833313, -0.19444448), (-0.107638896, -0.19444448), (-0.020833313, -0.28124994), (0.06597221, -0.28124994), (0.06597221, -0.19444448), (-0.020833313, -0.19444448), (0.06597221, -0.28124994), (0.15277776, -0.28124994), (0.15277776, -0.19444448), (0.06597221, -0.19444448), (0.15277776, -0.28124994), (0.23958334, -0.28124994), (0.23958334, -0.19444448), (0.15277776, -0.19444448), (0.23958334, -0.28124994), (0.32638887, -0.28124994), (0.32638887, -0.19444448), (0.23958334, -0.19444448), (0.32638887, -0.28124994), (0.4131944, -0.28124994), (0.4131944, -0.19444448), (0.32638887, -0.19444448), (0.4131944, -0.28124994), (0.5, -0.28124994), (0.5, -0.19444448), (0.4131944, -0.19444448), (0.5, -0.28124994), (0.5868055, -0.28124994), (0.5868055, -0.19444448), (0.5, -0.19444448), (0.5868055, -0.28124994), (0.67361104, -0.28124994), (0.67361104, -0.19444448), (0.5868055, -0.19444448), (0.67361104, -0.28124994), (0.7604166, -0.28124994), (0.7604166, -0.19444448), (0.67361104, -0.19444448), (0.7604166, -0.28124994), (0.8472222, -0.28124994), (0.8472222, -0.19444448), (0.7604166, -0.19444448), (0.8472222, -0.28124994), (0.9340277, -0.28124994), (0.9340277, -0.19444448), (0.8472222, -0.19444448), (0.9340277, -0.28124994), (1.0208333, -0.28124994), (1.0208333, -0.19444448), (0.9340277, -0.19444448), (1.0208333, -0.28124994), (1.1076388, -0.28124994), (1.1076388, -0.19444448), (1.0208333, -0.19444448), (1.1076388, -0.28124994), (1.1944444, -0.28124994), (1.1944444, -0.19444448), (1.1076388, -0.19444448), (1.1944444, -0.28124994), (1.28125, -0.28124994), (1.28125, -0.19444448), (1.1944444, -0.19444448), (1.28125, -0.28124994), (1.3680553, -0.28124994), (1.3680553, -0.19444448), (1.28125, -0.19444448), (1.3680553, -0.28124994), (1.454861, -0.28124994), (1.454861, -0.19444448), (1.3680553, -0.19444448), (1.454861, -0.28124994), (1.5416666, -0.28124994), (1.5416666, -0.19444448), (1.454861, -0.19444448), (-0.5416666, -0.19444448), (-0.4548611, -0.19444448), (-0.4548611, -0.107638896), (-0.5416666, -0.107638896), (-0.4548611, -0.19444448), (-0.36805552, -0.19444448), (-0.36805552, -0.107638896), (-0.4548611, -0.107638896), (-0.36805552, -0.19444448), (-0.28125, -0.19444448), (-0.28125, -0.107638896), (-0.36805552, -0.107638896), (-0.28125, -0.19444448), (-0.19444448, -0.19444448), (-0.19444448, -0.107638896), (-0.28125, -0.107638896), (-0.19444448, -0.19444448), (-0.107638896, -0.19444448), (-0.107638896, -0.107638896), (-0.19444448, -0.107638896), (-0.107638896, -0.19444448), (-0.020833313, -0.19444448), (-0.020833313, -0.107638896), (-0.107638896, -0.107638896), (-0.020833313, -0.19444448), (0.06597221, -0.19444448), (0.06597221, -0.107638896), (-0.020833313, -0.107638896), (0.06597221, -0.19444448), (0.15277776, -0.19444448), (0.15277776, -0.107638896), (0.06597221, -0.107638896), (0.15277776, -0.19444448), (0.23958334, -0.19444448), (0.23958334, -0.107638896), (0.15277776, -0.107638896), (0.23958334, -0.19444448), (0.32638887, -0.19444448), (0.32638887, -0.107638896), (0.23958334, -0.107638896), (0.32638887, -0.19444448), (0.4131944, -0.19444448), (0.4131944, -0.107638896), (0.32638887, -0.107638896), (0.4131944, -0.19444448), (0.5, -0.19444448), (0.5, -0.107638896), (0.4131944, -0.107638896), (0.5, -0.19444448), (0.5868055, -0.19444448), (0.5868055, -0.107638896), (0.5, -0.107638896), (0.5868055, -0.19444448), (0.67361104, -0.19444448), (0.67361104, -0.107638896), (0.5868055, -0.107638896), (0.67361104, -0.19444448), (0.7604166, -0.19444448), (0.7604166, -0.107638896), (0.67361104, -0.107638896), (0.7604166, -0.19444448), (0.8472222, -0.19444448), (0.8472222, -0.107638896), (0.7604166, -0.107638896), (0.8472222, -0.19444448), (0.9340277, -0.19444448), (0.9340277, -0.107638896), (0.8472222, -0.107638896), (0.9340277, -0.19444448), (1.0208333, -0.19444448), (1.0208333, -0.107638896), (0.9340277, -0.107638896), (1.0208333, -0.19444448), (1.1076388, -0.19444448), (1.1076388, -0.107638896), (1.0208333, -0.107638896), (1.1076388, -0.19444448), (1.1944444, -0.19444448), (1.1944444, -0.107638896), (1.1076388, -0.107638896), (1.1944444, -0.19444448), (1.28125, -0.19444448), (1.28125, -0.107638896), (1.1944444, -0.107638896), (1.28125, -0.19444448), (1.3680553, -0.19444448), (1.3680553, -0.107638896), (1.28125, -0.107638896), (1.3680553, -0.19444448), (1.454861, -0.19444448), (1.454861, -0.107638896), (1.3680553, -0.107638896), (1.454861, -0.19444448), (1.5416666, -0.19444448), (1.5416666, -0.107638896), (1.454861, -0.107638896), (-0.5416666, -0.107638896), (-0.4548611, -0.107638896), (-0.4548611, -0.020833313), (-0.5416666, -0.020833313), (-0.4548611, -0.107638896), (-0.36805552, -0.107638896), (-0.36805552, -0.020833313), (-0.4548611, -0.020833313), (-0.36805552, -0.107638896), (-0.28125, -0.107638896), (-0.28125, -0.020833313), (-0.36805552, -0.020833313), (-0.28125, -0.107638896), (-0.19444448, -0.107638896), (-0.19444448, -0.020833313), (-0.28125, -0.020833313), (-0.19444448, -0.107638896), (-0.107638896, -0.107638896), (-0.107638896, -0.020833313), (-0.19444448, -0.020833313), (-0.107638896, -0.107638896), (-0.020833313, -0.107638896), (-0.020833313, -0.020833313), (-0.107638896, -0.020833313), (-0.020833313, -0.107638896), (0.06597221, -0.107638896), (0.06597221, -0.020833313), (-0.020833313, -0.020833313), (0.06597221, -0.107638896), (0.15277776, -0.107638896), (0.15277776, -0.020833313), (0.06597221, -0.020833313), (0.15277776, -0.107638896), (0.23958334, -0.107638896), (0.23958334, -0.020833313), (0.15277776, -0.020833313), (0.23958334, -0.107638896), (0.32638887, -0.107638896), (0.32638887, -0.020833313), (0.23958334, -0.020833313), (0.32638887, -0.107638896), (0.4131944, -0.107638896), (0.4131944, -0.020833313), (0.32638887, -0.020833313), (0.4131944, -0.107638896), (0.5, -0.107638896), (0.5, -0.020833313), (0.4131944, -0.020833313), (0.5, -0.107638896), (0.5868055, -0.107638896), (0.5868055, -0.020833313), (0.5, -0.020833313), (0.5868055, -0.107638896), (0.67361104, -0.107638896), (0.67361104, -0.020833313), (0.5868055, -0.020833313), (0.67361104, -0.107638896), (0.7604166, -0.107638896), (0.7604166, -0.020833313), (0.67361104, -0.020833313), (0.7604166, -0.107638896), (0.8472222, -0.107638896), (0.8472222, -0.020833313), (0.7604166, -0.020833313), (0.8472222, -0.107638896), (0.9340277, -0.107638896), (0.9340277, -0.020833313), (0.8472222, -0.020833313), (0.9340277, -0.107638896), (1.0208333, -0.107638896), (1.0208333, -0.020833313), (0.9340277, -0.020833313), (1.0208333, -0.107638896), (1.1076388, -0.107638896), (1.1076388, -0.020833313), (1.0208333, -0.020833313), (1.1076388, -0.107638896), (1.1944444, -0.107638896), (1.1944444, -0.020833313), (1.1076388, -0.020833313), (1.1944444, -0.107638896), (1.28125, -0.107638896), (1.28125, -0.020833313), (1.1944444, -0.020833313), (1.28125, -0.107638896), (1.3680553, -0.107638896), (1.3680553, -0.020833313), (1.28125, -0.020833313), (1.3680553, -0.107638896), (1.454861, -0.107638896), (1.454861, -0.020833313), (1.3680553, -0.020833313), (1.454861, -0.107638896), (1.5416666, -0.107638896), (1.5416666, -0.020833313), (1.454861, -0.020833313), (-0.5416666, -0.020833313), (-0.4548611, -0.020833313), (-0.4548611, 0.06597221), (-0.5416666, 0.06597221), (-0.4548611, -0.020833313), (-0.36805552, -0.020833313), (-0.36805552, 0.06597221), (-0.4548611, 0.06597221), (-0.36805552, -0.020833313), (-0.28125, -0.020833313), (-0.28125, 0.06597221), (-0.36805552, 0.06597221), (-0.28125, -0.020833313), (-0.19444448, -0.020833313), (-0.19444448, 0.06597221), (-0.28125, 0.06597221), (-0.19444448, -0.020833313), (-0.107638896, -0.020833313), (-0.107638896, 0.06597221), (-0.19444448, 0.06597221), (-0.107638896, -0.020833313), (-0.020833313, -0.020833313), (-0.020833313, 0.06597221), (-0.107638896, 0.06597221), (-0.020833313, -0.020833313), (0.06597221, -0.020833313), (0.06597221, 0.06597221), (-0.020833313, 0.06597221), (0.06597221, -0.020833313), (0.15277776, -0.020833313), (0.15277776, 0.06597221), (0.06597221, 0.06597221), (0.15277776, -0.020833313), (0.23958334, -0.020833313), (0.23958334, 0.06597221), (0.15277776, 0.06597221), (0.23958334, -0.020833313), (0.32638887, -0.020833313), (0.32638887, 0.06597221), (0.23958334, 0.06597221), (0.32638887, -0.020833313), (0.4131944, -0.020833313), (0.4131944, 0.06597221), (0.32638887, 0.06597221), (0.4131944, -0.020833313), (0.5, -0.020833313), (0.5, 0.06597221), (0.4131944, 0.06597221), (0.5, -0.020833313), (0.5868055, -0.020833313), (0.5868055, 0.06597221), (0.5, 0.06597221), (0.5868055, -0.020833313), (0.67361104, -0.020833313), (0.67361104, 0.06597221), (0.5868055, 0.06597221), (0.67361104, -0.020833313), (0.7604166, -0.020833313), (0.7604166, 0.06597221), (0.67361104, 0.06597221), (0.7604166, -0.020833313), (0.8472222, -0.020833313), (0.8472222, 0.06597221), (0.7604166, 0.06597221), (0.8472222, -0.020833313), (0.9340277, -0.020833313), (0.9340277, 0.06597221), (0.8472222, 0.06597221), (0.9340277, -0.020833313), (1.0208333, -0.020833313), (1.0208333, 0.06597221), (0.9340277, 0.06597221), (1.0208333, -0.020833313), (1.1076388, -0.020833313), (1.1076388, 0.06597221), (1.0208333, 0.06597221), (1.1076388, -0.020833313), (1.1944444, -0.020833313), (1.1944444, 0.06597221), (1.1076388, 0.06597221), (1.1944444, -0.020833313), (1.28125, -0.020833313), (1.28125, 0.06597221), (1.1944444, 0.06597221), (1.28125, -0.020833313), (1.3680553, -0.020833313), (1.3680553, 0.06597221), (1.28125, 0.06597221), (1.3680553, -0.020833313), (1.454861, -0.020833313), (1.454861, 0.06597221), (1.3680553, 0.06597221), (1.454861, -0.020833313), (1.5416666, -0.020833313), (1.5416666, 0.06597221), (1.454861, 0.06597221), (-0.5416666, 0.06597221), (-0.4548611, 0.06597221), (-0.4548611, 0.15277779), (-0.5416666, 0.15277779), (-0.4548611, 0.06597221), (-0.36805552, 0.06597221), (-0.36805552, 0.15277779), (-0.4548611, 0.15277779), (-0.36805552, 0.06597221), (-0.28125, 0.06597221), (-0.28125, 0.15277779), (-0.36805552, 0.15277779), (-0.28125, 0.06597221), (-0.19444448, 0.06597221), (-0.19444448, 0.15277779), (-0.28125, 0.15277779), (-0.19444448, 0.06597221), (-0.107638896, 0.06597221), (-0.107638896, 0.15277779), (-0.19444448, 0.15277779), (-0.107638896, 0.06597221), (-0.020833313, 0.06597221), (-0.020833313, 0.15277779), (-0.107638896, 0.15277779), (-0.020833313, 0.06597221), (0.06597221, 0.06597221), (0.06597221, 0.15277779), (-0.020833313, 0.15277779), (0.06597221, 0.06597221), (0.15277776, 0.06597221), (0.15277776, 0.15277779), (0.06597221, 0.15277779), (0.15277776, 0.06597221), (0.23958334, 0.06597221), (0.23958334, 0.15277779), (0.15277776, 0.15277779), (0.23958334, 0.06597221), (0.32638887, 0.06597221), (0.32638887, 0.15277779), (0.23958334, 0.15277779), (0.32638887, 0.06597221), (0.4131944, 0.06597221), (0.4131944, 0.15277779), (0.32638887, 0.15277779), (0.4131944, 0.06597221), (0.5, 0.06597221), (0.5, 0.15277779), (0.4131944, 0.15277779), (0.5, 0.06597221), (0.5868055, 0.06597221), (0.5868055, 0.15277779), (0.5, 0.15277779), (0.5868055, 0.06597221), (0.67361104, 0.06597221), (0.67361104, 0.15277779), (0.5868055, 0.15277779), (0.67361104, 0.06597221), (0.7604166, 0.06597221), (0.7604166, 0.15277779), (0.67361104, 0.15277779), (0.7604166, 0.06597221), (0.8472222, 0.06597221), (0.8472222, 0.15277779), (0.7604166, 0.15277779), (0.8472222, 0.06597221), (0.9340277, 0.06597221), (0.9340277, 0.15277779), (0.8472222, 0.15277779), (0.9340277, 0.06597221), (1.0208333, 0.06597221), (1.0208333, 0.15277779), (0.9340277, 0.15277779), (1.0208333, 0.06597221), (1.1076388, 0.06597221), (1.1076388, 0.15277779), (1.0208333, 0.15277779), (1.1076388, 0.06597221), (1.1944444, 0.06597221), (1.1944444, 0.15277779), (1.1076388, 0.15277779), (1.1944444, 0.06597221), (1.28125, 0.06597221), (1.28125, 0.15277779), (1.1944444, 0.15277779), (1.28125, 0.06597221), (1.3680553, 0.06597221), (1.3680553, 0.15277779), (1.28125, 0.15277779), (1.3680553, 0.06597221), (1.454861, 0.06597221), (1.454861, 0.15277779), (1.3680553, 0.15277779), (1.454861, 0.06597221), (1.5416666, 0.06597221), (1.5416666, 0.15277779), (1.454861, 0.15277779), (-0.5416666, 0.15277779), (-0.4548611, 0.15277779), (-0.4548611, 0.23958334), (-0.5416666, 0.23958334), (-0.4548611, 0.15277779), (-0.36805552, 0.15277779), (-0.36805552, 0.23958334), (-0.4548611, 0.23958334), (-0.36805552, 0.15277779), (-0.28125, 0.15277779), (-0.28125, 0.23958334), (-0.36805552, 0.23958334), (-0.28125, 0.15277779), (-0.19444448, 0.15277779), (-0.19444448, 0.23958334), (-0.28125, 0.23958334), (-0.19444448, 0.15277779), (-0.107638896, 0.15277779), (-0.107638896, 0.23958334), (-0.19444448, 0.23958334), (-0.107638896, 0.15277779), (-0.020833313, 0.15277779), (-0.020833313, 0.23958334), (-0.107638896, 0.23958334), (-0.020833313, 0.15277779), (0.06597221, 0.15277779), (0.06597221, 0.23958334), (-0.020833313, 0.23958334), (0.06597221, 0.15277779), (0.15277776, 0.15277779), (0.15277776, 0.23958334), (0.06597221, 0.23958334), (0.15277776, 0.15277779), (0.23958334, 0.15277779), (0.23958334, 0.23958334), (0.15277776, 0.23958334), (0.23958334, 0.15277779), (0.32638887, 0.15277779), (0.32638887, 0.23958334), (0.23958334, 0.23958334), (0.32638887, 0.15277779), (0.4131944, 0.15277779), (0.4131944, 0.23958334), (0.32638887, 0.23958334), (0.4131944, 0.15277779), (0.5, 0.15277779), (0.5, 0.23958334), (0.4131944, 0.23958334), (0.5, 0.15277779), (0.5868055, 0.15277779), (0.5868055, 0.23958334), (0.5, 0.23958334), (0.5868055, 0.15277779), (0.67361104, 0.15277779), (0.67361104, 0.23958334), (0.5868055, 0.23958334), (0.67361104, 0.15277779), (0.7604166, 0.15277779), (0.7604166, 0.23958334), (0.67361104, 0.23958334), (0.7604166, 0.15277779), (0.8472222, 0.15277779), (0.8472222, 0.23958334), (0.7604166, 0.23958334), (0.8472222, 0.15277779), (0.9340277, 0.15277779), (0.9340277, 0.23958334), (0.8472222, 0.23958334), (0.9340277, 0.15277779), (1.0208333, 0.15277779), (1.0208333, 0.23958334), (0.9340277, 0.23958334), (1.0208333, 0.15277779), (1.1076388, 0.15277779), (1.1076388, 0.23958334), (1.0208333, 0.23958334), (1.1076388, 0.15277779), (1.1944444, 0.15277779), (1.1944444, 0.23958334), (1.1076388, 0.23958334), (1.1944444, 0.15277779), (1.28125, 0.15277779), (1.28125, 0.23958334), (1.1944444, 0.23958334), (1.28125, 0.15277779), (1.3680553, 0.15277779), (1.3680553, 0.23958334), (1.28125, 0.23958334), (1.3680553, 0.15277779), (1.454861, 0.15277779), (1.454861, 0.23958334), (1.3680553, 0.23958334), (1.454861, 0.15277779), (1.5416666, 0.15277779), (1.5416666, 0.23958334), (1.454861, 0.23958334), (-0.5416666, 0.23958334), (-0.4548611, 0.23958334), (-0.4548611, 0.32638887), (-0.5416666, 0.32638887), (-0.4548611, 0.23958334), (-0.36805552, 0.23958334), (-0.36805552, 0.32638887), (-0.4548611, 0.32638887), (-0.36805552, 0.23958334), (-0.28125, 0.23958334), (-0.28125, 0.32638887), (-0.36805552, 0.32638887), (-0.28125, 0.23958334), (-0.19444448, 0.23958334), (-0.19444448, 0.32638887), (-0.28125, 0.32638887), (-0.19444448, 0.23958334), (-0.107638896, 0.23958334), (-0.107638896, 0.32638887), (-0.19444448, 0.32638887), (-0.107638896, 0.23958334), (-0.020833313, 0.23958334), (-0.020833313, 0.32638887), (-0.107638896, 0.32638887), (-0.020833313, 0.23958334), (0.06597221, 0.23958334), (0.06597221, 0.32638887), (-0.020833313, 0.32638887), (0.06597221, 0.23958334), (0.15277776, 0.23958334), (0.15277776, 0.32638887), (0.06597221, 0.32638887), (0.15277776, 0.23958334), (0.23958334, 0.23958334), (0.23958334, 0.32638887), (0.15277776, 0.32638887), (0.23958334, 0.23958334), (0.32638887, 0.23958334), (0.32638887, 0.32638887), (0.23958334, 0.32638887), (0.32638887, 0.23958334), (0.4131944, 0.23958334), (0.4131944, 0.32638887), (0.32638887, 0.32638887), (0.4131944, 0.23958334), (0.5, 0.23958334), (0.5, 0.32638887), (0.4131944, 0.32638887), (0.5, 0.23958334), (0.5868055, 0.23958334), (0.5868055, 0.32638887), (0.5, 0.32638887), (0.5868055, 0.23958334), (0.67361104, 0.23958334), (0.67361104, 0.32638887), (0.5868055, 0.32638887), (0.67361104, 0.23958334), (0.7604166, 0.23958334), (0.7604166, 0.32638887), (0.67361104, 0.32638887), (0.7604166, 0.23958334), (0.8472222, 0.23958334), (0.8472222, 0.32638887), (0.7604166, 0.32638887), (0.8472222, 0.23958334), (0.9340277, 0.23958334), (0.9340277, 0.32638887), (0.8472222, 0.32638887), (0.9340277, 0.23958334), (1.0208333, 0.23958334), (1.0208333, 0.32638887), (0.9340277, 0.32638887), (1.0208333, 0.23958334), (1.1076388, 0.23958334), (1.1076388, 0.32638887), (1.0208333, 0.32638887), (1.1076388, 0.23958334), (1.1944444, 0.23958334), (1.1944444, 0.32638887), (1.1076388, 0.32638887), (1.1944444, 0.23958334), (1.28125, 0.23958334), (1.28125, 0.32638887), (1.1944444, 0.32638887), (1.28125, 0.23958334), (1.3680553, 0.23958334), (1.3680553, 0.32638887), (1.28125, 0.32638887), (1.3680553, 0.23958334), (1.454861, 0.23958334), (1.454861, 0.32638887), (1.3680553, 0.32638887), (1.454861, 0.23958334), (1.5416666, 0.23958334), (1.5416666, 0.32638887), (1.454861, 0.32638887), (-0.5416666, 0.32638887), (-0.4548611, 0.32638887), (-0.4548611, 0.4131944), (-0.5416666, 0.4131944), (-0.4548611, 0.32638887), (-0.36805552, 0.32638887), (-0.36805552, 0.4131944), (-0.4548611, 0.4131944), (-0.36805552, 0.32638887), (-0.28125, 0.32638887), (-0.28125, 0.4131944), (-0.36805552, 0.4131944), (-0.28125, 0.32638887), (-0.19444448, 0.32638887), (-0.19444448, 0.4131944), (-0.28125, 0.4131944), (-0.19444448, 0.32638887), (-0.107638896, 0.32638887), (-0.107638896, 0.4131944), (-0.19444448, 0.4131944), (-0.107638896, 0.32638887), (-0.020833313, 0.32638887), (-0.020833313, 0.4131944), (-0.107638896, 0.4131944), (-0.020833313, 0.32638887), (0.06597221, 0.32638887), (0.06597221, 0.4131944), (-0.020833313, 0.4131944), (0.06597221, 0.32638887), (0.15277776, 0.32638887), (0.15277776, 0.4131944), (0.06597221, 0.4131944), (0.15277776, 0.32638887), (0.23958334, 0.32638887), (0.23958334, 0.4131944), (0.15277776, 0.4131944), (0.23958334, 0.32638887), (0.32638887, 0.32638887), (0.32638887, 0.4131944), (0.23958334, 0.4131944), (0.32638887, 0.32638887), (0.4131944, 0.32638887), (0.4131944, 0.4131944), (0.32638887, 0.4131944), (0.4131944, 0.32638887), (0.5, 0.32638887), (0.5, 0.4131944), (0.4131944, 0.4131944), (0.5, 0.32638887), (0.5868055, 0.32638887), (0.5868055, 0.4131944), (0.5, 0.4131944), (0.5868055, 0.32638887), (0.67361104, 0.32638887), (0.67361104, 0.4131944), (0.5868055, 0.4131944), (0.67361104, 0.32638887), (0.7604166, 0.32638887), (0.7604166, 0.4131944), (0.67361104, 0.4131944), (0.7604166, 0.32638887), (0.8472222, 0.32638887), (0.8472222, 0.4131944), (0.7604166, 0.4131944), (0.8472222, 0.32638887), (0.9340277, 0.32638887), (0.9340277, 0.4131944), (0.8472222, 0.4131944), (0.9340277, 0.32638887), (1.0208333, 0.32638887), (1.0208333, 0.4131944), (0.9340277, 0.4131944), (1.0208333, 0.32638887), (1.1076388, 0.32638887), (1.1076388, 0.4131944), (1.0208333, 0.4131944), (1.1076388, 0.32638887), (1.1944444, 0.32638887), (1.1944444, 0.4131944), (1.1076388, 0.4131944), (1.1944444, 0.32638887), (1.28125, 0.32638887), (1.28125, 0.4131944), (1.1944444, 0.4131944), (1.28125, 0.32638887), (1.3680553, 0.32638887), (1.3680553, 0.4131944), (1.28125, 0.4131944), (1.3680553, 0.32638887), (1.454861, 0.32638887), (1.454861, 0.4131944), (1.3680553, 0.4131944), (1.454861, 0.32638887), (1.5416666, 0.32638887), (1.5416666, 0.4131944), (1.454861, 0.4131944), (-0.5416666, 0.4131944), (-0.4548611, 0.4131944), (-0.4548611, 0.5), (-0.5416666, 0.5), (-0.4548611, 0.4131944), (-0.36805552, 0.4131944), (-0.36805552, 0.5), (-0.4548611, 0.5), (-0.36805552, 0.4131944), (-0.28125, 0.4131944), (-0.28125, 0.5), (-0.36805552, 0.5), (-0.28125, 0.4131944), (-0.19444448, 0.4131944), (-0.19444448, 0.5), (-0.28125, 0.5), (-0.19444448, 0.4131944), (-0.107638896, 0.4131944), (-0.107638896, 0.5), (-0.19444448, 0.5), (-0.107638896, 0.4131944), (-0.020833313, 0.4131944), (-0.020833313, 0.5), (-0.107638896, 0.5), (-0.020833313, 0.4131944), (0.06597221, 0.4131944), (0.06597221, 0.5), (-0.020833313, 0.5), (0.06597221, 0.4131944), (0.15277776, 0.4131944), (0.15277776, 0.5), (0.06597221, 0.5), (0.15277776, 0.4131944), (0.23958334, 0.4131944), (0.23958334, 0.5), (0.15277776, 0.5), (0.23958334, 0.4131944), (0.32638887, 0.4131944), (0.32638887, 0.5), (0.23958334, 0.5), (0.32638887, 0.4131944), (0.4131944, 0.4131944), (0.4131944, 0.5), (0.32638887, 0.5), (0.4131944, 0.4131944), (0.5, 0.4131944), (0.5, 0.5), (0.4131944, 0.5), (0.5, 0.4131944), (0.5868055, 0.4131944), (0.5868055, 0.5), (0.5, 0.5), (0.5868055, 0.4131944), (0.67361104, 0.4131944), (0.67361104, 0.5), (0.5868055, 0.5), (0.67361104, 0.4131944), (0.7604166, 0.4131944), (0.7604166, 0.5), (0.67361104, 0.5), (0.7604166, 0.4131944), (0.8472222, 0.4131944), (0.8472222, 0.5), (0.7604166, 0.5), (0.8472222, 0.4131944), (0.9340277, 0.4131944), (0.9340277, 0.5), (0.8472222, 0.5), (0.9340277, 0.4131944), (1.0208333, 0.4131944), (1.0208333, 0.5), (0.9340277, 0.5), (1.0208333, 0.4131944), (1.1076388, 0.4131944), (1.1076388, 0.5), (1.0208333, 0.5), (1.1076388, 0.4131944), (1.1944444, 0.4131944), (1.1944444, 0.5), (1.1076388, 0.5), (1.1944444, 0.4131944), (1.28125, 0.4131944), (1.28125, 0.5), (1.1944444, 0.5), (1.28125, 0.4131944), (1.3680553, 0.4131944), (1.3680553, 0.5), (1.28125, 0.5), (1.3680553, 0.4131944), (1.454861, 0.4131944), (1.454861, 0.5), (1.3680553, 0.5), (1.454861, 0.4131944), (1.5416666, 0.4131944), (1.5416666, 0.5), (1.454861, 0.5), (-0.5416666, 0.5), (-0.4548611, 0.5), (-0.4548611, 0.5868055), (-0.5416666, 0.5868055), (-0.4548611, 0.5), (-0.36805552, 0.5), (-0.36805552, 0.5868055), (-0.4548611, 0.5868055), (-0.36805552, 0.5), (-0.28125, 0.5), (-0.28125, 0.5868055), (-0.36805552, 0.5868055), (-0.28125, 0.5), (-0.19444448, 0.5), (-0.19444448, 0.5868055), (-0.28125, 0.5868055), (-0.19444448, 0.5), (-0.107638896, 0.5), (-0.107638896, 0.5868055), (-0.19444448, 0.5868055), (-0.107638896, 0.5), (-0.020833313, 0.5), (-0.020833313, 0.5868055), (-0.107638896, 0.5868055), (-0.020833313, 0.5), (0.06597221, 0.5), (0.06597221, 0.5868055), (-0.020833313, 0.5868055), (0.06597221, 0.5), (0.15277776, 0.5), (0.15277776, 0.5868055), (0.06597221, 0.5868055), (0.15277776, 0.5), (0.23958334, 0.5), (0.23958334, 0.5868055), (0.15277776, 0.5868055), (0.23958334, 0.5), (0.32638887, 0.5), (0.32638887, 0.5868055), (0.23958334, 0.5868055), (0.32638887, 0.5), (0.4131944, 0.5), (0.4131944, 0.5868055), (0.32638887, 0.5868055), (0.4131944, 0.5), (0.5, 0.5), (0.5, 0.5868055), (0.4131944, 0.5868055), (0.5, 0.5), (0.5868055, 0.5), (0.5868055, 0.5868055), (0.5, 0.5868055), (0.5868055, 0.5), (0.67361104, 0.5), (0.67361104, 0.5868055), (0.5868055, 0.5868055), (0.67361104, 0.5), (0.7604166, 0.5), (0.7604166, 0.5868055), (0.67361104, 0.5868055), (0.7604166, 0.5), (0.8472222, 0.5), (0.8472222, 0.5868055), (0.7604166, 0.5868055), (0.8472222, 0.5), (0.9340277, 0.5), (0.9340277, 0.5868055), (0.8472222, 0.5868055), (0.9340277, 0.5), (1.0208333, 0.5), (1.0208333, 0.5868055), (0.9340277, 0.5868055), (1.0208333, 0.5), (1.1076388, 0.5), (1.1076388, 0.5868055), (1.0208333, 0.5868055), (1.1076388, 0.5), (1.1944444, 0.5), (1.1944444, 0.5868055), (1.1076388, 0.5868055), (1.1944444, 0.5), (1.28125, 0.5), (1.28125, 0.5868055), (1.1944444, 0.5868055), (1.28125, 0.5), (1.3680553, 0.5), (1.3680553, 0.5868055), (1.28125, 0.5868055), (1.3680553, 0.5), (1.454861, 0.5), (1.454861, 0.5868055), (1.3680553, 0.5868055), (1.454861, 0.5), (1.5416666, 0.5), (1.5416666, 0.5868055), (1.454861, 0.5868055), (-0.5416666, 0.5868055), (-0.4548611, 0.5868055), (-0.4548611, 0.67361104), (-0.5416666, 0.67361104), (-0.4548611, 0.5868055), (-0.36805552, 0.5868055), (-0.36805552, 0.67361104), (-0.4548611, 0.67361104), (-0.36805552, 0.5868055), (-0.28125, 0.5868055), (-0.28125, 0.67361104), (-0.36805552, 0.67361104), (-0.28125, 0.5868055), (-0.19444448, 0.5868055), (-0.19444448, 0.67361104), (-0.28125, 0.67361104), (-0.19444448, 0.5868055), (-0.107638896, 0.5868055), (-0.107638896, 0.67361104), (-0.19444448, 0.67361104), (-0.107638896, 0.5868055), (-0.020833313, 0.5868055), (-0.020833313, 0.67361104), (-0.107638896, 0.67361104), (-0.020833313, 0.5868055), (0.06597221, 0.5868055), (0.06597221, 0.67361104), (-0.020833313, 0.67361104), (0.06597221, 0.5868055), (0.15277776, 0.5868055), (0.15277776, 0.67361104), (0.06597221, 0.67361104), (0.15277776, 0.5868055), (0.23958334, 0.5868055), (0.23958334, 0.67361104), (0.15277776, 0.67361104), (0.23958334, 0.5868055), (0.32638887, 0.5868055), (0.32638887, 0.67361104), (0.23958334, 0.67361104), (0.32638887, 0.5868055), (0.4131944, 0.5868055), (0.4131944, 0.67361104), (0.32638887, 0.67361104), (0.4131944, 0.5868055), (0.5, 0.5868055), (0.5, 0.67361104), (0.4131944, 0.67361104), (0.5, 0.5868055), (0.5868055, 0.5868055), (0.5868055, 0.67361104), (0.5, 0.67361104), (0.5868055, 0.5868055), (0.67361104, 0.5868055), (0.67361104, 0.67361104), (0.5868055, 0.67361104), (0.67361104, 0.5868055), (0.7604166, 0.5868055), (0.7604166, 0.67361104), (0.67361104, 0.67361104), (0.7604166, 0.5868055), (0.8472222, 0.5868055), (0.8472222, 0.67361104), (0.7604166, 0.67361104), (0.8472222, 0.5868055), (0.9340277, 0.5868055), (0.9340277, 0.67361104), (0.8472222, 0.67361104), (0.9340277, 0.5868055), (1.0208333, 0.5868055), (1.0208333, 0.67361104), (0.9340277, 0.67361104), (1.0208333, 0.5868055), (1.1076388, 0.5868055), (1.1076388, 0.67361104), (1.0208333, 0.67361104), (1.1076388, 0.5868055), (1.1944444, 0.5868055), (1.1944444, 0.67361104), (1.1076388, 0.67361104), (1.1944444, 0.5868055), (1.28125, 0.5868055), (1.28125, 0.67361104), (1.1944444, 0.67361104), (1.28125, 0.5868055), (1.3680553, 0.5868055), (1.3680553, 0.67361104), (1.28125, 0.67361104), (1.3680553, 0.5868055), (1.454861, 0.5868055), (1.454861, 0.67361104), (1.3680553, 0.67361104), (1.454861, 0.5868055), (1.5416666, 0.5868055), (1.5416666, 0.67361104), (1.454861, 0.67361104), (-0.5416666, 0.67361104), (-0.4548611, 0.67361104), (-0.4548611, 0.7604167), (-0.5416666, 0.7604167), (-0.4548611, 0.67361104), (-0.36805552, 0.67361104), (-0.36805552, 0.7604167), (-0.4548611, 0.7604167), (-0.36805552, 0.67361104), (-0.28125, 0.67361104), (-0.28125, 0.7604167), (-0.36805552, 0.7604167), (-0.28125, 0.67361104), (-0.19444448, 0.67361104), (-0.19444448, 0.7604167), (-0.28125, 0.7604167), (-0.19444448, 0.67361104), (-0.107638896, 0.67361104), (-0.107638896, 0.7604167), (-0.19444448, 0.7604167), (-0.107638896, 0.67361104), (-0.020833313, 0.67361104), (-0.020833313, 0.7604167), (-0.107638896, 0.7604167), (-0.020833313, 0.67361104), (0.06597221, 0.67361104), (0.06597221, 0.7604167), (-0.020833313, 0.7604167), (0.06597221, 0.67361104), (0.15277776, 0.67361104), (0.15277776, 0.7604167), (0.06597221, 0.7604167), (0.15277776, 0.67361104), (0.23958334, 0.67361104), (0.23958334, 0.7604167), (0.15277776, 0.7604167), (0.23958334, 0.67361104), (0.32638887, 0.67361104), (0.32638887, 0.7604167), (0.23958334, 0.7604167), (0.32638887, 0.67361104), (0.4131944, 0.67361104), (0.4131944, 0.7604167), (0.32638887, 0.7604167), (0.4131944, 0.67361104), (0.5, 0.67361104), (0.5, 0.7604167), (0.4131944, 0.7604167), (0.5, 0.67361104), (0.5868055, 0.67361104), (0.5868055, 0.7604167), (0.5, 0.7604167), (0.5868055, 0.67361104), (0.67361104, 0.67361104), (0.67361104, 0.7604167), (0.5868055, 0.7604167), (0.67361104, 0.67361104), (0.7604166, 0.67361104), (0.7604166, 0.7604167), (0.67361104, 0.7604167), (0.7604166, 0.67361104), (0.8472222, 0.67361104), (0.8472222, 0.7604167), (0.7604166, 0.7604167), (0.8472222, 0.67361104), (0.9340277, 0.67361104), (0.9340277, 0.7604167), (0.8472222, 0.7604167), (0.9340277, 0.67361104), (1.0208333, 0.67361104), (1.0208333, 0.7604167), (0.9340277, 0.7604167), (1.0208333, 0.67361104), (1.1076388, 0.67361104), (1.1076388, 0.7604167), (1.0208333, 0.7604167), (1.1076388, 0.67361104), (1.1944444, 0.67361104), (1.1944444, 0.7604167), (1.1076388, 0.7604167), (1.1944444, 0.67361104), (1.28125, 0.67361104), (1.28125, 0.7604167), (1.1944444, 0.7604167), (1.28125, 0.67361104), (1.3680553, 0.67361104), (1.3680553, 0.7604167), (1.28125, 0.7604167), (1.3680553, 0.67361104), (1.454861, 0.67361104), (1.454861, 0.7604167), (1.3680553, 0.7604167), (1.454861, 0.67361104), (1.5416666, 0.67361104), (1.5416666, 0.7604167), (1.454861, 0.7604167), (-0.5416666, 0.7604167), (-0.4548611, 0.7604167), (-0.4548611, 0.8472222), (-0.5416666, 0.8472222), (-0.4548611, 0.7604167), (-0.36805552, 0.7604167), (-0.36805552, 0.8472222), (-0.4548611, 0.8472222), (-0.36805552, 0.7604167), (-0.28125, 0.7604167), (-0.28125, 0.8472222), (-0.36805552, 0.8472222), (-0.28125, 0.7604167), (-0.19444448, 0.7604167), (-0.19444448, 0.8472222), (-0.28125, 0.8472222), (-0.19444448, 0.7604167), (-0.107638896, 0.7604167), (-0.107638896, 0.8472222), (-0.19444448, 0.8472222), (-0.107638896, 0.7604167), (-0.020833313, 0.7604167), (-0.020833313, 0.8472222), (-0.107638896, 0.8472222), (-0.020833313, 0.7604167), (0.06597221, 0.7604167), (0.06597221, 0.8472222), (-0.020833313, 0.8472222), (0.06597221, 0.7604167), (0.15277776, 0.7604167), (0.15277776, 0.8472222), (0.06597221, 0.8472222), (0.15277776, 0.7604167), (0.23958334, 0.7604167), (0.23958334, 0.8472222), (0.15277776, 0.8472222), (0.23958334, 0.7604167), (0.32638887, 0.7604167), (0.32638887, 0.8472222), (0.23958334, 0.8472222), (0.32638887, 0.7604167), (0.4131944, 0.7604167), (0.4131944, 0.8472222), (0.32638887, 0.8472222), (0.4131944, 0.7604167), (0.5, 0.7604167), (0.5, 0.8472222), (0.4131944, 0.8472222), (0.5, 0.7604167), (0.5868055, 0.7604167), (0.5868055, 0.8472222), (0.5, 0.8472222), (0.5868055, 0.7604167), (0.67361104, 0.7604167), (0.67361104, 0.8472222), (0.5868055, 0.8472222), (0.67361104, 0.7604167), (0.7604166, 0.7604167), (0.7604166, 0.8472222), (0.67361104, 0.8472222), (0.7604166, 0.7604167), (0.8472222, 0.7604167), (0.8472222, 0.8472222), (0.7604166, 0.8472222), (0.8472222, 0.7604167), (0.9340277, 0.7604167), (0.9340277, 0.8472222), (0.8472222, 0.8472222), (0.9340277, 0.7604167), (1.0208333, 0.7604167), (1.0208333, 0.8472222), (0.9340277, 0.8472222), (1.0208333, 0.7604167), (1.1076388, 0.7604167), (1.1076388, 0.8472222), (1.0208333, 0.8472222), (1.1076388, 0.7604167), (1.1944444, 0.7604167), (1.1944444, 0.8472222), (1.1076388, 0.8472222), (1.1944444, 0.7604167), (1.28125, 0.7604167), (1.28125, 0.8472222), (1.1944444, 0.8472222), (1.28125, 0.7604167), (1.3680553, 0.7604167), (1.3680553, 0.8472222), (1.28125, 0.8472222), (1.3680553, 0.7604167), (1.454861, 0.7604167), (1.454861, 0.8472222), (1.3680553, 0.8472222), (1.454861, 0.7604167), (1.5416666, 0.7604167), (1.5416666, 0.8472222), (1.454861, 0.8472222), (-0.5416666, 0.8472222), (-0.4548611, 0.8472222), (-0.4548611, 0.93402773), (-0.5416666, 0.93402773), (-0.4548611, 0.8472222), (-0.36805552, 0.8472222), (-0.36805552, 0.93402773), (-0.4548611, 0.93402773), (-0.36805552, 0.8472222), (-0.28125, 0.8472222), (-0.28125, 0.93402773), (-0.36805552, 0.93402773), (-0.28125, 0.8472222), (-0.19444448, 0.8472222), (-0.19444448, 0.93402773), (-0.28125, 0.93402773), (-0.19444448, 0.8472222), (-0.107638896, 0.8472222), (-0.107638896, 0.93402773), (-0.19444448, 0.93402773), (-0.107638896, 0.8472222), (-0.020833313, 0.8472222), (-0.020833313, 0.93402773), (-0.107638896, 0.93402773), (-0.020833313, 0.8472222), (0.06597221, 0.8472222), (0.06597221, 0.93402773), (-0.020833313, 0.93402773), (0.06597221, 0.8472222), (0.15277776, 0.8472222), (0.15277776, 0.93402773), (0.06597221, 0.93402773), (0.15277776, 0.8472222), (0.23958334, 0.8472222), (0.23958334, 0.93402773), (0.15277776, 0.93402773), (0.23958334, 0.8472222), (0.32638887, 0.8472222), (0.32638887, 0.93402773), (0.23958334, 0.93402773), (0.32638887, 0.8472222), (0.4131944, 0.8472222), (0.4131944, 0.93402773), (0.32638887, 0.93402773), (0.4131944, 0.8472222), (0.5, 0.8472222), (0.5, 0.93402773), (0.4131944, 0.93402773), (0.5, 0.8472222), (0.5868055, 0.8472222), (0.5868055, 0.93402773), (0.5, 0.93402773), (0.5868055, 0.8472222), (0.67361104, 0.8472222), (0.67361104, 0.93402773), (0.5868055, 0.93402773), (0.67361104, 0.8472222), (0.7604166, 0.8472222), (0.7604166, 0.93402773), (0.67361104, 0.93402773), (0.7604166, 0.8472222), (0.8472222, 0.8472222), (0.8472222, 0.93402773), (0.7604166, 0.93402773), (0.8472222, 0.8472222), (0.9340277, 0.8472222), (0.9340277, 0.93402773), (0.8472222, 0.93402773), (0.9340277, 0.8472222), (1.0208333, 0.8472222), (1.0208333, 0.93402773), (0.9340277, 0.93402773), (1.0208333, 0.8472222), (1.1076388, 0.8472222), (1.1076388, 0.93402773), (1.0208333, 0.93402773), (1.1076388, 0.8472222), (1.1944444, 0.8472222), (1.1944444, 0.93402773), (1.1076388, 0.93402773), (1.1944444, 0.8472222), (1.28125, 0.8472222), (1.28125, 0.93402773), (1.1944444, 0.93402773), (1.28125, 0.8472222), (1.3680553, 0.8472222), (1.3680553, 0.93402773), (1.28125, 0.93402773), (1.3680553, 0.8472222), (1.454861, 0.8472222), (1.454861, 0.93402773), (1.3680553, 0.93402773), (1.454861, 0.8472222), (1.5416666, 0.8472222), (1.5416666, 0.93402773), (1.454861, 0.93402773), (-0.5416666, 0.93402773), (-0.4548611, 0.93402773), (-0.4548611, 1.0208333), (-0.5416666, 1.0208333), (-0.4548611, 0.93402773), (-0.36805552, 0.93402773), (-0.36805552, 1.0208333), (-0.4548611, 1.0208333), (-0.36805552, 0.93402773), (-0.28125, 0.93402773), (-0.28125, 1.0208333), (-0.36805552, 1.0208333), (-0.28125, 0.93402773), (-0.19444448, 0.93402773), (-0.19444448, 1.0208333), (-0.28125, 1.0208333), (-0.19444448, 0.93402773), (-0.107638896, 0.93402773), (-0.107638896, 1.0208333), (-0.19444448, 1.0208333), (-0.107638896, 0.93402773), (-0.020833313, 0.93402773), (-0.020833313, 1.0208333), (-0.107638896, 1.0208333), (-0.020833313, 0.93402773), (0.06597221, 0.93402773), (0.06597221, 1.0208333), (-0.020833313, 1.0208333), (0.06597221, 0.93402773), (0.15277776, 0.93402773), (0.15277776, 1.0208333), (0.06597221, 1.0208333), (0.15277776, 0.93402773), (0.23958334, 0.93402773), (0.23958334, 1.0208333), (0.15277776, 1.0208333), (0.23958334, 0.93402773), (0.32638887, 0.93402773), (0.32638887, 1.0208333), (0.23958334, 1.0208333), (0.32638887, 0.93402773), (0.4131944, 0.93402773), (0.4131944, 1.0208333), (0.32638887, 1.0208333), (0.4131944, 0.93402773), (0.5, 0.93402773), (0.5, 1.0208333), (0.4131944, 1.0208333), (0.5, 0.93402773), (0.5868055, 0.93402773), (0.5868055, 1.0208333), (0.5, 1.0208333), (0.5868055, 0.93402773), (0.67361104, 0.93402773), (0.67361104, 1.0208333), (0.5868055, 1.0208333), (0.67361104, 0.93402773), (0.7604166, 0.93402773), (0.7604166, 1.0208333), (0.67361104, 1.0208333), (0.7604166, 0.93402773), (0.8472222, 0.93402773), (0.8472222, 1.0208333), (0.7604166, 1.0208333), (0.8472222, 0.93402773), (0.9340277, 0.93402773), (0.9340277, 1.0208333), (0.8472222, 1.0208333), (0.9340277, 0.93402773), (1.0208333, 0.93402773), (1.0208333, 1.0208333), (0.9340277, 1.0208333), (1.0208333, 0.93402773), (1.1076388, 0.93402773), (1.1076388, 1.0208333), (1.0208333, 1.0208333), (1.1076388, 0.93402773), (1.1944444, 0.93402773), (1.1944444, 1.0208333), (1.1076388, 1.0208333), (1.1944444, 0.93402773), (1.28125, 0.93402773), (1.28125, 1.0208333), (1.1944444, 1.0208333), (1.28125, 0.93402773), (1.3680553, 0.93402773), (1.3680553, 1.0208333), (1.28125, 1.0208333), (1.3680553, 0.93402773), (1.454861, 0.93402773), (1.454861, 1.0208333), (1.3680553, 1.0208333), (1.454861, 0.93402773), (1.5416666, 0.93402773), (1.5416666, 1.0208333), (1.454861, 1.0208333), (-0.5416666, 1.0208333), (-0.4548611, 1.0208333), (-0.4548611, 1.1076388), (-0.5416666, 1.1076388), (-0.4548611, 1.0208333), (-0.36805552, 1.0208333), (-0.36805552, 1.1076388), (-0.4548611, 1.1076388), (-0.36805552, 1.0208333), (-0.28125, 1.0208333), (-0.28125, 1.1076388), (-0.36805552, 1.1076388), (-0.28125, 1.0208333), (-0.19444448, 1.0208333), (-0.19444448, 1.1076388), (-0.28125, 1.1076388), (-0.19444448, 1.0208333), (-0.107638896, 1.0208333), (-0.107638896, 1.1076388), (-0.19444448, 1.1076388), (-0.107638896, 1.0208333), (-0.020833313, 1.0208333), (-0.020833313, 1.1076388), (-0.107638896, 1.1076388), (-0.020833313, 1.0208333), (0.06597221, 1.0208333), (0.06597221, 1.1076388), (-0.020833313, 1.1076388), (0.06597221, 1.0208333), (0.15277776, 1.0208333), (0.15277776, 1.1076388), (0.06597221, 1.1076388), (0.15277776, 1.0208333), (0.23958334, 1.0208333), (0.23958334, 1.1076388), (0.15277776, 1.1076388), (0.23958334, 1.0208333), (0.32638887, 1.0208333), (0.32638887, 1.1076388), (0.23958334, 1.1076388), (0.32638887, 1.0208333), (0.4131944, 1.0208333), (0.4131944, 1.1076388), (0.32638887, 1.1076388), (0.4131944, 1.0208333), (0.5, 1.0208333), (0.5, 1.1076388), (0.4131944, 1.1076388), (0.5, 1.0208333), (0.5868055, 1.0208333), (0.5868055, 1.1076388), (0.5, 1.1076388), (0.5868055, 1.0208333), (0.67361104, 1.0208333), (0.67361104, 1.1076388), (0.5868055, 1.1076388), (0.67361104, 1.0208333), (0.7604166, 1.0208333), (0.7604166, 1.1076388), (0.67361104, 1.1076388), (0.7604166, 1.0208333), (0.8472222, 1.0208333), (0.8472222, 1.1076388), (0.7604166, 1.1076388), (0.8472222, 1.0208333), (0.9340277, 1.0208333), (0.9340277, 1.1076388), (0.8472222, 1.1076388), (0.9340277, 1.0208333), (1.0208333, 1.0208333), (1.0208333, 1.1076388), (0.9340277, 1.1076388), (1.0208333, 1.0208333), (1.1076388, 1.0208333), (1.1076388, 1.1076388), (1.0208333, 1.1076388), (1.1076388, 1.0208333), (1.1944444, 1.0208333), (1.1944444, 1.1076388), (1.1076388, 1.1076388), (1.1944444, 1.0208333), (1.28125, 1.0208333), (1.28125, 1.1076388), (1.1944444, 1.1076388), (1.28125, 1.0208333), (1.3680553, 1.0208333), (1.3680553, 1.1076388), (1.28125, 1.1076388), (1.3680553, 1.0208333), (1.454861, 1.0208333), (1.454861, 1.1076388), (1.3680553, 1.1076388), (1.454861, 1.0208333), (1.5416666, 1.0208333), (1.5416666, 1.1076388), (1.454861, 1.1076388), (-0.5416666, 1.1076388), (-0.4548611, 1.1076388), (-0.4548611, 1.1944444), (-0.5416666, 1.1944444), (-0.4548611, 1.1076388), (-0.36805552, 1.1076388), (-0.36805552, 1.1944444), (-0.4548611, 1.1944444), (-0.36805552, 1.1076388), (-0.28125, 1.1076388), (-0.28125, 1.1944444), (-0.36805552, 1.1944444), (-0.28125, 1.1076388), (-0.19444448, 1.1076388), (-0.19444448, 1.1944444), (-0.28125, 1.1944444), (-0.19444448, 1.1076388), (-0.107638896, 1.1076388), (-0.107638896, 1.1944444), (-0.19444448, 1.1944444), (-0.107638896, 1.1076388), (-0.020833313, 1.1076388), (-0.020833313, 1.1944444), (-0.107638896, 1.1944444), (-0.020833313, 1.1076388), (0.06597221, 1.1076388), (0.06597221, 1.1944444), (-0.020833313, 1.1944444), (0.06597221, 1.1076388), (0.15277776, 1.1076388), (0.15277776, 1.1944444), (0.06597221, 1.1944444), (0.15277776, 1.1076388), (0.23958334, 1.1076388), (0.23958334, 1.1944444), (0.15277776, 1.1944444), (0.23958334, 1.1076388), (0.32638887, 1.1076388), (0.32638887, 1.1944444), (0.23958334, 1.1944444), (0.32638887, 1.1076388), (0.4131944, 1.1076388), (0.4131944, 1.1944444), (0.32638887, 1.1944444), (0.4131944, 1.1076388), (0.5, 1.1076388), (0.5, 1.1944444), (0.4131944, 1.1944444), (0.5, 1.1076388), (0.5868055, 1.1076388), (0.5868055, 1.1944444), (0.5, 1.1944444), (0.5868055, 1.1076388), (0.67361104, 1.1076388), (0.67361104, 1.1944444), (0.5868055, 1.1944444), (0.67361104, 1.1076388), (0.7604166, 1.1076388), (0.7604166, 1.1944444), (0.67361104, 1.1944444), (0.7604166, 1.1076388), (0.8472222, 1.1076388), (0.8472222, 1.1944444), (0.7604166, 1.1944444), (0.8472222, 1.1076388), (0.9340277, 1.1076388), (0.9340277, 1.1944444), (0.8472222, 1.1944444), (0.9340277, 1.1076388), (1.0208333, 1.1076388), (1.0208333, 1.1944444), (0.9340277, 1.1944444), (1.0208333, 1.1076388), (1.1076388, 1.1076388), (1.1076388, 1.1944444), (1.0208333, 1.1944444), (1.1076388, 1.1076388), (1.1944444, 1.1076388), (1.1944444, 1.1944444), (1.1076388, 1.1944444), (1.1944444, 1.1076388), (1.28125, 1.1076388), (1.28125, 1.1944444), (1.1944444, 1.1944444), (1.28125, 1.1076388), (1.3680553, 1.1076388), (1.3680553, 1.1944444), (1.28125, 1.1944444), (1.3680553, 1.1076388), (1.454861, 1.1076388), (1.454861, 1.1944444), (1.3680553, 1.1944444), (1.454861, 1.1076388), (1.5416666, 1.1076388), (1.5416666, 1.1944444), (1.454861, 1.1944444), (-0.5416666, 1.1944444), (-0.4548611, 1.1944444), (-0.4548611, 1.28125), (-0.5416666, 1.28125), (-0.4548611, 1.1944444), (-0.36805552, 1.1944444), (-0.36805552, 1.28125), (-0.4548611, 1.28125), (-0.36805552, 1.1944444), (-0.28125, 1.1944444), (-0.28125, 1.28125), (-0.36805552, 1.28125), (-0.28125, 1.1944444), (-0.19444448, 1.1944444), (-0.19444448, 1.28125), (-0.28125, 1.28125), (-0.19444448, 1.1944444), (-0.107638896, 1.1944444), (-0.107638896, 1.28125), (-0.19444448, 1.28125), (-0.107638896, 1.1944444), (-0.020833313, 1.1944444), (-0.020833313, 1.28125), (-0.107638896, 1.28125), (-0.020833313, 1.1944444), (0.06597221, 1.1944444), (0.06597221, 1.28125), (-0.020833313, 1.28125), (0.06597221, 1.1944444), (0.15277776, 1.1944444), (0.15277776, 1.28125), (0.06597221, 1.28125), (0.15277776, 1.1944444), (0.23958334, 1.1944444), (0.23958334, 1.28125), (0.15277776, 1.28125), (0.23958334, 1.1944444), (0.32638887, 1.1944444), (0.32638887, 1.28125), (0.23958334, 1.28125), (0.32638887, 1.1944444), (0.4131944, 1.1944444), (0.4131944, 1.28125), (0.32638887, 1.28125), (0.4131944, 1.1944444), (0.5, 1.1944444), (0.5, 1.28125), (0.4131944, 1.28125), (0.5, 1.1944444), (0.5868055, 1.1944444), (0.5868055, 1.28125), (0.5, 1.28125), (0.5868055, 1.1944444), (0.67361104, 1.1944444), (0.67361104, 1.28125), (0.5868055, 1.28125), (0.67361104, 1.1944444), (0.7604166, 1.1944444), (0.7604166, 1.28125), (0.67361104, 1.28125), (0.7604166, 1.1944444), (0.8472222, 1.1944444), (0.8472222, 1.28125), (0.7604166, 1.28125), (0.8472222, 1.1944444), (0.9340277, 1.1944444), (0.9340277, 1.28125), (0.8472222, 1.28125), (0.9340277, 1.1944444), (1.0208333, 1.1944444), (1.0208333, 1.28125), (0.9340277, 1.28125), (1.0208333, 1.1944444), (1.1076388, 1.1944444), (1.1076388, 1.28125), (1.0208333, 1.28125), (1.1076388, 1.1944444), (1.1944444, 1.1944444), (1.1944444, 1.28125), (1.1076388, 1.28125), (1.1944444, 1.1944444), (1.28125, 1.1944444), (1.28125, 1.28125), (1.1944444, 1.28125), (1.28125, 1.1944444), (1.3680553, 1.1944444), (1.3680553, 1.28125), (1.28125, 1.28125), (1.3680553, 1.1944444), (1.454861, 1.1944444), (1.454861, 1.28125), (1.3680553, 1.28125), (1.454861, 1.1944444), (1.5416666, 1.1944444), (1.5416666, 1.28125), (1.454861, 1.28125), (-0.5416666, 1.28125), (-0.4548611, 1.28125), (-0.4548611, 1.3680553), (-0.5416666, 1.3680553), (-0.4548611, 1.28125), (-0.36805552, 1.28125), (-0.36805552, 1.3680553), (-0.4548611, 1.3680553), (-0.36805552, 1.28125), (-0.28125, 1.28125), (-0.28125, 1.3680553), (-0.36805552, 1.3680553), (-0.28125, 1.28125), (-0.19444448, 1.28125), (-0.19444448, 1.3680553), (-0.28125, 1.3680553), (-0.19444448, 1.28125), (-0.107638896, 1.28125), (-0.107638896, 1.3680553), (-0.19444448, 1.3680553), (-0.107638896, 1.28125), (-0.020833313, 1.28125), (-0.020833313, 1.3680553), (-0.107638896, 1.3680553), (-0.020833313, 1.28125), (0.06597221, 1.28125), (0.06597221, 1.3680553), (-0.020833313, 1.3680553), (0.06597221, 1.28125), (0.15277776, 1.28125), (0.15277776, 1.3680553), (0.06597221, 1.3680553), (0.15277776, 1.28125), (0.23958334, 1.28125), (0.23958334, 1.3680553), (0.15277776, 1.3680553), (0.23958334, 1.28125), (0.32638887, 1.28125), (0.32638887, 1.3680553), (0.23958334, 1.3680553), (0.32638887, 1.28125), (0.4131944, 1.28125), (0.4131944, 1.3680553), (0.32638887, 1.3680553), (0.4131944, 1.28125), (0.5, 1.28125), (0.5, 1.3680553), (0.4131944, 1.3680553), (0.5, 1.28125), (0.5868055, 1.28125), (0.5868055, 1.3680553), (0.5, 1.3680553), (0.5868055, 1.28125), (0.67361104, 1.28125), (0.67361104, 1.3680553), (0.5868055, 1.3680553), (0.67361104, 1.28125), (0.7604166, 1.28125), (0.7604166, 1.3680553), (0.67361104, 1.3680553), (0.7604166, 1.28125), (0.8472222, 1.28125), (0.8472222, 1.3680553), (0.7604166, 1.3680553), (0.8472222, 1.28125), (0.9340277, 1.28125), (0.9340277, 1.3680553), (0.8472222, 1.3680553), (0.9340277, 1.28125), (1.0208333, 1.28125), (1.0208333, 1.3680553), (0.9340277, 1.3680553), (1.0208333, 1.28125), (1.1076388, 1.28125), (1.1076388, 1.3680553), (1.0208333, 1.3680553), (1.1076388, 1.28125), (1.1944444, 1.28125), (1.1944444, 1.3680553), (1.1076388, 1.3680553), (1.1944444, 1.28125), (1.28125, 1.28125), (1.28125, 1.3680553), (1.1944444, 1.3680553), (1.28125, 1.28125), (1.3680553, 1.28125), (1.3680553, 1.3680553), (1.28125, 1.3680553), (1.3680553, 1.28125), (1.454861, 1.28125), (1.454861, 1.3680553), (1.3680553, 1.3680553), (1.454861, 1.28125), (1.5416666, 1.28125), (1.5416666, 1.3680553), (1.454861, 1.3680553), (-0.5416666, 1.3680553), (-0.4548611, 1.3680553), (-0.4548611, 1.4548609), (-0.5416666, 1.4548609), (-0.4548611, 1.3680553), (-0.36805552, 1.3680553), (-0.36805552, 1.4548609), (-0.4548611, 1.4548609), (-0.36805552, 1.3680553), (-0.28125, 1.3680553), (-0.28125, 1.4548609), (-0.36805552, 1.4548609), (-0.28125, 1.3680553), (-0.19444448, 1.3680553), (-0.19444448, 1.4548609), (-0.28125, 1.4548609), (-0.19444448, 1.3680553), (-0.107638896, 1.3680553), (-0.107638896, 1.4548609), (-0.19444448, 1.4548609), (-0.107638896, 1.3680553), (-0.020833313, 1.3680553), (-0.020833313, 1.4548609), (-0.107638896, 1.4548609), (-0.020833313, 1.3680553), (0.06597221, 1.3680553), (0.06597221, 1.4548609), (-0.020833313, 1.4548609), (0.06597221, 1.3680553), (0.15277776, 1.3680553), (0.15277776, 1.4548609), (0.06597221, 1.4548609), (0.15277776, 1.3680553), (0.23958334, 1.3680553), (0.23958334, 1.4548609), (0.15277776, 1.4548609), (0.23958334, 1.3680553), (0.32638887, 1.3680553), (0.32638887, 1.4548609), (0.23958334, 1.4548609), (0.32638887, 1.3680553), (0.4131944, 1.3680553), (0.4131944, 1.4548609), (0.32638887, 1.4548609), (0.4131944, 1.3680553), (0.5, 1.3680553), (0.5, 1.4548609), (0.4131944, 1.4548609), (0.5, 1.3680553), (0.5868055, 1.3680553), (0.5868055, 1.4548609), (0.5, 1.4548609), (0.5868055, 1.3680553), (0.67361104, 1.3680553), (0.67361104, 1.4548609), (0.5868055, 1.4548609), (0.67361104, 1.3680553), (0.7604166, 1.3680553), (0.7604166, 1.4548609), (0.67361104, 1.4548609), (0.7604166, 1.3680553), (0.8472222, 1.3680553), (0.8472222, 1.4548609), (0.7604166, 1.4548609), (0.8472222, 1.3680553), (0.9340277, 1.3680553), (0.9340277, 1.4548609), (0.8472222, 1.4548609), (0.9340277, 1.3680553), (1.0208333, 1.3680553), (1.0208333, 1.4548609), (0.9340277, 1.4548609), (1.0208333, 1.3680553), (1.1076388, 1.3680553), (1.1076388, 1.4548609), (1.0208333, 1.4548609), (1.1076388, 1.3680553), (1.1944444, 1.3680553), (1.1944444, 1.4548609), (1.1076388, 1.4548609), (1.1944444, 1.3680553), (1.28125, 1.3680553), (1.28125, 1.4548609), (1.1944444, 1.4548609), (1.28125, 1.3680553), (1.3680553, 1.3680553), (1.3680553, 1.4548609), (1.28125, 1.4548609), (1.3680553, 1.3680553), (1.454861, 1.3680553), (1.454861, 1.4548609), (1.3680553, 1.4548609), (1.454861, 1.3680553), (1.5416666, 1.3680553), (1.5416666, 1.4548609), (1.454861, 1.4548609), (-0.5416666, 1.4548609), (-0.4548611, 1.4548609), (-0.4548611, 1.5416666), (-0.5416666, 1.5416666), (-0.4548611, 1.4548609), (-0.36805552, 1.4548609), (-0.36805552, 1.5416666), (-0.4548611, 1.5416666), (-0.36805552, 1.4548609), (-0.28125, 1.4548609), (-0.28125, 1.5416666), (-0.36805552, 1.5416666), (-0.28125, 1.4548609), (-0.19444448, 1.4548609), (-0.19444448, 1.5416666), (-0.28125, 1.5416666), (-0.19444448, 1.4548609), (-0.107638896, 1.4548609), (-0.107638896, 1.5416666), (-0.19444448, 1.5416666), (-0.107638896, 1.4548609), (-0.020833313, 1.4548609), (-0.020833313, 1.5416666), (-0.107638896, 1.5416666), (-0.020833313, 1.4548609), (0.06597221, 1.4548609), (0.06597221, 1.5416666), (-0.020833313, 1.5416666), (0.06597221, 1.4548609), (0.15277776, 1.4548609), (0.15277776, 1.5416666), (0.06597221, 1.5416666), (0.15277776, 1.4548609), (0.23958334, 1.4548609), (0.23958334, 1.5416666), (0.15277776, 1.5416666), (0.23958334, 1.4548609), (0.32638887, 1.4548609), (0.32638887, 1.5416666), (0.23958334, 1.5416666), (0.32638887, 1.4548609), (0.4131944, 1.4548609), (0.4131944, 1.5416666), (0.32638887, 1.5416666), (0.4131944, 1.4548609), (0.5, 1.4548609), (0.5, 1.5416666), (0.4131944, 1.5416666), (0.5, 1.4548609), (0.5868055, 1.4548609), (0.5868055, 1.5416666), (0.5, 1.5416666), (0.5868055, 1.4548609), (0.67361104, 1.4548609), (0.67361104, 1.5416666), (0.5868055, 1.5416666), (0.67361104, 1.4548609), (0.7604166, 1.4548609), (0.7604166, 1.5416666), (0.67361104, 1.5416666), (0.7604166, 1.4548609), (0.8472222, 1.4548609), (0.8472222, 1.5416666), (0.7604166, 1.5416666), (0.8472222, 1.4548609), (0.9340277, 1.4548609), (0.9340277, 1.5416666), (0.8472222, 1.5416666), (0.9340277, 1.4548609), (1.0208333, 1.4548609), (1.0208333, 1.5416666), (0.9340277, 1.5416666), (1.0208333, 1.4548609), (1.1076388, 1.4548609), (1.1076388, 1.5416666), (1.0208333, 1.5416666), (1.1076388, 1.4548609), (1.1944444, 1.4548609), (1.1944444, 1.5416666), (1.1076388, 1.5416666), (1.1944444, 1.4548609), (1.28125, 1.4548609), (1.28125, 1.5416666), (1.1944444, 1.5416666), (1.28125, 1.4548609), (1.3680553, 1.4548609), (1.3680553, 1.5416666), (1.28125, 1.5416666), (1.3680553, 1.4548609), (1.454861, 1.4548609), (1.454861, 1.5416666), (1.3680553, 1.5416666), (1.454861, 1.4548609), (1.5416666, 1.4548609), (1.5416666, 1.5416666), (1.454861, 1.5416666)] (\n            interpolation = \"faceVarying\"\n        )\n        int[] primvars:st:indices = None\n        int[] primvars:uv2:indices = None\n        int[] primvars:uv3:indices = None\n        uniform token subdivisionScheme = \"none\"\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Material \"Material\" (\n        references = None\n    )\n    {\n        token outputs:mtlx:surface.connect = </Ground/Material/PreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (1584.082, 297.875)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 208\n\n        def Shader \"PreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor = (0, 0, 0) (\n                colorSpace = \"srgb_texture\"\n            )\n            color3f inputs:diffuseColor.connect = None\n            color3f inputs:emissiveColor.connect = </Ground/Material/Add.outputs:out>\n            float inputs:ior\n            float inputs:metallic\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:roughness = 1\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1358.9023, 236.28516)\n            int ui:nodegraph:node:stackingOrder = 208\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Swizzle\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_swizzle_color4_color3\"\n            string inputs:channels = \"rgb\"\n            color4f inputs:in = (0, 0.9914394, 1, 1) (\n                colorSpace = \"srgb_texture\"\n            )\n            color4f inputs:in.connect = </Ground/Material/Reflection_Diffuse.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (600.34766, 201.72266)\n            int ui:nodegraph:node:stackingOrder = 214\n        }\n\n        def Shader \"Read_EmissionUV\"\n        {\n            uniform token info:id = \"ND_UsdPrimvarReader_vector2\"\n            float2 inputs:fallback\n            string inputs:varname = \"emissionUV\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (25.28125, 95.32422)\n            int ui:nodegraph:node:stackingOrder = 155\n        }\n\n        def Shader \"Read_AttenuationUV\"\n        {\n            uniform token info:id = \"ND_UsdPrimvarReader_vector2\"\n            float2 inputs:fallback\n            string inputs:varname = \"attenuationUV\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (21.964844, 237.73828)\n            int ui:nodegraph:node:stackingOrder = 155\n        }\n\n        def Shader \"ViewDirection\"\n        {\n            uniform token info:id = \"ND_realitykit_viewdirection_vector3\"\n            float3 outputs:out\n            float2 ui:nodegraph:node:pos = (3.890625, 370.65625)\n            int ui:nodegraph:node:stackingOrder = 124\n        }\n\n        def Shader \"Reflection_Diffuse\"\n        {\n            uniform token info:id = \"ND_realitykit_light_spill_diffuse\"\n            asset inputs:attenuationMap = @DefaultAttenuationMap.exr@\n            float2 inputs:attenuationUV.connect = </Ground/Material/Read_AttenuationUV.outputs:out>\n            float2 inputs:emitterUV.connect = </Ground/Material/Read_EmissionUV.outputs:out>\n            color4f outputs:out\n            float2 ui:nodegraph:node:pos = (278.48438, 138.34766)\n            int ui:nodegraph:node:stackingOrder = 167\n        }\n\n        def Shader \"Reflection_Specular\"\n        {\n            uniform token info:id = \"ND_realitykit_light_spill_specular\"\n            float2 inputs:antialiasingStrength\n            float3 inputs:reflection_origin\n            float3 inputs:unreflected_direction.connect = </Ground/Material/ViewDirection.outputs:out>\n            color4f outputs:out\n            float2 ui:nodegraph:node:pos = (304.35938, 380.5625)\n            int ui:nodegraph:node:stackingOrder = 168\n        }\n\n        def Shader \"Separate4\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_separate4_color4\"\n            color4f inputs:in.connect = </Ground/Material/Reflection_Specular.outputs:out>\n            float outputs:outa\n            float outputs:outb\n            float outputs:outg\n            float outputs:outr\n            float2 ui:nodegraph:node:pos = (570.3125, 468.03516)\n            int ui:nodegraph:node:stackingOrder = 169\n        }\n\n        def Shader \"Combine3\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Ground/Material/Separate4.outputs:outr>\n            float inputs:in2.connect = </Ground/Material/Separate4.outputs:outg>\n            float inputs:in3.connect = </Ground/Material/Separate4.outputs:outb>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (748.46875, 459.0625)\n            int ui:nodegraph:node:stackingOrder = 174\n        }\n\n        def Shader \"Mix_1\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_mix_color3\"\n            color3f inputs:bg\n            color3f inputs:fg.connect = </Ground/Material/Combine3.outputs:out>\n            float inputs:mix.connect = </Ground/Material/Separate4.outputs:outa>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (934.75, 462.09375)\n            int ui:nodegraph:node:stackingOrder = 212\n        }\n\n        def Shader \"Add\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_add_color3\"\n            color3f inputs:in1.connect = </Ground/Material/Swizzle.outputs:out>\n            color3f inputs:in2.connect = </Ground/Material/Mix_1.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1128.5977, 255.71094)\n            int ui:nodegraph:node:stackingOrder = 210\n        }\n    }\n}\n\n"
  },
  {
    "path": "Music Kit/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere_Left\", \"Sphere_Right\", \"GridMaterial\"]\n    def \"SkyDome\" (\n        active = true\n        prepend references = @SkyDome.usdz@\n    )\n    {\n        float3 xformOp:scale = (0.01, 0.01, 0.01)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Xform \"Video_Dock\" (\n        references = None\n    )\n    {\n        double3 xformOp:translate = (0, 0.8, -3)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def Xform \"Player\"\n        {\n            double3 xformOp:translate = (0, 0.6, 0)\n            uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n            def RealityKitComponent \"CustomDockingRegion\"\n            {\n                token info:id = \"RealityKit.CustomDockingRegion\"\n\n                def RealityKitStruct \"m_bounds\"\n                {\n                    float3 max = (1.2, 0.5, 0)\n                    float3 min = (-1.2, -0.5, -0)\n                }\n            }\n        }\n\n        def \"Ground\" (\n            prepend references = @Ground/Ground.usda@\n        )\n        {\n        }\n    }\n}\n\n"
  },
  {
    "path": "Music Kit/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "Music Kit/README.md",
    "content": "# Music Kit\n\nPlay Apple Music directly inside your visionOS app using MusicKit.  \n\n## Enable MusicKit for your App ID\nThe following steps are <span style=\"color:red\">REQUIRED</span> to use MusicKit: \n\n* In [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources), click Identifiers in the sidebar.\n\n* On the top left, click the add button (+), select App IDs, then click Continue.\n\n* [Register an App ID](https://developer.apple.com/help/account/manage-identifiers/register-an-app-id).\n\n* Click the App Services tab.\n\n* Select the MusicKit checkbox.\n\n* Click Continue, review the registration information, and click Register.\n\n***Source**: [developer.apple.com](https://developer.apple.com/help/account/configure-app-services/musickit/)*\n\n\n\n## Video Preview\nhttps://github.com/user-attachments/assets/b9d1fde4-fe8e-49c0-8f96-d52fdcda59e7\n\n"
  },
  {
    "path": "Pencil/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"D66134B1-3681-4A8E-AFE5-29F257229F3B\"\n  }\n}"
  },
  {
    "path": "Pencil/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n      0.86602545,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.86602545,\n      0,\n      0.0035969093,\n      0.35542378,\n      0.62919164,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"65F6F990-A780-4474-B78B-572E0E4E273D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.86602545,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.86602545,\n      0,\n      1.1972517e-08,\n      2.6179132,\n      0.43191218,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"66168B71-AB05-424E-8B6C-D33D6E61B08F\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.5,\n      0,\n      0,\n      0.5,\n      0.8660254,\n      0,\n      0,\n      0.23875366,\n      0.4135335,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"AF09ED6F-1707-48FD-8720-65B998362C09\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      2.8836339,\n      -0.107588194,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Left\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Right\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"CB766F92-EE55-4A63-9401-E7B8C009764D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"D66134B1-3681-4A8E-AFE5-29F257229F3B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.26894823,\n      0.26934713,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\",\n        \"GridMaterial\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "Pencil/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "Pencil/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "Pencil/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "Pencil/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere_Left\", \"Sphere_Right\", \"GridMaterial\"]\n    def Sphere \"Sphere_Right\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Sphere \"Sphere_Left\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (-0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "Pencil/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "Pencil/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "Pencil/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "Pencil/Pencil/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Pencil/Pencil/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Pencil/Pencil/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "Pencil/Pencil/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Pencil/Pencil/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Pencil/Pencil/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Pencil/Pencil/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Pencil/Pencil/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Pencil/Pencil/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  Pencil\n//\n//  Created by IVAN CAMPOS on 4/27/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport PencilKit\n\nstruct CombinedView: View {\n    \n    @Environment(\\.openWindow) private var openWindow\n    \n    var body: some View {\n        HStack {\n            // EMPTY\n        }.task {\n            // Open multiple PencilKit windows with specific IDs for different configurations\n            openWindow(id: \"PencilKitBlack\")\n            openWindow(id: \"PencilKitWhite\")\n            openWindow(id: \"PencilKitClear\")\n        }\n    }\n}\n\nstruct ContentView: View {\n    @State var backgroundColor: UIColor\n    \n    var body: some View {\n        VStack {\n            // A view hosting a drawing canvas, passing the selected background color\n            CanvasView(color: backgroundColor)\n        }\n    }\n}\n \nstruct CanvasView: UIViewRepresentable {\n    @State var color: UIColor\n    @State private var canvasView: PKCanvasView = PKCanvasView()\n    @State private var toolPicker = PKToolPicker()\n    \n    func makeUIView(context: Context) -> PKCanvasView {\n        canvasView.drawingPolicy = .anyInput // Allows input from any source (finger, pencil)\n        canvasView.becomeFirstResponder() // Makes this view the first responder to receive input events\n        canvasView.isRulerActive.toggle() // Toggles the ruler's visibility\n        \n        if (color == .clear) {\n            canvasView.isOpaque = false // Makes the background transparent\n            canvasView.alpha = 1 // Sets the transparency level (opaque)\n            canvasView.backgroundColor = .clear // Applies a clear background\n        } else {\n            canvasView.isOpaque = true // Makes the background non-transparent\n            canvasView.backgroundColor = color // Applies the chosen color as background\n        }\n        \n        toolPicker.setVisible(true, forFirstResponder: canvasView) // Displays the tool picker\n        toolPicker.addObserver(canvasView) // Registers the canvas as an observer to tool picker events\n                \n        return canvasView\n    }\n    \n    func updateUIView(_ uiView: PKCanvasView, context: Context) { \n        // EMPTY\n    }\n}\n"
  },
  {
    "path": "Pencil/Pencil/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Pencil/Pencil/PencilApp.swift",
    "content": "//\n//  PencilApp.swift\n//  Pencil\n//\n//  Created by IVAN CAMPOS on 4/27/24.\n//\n\nimport SwiftUI\n\n@main\nstruct PencilApp: App {\n    \n    @Environment(\\.openURL) var openURL\n    \n    var body: some Scene {\n        \n        WindowGroup {\n            Text(\"Use Lasso Tool, then Drag & Drop\")\n            Button(\"Open Settings for Pencil\") {\n                let settingsUrl = URL(string: UIApplication.openSettingsURLString)!\n                openURL(settingsUrl)\n            }\n            CombinedView()\n        }\n        \n        WindowGroup(id:\"PencilKitBlack\") {\n            ContentView(backgroundColor: .black)\n        }\n        \n        WindowGroup(id:\"PencilKitWhite\") {\n            ContentView(backgroundColor: .white)\n        }\n        \n        WindowGroup(id:\"PencilKitClear\") {\n            ContentView(backgroundColor: .clear)\n        }\n        \n    }\n}\n"
  },
  {
    "path": "Pencil/Pencil/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Pencil/Pencil.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B59CB552BDCF9D100924FEE /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B59CB542BDCF9D100924FEE /* RealityKitContent */; };\n\t\t3B59CB572BDCF9D100924FEE /* PencilApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B59CB562BDCF9D100924FEE /* PencilApp.swift */; };\n\t\t3B59CB592BDCF9D100924FEE /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B59CB582BDCF9D100924FEE /* ContentView.swift */; };\n\t\t3B59CB5D2BDCF9D200924FEE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B59CB5C2BDCF9D200924FEE /* Assets.xcassets */; };\n\t\t3B59CB602BDCF9D200924FEE /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B59CB5F2BDCF9D200924FEE /* Preview Assets.xcassets */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B59CB4F2BDCF9D100924FEE /* Pencil.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Pencil.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B59CB532BDCF9D100924FEE /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3B59CB562BDCF9D100924FEE /* PencilApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PencilApp.swift; sourceTree = \"<group>\"; };\n\t\t3B59CB582BDCF9D100924FEE /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3B59CB5C2BDCF9D200924FEE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3B59CB5F2BDCF9D200924FEE /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3B59CB612BDCF9D200924FEE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B59CB4C2BDCF9D100924FEE /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B59CB552BDCF9D100924FEE /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B59CB462BDCF9D100924FEE = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B59CB512BDCF9D100924FEE /* Pencil */,\n\t\t\t\t3B59CB522BDCF9D100924FEE /* Packages */,\n\t\t\t\t3B59CB502BDCF9D100924FEE /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B59CB502BDCF9D100924FEE /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B59CB4F2BDCF9D100924FEE /* Pencil.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B59CB512BDCF9D100924FEE /* Pencil */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B59CB562BDCF9D100924FEE /* PencilApp.swift */,\n\t\t\t\t3B59CB582BDCF9D100924FEE /* ContentView.swift */,\n\t\t\t\t3B59CB5C2BDCF9D200924FEE /* Assets.xcassets */,\n\t\t\t\t3B59CB612BDCF9D200924FEE /* Info.plist */,\n\t\t\t\t3B59CB5E2BDCF9D200924FEE /* Preview Content */,\n\t\t\t);\n\t\t\tpath = Pencil;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B59CB522BDCF9D100924FEE /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B59CB532BDCF9D100924FEE /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B59CB5E2BDCF9D200924FEE /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B59CB5F2BDCF9D200924FEE /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B59CB4E2BDCF9D100924FEE /* Pencil */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B59CB642BDCF9D200924FEE /* Build configuration list for PBXNativeTarget \"Pencil\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B59CB4B2BDCF9D100924FEE /* Sources */,\n\t\t\t\t3B59CB4C2BDCF9D100924FEE /* Frameworks */,\n\t\t\t\t3B59CB4D2BDCF9D100924FEE /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Pencil;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B59CB542BDCF9D100924FEE /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = Pencil;\n\t\t\tproductReference = 3B59CB4F2BDCF9D100924FEE /* Pencil.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B59CB472BDCF9D100924FEE /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1530;\n\t\t\t\tLastUpgradeCheck = 1530;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B59CB4E2BDCF9D100924FEE = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.3;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B59CB4A2BDCF9D100924FEE /* Build configuration list for PBXProject \"Pencil\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B59CB462BDCF9D100924FEE;\n\t\t\tproductRefGroup = 3B59CB502BDCF9D100924FEE /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B59CB4E2BDCF9D100924FEE /* Pencil */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B59CB4D2BDCF9D100924FEE /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B59CB602BDCF9D200924FEE /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3B59CB5D2BDCF9D200924FEE /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B59CB4B2BDCF9D100924FEE /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B59CB592BDCF9D100924FEE /* ContentView.swift in Sources */,\n\t\t\t\t3B59CB572BDCF9D100924FEE /* PencilApp.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B59CB622BDCF9D200924FEE /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.1;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B59CB632BDCF9D200924FEE /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.1;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B59CB652BDCF9D200924FEE /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Pencil/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.Pencil;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B59CB662BDCF9D200924FEE /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Pencil/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.Pencil;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B59CB4A2BDCF9D100924FEE /* Build configuration list for PBXProject \"Pencil\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B59CB622BDCF9D200924FEE /* Debug */,\n\t\t\t\t3B59CB632BDCF9D200924FEE /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B59CB642BDCF9D200924FEE /* Build configuration list for PBXNativeTarget \"Pencil\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B59CB652BDCF9D200924FEE /* Debug */,\n\t\t\t\t3B59CB662BDCF9D200924FEE /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B59CB542BDCF9D100924FEE /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B59CB472BDCF9D100924FEE /* Project object */;\n}\n"
  },
  {
    "path": "Pencil/Pencil.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Pencil/Pencil.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Pencil/README.md",
    "content": "**Pencil:** PencilKit for visionOS\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/3cdcccb7-365c-4b9f-8623-2b6eaf14bbbf\n"
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"D66134B1-3681-4A8E-AFE5-29F257229F3B\"\n  }\n}"
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n      0.86602545,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.86602545,\n      0,\n      0.0035969093,\n      0.35542378,\n      0.62919164,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"65F6F990-A780-4474-B78B-572E0E4E273D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.86602545,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.86602545,\n      0,\n      1.1972517e-08,\n      2.6179132,\n      0.43191218,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"65F6F990-A780-4474-B78B-572E0E4E273D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"66168B71-AB05-424E-8B6C-D33D6E61B08F\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.5,\n      0,\n      0,\n      0.5,\n      0.8660254,\n      0,\n      0,\n      0.23875366,\n      0.4135335,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"66168B71-AB05-424E-8B6C-D33D6E61B08F\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"AF09ED6F-1707-48FD-8720-65B998362C09\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      2.8836339,\n      -0.107588194,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Left\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"AF09ED6F-1707-48FD-8720-65B998362C09\",\n        \"Root\",\n        \"Sphere_Right\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"CB766F92-EE55-4A63-9401-E7B8C009764D\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"CB766F92-EE55-4A63-9401-E7B8C009764D\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"D560BB77-AAF3-4BDE-B7C4-989332A4688B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660253,\n      -0.5000001,\n      0,\n      0,\n      0.5000001,\n      0.8660253,\n      0,\n      0,\n      0.27093494,\n      0.4692731,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"D66134B1-3681-4A8E-AFE5-29F257229F3B\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.26894823,\n      0.26934713,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\",\n        \"GridMaterial\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"D66134B1-3681-4A8E-AFE5-29F257229F3B\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere_Left\", \"Sphere_Right\", \"GridMaterial\"]\n    def Sphere \"Sphere_Right\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Sphere \"Sphere_Left\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.1\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (-0.5, 1.5, -1.5)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "Plane Detection/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Plane Detection/Plane Detection/Colors.swift",
    "content": "import UIKit\nimport ARKit\n\nenum ColorName: String {\n    case matrix = \"#00ff2b\"\n    case tiffany = \"#00FFEC\"\n    case darkG = \"#474747\"\n    case lightG = \"#f4f4f8\"\n    case coffee = \"#be9b7b\"\n    case tone = \"#f1c27d\"\n    case blueGray = \"#6497b1\"\n    case supreme = \"#FF0400\"\n\n    var color: UIColor {\n        return UIColor(hex: self.rawValue) ?? .black\n    }\n}\n\nextension UIColor {\n    convenience init?(hex: String) {\n        let r, g, b, a: CGFloat\n\n        if hex.hasPrefix(\"#\") {\n            let start = hex.index(hex.startIndex, offsetBy: 1)\n            let hexColor = String(hex[start...])\n\n            if hexColor.count == 6 {\n                let scanner = Scanner(string: hexColor)\n                var hexNumber: UInt64 = 0\n\n                if scanner.scanHexInt64(&hexNumber) {\n                    r = CGFloat((hexNumber & 0xff0000) >> 16) / 255\n                    g = CGFloat((hexNumber & 0x00ff00) >> 8) / 255\n                    b = CGFloat(hexNumber & 0x0000ff) / 255\n                    a = 1.0\n\n                    self.init(red: r, green: g, blue: b, alpha: a)\n                    return\n                }\n            }\n        }\n\n        return nil\n    }\n}\n\nfunc colorForPlaneClassification(classification: PlaneAnchor.Classification) -> UIColor {\n    switch(classification) {\n    case .ceiling:\n        return UIColor(hex: ColorName.tiffany.rawValue)!\n    case .door:\n        return UIColor(hex: ColorName.coffee.rawValue)!\n    case .floor:\n        return UIColor(hex: ColorName.tone.rawValue)!\n    case .notAvailable:\n        return .clear\n    case .seat:\n        return UIColor(hex: ColorName.matrix.rawValue)!\n    case .table:\n        return UIColor(hex: ColorName.lightG.rawValue)!\n    case .undetermined:\n        return .black\n    case .unknown:\n        return UIColor(hex: ColorName.darkG.rawValue)!\n    case .wall:\n        return UIColor(hex: ColorName.supreme.rawValue)!\n    case .window:\n        return UIColor(hex: ColorName.blueGray.rawValue)!\n    @unknown default:\n        return UIColor(hex: ColorName.darkG.rawValue)!\n    }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/ContentView.swift",
    "content": "import SwiftUI\nimport RealityKit\n\nstruct ContentView: View {\n\n    @State private var showImmersiveSpace = false\n    @State private var immersiveSpaceIsShown = false\n\n    @Environment(\\.openImmersiveSpace) var openImmersiveSpace\n    @Environment(\\.dismissImmersiveSpace) var dismissImmersiveSpace\n\n    var body: some View {\n        VStack {\n            Toggle(\"Show Plane Detection\", isOn: $showImmersiveSpace)\n                .font(.title)\n                .frame(width: 400)\n                .padding(20)\n                .glassBackgroundEffect()\n        }\n        .padding()\n        .onChange(of: showImmersiveSpace) { _, newValue in\n            Task {\n                if newValue {\n                    switch await openImmersiveSpace(id: \"ImmersiveSpace\") {\n                    case .opened:\n                        immersiveSpaceIsShown = true\n                    case .error, .userCancelled:\n                        fallthrough\n                    @unknown default:\n                        immersiveSpaceIsShown = false\n                        showImmersiveSpace = false\n                    }\n                } else if immersiveSpaceIsShown {\n                    await dismissImmersiveSpace()\n                    immersiveSpaceIsShown = false\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/ImmersiveView.swift",
    "content": "import SwiftUI\nimport RealityKit\nimport ARKit\n\nstruct ImmersiveView: View {\n    // @State property wrapper to manage the state of plane detection within the SwiftUI view\n    @State var planeDetection = PlaneDetectionModel()\n    \n    var body: some View {\n        // RealityView is a custom view that integrates with RealityKit for AR experiences\n        RealityView { content in\n            // Adds the rootEntity of the planeDetection model to the RealityView's content\n            // This is where the detected planes or other AR content would be added\n            content.add(planeDetection.rootEntity)\n        }\n        .task {\n            // Asynchronously starts the AR session with plane detection\n            // This method is expected to configure and run the AR session\n            await planeDetection.startSession()\n        }\n        .onDisappear {\n            // Stops the AR session when the view disappears\n            // This is important for freeing up resources and stopping the AR experience when not needed\n            planeDetection.stopSession()\n        }\n    }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSWorldSensingUsageDescription</key>\n\t<string>Allow Plane Detection</string>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Plane Detection/Plane Detection/PlaneDetectionModel.swift",
    "content": "import ARKit\nimport Foundation\nimport RealityKit\n\nclass PlaneDetectionModel: NSObject {\n        \n    // An ARKit session for managing augmented reality experiences.\n    let session = ARKitSession()\n    \n    // A root entity acting as a container for all dynamically generated plane entities in the scene.\n    var rootEntity = AnchorEntity(world: .zero)\n    \n    // Starts the AR session with plane detection enabled for both horizontal and vertical surfaces.\n    // The use of @MainActor ensures that these functions are executed on the main thread, which is crucial for UI updates and interactions with RealityKit and ARKit.\n    @MainActor func startSession() async {\n        // Initialize the plane detection provider with specified plane alignments.\n        let planeDataProvider = PlaneDetectionProvider(alignments: [.horizontal, .vertical])\n        \n        // An array to hold data providers, here intended for plane detection.\n        var providers: [DataProvider] = []\n        // Check if plane detection is supported and, if so, add the planeDataProvider to the providers array.\n        if PlaneDetectionProvider.isSupported {\n            providers.append(planeDataProvider)\n        }\n        do {\n            // Attempt to start the session with the specified providers.\n            try await session.run(providers)\n            \n            // Listen for updates from the planeDataProvider and update plane entities accordingly.\n            for await planeDetectionUpdate in planeDataProvider.anchorUpdates {\n                try await updatePlaneEntity(planeDetectionUpdate.anchor)\n            }\n        } catch {\n            // If an error occurs, print it to the console.\n            print(\"error is \\(error)\")\n        }\n    }\n    \n    // Stops the AR session.\n    @MainActor func stopSession() {\n        session.stop()\n    }\n    \n    // Updates or creates a new plane entity in the scene based on the provided plane anchor.\n    @MainActor fileprivate func updatePlaneEntity(_ anchor: PlaneAnchor) async throws {\n        // Generate visual representation for the plane's extent.\n        let modelEntity = try await createPlaneModelEntity(anchor)\n        // Generate visual representation for the plane's classification text.\n        let textEntity = await createTextModelEntity(anchor)\n        // Check if an entity for this anchor already exists in the scene.\n        if let anchorEntity = rootEntity.findEntity(named: \"\\(anchor.id)\") {\n            // If it does, remove all its children (for update) and add the new model and text entities.\n            anchorEntity.children.removeAll()\n            anchorEntity.addChild(modelEntity)\n            anchorEntity.addChild(textEntity)\n        } else {\n            // If it doesn't, create a new anchor entity, set its orientation, and add it to the root entity.\n            let anchorEntity = AnchorEntity(world: anchor.originFromAnchorTransform)\n            // Rotates the anchorEntity by -90 degrees around the x-axis.\n            anchorEntity.orientation = .init(angle: -.pi / 2, axis: .init(1, 0, 0))\n            anchorEntity.addChild(modelEntity)\n            anchorEntity.addChild(textEntity)\n            anchorEntity.name = \"\\(anchor.id)\"\n            rootEntity.addChild(anchorEntity)\n        }\n    }\n    \n    // Removes a plane entity from the scene based on the provided plane anchor.\n    fileprivate func removePlaneEntity(_ anchor: PlaneAnchor) throws {\n        // Attempt to find the entity associated with the provided anchor.\n        if let anchorEntity = rootEntity.findEntity(named: \"\\(anchor.id)\") {\n            // If found, remove it from its parent, effectively deleting it from the scene.\n            anchorEntity.removeFromParent()\n        }\n    }\n    \n    // Generates a visual representation of a plane's extent.\n    @MainActor fileprivate func createPlaneModelEntity(_ anchor: PlaneAnchor) async throws -> ModelEntity {\n        // Use the plane's extent (size) to define the size of the generated plane mesh.\n        let extent = anchor.geometry.extent\n        // Create a material for the plane, setting its base color based on the plane's classification.\n        var planeMaterial = PhysicallyBasedMaterial()\n        planeMaterial.baseColor = .init(tint: colorForPlaneClassification(classification: anchor.classification))\n        // Create the model entity using the plane mesh and the material.\n        let planeModelEntity = ModelEntity(mesh: .generatePlane(width: extent.width, height: extent.height), materials: [planeMaterial])\n        \n        return planeModelEntity\n    }\n    \n    // Generates a visual representation of a plane's classification as text.\n    @MainActor fileprivate func createTextModelEntity(_ anchor: PlaneAnchor) async -> ModelEntity {\n        // Create a white material for the text.\n        let planeTextMaterial = UnlitMaterial(color: .white)\n        // Generate a model entity for the text, using the plane's classification description.\n        let planeTextModelEntity = ModelEntity(mesh: .generateText(anchor.classification.description.uppercased(), extrusionDepth: 0.001, font: .boldSystemFont(ofSize: 0.1), containerFrame: .zero, alignment: .center, lineBreakMode: .byWordWrapping), materials: [planeTextMaterial])\n        \n        return planeTextModelEntity\n    }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Plane_DetectionApp.swift",
    "content": "//\n//  Plane_DetectionApp.swift\n//  Plane Detection\n//\n//  Created by IVAN CAMPOS on 4/7/24.\n//\n\nimport SwiftUI\n\n@main\nstruct Plane_DetectionApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n\n        ImmersiveSpace(id: \"ImmersiveSpace\") {\n            ImmersiveView()\n        }\n    }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B5365FD2BC2658100AC7AC3 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B5365FC2BC2658100AC7AC3 /* RealityKitContent */; };\n\t\t3B5365FF2BC2658100AC7AC3 /* Plane_DetectionApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B5365FE2BC2658100AC7AC3 /* Plane_DetectionApp.swift */; };\n\t\t3B5366012BC2658100AC7AC3 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B5366002BC2658100AC7AC3 /* ContentView.swift */; };\n\t\t3B5366032BC2658100AC7AC3 /* ImmersiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B5366022BC2658100AC7AC3 /* ImmersiveView.swift */; };\n\t\t3B5366052BC2658200AC7AC3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B5366042BC2658200AC7AC3 /* Assets.xcassets */; };\n\t\t3B5366082BC2658200AC7AC3 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B5366072BC2658200AC7AC3 /* Preview Assets.xcassets */; };\n\t\t3B5366142BC2701B00AC7AC3 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B5366132BC2701B00AC7AC3 /* Colors.swift */; };\n\t\t3B5366162BC2772E00AC7AC3 /* PlaneDetectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B5366152BC2772E00AC7AC3 /* PlaneDetectionModel.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B5365F72BC2658100AC7AC3 /* Plane Detection.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"Plane Detection.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B5365FB2BC2658100AC7AC3 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3B5365FE2BC2658100AC7AC3 /* Plane_DetectionApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Plane_DetectionApp.swift; sourceTree = \"<group>\"; };\n\t\t3B5366002BC2658100AC7AC3 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3B5366022BC2658100AC7AC3 /* ImmersiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImmersiveView.swift; sourceTree = \"<group>\"; };\n\t\t3B5366042BC2658200AC7AC3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3B5366072BC2658200AC7AC3 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3B5366092BC2658200AC7AC3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3B5366132BC2701B00AC7AC3 /* Colors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = \"<group>\"; };\n\t\t3B5366152BC2772E00AC7AC3 /* PlaneDetectionModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlaneDetectionModel.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B5365F42BC2658100AC7AC3 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B5365FD2BC2658100AC7AC3 /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B5365EE2BC2658100AC7AC3 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B5365F92BC2658100AC7AC3 /* Plane Detection */,\n\t\t\t\t3B5365FA2BC2658100AC7AC3 /* Packages */,\n\t\t\t\t3B5365F82BC2658100AC7AC3 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B5365F82BC2658100AC7AC3 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B5365F72BC2658100AC7AC3 /* Plane Detection.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B5365F92BC2658100AC7AC3 /* Plane Detection */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B5365FE2BC2658100AC7AC3 /* Plane_DetectionApp.swift */,\n\t\t\t\t3B5366002BC2658100AC7AC3 /* ContentView.swift */,\n\t\t\t\t3B5366022BC2658100AC7AC3 /* ImmersiveView.swift */,\n\t\t\t\t3B5366152BC2772E00AC7AC3 /* PlaneDetectionModel.swift */,\n\t\t\t\t3B5366132BC2701B00AC7AC3 /* Colors.swift */,\n\t\t\t\t3B5366042BC2658200AC7AC3 /* Assets.xcassets */,\n\t\t\t\t3B5366092BC2658200AC7AC3 /* Info.plist */,\n\t\t\t\t3B5366062BC2658200AC7AC3 /* Preview Content */,\n\t\t\t);\n\t\t\tpath = \"Plane Detection\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B5365FA2BC2658100AC7AC3 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B5365FB2BC2658100AC7AC3 /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B5366062BC2658200AC7AC3 /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B5366072BC2658200AC7AC3 /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B5365F62BC2658100AC7AC3 /* Plane Detection */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B53660C2BC2658200AC7AC3 /* Build configuration list for PBXNativeTarget \"Plane Detection\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B5365F32BC2658100AC7AC3 /* Sources */,\n\t\t\t\t3B5365F42BC2658100AC7AC3 /* Frameworks */,\n\t\t\t\t3B5365F52BC2658100AC7AC3 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Plane Detection\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B5365FC2BC2658100AC7AC3 /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = \"Plane Detection\";\n\t\t\tproductReference = 3B5365F72BC2658100AC7AC3 /* Plane Detection.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B5365EF2BC2658100AC7AC3 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1530;\n\t\t\t\tLastUpgradeCheck = 1530;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B5365F62BC2658100AC7AC3 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.3;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B5365F22BC2658100AC7AC3 /* Build configuration list for PBXProject \"Plane Detection\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B5365EE2BC2658100AC7AC3;\n\t\t\tproductRefGroup = 3B5365F82BC2658100AC7AC3 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B5365F62BC2658100AC7AC3 /* Plane Detection */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B5365F52BC2658100AC7AC3 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B5366082BC2658200AC7AC3 /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3B5366052BC2658200AC7AC3 /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B5365F32BC2658100AC7AC3 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B5366012BC2658100AC7AC3 /* ContentView.swift in Sources */,\n\t\t\t\t3B5366142BC2701B00AC7AC3 /* Colors.swift in Sources */,\n\t\t\t\t3B5366162BC2772E00AC7AC3 /* PlaneDetectionModel.swift in Sources */,\n\t\t\t\t3B5365FF2BC2658100AC7AC3 /* Plane_DetectionApp.swift in Sources */,\n\t\t\t\t3B5366032BC2658100AC7AC3 /* ImmersiveView.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B53660A2BC2658200AC7AC3 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.1;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B53660B2BC2658200AC7AC3 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.1;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B53660D2BC2658200AC7AC3 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Plane Detection/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.Plane-Detection\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B53660E2BC2658200AC7AC3 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Plane Detection/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.Plane-Detection\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B5365F22BC2658100AC7AC3 /* Build configuration list for PBXProject \"Plane Detection\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B53660A2BC2658200AC7AC3 /* Debug */,\n\t\t\t\t3B53660B2BC2658200AC7AC3 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B53660C2BC2658200AC7AC3 /* Build configuration list for PBXNativeTarget \"Plane Detection\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B53660D2BC2658200AC7AC3 /* Debug */,\n\t\t\t\t3B53660E2BC2658200AC7AC3 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B5365FC2BC2658100AC7AC3 /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B5365EF2BC2658100AC7AC3 /* Project object */;\n}\n"
  },
  {
    "path": "Plane Detection/Plane Detection.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Plane Detection/Plane Detection.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Plane Detection/README.md",
    "content": "**Plane Detection:** Identifying flat surfaces in the real world\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/f3b94e19-921e-4fe9-baf2-8b02c8c0468f\n\n*References*\n* https://github.com/XRealityZone/what-vision-os-can-do\n* https://developer.apple.com/documentation/visionos/placing-content-on-detected-planes\n* https://github.com/tokufxug/VisionOS-PlaneDetectionSample\n* https://github.com/shu223/visionOS-Sampler/tree/main/02_ARKitPlacingContent/ARKitPlacingContent\n"
  },
  {
    "path": "README.md",
    "content": "# visionOS-examples\nAccelerators for Spatial Computing\n* Pair programmed through conversations with my custom GPT:  \n  * [visionOS Dev](https://chat.openai.com/g/g-GbfBtRzZo-visionos-dev) (_*ChatGPT Plus required*_)\n \n## Examples ![visionpro](https://github.com/IvanCampos/visionOS-examples/assets/872137/07a55a0d-d11e-4c39-a3b0-0a7bf6682808)\n| Name | Element | Topic | visionOS | Preview |\n|----------|----------|----------|----------|----------|\n| [LLLM](https://github.com/IvanCampos/visionOS-examples/tree/main/LLLM) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/2fe161eb-b95e-4733-af9d-d08a7ba1b0b2\" width=\"100\" /> | **Local Large Language Model (LLLM):** Call your LM Studio models from your Apple Vision Pro | 1.1 beta 2 (2105188c) | [![output-small](https://github.com/IvanCampos/visionOS-examples/assets/872137/617e4048-664a-453a-a00f-be95ab043552)](https://github.com/IvanCampos/visionOS-examples/tree/main/LLLM)\n| [Fear and Greed](https://github.com/IvanCampos/visionOS-examples/tree/main/FearAndGreed) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/92102a87-18c8-46e3-89ef-e37c575cbe4f\" width=\"100\" /> | Volumetric View of the Fear & Greed Index for Bitcoin and other large cryptocurrencies | 1.1 beta 2 (2105188c) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/9162ddd7-1ccb-4eae-ae5b-3b880caa10f9\" width=\"320\" alt=\"fng\"> |\n| [ChatAVP](https://github.com/IvanCampos/visionOS-examples/tree/main/ChatAVP) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/2fe161eb-b95e-4733-af9d-d08a7ba1b0b2\" width=\"100\" /> | **Chat Apple Vision Pro (ChatAVP):** Chat with the OpenAI API for visionOS | 1.1 beta 2 (2105188c) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/24d13556-48dd-44d9-93fc-662aa82d351e\" width=\"320\" alt=\"chatAVP\"> |\n| [WebSockets](https://github.com/IvanCampos/visionOS-examples/tree/main/WebSockets) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/2fe161eb-b95e-4733-af9d-d08a7ba1b0b2\" width=\"100\" /> | **WebSockets:** Get Real-Time Cryptocurrency Prices for Bitcoin and Ethereum | 1.1 beta 3 (2105197a) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/003b9912-fe7a-4428-9db8-41bd2936ca42\" width=\"320\" alt=\"webSockets\">  |\n| [AnchorToHead](https://github.com/IvanCampos/visionOS-examples/tree/main/AnchorToHead) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/5b464b9e-d1b5-4b3f-ac82-326e725b2dbe\" width=\"100\" /> | **Anchor To Head:** Allow an entity to automatically follow your head, hands-free | 1.1 beta 3 (2105197a) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/b48655fb-fc6a-41e0-8c0d-e139133f6fe6\" width=\"320\" alt=\"anchorToHead\"> |\n| [HandTracking](https://github.com/IvanCampos/visionOS-examples/tree/main/HandTracking) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/5b464b9e-d1b5-4b3f-ac82-326e725b2dbe\" width=\"100\" /> | **Hand Tracking:** Quickly add hand tracking to your visionOS app | 1.1 beta 4 (21O5203a) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/2f5fbaba-d67f-46f6-b1a3-a0c8c7e4448a\" width=\"320\" alt=\"handTracking\"> |\n| [Battery Life](https://github.com/IvanCampos/visionOS-examples/tree/main/Battery%20Life) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/2fe161eb-b95e-4733-af9d-d08a7ba1b0b2\" width=\"100\" /> | **Battery Life:** Display the Apple Vision Pro's battery level and status | 1.1 (210211) | ![battery-life](https://github.com/IvanCampos/visionOS-examples/assets/872137/567c6771-9f0c-475b-a494-fdb56ec38ff7) | \n| [Countdown](https://github.com/IvanCampos/visionOS-examples/tree/main/Countdown) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/5b464b9e-d1b5-4b3f-ac82-326e725b2dbe\" width=\"100\" /> | **Countdown:** Countdown in Immersive Space | 1.2 (2105555e) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/c66a69de-a598-46f8-ba84-b976abaf87d2\" width=\"320\" alt=\"Countdown\"> |\n| [Plane Detection](https://github.com/IvanCampos/visionOS-examples/tree/main/Plane%20Detection) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/5b464b9e-d1b5-4b3f-ac82-326e725b2dbe\" width=\"100\" /> | **Plane Detection:** Identifying flat surfaces in the real world  | 1.2 (2105555e) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/9f226053-4843-4823-9aaa-986a9b17bc74\" width=\"320\" alt=\"planeDetection\"> |\n| [Timer Vision](https://github.com/IvanCampos/visionOS-examples/tree/main/Timer%20Vision) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/2fe161eb-b95e-4733-af9d-d08a7ba1b0b2\" width=\"100\" /> | **Timer Vision:** Timer Window for Apple Vision Pro | 1.2 (2105555e) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/9b3b6b8b-b495-4fd1-8687-6ad195b1dfdc\" width=\"320\" alt=\"timerVision\"> |  \n| [Pencil](https://github.com/IvanCampos/visionOS-examples/tree/main/Pencil) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/2fe161eb-b95e-4733-af9d-d08a7ba1b0b2\" width=\"100\" /> | **Pencil:** PencilKit for visionOS | 1.2 (2105580a) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/1880104a-66a9-46ed-bc2d-61bedb9ebef3\" width=\"320\" alt=\"timerVision\"> |  \n| [bsky 3D](https://github.com/IvanCampos/visionOS-examples/tree/main/bsky%203D) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/5b464b9e-d1b5-4b3f-ac82-326e725b2dbe\" width=\"100\" /> | **Bluesky 3D:** 3D Visualizer for Bluesky's Jetstream Firehose | 2.2 (22N5794a) | <img src=\"https://github.com/user-attachments/assets/7332090d-0494-4af2-889c-b32207c0c4f5\" width=\"320\" alt=\"bsky3D\"> |  \n| [DualSense](https://github.com/IvanCampos/visionOS-examples/tree/main/DualSense) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/2fe161eb-b95e-4733-af9d-d08a7ba1b0b2\" width=\"100\" /> | **DualSense:** PS5 DualSense Controller integration for Apple Vision Pro | 2.3 (22N896) | <img src=\"https://github.com/user-attachments/assets/945e0b75-c746-4baa-943c-c540a10688de\" width=\"320\" alt=\"DualSense\"> |  \n| [Music Kit](https://github.com/IvanCampos/visionOS-examples/tree/main/Music%20Kit) | <img src=\"https://github.com/IvanCampos/visionOS-examples/assets/872137/5b464b9e-d1b5-4b3f-ac82-326e725b2dbe\" width=\"100\" /> | **Music Kit:** Play Apple Music directly inside your visionOS app using MusicKit. | 2.4(22O5199n) | ![musicKit_15s](https://github.com/user-attachments/assets/db9d5bdd-9187-4304-8f23-67bac9631651) |  \n|  |  |  |  |  |  \n|  |  |  |  |  |  \n|  |  |  |  |  |  \n|  |  |  |  |  |  \n\n\n## Learning Resources\n| Link | Description |\n|----------|----------|\n| [Apple Developer Documentation](https://developer.apple.com/visionos/learn/) | [@Apple's](https://github.com/apple) official documentation for all things visionOS |\n| [Sample Apps from Apple](https://developer.apple.com/documentation/visionos#Dive-into-featured-sample-apps) | Explore the core concepts for all visionOS apps with Hello World. Understand how to detect custom gestures using ARKit with Happy Beam. Discover streaming 2D and stereoscopic media with Destination Video. And learn how to build 3D scenes with RealityKit and Reality Composer Pro with Diorama and Swift Splash. |\n| [30 days of visionOS challenge](https://github.com/satoshi0212/visionOS_30Days) | Inspirational visionOS repo with over 30 examples from [@shmdevelop](https://github.com/satoshi0212)|\n| [visionOS Dev Bot](https://chat.openai.com/g/g-GbfBtRzZo-visionos-dev) | My GPT-4 bot configured with instructions and knowledge specific to visionOS |\n| [Spatial List](https://twitter.com/i/lists/1749207474983354875) | List of Spatialists to follow on 𝕏 |\n| [GitHub Repos](https://github.com/topics/visionos?o=desc&s=updated) | Recently Updated visionOS Projects |\n| [r/visionosdev](https://www.reddit.com/r/visionosdev/) | Where developers for the Apple Vision Pro and VisionOS meet. Talk SwiftUI, ARKit and more. |\n| [1planet.co.jp](https://1planet.co.jp/tech-blog/category/applevisionpro) | Blog specializing in AR technology and creativity. |\n| [note.com](https://note.com/search?context=note&q=visionOS&sort=new) | Search results for the latest visionOS blog posts from the Japanese creative community. |\n| [Custom Reddit Feed](https://www.reddit.com/user/sopmac21379/m/spatial/) | Multiple visionOS & Vision Pro related subreddits |\n| [zenn.dev](https://zenn.dev/search?q=visionOS&order=latest) | Another search result for the latest visionOS blog posts from the Japanese creative community. |\n| [Building Vacuum Demo for visionOS from scratch](https://www.loom.com/share/c3331721a6ff47b9a66b30e7b59c6afc) | From [@gonchar](https://github.com/gonchar), the best way to learn how to work with: ARKit (head tracking, surroundings with classification), Reality Composer Pro, RealityKit, Work with custom geometry and meshes. Watch at 1.5x speed. | \n| [GitHub List](https://github.com/stars/IvanCampos/lists/visionos-projects) | List of visionOS projects that I've starred on GitHub | \n| [Let's visionOS 2024 Conference](https://www.youtube.com/watch?v=cvjAzMFMnvc&list=PLrYMwiyqgR7eFKM0YbOYqkmFIMQ-Opq_J&pp=iAQB) | Playlist of recorded sessions from Let's visionOS 2024 | \n| [visionOS Pathway](https://developer.apple.com/visionos/pathway/)| Resources you'll need to start building great apps and games | \n| [SGM Examples](https://github.com/ynagatomo/SGMExamples) | From [@ynagatomo](https://github.com/ynagatomo), a collection of Shader Graph Materials | \n| [visionOS Developer Group](https://www.linkedin.com/groups/12922559/) | visionOS Developer Group on LinkedIn | \n| [Step Into Vision](https://stepinto.vision) | Explore, learn, and build Step Into the world of visionOS development with SwiftUI, RealityKit, and ARKit. | \n| | | \n| | | \n| | | \n\n## AI for XR\n[AI Tools for XR: 2025-02](https://ivancampos.github.io/Reports/ai-for-xr-2025-02.html) \n\n## Assets\n[Sketchfab 3D Models](https://sketchfab.com/search?features=downloadable&licenses=322a749bcfa841b29dff1e8a1bb74b0b&licenses=b9ddc40b93e34cdca1fc152f39b9f375&licenses=72360ff1740d419791934298b8b6d270&licenses=bbfe3f7dbcdd4122b966b85b9786a989&licenses=2628dbe5140a4e9592126c8df566c0b7&licenses=34b725081a6a4184957efaec2cb84ed3&licenses=7c23a1ba438d4306920229c12afcb5f9&licenses=72eb2b1960364637901eacce19283624&sort_by=-likeCount&type=models)  \n[SF Symbols Icons](https://developer.apple.com/sf-symbols/)  \n[Tripo](https://www.tripo3d.ai/app?tab=create)  \n[Luma AI Genie](https://lumalabs.ai/genie?view=create)  \n[PolyHaven](https://polyhaven.com)  \n[Blockade Labs](https://skybox.blockadelabs.com)  \n[CGTrader](https://www.cgtrader.com)  \n\n## Reality Composer Pro (RCP) \n### Shader Graph Materials (SGM)\n[ShaderGraph Framework Docs](https://developer.apple.com/documentation/shadergraph)  \n[Recreating the Monterey Screensaver Surface Shader in Reality Composer Pro's Shader Graph Nodes](https://www.youtube.com/watch?v=KVyomXuaR7g)  \n[Ice Moon, Ep 3: Bringing the planet to life in our immersive experience for Apple Vision Pro\n](https://www.youtube.com/watch?v=5jrkzhILYwE)  \n[The Book of Shaders](https://thebookofshaders.com/)  \n[mrdeerwhale's Guide to Reality Composer Pro's Shader Graph Nodes](https://rcpguide.com/)  \n[Make a beautiful Bubble Shader for Apple Vision Pro | Reality Composer Pro Shader Graph Tutorial](https://www.youtube.com/watch?v=zk1u4nguamY)  \n[ShaderGraph Nodes in RealityKit](https://github.com/ynagatomo/evolution-Metal-ARKit-RealityKit-sheet/tree/main?tab=readme-ov-file#shadergraph-nodes-in-realitykit)  \n\n## App Store for Apple Vision Pro\n[Apps & Games](https://apps.apple.com/us/vision)  \n[Arcade](https://apps.apple.com/us/vision/arcade)  \n[Request to have your app featured on the App Store (six to eight weeks in advance of your launch)](https://developer.apple.com/app-store/discoverability/)\n\n"
  },
  {
    "path": "Timer Vision/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"03E02005-EFA6-48D6-8A76-05B2822A74E9\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"1CBF3893-ABFD-408C-8B91-045BFD257808\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\"\n  }\n}"
  },
  {
    "path": "Timer Vision/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      0.9807314,\n      -1.9820146e-10,\n      -0.195361,\n      0,\n      -0.10051192,\n      0.85749435,\n      -0.5045798,\n      0,\n      0.16752096,\n      0.51449335,\n      0.84097165,\n      0,\n      0.09084191,\n      0.05849296,\n      0.13903293,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"Sphere\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"1CBF3893-ABFD-408C-8B91-045BFD257808\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"03E02005-EFA6-48D6-8A76-05B2822A74E9\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.2681068,\n      0.26850593,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"440DE5B4-E4E4-459B-AABF-9ACE96319272\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"FBD8436F-6B8B-4B82-99B5-995D538B4704\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "Timer Vision/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "Timer Vision/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "Timer Vision/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "Timer Vision/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "Timer Vision/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "Timer Vision/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "Timer Vision/README.md",
    "content": "**Timer Vision:** Timer Window for Apple Vision Pro\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/2fe849fe-721a-4c37-b72e-416cc5ce277f\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/bg-green.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"bg-green.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"timer-front-white.png\",\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"timer-front-white.png\",\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Timer Vision/Timer Vision/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  Timer Vision\n//\n//  Created by IVAN CAMPOS\n//\n\nimport SwiftUI\nimport AVFoundation\n\nstruct ContentView: View {\n    @StateObject private var timerViewModel = TimerViewModel()\n    @State private var inputSeconds: String = \"\"\n    \n    let CUSTOM_FONT = \"Audiowide-Regular\"\n    \n    var body: some View {\n        ZStack {\n            Color.white.opacity(0.0).edgesIgnoringSafeArea(.all)\n            \n            VStack(spacing: 20) {\n                if timerViewModel.timerState == .stopped {\n                    TextField(\"Sec\", text: $inputSeconds)\n                        .padding()\n                        .foregroundColor(Color.blue)\n                        .background(Color.white)\n                        .cornerRadius(5)\n                        .overlay(RoundedRectangle(cornerRadius: 5).stroke(Color.gray, lineWidth: 1))\n                        .keyboardType(.numberPad)\n                        .font(.custom(CUSTOM_FONT, size: 36))\n                        .multilineTextAlignment(.center)\n                        .frame(width: 200)\n                        .padding()\n                    \n                    Button(\"Start Timer\") {\n                        if let seconds = Int(inputSeconds) {\n                            timerViewModel.startTimer(duration: seconds)\n                        }\n                    }\n                    .padding()\n                    .foregroundColor(.white)\n                    .background(Color.blue)\n                    .clipShape(Capsule())\n                } else {\n                    ZStack {\n                        Circle()\n                            .stroke(lineWidth: 20)\n                            .opacity(1.0)\n                            .foregroundColor(Color.gray)\n                        \n                        Circle()\n                            .trim(from: 0, to: CGFloat(timerViewModel.progress))\n                            .stroke(style: StrokeStyle(lineWidth: 20, lineCap: .round, lineJoin: .round))\n                            .foregroundColor(timerViewModel.hasFinished ? .gray : .green)\n                            .rotationEffect(Angle(degrees: -90))\n                            .animation(.linear, value: timerViewModel.progress)\n                        \n                        // Place the time-formatted text in the center of the circle\n                        Text(timerViewModel.timeFormatted)\n                            .font(.custom(CUSTOM_FONT, size: 42))\n                            .fontWeight(.bold)\n                            .foregroundColor(timerViewModel.hasFinished ? .gray : .white)\n                    }\n                    .frame(width: 200, height: 200)\n                }\n                \n                if timerViewModel.hasFinished {\n                    Button(\"Stop Sound\") {\n                        timerViewModel.stopSound()\n                    }\n                    .padding()\n                    .foregroundColor(.white)\n                    .background(Color.red)\n                    .clipShape(Capsule())\n                }\n            }\n        }\n        .font(.custom(CUSTOM_FONT, size: 0.3))\n    }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n\t<key>UIAppFonts</key>\n\t<array>\n\t\t<string>Audiowide-Regular.ttf</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/TimerViewModel.swift",
    "content": "//\n//  TimerViewModel.swift\n//  Timer Vision\n//\n//  Created by IVAN CAMPOS\n//\n\nimport AVFoundation\nimport SwiftUI\nimport RealityKit\n\nclass TimerViewModel: ObservableObject {\n    enum TimerState {\n        case finished\n        case running\n        case stopped\n    }\n    \n    @Published var timeRemaining: Int = 0\n    @Published var hasFinished: Bool = false\n    @Published var timerState: TimerState = .stopped\n    \n    var progress: Double {\n        guard timeRemaining != 0 else { return 0 }\n        return Double(timeRemaining) / Double(initialTime)\n    }\n    \n    var timeFormatted: String {\n        let minutes = timeRemaining / 60\n        let seconds = timeRemaining % 60\n        return String(format: \"%02d:%02d\", minutes, seconds)\n    }\n    \n    private var timer: Timer?\n    private var player: AVAudioPlayer?\n    private var initialTime: Int = 0\n    \n    func startTimer(duration: Int) {\n        initialTime = duration\n        timeRemaining = duration\n        timerState = .running\n        hasFinished = false\n        \n        timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in\n            guard let self = self else { return }\n            \n            if self.timeRemaining > 0 {\n                self.timeRemaining -= 1\n            } else {\n                self.hasFinished = true\n                self.timerState = .finished\n                self.playSound()\n                self.timer?.invalidate()\n            }\n        }\n    }\n    \n    func stopSound() {\n        player?.stop()\n        timerState = .stopped\n    }\n    \n    private func playSound() {\n        guard let url = Bundle.main.url(forResource: \"VirtualityHustle\", withExtension: \"mp3\") else { return }\n        do {\n            player = try AVAudioPlayer(contentsOf: url)\n            player?.play()\n        } catch {\n            print(\"Couldn't load sound file\")\n        }\n    }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision/Timer_VisionApp.swift",
    "content": "//\n//  Timer_VisionApp.swift\n//  Timer Vision\n//\n//  Created by IVAN CAMPOS\n//\n\nimport SwiftUI\n\n@main\nstruct Timer_VisionApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n                .persistentSystemOverlays(.hidden)\n        }\n        .windowStyle(.plain)\n    }\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B025D6D2BC90A8B00E96EFE /* VirtualityHustle.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 3B025D6C2BC90A8B00E96EFE /* VirtualityHustle.mp3 */; };\n\t\t3B025D712BC9109F00E96EFE /* Audiowide-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3B025D702BC9109F00E96EFE /* Audiowide-Regular.ttf */; };\n\t\t3B8EF71D2B747C9E00EB3308 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B8EF71C2B747C9E00EB3308 /* RealityKitContent */; };\n\t\t3B8EF71F2B747C9E00EB3308 /* Timer_VisionApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B8EF71E2B747C9E00EB3308 /* Timer_VisionApp.swift */; };\n\t\t3B8EF7212B747C9E00EB3308 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B8EF7202B747C9E00EB3308 /* ContentView.swift */; };\n\t\t3B8EF7232B747C9F00EB3308 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B8EF7222B747C9F00EB3308 /* Assets.xcassets */; };\n\t\t3B8EF7262B747C9F00EB3308 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B8EF7252B747C9F00EB3308 /* Preview Assets.xcassets */; };\n\t\t3B8EF72E2B747CDE00EB3308 /* TimerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B8EF72D2B747CDE00EB3308 /* TimerViewModel.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B025D6C2BC90A8B00E96EFE /* VirtualityHustle.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = VirtualityHustle.mp3; sourceTree = \"<group>\"; };\n\t\t3B025D702BC9109F00E96EFE /* Audiowide-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = \"Audiowide-Regular.ttf\"; sourceTree = \"<group>\"; };\n\t\t3B8EF7172B747C9E00EB3308 /* Timer Vision.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"Timer Vision.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B8EF71B2B747C9E00EB3308 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3B8EF71E2B747C9E00EB3308 /* Timer_VisionApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Timer_VisionApp.swift; sourceTree = \"<group>\"; };\n\t\t3B8EF7202B747C9E00EB3308 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3B8EF7222B747C9F00EB3308 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3B8EF7252B747C9F00EB3308 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3B8EF7272B747C9F00EB3308 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3B8EF72D2B747CDE00EB3308 /* TimerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimerViewModel.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B8EF7142B747C9E00EB3308 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B8EF71D2B747C9E00EB3308 /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B8EF70E2B747C9E00EB3308 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B025D702BC9109F00E96EFE /* Audiowide-Regular.ttf */,\n\t\t\t\t3B025D6C2BC90A8B00E96EFE /* VirtualityHustle.mp3 */,\n\t\t\t\t3B8EF7192B747C9E00EB3308 /* Timer Vision */,\n\t\t\t\t3B8EF71A2B747C9E00EB3308 /* Packages */,\n\t\t\t\t3B8EF7182B747C9E00EB3308 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B8EF7182B747C9E00EB3308 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B8EF7172B747C9E00EB3308 /* Timer Vision.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B8EF7192B747C9E00EB3308 /* Timer Vision */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B8EF71E2B747C9E00EB3308 /* Timer_VisionApp.swift */,\n\t\t\t\t3B8EF7202B747C9E00EB3308 /* ContentView.swift */,\n\t\t\t\t3B8EF72D2B747CDE00EB3308 /* TimerViewModel.swift */,\n\t\t\t\t3B8EF7222B747C9F00EB3308 /* Assets.xcassets */,\n\t\t\t\t3B8EF7272B747C9F00EB3308 /* Info.plist */,\n\t\t\t\t3B8EF7242B747C9F00EB3308 /* Preview Content */,\n\t\t\t);\n\t\t\tpath = \"Timer Vision\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B8EF71A2B747C9E00EB3308 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B8EF71B2B747C9E00EB3308 /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B8EF7242B747C9F00EB3308 /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B8EF7252B747C9F00EB3308 /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B8EF7162B747C9E00EB3308 /* Timer Vision */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B8EF72A2B747C9F00EB3308 /* Build configuration list for PBXNativeTarget \"Timer Vision\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B8EF7132B747C9E00EB3308 /* Sources */,\n\t\t\t\t3B8EF7142B747C9E00EB3308 /* Frameworks */,\n\t\t\t\t3B8EF7152B747C9E00EB3308 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Timer Vision\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B8EF71C2B747C9E00EB3308 /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = \"Timer Vision\";\n\t\t\tproductReference = 3B8EF7172B747C9E00EB3308 /* Timer Vision.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B8EF70F2B747C9E00EB3308 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B8EF7162B747C9E00EB3308 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B8EF7122B747C9E00EB3308 /* Build configuration list for PBXProject \"Timer Vision\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B8EF70E2B747C9E00EB3308;\n\t\t\tproductRefGroup = 3B8EF7182B747C9E00EB3308 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B8EF7162B747C9E00EB3308 /* Timer Vision */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B8EF7152B747C9E00EB3308 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B8EF7262B747C9F00EB3308 /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3B025D6D2BC90A8B00E96EFE /* VirtualityHustle.mp3 in Resources */,\n\t\t\t\t3B025D712BC9109F00E96EFE /* Audiowide-Regular.ttf in Resources */,\n\t\t\t\t3B8EF7232B747C9F00EB3308 /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B8EF7132B747C9E00EB3308 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B8EF7212B747C9E00EB3308 /* ContentView.swift in Sources */,\n\t\t\t\t3B8EF72E2B747CDE00EB3308 /* TimerViewModel.swift in Sources */,\n\t\t\t\t3B8EF71F2B747C9E00EB3308 /* Timer_VisionApp.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B8EF7282B747C9F00EB3308 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B8EF7292B747C9F00EB3308 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B8EF72B2B747C9F00EB3308 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Timer Vision/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.Timer-Vision\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B8EF72C2B747C9F00EB3308 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"Timer Vision/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.Timer-Vision\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B8EF7122B747C9E00EB3308 /* Build configuration list for PBXProject \"Timer Vision\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B8EF7282B747C9F00EB3308 /* Debug */,\n\t\t\t\t3B8EF7292B747C9F00EB3308 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B8EF72A2B747C9F00EB3308 /* Build configuration list for PBXNativeTarget \"Timer Vision\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B8EF72B2B747C9F00EB3308 /* Debug */,\n\t\t\t\t3B8EF72C2B747C9F00EB3308 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B8EF71C2B747C9E00EB3308 /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B8EF70F2B747C9E00EB3308 /* Project object */;\n}\n"
  },
  {
    "path": "Timer Vision/Timer Vision.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Timer Vision/Timer Vision.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "WebSockets/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Untitled Scene.usda\" : \"03E02005-EFA6-48D6-8A76-05B2822A74E9\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda\" : \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/procedural_sphere_grid.usda\" : \"1CBF3893-ABFD-408C-8B91-045BFD257808\",\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Scene.usda\" : \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\"\n  }\n}"
  },
  {
    "path": "WebSockets/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      0.9807314,\n      -1.9820146e-10,\n      -0.195361,\n      0,\n      -0.10051192,\n      0.85749435,\n      -0.5045798,\n      0,\n      0.16752096,\n      0.51449335,\n      0.84097165,\n      0,\n      0.09084191,\n      0.05849296,\n      0.13903293,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"GridMaterial\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\",\n        \"Root\",\n        \"Sphere\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"1CBF3893-ABFD-408C-8B91-045BFD257808\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"03E02005-EFA6-48D6-8A76-05B2822A74E9\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      -0,\n      0,\n      -0,\n      0.7071069,\n      -0.7071067,\n      0,\n      0,\n      0.7071067,\n      0.7071069,\n      0,\n      0,\n      0.2681068,\n      0.26850593,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"26DBAE76-5DD8-47B6-A085-1B4ADA111097\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"34C460AE-CA1B-4348-BD05-621ACBDFFE97\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660255,\n      -0.49999988,\n      0,\n      0,\n      0.49999988,\n      0.8660255,\n      0,\n      0,\n      0.27093542,\n      0.46927398,\n      1\n    ],\n    \"objectMetadataList\" : [\n\n    ]\n  },\n  \"440DE5B4-E4E4-459B-AABF-9ACE96319272\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"440DE5B4-E4E4-459B-AABF-9ACE96319272\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  },\n  \"FBD8436F-6B8B-4B82-99B5-995D538B4704\" : {\n    \"cameraTransform\" : [\n      0.99999994,\n      0,\n      -0,\n      0,\n      -0,\n      0.8660254,\n      -0.49999994,\n      0,\n      0,\n      0.49999994,\n      0.8660254,\n      0,\n      0,\n      0.5981957,\n      1.0361054,\n      1\n    ],\n    \"objectMetadataList\" : [\n      [\n        \"FBD8436F-6B8B-4B82-99B5-995D538B4704\",\n        \"Root\"\n      ],\n      {\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "WebSockets/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "WebSockets/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "WebSockets/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "WebSockets/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"GridMaterial\"\n    {\n        reorder nameChildren = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"DefaultSurfaceShader\", \"MaterialXPreviewSurface\", \"Texcoord\", \"Add\", \"Multiply\", \"Fractional\", \"LineCounts\", \"Multiply_1\", \"Separate2\", \"Separate2_1\", \"Ifgreater\", \"Ifgreater_1\", \"Max\", \"Background_Color\"]\n        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        token outputs:surface\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)\n        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749\n\n        def Shader \"DefaultSurfaceShader\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n            color3f inputs:diffuseColor = (1, 1, 1)\n            float inputs:roughness = 0.75\n            token outputs:surface\n        }\n\n        def Shader \"MaterialXPreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>\n            color3f inputs:emissiveColor\n            float inputs:ior\n            float inputs:metallic = 0.15\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:opacityThreshold\n            float inputs:roughness = 0.5\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1967, 300.5)\n            float2 ui:nodegraph:node:size = (208, 297)\n            int ui:nodegraph:node:stackingOrder = 870\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Texcoord\"\n        {\n            uniform token info:id = \"ND_texcoord_vector2\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)\n            float2 ui:nodegraph:node:size = (182, 43)\n            int ui:nodegraph:node:stackingOrder = 1358\n        }\n\n        def Shader \"Multiply\"\n        {\n            uniform token info:id = \"ND_multiply_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>\n            float2 inputs:in2 = (32, 15)\n            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)\n            float2 ui:nodegraph:node:size = (61, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:in2\"]\n        }\n\n        def Shader \"Fractional\"\n        {\n            uniform token info:id = \"ND_realitykit_fractional_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (440.5, 49.5)\n            float2 ui:nodegraph:node:size = (155, 99)\n            int ui:nodegraph:node:stackingOrder = 1345\n        }\n\n        def Shader \"BaseColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)\n            float2 ui:nodegraph:node:size = (150, 43)\n            int ui:nodegraph:node:stackingOrder = 1353\n        }\n\n        def Shader \"LineColor\"\n        {\n            uniform token info:id = \"ND_constant_color3\"\n            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (\n                colorSpace = \"Input - Texture - sRGB - sRGB\"\n            )\n            color3f inputs:value.connect = None\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)\n            float2 ui:nodegraph:node:size = (146, 43)\n            int ui:nodegraph:node:stackingOrder = 1355\n        }\n\n        def Shader \"LineWidths\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 0.1\n            float inputs:in2 = 0.1\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)\n            float2 ui:nodegraph:node:size = (151, 43)\n            int ui:nodegraph:node:stackingOrder = 1361\n        }\n\n        def Shader \"LineCounts\"\n        {\n            uniform token info:id = \"ND_combine2_vector2\"\n            float inputs:in1 = 24\n            float inputs:in2 = 12\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)\n            float2 ui:nodegraph:node:size = (153, 43)\n            int ui:nodegraph:node:stackingOrder = 1359\n        }\n\n        def Shader \"Remap\"\n        {\n            uniform token info:id = \"ND_remap_color3\"\n            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>\n            color3f inputs:inhigh.connect = None\n            color3f inputs:inlow.connect = None\n            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>\n            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1755.5, 300.5)\n            float2 ui:nodegraph:node:size = (95, 171)\n            int ui:nodegraph:node:stackingOrder = 1282\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"inputs:outlow\"]\n        }\n\n        def Shader \"Separate2\"\n        {\n            uniform token info:id = \"ND_separate2_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>\n            float outputs:outx\n            float outputs:outy\n            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)\n            float2 ui:nodegraph:node:size = (116, 117)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n\n        def Shader \"Combine3\"\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>\n            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (146, 54)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Range\"\n        {\n            uniform token info:id = \"ND_range_vector2\"\n            bool inputs:doclamp = 1\n            float2 inputs:gamma = (2, 2)\n            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>\n            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 inputs:inlow = (0.02, 0.02)\n            float2 inputs:outhigh\n            float2 inputs:outlow\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)\n            float2 ui:nodegraph:node:size = (98, 207)\n            int ui:nodegraph:node:stackingOrder = 1364\n        }\n\n        def Shader \"Subtract\"\n        {\n            uniform token info:id = \"ND_subtract_vector2\"\n            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>\n            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (63, 36)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Absval\"\n        {\n            uniform token info:id = \"ND_absval_vector2\"\n            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)\n            float2 ui:nodegraph:node:size = (123, 43)\n            int ui:nodegraph:node:stackingOrder = 1348\n        }\n\n        def Shader \"Min\"\n        {\n            uniform token info:id = \"ND_min_float\"\n            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>\n            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>\n            float outputs:out\n            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)\n            float2 ui:nodegraph:node:size = (114, 36)\n            int ui:nodegraph:node:stackingOrder = 1363\n        }\n    }\n}\n\n"
  },
  {
    "path": "WebSockets/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"GridMaterial\", \"Sphere\"]\n    rel material:binding = None (\n        bindMaterialAs = \"weakerThanDescendants\"\n    )\n\n    def Sphere \"Sphere\" (\n        active = true\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        rel material:binding = </Root/GridMaterial/GridMaterial> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        double radius = 0.05\n        quatf xformOp:orient = (1, 0, 0, 0)\n        float3 xformOp:scale = (1, 1, 1)\n        float3 xformOp:translate = (0, 0, 0.0004)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def RealityKitComponent \"Collider\"\n        {\n            uint group = 1\n            uniform token info:id = \"RealityKit.Collider\"\n            uint mask = 4294967295\n            token type = \"Default\"\n\n            def RealityKitStruct \"Shape\"\n            {\n                float3 extent = (0.2, 0.2, 0.2)\n                float radius = 0.05\n                token shapeType = \"Sphere\"\n            }\n        }\n\n        def RealityKitComponent \"InputTarget\"\n        {\n            uniform token info:id = \"RealityKit.InputTarget\"\n        }\n    }\n\n    def \"GridMaterial\" (\n        active = true\n        prepend references = @Materials/GridMaterial.usda@\n    )\n    {\n        float3 xformOp:scale = (1, 1, 1)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n}\n\n"
  },
  {
    "path": "WebSockets/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "WebSockets/README.md",
    "content": "# WebSockets\n_Get Real-Time Cryptocurrency Prices for Bitcoin and Ethereum_\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/65d69b88-489d-4f82-be38-c8e9a9db00a9\n"
  },
  {
    "path": "WebSockets/WebSockets/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"btc-back.png\",\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "WebSockets/WebSockets/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "WebSockets/WebSockets/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "WebSockets/WebSockets/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"btc-front.png\",\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "WebSockets/WebSockets/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "WebSockets/WebSockets/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "WebSockets/WebSockets/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "WebSockets/WebSockets/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "WebSockets/WebSockets/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  WebSockets\n//\n//  Created by IVAN CAMPOS on 1/28/24.\n//\n\nimport SwiftUI\n\n\n// Main ContentView\nstruct ContentView: View {\n    @ObservedObject var webSocketService = WebSocketService()\n    \n    var body: some View {\n        VStack {\n            // BTC-USD\n            VStack {\n                Text(\"Bitcoin\")\n                    .font(.largeTitle)\n                Text(\"\")\n                Text(formatAsCurrency(webSocketService.btcPrice))\n                    .scaleEffect(1.5)\n            }\n            .padding()\n            \n            // ETH-USD\n            VStack {\n                Text(\"Ethereum\")\n                    .font(.largeTitle)\n                Text(\"\")\n                Text(formatAsCurrency(webSocketService.ethPrice))\n                    .scaleEffect(1.5)\n            }\n            .padding()\n        }\n        .onAppear {\n            webSocketService.connect()\n        }\n        .onDisappear {\n            webSocketService.disconnect()\n        }\n    }\n    \n    private func formatAsCurrency(_ priceString: String) -> String {\n        guard let priceValue = Double(priceString) else { return priceString }\n        \n        let formatter = NumberFormatter()\n        formatter.numberStyle = .currency\n        formatter.currencySymbol = \"$\"\n        formatter.groupingSeparator = \",\"\n        formatter.maximumFractionDigits = 2\n        formatter.minimumFractionDigits = 2\n        \n        return formatter.string(from: NSNumber(value: priceValue)) ?? priceString\n    }\n    \n}\n\n"
  },
  {
    "path": "WebSockets/WebSockets/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "WebSockets/WebSockets/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "WebSockets/WebSockets/WebSocketService.swift",
    "content": "//\n//  WebSocketService.swift\n//  WebSockets\n//\n//  Created by IVAN CAMPOS on 1/28/24.\n//\n\nimport Foundation\nimport SwiftUI\n\nclass WebSocketService: ObservableObject {\n    private var webSocketTask: URLSessionWebSocketTask?\n    private let url = URL(string: \"wss://ws-feed.exchange.coinbase.com\")!\n    \n    @Published var btcPrice: String = \"Loading...\"\n    @Published var ethPrice: String = \"Loading...\"\n    \n    init() {\n        \n    }\n    \n    deinit {\n        disconnect()\n    }\n    \n    func connect() {\n        let session = URLSession(configuration: .default)\n        webSocketTask = session.webSocketTask(with: url)\n        webSocketTask?.resume()\n        \n        sendSubscriptionMessage()\n        receiveMessage()\n        \n        // Setup a ping/pong mechanism to keep the connection alive or detect disconnections.\n        setupHeartbeat()\n    }\n    \n    private func setupHeartbeat() {\n        // Send a ping at regular intervals\n        Timer.scheduledTimer(withTimeInterval: 30, repeats: true) { [weak self] _ in\n            self?.webSocketTask?.sendPing { error in\n                if let error = error {\n                    print(\"Ping failed: \\(error.localizedDescription)\")\n                    self?.reconnect()\n                }\n            }\n        }\n    }\n    \n    private func reconnect() {\n        disconnect()\n        connect()\n    }\n    \n    func disconnect() {\n        webSocketTask?.cancel(with: .goingAway, reason: nil)\n        webSocketTask = nil\n    }\n    \n    private func sendSubscriptionMessage() {\n        let subscriptionMessage: [String: Any] = [\n            \"type\": \"subscribe\",\n            \"product_ids\": [\"BTC-USD\", \"ETH-USD\"],\n            \"channels\": [[\"name\": \"ticker\", \"product_ids\": [\"BTC-USD\", \"ETH-USD\"]]]\n        ]\n        \n        guard let jsonData = try? JSONSerialization.data(withJSONObject: subscriptionMessage, options: []) else {\n            print(\"Error: Unable to serialize subscription message to JSON\")\n            return\n        }\n        \n        webSocketTask?.send(.data(jsonData)) { error in\n            if let error = error {\n                print(\"Error in sending message: \\(error)\")\n            }\n        }\n    }\n    \n    private func receiveMessage() {\n        webSocketTask?.receive { [weak self] result in\n            switch result {\n            case .failure(let error):\n                print(\"Error in receiving message: \\(error)\")\n            case .success(let message):\n                switch message {\n                case .string(let text):\n                    self?.handleMessage(text)\n                case .data(let data):\n                    print(\"Received data: \\(data)\")\n                    if let text = String(data: data, encoding: .utf8) {\n                        self?.handleMessage(text)\n                    }\n                default:\n                    break\n                }\n                \n                self?.receiveMessage() // Keep listening\n            }\n        }\n    }\n    \n    private func handleMessage(_ text: String) {\n        if let data = text.data(using: .utf8) {\n            do {\n                if let jsonObject = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any],\n                   let type = jsonObject[\"type\"] as? String, type == \"ticker\",\n                   let productId = jsonObject[\"product_id\"] as? String,\n                   let price = jsonObject[\"price\"] as? String {\n                    DispatchQueue.main.async {\n                        if productId == \"BTC-USD\" {\n                            self.btcPrice = price\n                        } else if productId == \"ETH-USD\" {\n                            self.ethPrice = price\n                        }\n                    }\n                }\n            } catch {\n                DispatchQueue.main.async {\n                    print(\"Error parsing JSON: \\(error)\")\n                }\n            }\n        }\n    }\n    \n}\n"
  },
  {
    "path": "WebSockets/WebSockets/WebSocketsApp.swift",
    "content": "//\n//  WebSocketsApp.swift\n//  WebSockets\n//\n//  Created by IVAN CAMPOS on 1/28/24.\n//\n\nimport SwiftUI\n\n@main\nstruct WebSocketsApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n        .defaultSize(width: 420, height: 420)\n    }\n}\n"
  },
  {
    "path": "WebSockets/WebSockets.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B3A06522B664C91008FF558 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B3A06512B664C91008FF558 /* RealityKitContent */; };\n\t\t3B3A06542B664C91008FF558 /* WebSocketsApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A06532B664C91008FF558 /* WebSocketsApp.swift */; };\n\t\t3B3A06562B664C91008FF558 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A06552B664C91008FF558 /* ContentView.swift */; };\n\t\t3B3A06582B664C92008FF558 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B3A06572B664C92008FF558 /* Assets.xcassets */; };\n\t\t3B3A065B2B664C92008FF558 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B3A065A2B664C92008FF558 /* Preview Assets.xcassets */; };\n\t\t3B3A06632B664CB6008FF558 /* WebSocketService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A06622B664CB6008FF558 /* WebSocketService.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B3A064C2B664C91008FF558 /* WebSockets.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WebSockets.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B3A06502B664C91008FF558 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n\t\t3B3A06532B664C91008FF558 /* WebSocketsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocketsApp.swift; sourceTree = \"<group>\"; };\n\t\t3B3A06552B664C91008FF558 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3B3A06572B664C92008FF558 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3B3A065A2B664C92008FF558 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t3B3A065C2B664C92008FF558 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3B3A06622B664CB6008FF558 /* WebSocketService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocketService.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B3A06492B664C91008FF558 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B3A06522B664C91008FF558 /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B3A06432B664C91008FF558 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A064E2B664C91008FF558 /* WebSockets */,\n\t\t\t\t3B3A064F2B664C91008FF558 /* Packages */,\n\t\t\t\t3B3A064D2B664C91008FF558 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B3A064D2B664C91008FF558 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A064C2B664C91008FF558 /* WebSockets.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B3A064E2B664C91008FF558 /* WebSockets */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A06532B664C91008FF558 /* WebSocketsApp.swift */,\n\t\t\t\t3B3A06552B664C91008FF558 /* ContentView.swift */,\n\t\t\t\t3B3A06622B664CB6008FF558 /* WebSocketService.swift */,\n\t\t\t\t3B3A06572B664C92008FF558 /* Assets.xcassets */,\n\t\t\t\t3B3A065C2B664C92008FF558 /* Info.plist */,\n\t\t\t\t3B3A06592B664C92008FF558 /* Preview Content */,\n\t\t\t);\n\t\t\tpath = WebSockets;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B3A064F2B664C91008FF558 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A06502B664C91008FF558 /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B3A06592B664C92008FF558 /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3A065A2B664C92008FF558 /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B3A064B2B664C91008FF558 /* WebSockets */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B3A065F2B664C92008FF558 /* Build configuration list for PBXNativeTarget \"WebSockets\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B3A06482B664C91008FF558 /* Sources */,\n\t\t\t\t3B3A06492B664C91008FF558 /* Frameworks */,\n\t\t\t\t3B3A064A2B664C91008FF558 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = WebSockets;\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B3A06512B664C91008FF558 /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = WebSockets;\n\t\t\tproductReference = 3B3A064C2B664C91008FF558 /* WebSockets.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B3A06442B664C91008FF558 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1520;\n\t\t\t\tLastUpgradeCheck = 1520;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B3A064B2B664C91008FF558 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B3A06472B664C91008FF558 /* Build configuration list for PBXProject \"WebSockets\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B3A06432B664C91008FF558;\n\t\t\tproductRefGroup = 3B3A064D2B664C91008FF558 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B3A064B2B664C91008FF558 /* WebSockets */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B3A064A2B664C91008FF558 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B3A065B2B664C92008FF558 /* Preview Assets.xcassets in Resources */,\n\t\t\t\t3B3A06582B664C92008FF558 /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B3A06482B664C91008FF558 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B3A06562B664C91008FF558 /* ContentView.swift in Sources */,\n\t\t\t\t3B3A06632B664CB6008FF558 /* WebSocketService.swift in Sources */,\n\t\t\t\t3B3A06542B664C91008FF558 /* WebSocketsApp.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B3A065D2B664C92008FF558 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B3A065E2B664C92008FF558 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B3A06602B664C92008FF558 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"WebSockets/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.WebSockets;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B3A06612B664C92008FF558 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"WebSockets/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.WebSockets;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B3A06472B664C91008FF558 /* Build configuration list for PBXProject \"WebSockets\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B3A065D2B664C92008FF558 /* Debug */,\n\t\t\t\t3B3A065E2B664C92008FF558 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B3A065F2B664C92008FF558 /* Build configuration list for PBXNativeTarget \"WebSockets\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B3A06602B664C92008FF558 /* Debug */,\n\t\t\t\t3B3A06612B664C92008FF558 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B3A06512B664C91008FF558 /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B3A06442B664C91008FF558 /* Project object */;\n}\n"
  },
  {
    "path": "WebSockets/WebSockets.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/ivancampos/Code/visionOS/WebSockets/WebSockets.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "WebSockets/WebSockets.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "bsky 3D/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "content": "{\n  \"pathsToIds\" : {\n    \"RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/Immersive.usda\" : \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\"\n  }\n}"
  },
  {
    "path": "bsky 3D/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "content": "{\n  \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\" : {\n    \"objectMetadataList\" : [\n      [\n        \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\",\n        \"Root\"\n      ],\n      {\n        \"disallowsFraming\" : false,\n        \"isExpanded\" : true,\n        \"isLocked\" : false\n      },\n      [\n        \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\",\n        \"Root\",\n        \"Video_Dock\"\n      ],\n      {\n        \"disallowsFraming\" : false,\n        \"isExpanded\" : false,\n        \"isLocked\" : false\n      },\n      [\n        \"C6A7F375-BFE9-46E0-9EA6-1A6B150F43FD\",\n        \"Root\",\n        \"SkyDome\"\n      ],\n      {\n        \"disallowsFraming\" : true,\n        \"isExpanded\" : false,\n        \"isLocked\" : false\n      }\n    ]\n  }\n}"
  },
  {
    "path": "bsky 3D/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "content": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true\n  },\n  \"unitDefaults\" : {\n    \"°\" : \"°\",\n    \"kg\" : \"g\",\n    \"kg⋅m²\" : \"kg⋅m²\",\n    \"m\" : \"cm\",\n    \"m\\/s\" : \"m\\/s\",\n    \"m\\/s²\" : \"m\\/s²\",\n    \"s\" : \"s\"\n  }\n}"
  },
  {
    "path": "bsky 3D/Packages/RealityKitContent/Package.swift",
    "content": "// swift-tools-version:6.0\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"RealityKitContent\",\n    platforms: [\n        .visionOS(.v2),\n        .macOS(.v15),\n        .iOS(.v18)\n    ],\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"RealityKitContent\",\n            targets: [\"RealityKitContent\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"RealityKitContent\",\n            dependencies: []),\n    ]\n)"
  },
  {
    "path": "bsky 3D/Packages/RealityKitContent/README.md",
    "content": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "bsky 3D/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Ground/Ground.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Ground\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Ground\"\n{\n    float3 xformOp:translate = (0, 0.1, 0)\n    uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n    def Mesh \"Mesh\" (\n        prepend apiSchemas = [\"MaterialBindingAPI\"]\n    )\n    {\n        float3[] extent = [(-2.5, 0, -2), (2.5, 0, 3)]\n        int[] faceVertexCounts = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]\n        int[] faceVertexIndices = [0, 1, 26, 25, 1, 2, 27, 26, 2, 3, 28, 27, 3, 4, 29, 28, 4, 5, 30, 29, 5, 6, 31, 30, 6, 7, 32, 31, 7, 8, 33, 32, 8, 9, 34, 33, 9, 10, 35, 34, 10, 11, 36, 35, 11, 12, 37, 36, 12, 13, 38, 37, 13, 14, 39, 38, 14, 15, 40, 39, 15, 16, 41, 40, 16, 17, 42, 41, 17, 18, 43, 42, 18, 19, 44, 43, 19, 20, 45, 44, 20, 21, 46, 45, 21, 22, 47, 46, 22, 23, 48, 47, 23, 24, 49, 48, 25, 26, 51, 50, 26, 27, 52, 51, 27, 28, 53, 52, 28, 29, 54, 53, 29, 30, 55, 54, 30, 31, 56, 55, 31, 32, 57, 56, 32, 33, 58, 57, 33, 34, 59, 58, 34, 35, 60, 59, 35, 36, 61, 60, 36, 37, 62, 61, 37, 38, 63, 62, 38, 39, 64, 63, 39, 40, 65, 64, 40, 41, 66, 65, 41, 42, 67, 66, 42, 43, 68, 67, 43, 44, 69, 68, 44, 45, 70, 69, 45, 46, 71, 70, 46, 47, 72, 71, 47, 48, 73, 72, 48, 49, 74, 73, 50, 51, 76, 75, 51, 52, 77, 76, 52, 53, 78, 77, 53, 54, 79, 78, 54, 55, 80, 79, 55, 56, 81, 80, 56, 57, 82, 81, 57, 58, 83, 82, 58, 59, 84, 83, 59, 60, 85, 84, 60, 61, 86, 85, 61, 62, 87, 86, 62, 63, 88, 87, 63, 64, 89, 88, 64, 65, 90, 89, 65, 66, 91, 90, 66, 67, 92, 91, 67, 68, 93, 92, 68, 69, 94, 93, 69, 70, 95, 94, 70, 71, 96, 95, 71, 72, 97, 96, 72, 73, 98, 97, 73, 74, 99, 98, 75, 76, 101, 100, 76, 77, 102, 101, 77, 78, 103, 102, 78, 79, 104, 103, 79, 80, 105, 104, 80, 81, 106, 105, 81, 82, 107, 106, 82, 83, 108, 107, 83, 84, 109, 108, 84, 85, 110, 109, 85, 86, 111, 110, 86, 87, 112, 111, 87, 88, 113, 112, 88, 89, 114, 113, 89, 90, 115, 114, 90, 91, 116, 115, 91, 92, 117, 116, 92, 93, 118, 117, 93, 94, 119, 118, 94, 95, 120, 119, 95, 96, 121, 120, 96, 97, 122, 121, 97, 98, 123, 122, 98, 99, 124, 123, 100, 101, 126, 125, 101, 102, 127, 126, 102, 103, 128, 127, 103, 104, 129, 128, 104, 105, 130, 129, 105, 106, 131, 130, 106, 107, 132, 131, 107, 108, 133, 132, 108, 109, 134, 133, 109, 110, 135, 134, 110, 111, 136, 135, 111, 112, 137, 136, 112, 113, 138, 137, 113, 114, 139, 138, 114, 115, 140, 139, 115, 116, 141, 140, 116, 117, 142, 141, 117, 118, 143, 142, 118, 119, 144, 143, 119, 120, 145, 144, 120, 121, 146, 145, 121, 122, 147, 146, 122, 123, 148, 147, 123, 124, 149, 148, 125, 126, 151, 150, 126, 127, 152, 151, 127, 128, 153, 152, 128, 129, 154, 153, 129, 130, 155, 154, 130, 131, 156, 155, 131, 132, 157, 156, 132, 133, 158, 157, 133, 134, 159, 158, 134, 135, 160, 159, 135, 136, 161, 160, 136, 137, 162, 161, 137, 138, 163, 162, 138, 139, 164, 163, 139, 140, 165, 164, 140, 141, 166, 165, 141, 142, 167, 166, 142, 143, 168, 167, 143, 144, 169, 168, 144, 145, 170, 169, 145, 146, 171, 170, 146, 147, 172, 171, 147, 148, 173, 172, 148, 149, 174, 173, 150, 151, 176, 175, 151, 152, 177, 176, 152, 153, 178, 177, 153, 154, 179, 178, 154, 155, 180, 179, 155, 156, 181, 180, 156, 157, 182, 181, 157, 158, 183, 182, 158, 159, 184, 183, 159, 160, 185, 184, 160, 161, 186, 185, 161, 162, 187, 186, 162, 163, 188, 187, 163, 164, 189, 188, 164, 165, 190, 189, 165, 166, 191, 190, 166, 167, 192, 191, 167, 168, 193, 192, 168, 169, 194, 193, 169, 170, 195, 194, 170, 171, 196, 195, 171, 172, 197, 196, 172, 173, 198, 197, 173, 174, 199, 198, 175, 176, 201, 200, 176, 177, 202, 201, 177, 178, 203, 202, 178, 179, 204, 203, 179, 180, 205, 204, 180, 181, 206, 205, 181, 182, 207, 206, 182, 183, 208, 207, 183, 184, 209, 208, 184, 185, 210, 209, 185, 186, 211, 210, 186, 187, 212, 211, 187, 188, 213, 212, 188, 189, 214, 213, 189, 190, 215, 214, 190, 191, 216, 215, 191, 192, 217, 216, 192, 193, 218, 217, 193, 194, 219, 218, 194, 195, 220, 219, 195, 196, 221, 220, 196, 197, 222, 221, 197, 198, 223, 222, 198, 199, 224, 223, 200, 201, 226, 225, 201, 202, 227, 226, 202, 203, 228, 227, 203, 204, 229, 228, 204, 205, 230, 229, 205, 206, 231, 230, 206, 207, 232, 231, 207, 208, 233, 232, 208, 209, 234, 233, 209, 210, 235, 234, 210, 211, 236, 235, 211, 212, 237, 236, 212, 213, 238, 237, 213, 214, 239, 238, 214, 215, 240, 239, 215, 216, 241, 240, 216, 217, 242, 241, 217, 218, 243, 242, 218, 219, 244, 243, 219, 220, 245, 244, 220, 221, 246, 245, 221, 222, 247, 246, 222, 223, 248, 247, 223, 224, 249, 248, 225, 226, 251, 250, 226, 227, 252, 251, 227, 228, 253, 252, 228, 229, 254, 253, 229, 230, 255, 254, 230, 231, 256, 255, 231, 232, 257, 256, 232, 233, 258, 257, 233, 234, 259, 258, 234, 235, 260, 259, 235, 236, 261, 260, 236, 237, 262, 261, 237, 238, 263, 262, 238, 239, 264, 263, 239, 240, 265, 264, 240, 241, 266, 265, 241, 242, 267, 266, 242, 243, 268, 267, 243, 244, 269, 268, 244, 245, 270, 269, 245, 246, 271, 270, 246, 247, 272, 271, 247, 248, 273, 272, 248, 249, 274, 273, 250, 251, 276, 275, 251, 252, 277, 276, 252, 253, 278, 277, 253, 254, 279, 278, 254, 255, 280, 279, 255, 256, 281, 280, 256, 257, 282, 281, 257, 258, 283, 282, 258, 259, 284, 283, 259, 260, 285, 284, 260, 261, 286, 285, 261, 262, 287, 286, 262, 263, 288, 287, 263, 264, 289, 288, 264, 265, 290, 289, 265, 266, 291, 290, 266, 267, 292, 291, 267, 268, 293, 292, 268, 269, 294, 293, 269, 270, 295, 294, 270, 271, 296, 295, 271, 272, 297, 296, 272, 273, 298, 297, 273, 274, 299, 298, 275, 276, 301, 300, 276, 277, 302, 301, 277, 278, 303, 302, 278, 279, 304, 303, 279, 280, 305, 304, 280, 281, 306, 305, 281, 282, 307, 306, 282, 283, 308, 307, 283, 284, 309, 308, 284, 285, 310, 309, 285, 286, 311, 310, 286, 287, 312, 311, 287, 288, 313, 312, 288, 289, 314, 313, 289, 290, 315, 314, 290, 291, 316, 315, 291, 292, 317, 316, 292, 293, 318, 317, 293, 294, 319, 318, 294, 295, 320, 319, 295, 296, 321, 320, 296, 297, 322, 321, 297, 298, 323, 322, 298, 299, 324, 323, 300, 301, 326, 325, 301, 302, 327, 326, 302, 303, 328, 327, 303, 304, 329, 328, 304, 305, 330, 329, 305, 306, 331, 330, 306, 307, 332, 331, 307, 308, 333, 332, 308, 309, 334, 333, 309, 310, 335, 334, 310, 311, 336, 335, 311, 312, 337, 336, 312, 313, 338, 337, 313, 314, 339, 338, 314, 315, 340, 339, 315, 316, 341, 340, 316, 317, 342, 341, 317, 318, 343, 342, 318, 319, 344, 343, 319, 320, 345, 344, 320, 321, 346, 345, 321, 322, 347, 346, 322, 323, 348, 347, 323, 324, 349, 348, 325, 326, 351, 350, 326, 327, 352, 351, 327, 328, 353, 352, 328, 329, 354, 353, 329, 330, 355, 354, 330, 331, 356, 355, 331, 332, 357, 356, 332, 333, 358, 357, 333, 334, 359, 358, 334, 335, 360, 359, 335, 336, 361, 360, 336, 337, 362, 361, 337, 338, 363, 362, 338, 339, 364, 363, 339, 340, 365, 364, 340, 341, 366, 365, 341, 342, 367, 366, 342, 343, 368, 367, 343, 344, 369, 368, 344, 345, 370, 369, 345, 346, 371, 370, 346, 347, 372, 371, 347, 348, 373, 372, 348, 349, 374, 373, 350, 351, 376, 375, 351, 352, 377, 376, 352, 353, 378, 377, 353, 354, 379, 378, 354, 355, 380, 379, 355, 356, 381, 380, 356, 357, 382, 381, 357, 358, 383, 382, 358, 359, 384, 383, 359, 360, 385, 384, 360, 361, 386, 385, 361, 362, 387, 386, 362, 363, 388, 387, 363, 364, 389, 388, 364, 365, 390, 389, 365, 366, 391, 390, 366, 367, 392, 391, 367, 368, 393, 392, 368, 369, 394, 393, 369, 370, 395, 394, 370, 371, 396, 395, 371, 372, 397, 396, 372, 373, 398, 397, 373, 374, 399, 398, 375, 376, 401, 400, 376, 377, 402, 401, 377, 378, 403, 402, 378, 379, 404, 403, 379, 380, 405, 404, 380, 381, 406, 405, 381, 382, 407, 406, 382, 383, 408, 407, 383, 384, 409, 408, 384, 385, 410, 409, 385, 386, 411, 410, 386, 387, 412, 411, 387, 388, 413, 412, 388, 389, 414, 413, 389, 390, 415, 414, 390, 391, 416, 415, 391, 392, 417, 416, 392, 393, 418, 417, 393, 394, 419, 418, 394, 395, 420, 419, 395, 396, 421, 420, 396, 397, 422, 421, 397, 398, 423, 422, 398, 399, 424, 423, 400, 401, 426, 425, 401, 402, 427, 426, 402, 403, 428, 427, 403, 404, 429, 428, 404, 405, 430, 429, 405, 406, 431, 430, 406, 407, 432, 431, 407, 408, 433, 432, 408, 409, 434, 433, 409, 410, 435, 434, 410, 411, 436, 435, 411, 412, 437, 436, 412, 413, 438, 437, 413, 414, 439, 438, 414, 415, 440, 439, 415, 416, 441, 440, 416, 417, 442, 441, 417, 418, 443, 442, 418, 419, 444, 443, 419, 420, 445, 444, 420, 421, 446, 445, 421, 422, 447, 446, 422, 423, 448, 447, 423, 424, 449, 448, 425, 426, 451, 450, 426, 427, 452, 451, 427, 428, 453, 452, 428, 429, 454, 453, 429, 430, 455, 454, 430, 431, 456, 455, 431, 432, 457, 456, 432, 433, 458, 457, 433, 434, 459, 458, 434, 435, 460, 459, 435, 436, 461, 460, 436, 437, 462, 461, 437, 438, 463, 462, 438, 439, 464, 463, 439, 440, 465, 464, 440, 441, 466, 465, 441, 442, 467, 466, 442, 443, 468, 467, 443, 444, 469, 468, 444, 445, 470, 469, 445, 446, 471, 470, 446, 447, 472, 471, 447, 448, 473, 472, 448, 449, 474, 473, 450, 451, 476, 475, 451, 452, 477, 476, 452, 453, 478, 477, 453, 454, 479, 478, 454, 455, 480, 479, 455, 456, 481, 480, 456, 457, 482, 481, 457, 458, 483, 482, 458, 459, 484, 483, 459, 460, 485, 484, 460, 461, 486, 485, 461, 462, 487, 486, 462, 463, 488, 487, 463, 464, 489, 488, 464, 465, 490, 489, 465, 466, 491, 490, 466, 467, 492, 491, 467, 468, 493, 492, 468, 469, 494, 493, 469, 470, 495, 494, 470, 471, 496, 495, 471, 472, 497, 496, 472, 473, 498, 497, 473, 474, 499, 498, 475, 476, 501, 500, 476, 477, 502, 501, 477, 478, 503, 502, 478, 479, 504, 503, 479, 480, 505, 504, 480, 481, 506, 505, 481, 482, 507, 506, 482, 483, 508, 507, 483, 484, 509, 508, 484, 485, 510, 509, 485, 486, 511, 510, 486, 487, 512, 511, 487, 488, 513, 512, 488, 489, 514, 513, 489, 490, 515, 514, 490, 491, 516, 515, 491, 492, 517, 516, 492, 493, 518, 517, 493, 494, 519, 518, 494, 495, 520, 519, 495, 496, 521, 520, 496, 497, 522, 521, 497, 498, 523, 522, 498, 499, 524, 523, 500, 501, 526, 525, 501, 502, 527, 526, 502, 503, 528, 527, 503, 504, 529, 528, 504, 505, 530, 529, 505, 506, 531, 530, 506, 507, 532, 531, 507, 508, 533, 532, 508, 509, 534, 533, 509, 510, 535, 534, 510, 511, 536, 535, 511, 512, 537, 536, 512, 513, 538, 537, 513, 514, 539, 538, 514, 515, 540, 539, 515, 516, 541, 540, 516, 517, 542, 541, 517, 518, 543, 542, 518, 519, 544, 543, 519, 520, 545, 544, 520, 521, 546, 545, 521, 522, 547, 546, 522, 523, 548, 547, 523, 524, 549, 548, 525, 526, 551, 550, 526, 527, 552, 551, 527, 528, 553, 552, 528, 529, 554, 553, 529, 530, 555, 554, 530, 531, 556, 555, 531, 532, 557, 556, 532, 533, 558, 557, 533, 534, 559, 558, 534, 535, 560, 559, 535, 536, 561, 560, 536, 537, 562, 561, 537, 538, 563, 562, 538, 539, 564, 563, 539, 540, 565, 564, 540, 541, 566, 565, 541, 542, 567, 566, 542, 543, 568, 567, 543, 544, 569, 568, 544, 545, 570, 569, 545, 546, 571, 570, 546, 547, 572, 571, 547, 548, 573, 572, 548, 549, 574, 573, 550, 551, 576, 575, 551, 552, 577, 576, 552, 553, 578, 577, 553, 554, 579, 578, 554, 555, 580, 579, 555, 556, 581, 580, 556, 557, 582, 581, 557, 558, 583, 582, 558, 559, 584, 583, 559, 560, 585, 584, 560, 561, 586, 585, 561, 562, 587, 586, 562, 563, 588, 587, 563, 564, 589, 588, 564, 565, 590, 589, 565, 566, 591, 590, 566, 567, 592, 591, 567, 568, 593, 592, 568, 569, 594, 593, 569, 570, 595, 594, 570, 571, 596, 595, 571, 572, 597, 596, 572, 573, 598, 597, 573, 574, 599, 598, 575, 576, 601, 600, 576, 577, 602, 601, 577, 578, 603, 602, 578, 579, 604, 603, 579, 580, 605, 604, 580, 581, 606, 605, 581, 582, 607, 606, 582, 583, 608, 607, 583, 584, 609, 608, 584, 585, 610, 609, 585, 586, 611, 610, 586, 587, 612, 611, 587, 588, 613, 612, 588, 589, 614, 613, 589, 590, 615, 614, 590, 591, 616, 615, 591, 592, 617, 616, 592, 593, 618, 617, 593, 594, 619, 618, 594, 595, 620, 619, 595, 596, 621, 620, 596, 597, 622, 621, 597, 598, 623, 622, 598, 599, 624, 623]\n        rel material:binding = </Ground/Material> (\n            bindMaterialAs = \"weakerThanDescendants\"\n        )\n        uniform token orientation = \"leftHanded\"\n        point3f[] points = [(-2.5, 0, -2), (-2.2916667, 0, -2), (-2.0833333, 0, -2), (-1.875, 0, -2), (-1.6666667, 0, -2), (-1.4583334, 0, -2), (-1.25, 0, -2), (-1.0416667, 0, -2), (-0.8333334, 0, -2), (-0.625, 0, -2), (-0.41666675, 0, -2), (-0.20833349, 0, -2), (0, 0, -2), (0.20833325, 0, -2), (0.4166665, 0, -2), (0.625, 0, -2), (0.83333325, 0, -2), (1.0416665, 0, -2), (1.25, 0, -2), (1.4583333, 0, -2), (1.6666665, 0, -2), (1.875, 0, -2), (2.083333, 0, -2), (2.2916665, 0, -2), (2.5, 0, -2), (-2.5, 0, -1.7916666), (-2.2916667, 0, -1.7916666), (-2.0833333, 0, -1.7916666), (-1.875, 0, -1.7916666), (-1.6666667, 0, -1.7916666), (-1.4583334, 0, -1.7916666), (-1.25, 0, -1.7916666), (-1.0416667, 0, -1.7916666), (-0.8333334, 0, -1.7916666), (-0.625, 0, -1.7916666), (-0.41666675, 0, -1.7916666), (-0.20833349, 0, -1.7916666), (0, 0, -1.7916666), (0.20833325, 0, -1.7916666), (0.4166665, 0, -1.7916666), (0.625, 0, -1.7916666), (0.83333325, 0, -1.7916666), (1.0416665, 0, -1.7916666), (1.25, 0, -1.7916666), (1.4583333, 0, -1.7916666), (1.6666665, 0, -1.7916666), (1.875, 0, -1.7916666), (2.083333, 0, -1.7916666), (2.2916665, 0, -1.7916666), (2.5, 0, -1.7916666), (-2.5, 0, -1.5833334), (-2.2916667, 0, -1.5833334), (-2.0833333, 0, -1.5833334), (-1.875, 0, -1.5833334), (-1.6666667, 0, -1.5833334), (-1.4583334, 0, -1.5833334), (-1.25, 0, -1.5833334), (-1.0416667, 0, -1.5833334), (-0.8333334, 0, -1.5833334), (-0.625, 0, -1.5833334), (-0.41666675, 0, -1.5833334), (-0.20833349, 0, -1.5833334), (0, 0, -1.5833334), (0.20833325, 0, -1.5833334), (0.4166665, 0, -1.5833334), (0.625, 0, -1.5833334), (0.83333325, 0, -1.5833334), (1.0416665, 0, -1.5833334), (1.25, 0, -1.5833334), (1.4583333, 0, -1.5833334), (1.6666665, 0, -1.5833334), (1.875, 0, -1.5833334), (2.083333, 0, -1.5833334), (2.2916665, 0, -1.5833334), (2.5, 0, -1.5833334), (-2.5, 0, -1.375), (-2.2916667, 0, -1.375), (-2.0833333, 0, -1.375), (-1.875, 0, -1.375), (-1.6666667, 0, -1.375), (-1.4583334, 0, -1.375), (-1.25, 0, -1.375), (-1.0416667, 0, -1.375), (-0.8333334, 0, -1.375), (-0.625, 0, -1.375), (-0.41666675, 0, -1.375), (-0.20833349, 0, -1.375), (0, 0, -1.375), (0.20833325, 0, -1.375), (0.4166665, 0, -1.375), (0.625, 0, -1.375), (0.83333325, 0, -1.375), (1.0416665, 0, -1.375), (1.25, 0, -1.375), (1.4583333, 0, -1.375), (1.6666665, 0, -1.375), (1.875, 0, -1.375), (2.083333, 0, -1.375), (2.2916665, 0, -1.375), (2.5, 0, -1.375), (-2.5, 0, -1.1666667), (-2.2916667, 0, -1.1666667), (-2.0833333, 0, -1.1666667), (-1.875, 0, -1.1666667), (-1.6666667, 0, -1.1666667), (-1.4583334, 0, -1.1666667), (-1.25, 0, -1.1666667), (-1.0416667, 0, -1.1666667), (-0.8333334, 0, -1.1666667), (-0.625, 0, -1.1666667), (-0.41666675, 0, -1.1666667), (-0.20833349, 0, -1.1666667), (0, 0, -1.1666667), (0.20833325, 0, -1.1666667), (0.4166665, 0, -1.1666667), (0.625, 0, -1.1666667), (0.83333325, 0, -1.1666667), (1.0416665, 0, -1.1666667), (1.25, 0, -1.1666667), (1.4583333, 0, -1.1666667), (1.6666665, 0, -1.1666667), (1.875, 0, -1.1666667), (2.083333, 0, -1.1666667), (2.2916665, 0, -1.1666667), (2.5, 0, -1.1666667), (-2.5, 0, -0.9583334), (-2.2916667, 0, -0.9583334), (-2.0833333, 0, -0.9583334), (-1.875, 0, -0.9583334), (-1.6666667, 0, -0.9583334), (-1.4583334, 0, -0.9583334), (-1.25, 0, -0.9583334), (-1.0416667, 0, -0.9583334), (-0.8333334, 0, -0.9583334), (-0.625, 0, -0.9583334), (-0.41666675, 0, -0.9583334), (-0.20833349, 0, -0.9583334), (0, 0, -0.9583334), (0.20833325, 0, -0.9583334), (0.4166665, 0, -0.9583334), (0.625, 0, -0.9583334), (0.83333325, 0, -0.9583334), (1.0416665, 0, -0.9583334), (1.25, 0, -0.9583334), (1.4583333, 0, -0.9583334), (1.6666665, 0, -0.9583334), (1.875, 0, -0.9583334), (2.083333, 0, -0.9583334), (2.2916665, 0, -0.9583334), (2.5, 0, -0.9583334), (-2.5, 0, -0.75), (-2.2916667, 0, -0.75), (-2.0833333, 0, -0.75), (-1.875, 0, -0.75), (-1.6666667, 0, -0.75), (-1.4583334, 0, -0.75), (-1.25, 0, -0.75), (-1.0416667, 0, -0.75), (-0.8333334, 0, -0.75), (-0.625, 0, -0.75), (-0.41666675, 0, -0.75), (-0.20833349, 0, -0.75), (0, 0, -0.75), (0.20833325, 0, -0.75), (0.4166665, 0, -0.75), (0.625, 0, -0.75), (0.83333325, 0, -0.75), (1.0416665, 0, -0.75), (1.25, 0, -0.75), (1.4583333, 0, -0.75), (1.6666665, 0, -0.75), (1.875, 0, -0.75), (2.083333, 0, -0.75), (2.2916665, 0, -0.75), (2.5, 0, -0.75), (-2.5, 0, -0.54166675), (-2.2916667, 0, -0.54166675), (-2.0833333, 0, -0.54166675), (-1.875, 0, -0.54166675), (-1.6666667, 0, -0.54166675), (-1.4583334, 0, -0.54166675), (-1.25, 0, -0.54166675), (-1.0416667, 0, -0.54166675), (-0.8333334, 0, -0.54166675), (-0.625, 0, -0.54166675), (-0.41666675, 0, -0.54166675), (-0.20833349, 0, -0.54166675), (0, 0, -0.54166675), (0.20833325, 0, -0.54166675), (0.4166665, 0, -0.54166675), (0.625, 0, -0.54166675), (0.83333325, 0, -0.54166675), (1.0416665, 0, -0.54166675), (1.25, 0, -0.54166675), (1.4583333, 0, -0.54166675), (1.6666665, 0, -0.54166675), (1.875, 0, -0.54166675), (2.083333, 0, -0.54166675), (2.2916665, 0, -0.54166675), (2.5, 0, -0.54166675), (-2.5, 0, -0.33333337), (-2.2916667, 0, -0.33333337), (-2.0833333, 0, -0.33333337), (-1.875, 0, -0.33333337), (-1.6666667, 0, -0.33333337), (-1.4583334, 0, -0.33333337), (-1.25, 0, -0.33333337), (-1.0416667, 0, -0.33333337), (-0.8333334, 0, -0.33333337), (-0.625, 0, -0.33333337), (-0.41666675, 0, -0.33333337), (-0.20833349, 0, -0.33333337), (0, 0, -0.33333337), (0.20833325, 0, -0.33333337), (0.4166665, 0, -0.33333337), (0.625, 0, -0.33333337), (0.83333325, 0, -0.33333337), (1.0416665, 0, -0.33333337), (1.25, 0, -0.33333337), (1.4583333, 0, -0.33333337), (1.6666665, 0, -0.33333337), (1.875, 0, -0.33333337), (2.083333, 0, -0.33333337), (2.2916665, 0, -0.33333337), (2.5, 0, -0.33333337), (-2.5, 0, -0.125), (-2.2916667, 0, -0.125), (-2.0833333, 0, -0.125), (-1.875, 0, -0.125), (-1.6666667, 0, -0.125), (-1.4583334, 0, -0.125), (-1.25, 0, -0.125), (-1.0416667, 0, -0.125), (-0.8333334, 0, -0.125), (-0.625, 0, -0.125), (-0.41666675, 0, -0.125), (-0.20833349, 0, -0.125), (0, 0, -0.125), (0.20833325, 0, -0.125), (0.4166665, 0, -0.125), (0.625, 0, -0.125), (0.83333325, 0, -0.125), (1.0416665, 0, -0.125), (1.25, 0, -0.125), (1.4583333, 0, -0.125), (1.6666665, 0, -0.125), (1.875, 0, -0.125), (2.083333, 0, -0.125), (2.2916665, 0, -0.125), (2.5, 0, -0.125), (-2.5, 0, 0.083333254), (-2.2916667, 0, 0.083333254), (-2.0833333, 0, 0.083333254), (-1.875, 0, 0.083333254), (-1.6666667, 0, 0.083333254), (-1.4583334, 0, 0.083333254), (-1.25, 0, 0.083333254), (-1.0416667, 0, 0.083333254), (-0.8333334, 0, 0.083333254), (-0.625, 0, 0.083333254), (-0.41666675, 0, 0.083333254), (-0.20833349, 0, 0.083333254), (0, 0, 0.083333254), (0.20833325, 0, 0.083333254), (0.4166665, 0, 0.083333254), (0.625, 0, 0.083333254), (0.83333325, 0, 0.083333254), (1.0416665, 0, 0.083333254), (1.25, 0, 0.083333254), (1.4583333, 0, 0.083333254), (1.6666665, 0, 0.083333254), (1.875, 0, 0.083333254), (2.083333, 0, 0.083333254), (2.2916665, 0, 0.083333254), (2.5, 0, 0.083333254), (-2.5, 0, 0.2916665), (-2.2916667, 0, 0.2916665), (-2.0833333, 0, 0.2916665), (-1.875, 0, 0.2916665), (-1.6666667, 0, 0.2916665), (-1.4583334, 0, 0.2916665), (-1.25, 0, 0.2916665), (-1.0416667, 0, 0.2916665), (-0.8333334, 0, 0.2916665), (-0.625, 0, 0.2916665), (-0.41666675, 0, 0.2916665), (-0.20833349, 0, 0.2916665), (0, 0, 0.2916665), (0.20833325, 0, 0.2916665), (0.4166665, 0, 0.2916665), (0.625, 0, 0.2916665), (0.83333325, 0, 0.2916665), (1.0416665, 0, 0.2916665), (1.25, 0, 0.2916665), (1.4583333, 0, 0.2916665), (1.6666665, 0, 0.2916665), (1.875, 0, 0.2916665), (2.083333, 0, 0.2916665), (2.2916665, 0, 0.2916665), (2.5, 0, 0.2916665), (-2.5, 0, 0.5), (-2.2916667, 0, 0.5), (-2.0833333, 0, 0.5), (-1.875, 0, 0.5), (-1.6666667, 0, 0.5), (-1.4583334, 0, 0.5), (-1.25, 0, 0.5), (-1.0416667, 0, 0.5), (-0.8333334, 0, 0.5), (-0.625, 0, 0.5), (-0.41666675, 0, 0.5), (-0.20833349, 0, 0.5), (0, 0, 0.5), (0.20833325, 0, 0.5), (0.4166665, 0, 0.5), (0.625, 0, 0.5), (0.83333325, 0, 0.5), (1.0416665, 0, 0.5), (1.25, 0, 0.5), (1.4583333, 0, 0.5), (1.6666665, 0, 0.5), (1.875, 0, 0.5), (2.083333, 0, 0.5), (2.2916665, 0, 0.5), (2.5, 0, 0.5), (-2.5, 0, 0.70833325), (-2.2916667, 0, 0.70833325), (-2.0833333, 0, 0.70833325), (-1.875, 0, 0.70833325), (-1.6666667, 0, 0.70833325), (-1.4583334, 0, 0.70833325), (-1.25, 0, 0.70833325), (-1.0416667, 0, 0.70833325), (-0.8333334, 0, 0.70833325), (-0.625, 0, 0.70833325), (-0.41666675, 0, 0.70833325), (-0.20833349, 0, 0.70833325), (0, 0, 0.70833325), (0.20833325, 0, 0.70833325), (0.4166665, 0, 0.70833325), (0.625, 0, 0.70833325), (0.83333325, 0, 0.70833325), (1.0416665, 0, 0.70833325), (1.25, 0, 0.70833325), (1.4583333, 0, 0.70833325), (1.6666665, 0, 0.70833325), (1.875, 0, 0.70833325), (2.083333, 0, 0.70833325), (2.2916665, 0, 0.70833325), (2.5, 0, 0.70833325), (-2.5, 0, 0.9166665), (-2.2916667, 0, 0.9166665), (-2.0833333, 0, 0.9166665), (-1.875, 0, 0.9166665), (-1.6666667, 0, 0.9166665), (-1.4583334, 0, 0.9166665), (-1.25, 0, 0.9166665), (-1.0416667, 0, 0.9166665), (-0.8333334, 0, 0.9166665), (-0.625, 0, 0.9166665), (-0.41666675, 0, 0.9166665), (-0.20833349, 0, 0.9166665), (0, 0, 0.9166665), (0.20833325, 0, 0.9166665), (0.4166665, 0, 0.9166665), (0.625, 0, 0.9166665), (0.83333325, 0, 0.9166665), (1.0416665, 0, 0.9166665), (1.25, 0, 0.9166665), (1.4583333, 0, 0.9166665), (1.6666665, 0, 0.9166665), (1.875, 0, 0.9166665), (2.083333, 0, 0.9166665), (2.2916665, 0, 0.9166665), (2.5, 0, 0.9166665), (-2.5, 0, 1.125), (-2.2916667, 0, 1.125), (-2.0833333, 0, 1.125), (-1.875, 0, 1.125), (-1.6666667, 0, 1.125), (-1.4583334, 0, 1.125), (-1.25, 0, 1.125), (-1.0416667, 0, 1.125), (-0.8333334, 0, 1.125), (-0.625, 0, 1.125), (-0.41666675, 0, 1.125), (-0.20833349, 0, 1.125), (0, 0, 1.125), (0.20833325, 0, 1.125), (0.4166665, 0, 1.125), (0.625, 0, 1.125), (0.83333325, 0, 1.125), (1.0416665, 0, 1.125), (1.25, 0, 1.125), (1.4583333, 0, 1.125), (1.6666665, 0, 1.125), (1.875, 0, 1.125), (2.083333, 0, 1.125), (2.2916665, 0, 1.125), (2.5, 0, 1.125), (-2.5, 0, 1.3333333), (-2.2916667, 0, 1.3333333), (-2.0833333, 0, 1.3333333), (-1.875, 0, 1.3333333), (-1.6666667, 0, 1.3333333), (-1.4583334, 0, 1.3333333), (-1.25, 0, 1.3333333), (-1.0416667, 0, 1.3333333), (-0.8333334, 0, 1.3333333), (-0.625, 0, 1.3333333), (-0.41666675, 0, 1.3333333), (-0.20833349, 0, 1.3333333), (0, 0, 1.3333333), (0.20833325, 0, 1.3333333), (0.4166665, 0, 1.3333333), (0.625, 0, 1.3333333), (0.83333325, 0, 1.3333333), (1.0416665, 0, 1.3333333), (1.25, 0, 1.3333333), (1.4583333, 0, 1.3333333), (1.6666665, 0, 1.3333333), (1.875, 0, 1.3333333), (2.083333, 0, 1.3333333), (2.2916665, 0, 1.3333333), (2.5, 0, 1.3333333), (-2.5, 0, 1.5416665), (-2.2916667, 0, 1.5416665), (-2.0833333, 0, 1.5416665), (-1.875, 0, 1.5416665), (-1.6666667, 0, 1.5416665), (-1.4583334, 0, 1.5416665), (-1.25, 0, 1.5416665), (-1.0416667, 0, 1.5416665), (-0.8333334, 0, 1.5416665), (-0.625, 0, 1.5416665), (-0.41666675, 0, 1.5416665), (-0.20833349, 0, 1.5416665), (0, 0, 1.5416665), (0.20833325, 0, 1.5416665), (0.4166665, 0, 1.5416665), (0.625, 0, 1.5416665), (0.83333325, 0, 1.5416665), (1.0416665, 0, 1.5416665), (1.25, 0, 1.5416665), (1.4583333, 0, 1.5416665), (1.6666665, 0, 1.5416665), (1.875, 0, 1.5416665), (2.083333, 0, 1.5416665), (2.2916665, 0, 1.5416665), (2.5, 0, 1.5416665), (-2.5, 0, 1.75), (-2.2916667, 0, 1.75), (-2.0833333, 0, 1.75), (-1.875, 0, 1.75), (-1.6666667, 0, 1.75), (-1.4583334, 0, 1.75), (-1.25, 0, 1.75), (-1.0416667, 0, 1.75), (-0.8333334, 0, 1.75), (-0.625, 0, 1.75), (-0.41666675, 0, 1.75), (-0.20833349, 0, 1.75), (0, 0, 1.75), (0.20833325, 0, 1.75), (0.4166665, 0, 1.75), (0.625, 0, 1.75), (0.83333325, 0, 1.75), (1.0416665, 0, 1.75), (1.25, 0, 1.75), (1.4583333, 0, 1.75), (1.6666665, 0, 1.75), (1.875, 0, 1.75), (2.083333, 0, 1.75), (2.2916665, 0, 1.75), (2.5, 0, 1.75), (-2.5, 0, 1.9583333), (-2.2916667, 0, 1.9583333), (-2.0833333, 0, 1.9583333), (-1.875, 0, 1.9583333), (-1.6666667, 0, 1.9583333), (-1.4583334, 0, 1.9583333), (-1.25, 0, 1.9583333), (-1.0416667, 0, 1.9583333), (-0.8333334, 0, 1.9583333), (-0.625, 0, 1.9583333), (-0.41666675, 0, 1.9583333), (-0.20833349, 0, 1.9583333), (0, 0, 1.9583333), (0.20833325, 0, 1.9583333), (0.4166665, 0, 1.9583333), (0.625, 0, 1.9583333), (0.83333325, 0, 1.9583333), (1.0416665, 0, 1.9583333), (1.25, 0, 1.9583333), (1.4583333, 0, 1.9583333), (1.6666665, 0, 1.9583333), (1.875, 0, 1.9583333), (2.083333, 0, 1.9583333), (2.2916665, 0, 1.9583333), (2.5, 0, 1.9583333), (-2.5, 0, 2.1666665), (-2.2916667, 0, 2.1666665), (-2.0833333, 0, 2.1666665), (-1.875, 0, 2.1666665), (-1.6666667, 0, 2.1666665), (-1.4583334, 0, 2.1666665), (-1.25, 0, 2.1666665), (-1.0416667, 0, 2.1666665), (-0.8333334, 0, 2.1666665), (-0.625, 0, 2.1666665), (-0.41666675, 0, 2.1666665), (-0.20833349, 0, 2.1666665), (0, 0, 2.1666665), (0.20833325, 0, 2.1666665), (0.4166665, 0, 2.1666665), (0.625, 0, 2.1666665), (0.83333325, 0, 2.1666665), (1.0416665, 0, 2.1666665), (1.25, 0, 2.1666665), (1.4583333, 0, 2.1666665), (1.6666665, 0, 2.1666665), (1.875, 0, 2.1666665), (2.083333, 0, 2.1666665), (2.2916665, 0, 2.1666665), (2.5, 0, 2.1666665), (-2.5, 0, 2.375), (-2.2916667, 0, 2.375), (-2.0833333, 0, 2.375), (-1.875, 0, 2.375), (-1.6666667, 0, 2.375), (-1.4583334, 0, 2.375), (-1.25, 0, 2.375), (-1.0416667, 0, 2.375), (-0.8333334, 0, 2.375), (-0.625, 0, 2.375), (-0.41666675, 0, 2.375), (-0.20833349, 0, 2.375), (0, 0, 2.375), (0.20833325, 0, 2.375), (0.4166665, 0, 2.375), (0.625, 0, 2.375), (0.83333325, 0, 2.375), (1.0416665, 0, 2.375), (1.25, 0, 2.375), (1.4583333, 0, 2.375), (1.6666665, 0, 2.375), (1.875, 0, 2.375), (2.083333, 0, 2.375), (2.2916665, 0, 2.375), (2.5, 0, 2.375), (-2.5, 0, 2.583333), (-2.2916667, 0, 2.583333), (-2.0833333, 0, 2.583333), (-1.875, 0, 2.583333), (-1.6666667, 0, 2.583333), (-1.4583334, 0, 2.583333), (-1.25, 0, 2.583333), (-1.0416667, 0, 2.583333), (-0.8333334, 0, 2.583333), (-0.625, 0, 2.583333), (-0.41666675, 0, 2.583333), (-0.20833349, 0, 2.583333), (0, 0, 2.583333), (0.20833325, 0, 2.583333), (0.4166665, 0, 2.583333), (0.625, 0, 2.583333), (0.83333325, 0, 2.583333), (1.0416665, 0, 2.583333), (1.25, 0, 2.583333), (1.4583333, 0, 2.583333), (1.6666665, 0, 2.583333), (1.875, 0, 2.583333), (2.083333, 0, 2.583333), (2.2916665, 0, 2.583333), (2.5, 0, 2.583333), (-2.5, 0, 2.7916665), (-2.2916667, 0, 2.7916665), (-2.0833333, 0, 2.7916665), (-1.875, 0, 2.7916665), (-1.6666667, 0, 2.7916665), (-1.4583334, 0, 2.7916665), (-1.25, 0, 2.7916665), (-1.0416667, 0, 2.7916665), (-0.8333334, 0, 2.7916665), (-0.625, 0, 2.7916665), (-0.41666675, 0, 2.7916665), (-0.20833349, 0, 2.7916665), (0, 0, 2.7916665), (0.20833325, 0, 2.7916665), (0.4166665, 0, 2.7916665), (0.625, 0, 2.7916665), (0.83333325, 0, 2.7916665), (1.0416665, 0, 2.7916665), (1.25, 0, 2.7916665), (1.4583333, 0, 2.7916665), (1.6666665, 0, 2.7916665), (1.875, 0, 2.7916665), (2.083333, 0, 2.7916665), (2.2916665, 0, 2.7916665), (2.5, 0, 2.7916665), (-2.5, 0, 3), (-2.2916667, 0, 3), (-2.0833333, 0, 3), (-1.875, 0, 3), (-1.6666667, 0, 3), (-1.4583334, 0, 3), (-1.25, 0, 3), (-1.0416667, 0, 3), (-0.8333334, 0, 3), (-0.625, 0, 3), (-0.41666675, 0, 3), (-0.20833349, 0, 3), (0, 0, 3), (0.20833325, 0, 3), (0.4166665, 0, 3), (0.625, 0, 3), (0.83333325, 0, 3), (1.0416665, 0, 3), (1.25, 0, 3), (1.4583333, 0, 3), (1.6666665, 0, 3), (1.875, 0, 3), (2.083333, 0, 3), (2.2916665, 0, 3), (2.5, 0, 3)] (\n            interpolation = \"vertex\"\n        )\n        texCoord2f[] primvars:attenuationUV = [(0.28333333, 1.2388333), (0.3013889, 1.2388333), (0.3013889, 1.2038507), (0.28333333, 1.2038507), (0.3013889, 1.2388333), (0.31944445, 1.2388333), (0.31944445, 1.2038507), (0.3013889, 1.2038507), (0.31944445, 1.2388333), (0.3375, 1.2388333), (0.3375, 1.2038507), (0.31944445, 1.2038507), (0.3375, 1.2388333), (0.35555553, 1.2388333), (0.35555553, 1.2038507), (0.3375, 1.2038507), (0.35555553, 1.2388333), (0.37361112, 1.2388333), (0.37361112, 1.2038507), (0.35555553, 1.2038507), (0.37361112, 1.2388333), (0.39166668, 1.2388333), (0.39166668, 1.2038507), (0.37361112, 1.2038507), (0.39166668, 1.2388333), (0.4097222, 1.2388333), (0.4097222, 1.2038507), (0.39166668, 1.2038507), (0.4097222, 1.2388333), (0.42777777, 1.2388333), (0.42777777, 1.2038507), (0.4097222, 1.2038507), (0.42777777, 1.2388333), (0.44583333, 1.2388333), (0.44583333, 1.2038507), (0.42777777, 1.2038507), (0.44583333, 1.2388333), (0.46388888, 1.2388333), (0.46388888, 1.2038507), (0.44583333, 1.2038507), (0.46388888, 1.2388333), (0.48194444, 1.2388333), (0.48194444, 1.2038507), (0.46388888, 1.2038507), (0.48194444, 1.2388333), (0.5, 1.2388333), (0.5, 1.2038507), (0.48194444, 1.2038507), (0.5, 1.2388333), (0.51805556, 1.2388333), (0.51805556, 1.2038507), (0.5, 1.2038507), (0.51805556, 1.2388333), (0.5361111, 1.2388333), (0.5361111, 1.2038507), (0.51805556, 1.2038507), (0.5361111, 1.2388333), (0.5541667, 1.2388333), (0.5541667, 1.2038507), (0.5361111, 1.2038507), (0.5541667, 1.2388333), (0.57222223, 1.2388333), (0.57222223, 1.2038507), (0.5541667, 1.2038507), (0.57222223, 1.2388333), (0.5902778, 1.2388333), (0.5902778, 1.2038507), (0.57222223, 1.2038507), (0.5902778, 1.2388333), (0.60833335, 1.2388333), (0.60833335, 1.2038507), (0.5902778, 1.2038507), (0.60833335, 1.2388333), (0.6263889, 1.2388333), (0.6263889, 1.2038507), (0.60833335, 1.2038507), (0.6263889, 1.2388333), (0.6444444, 1.2388333), (0.6444444, 1.2038507), (0.6263889, 1.2038507), (0.6444444, 1.2388333), (0.6625, 1.2388333), (0.6625, 1.2038507), (0.6444444, 1.2038507), (0.6625, 1.2388333), (0.6805555, 1.2388333), (0.6805555, 1.2038507), (0.6625, 1.2038507), (0.6805555, 1.2388333), (0.69861114, 1.2388333), (0.69861114, 1.2038507), (0.6805555, 1.2038507), (0.69861114, 1.2388333), (0.7166667, 1.2388333), (0.7166667, 1.2038507), (0.69861114, 1.2038507), (0.28333333, 1.2038507), (0.3013889, 1.2038507), (0.3013889, 1.1688681), (0.28333333, 1.1688681), (0.3013889, 1.2038507), (0.31944445, 1.2038507), (0.31944445, 1.1688681), (0.3013889, 1.1688681), (0.31944445, 1.2038507), (0.3375, 1.2038507), (0.3375, 1.1688681), (0.31944445, 1.1688681), (0.3375, 1.2038507), (0.35555553, 1.2038507), (0.35555553, 1.1688681), (0.3375, 1.1688681), (0.35555553, 1.2038507), (0.37361112, 1.2038507), (0.37361112, 1.1688681), (0.35555553, 1.1688681), (0.37361112, 1.2038507), (0.39166668, 1.2038507), (0.39166668, 1.1688681), (0.37361112, 1.1688681), (0.39166668, 1.2038507), (0.4097222, 1.2038507), (0.4097222, 1.1688681), (0.39166668, 1.1688681), (0.4097222, 1.2038507), (0.42777777, 1.2038507), (0.42777777, 1.1688681), (0.4097222, 1.1688681), (0.42777777, 1.2038507), (0.44583333, 1.2038507), (0.44583333, 1.1688681), (0.42777777, 1.1688681), (0.44583333, 1.2038507), (0.46388888, 1.2038507), (0.46388888, 1.1688681), (0.44583333, 1.1688681), (0.46388888, 1.2038507), (0.48194444, 1.2038507), (0.48194444, 1.1688681), (0.46388888, 1.1688681), (0.48194444, 1.2038507), (0.5, 1.2038507), (0.5, 1.1688681), (0.48194444, 1.1688681), (0.5, 1.2038507), (0.51805556, 1.2038507), (0.51805556, 1.1688681), (0.5, 1.1688681), (0.51805556, 1.2038507), (0.5361111, 1.2038507), (0.5361111, 1.1688681), (0.51805556, 1.1688681), (0.5361111, 1.2038507), (0.5541667, 1.2038507), (0.5541667, 1.1688681), (0.5361111, 1.1688681), (0.5541667, 1.2038507), (0.57222223, 1.2038507), (0.57222223, 1.1688681), (0.5541667, 1.1688681), (0.57222223, 1.2038507), (0.5902778, 1.2038507), (0.5902778, 1.1688681), (0.57222223, 1.1688681), (0.5902778, 1.2038507), (0.60833335, 1.2038507), (0.60833335, 1.1688681), (0.5902778, 1.1688681), (0.60833335, 1.2038507), (0.6263889, 1.2038507), (0.6263889, 1.1688681), (0.60833335, 1.1688681), (0.6263889, 1.2038507), (0.6444444, 1.2038507), (0.6444444, 1.1688681), (0.6263889, 1.1688681), (0.6444444, 1.2038507), (0.6625, 1.2038507), (0.6625, 1.1688681), (0.6444444, 1.1688681), (0.6625, 1.2038507), (0.6805555, 1.2038507), (0.6805555, 1.1688681), (0.6625, 1.1688681), (0.6805555, 1.2038507), (0.69861114, 1.2038507), (0.69861114, 1.1688681), (0.6805555, 1.1688681), (0.69861114, 1.2038507), (0.7166667, 1.2038507), (0.7166667, 1.1688681), (0.69861114, 1.1688681), (0.28333333, 1.1688681), (0.3013889, 1.1688681), (0.3013889, 1.1338854), (0.28333333, 1.1338854), (0.3013889, 1.1688681), (0.31944445, 1.1688681), (0.31944445, 1.1338854), (0.3013889, 1.1338854), (0.31944445, 1.1688681), (0.3375, 1.1688681), (0.3375, 1.1338854), (0.31944445, 1.1338854), (0.3375, 1.1688681), (0.35555553, 1.1688681), (0.35555553, 1.1338854), (0.3375, 1.1338854), (0.35555553, 1.1688681), (0.37361112, 1.1688681), (0.37361112, 1.1338854), (0.35555553, 1.1338854), (0.37361112, 1.1688681), (0.39166668, 1.1688681), (0.39166668, 1.1338854), (0.37361112, 1.1338854), (0.39166668, 1.1688681), (0.4097222, 1.1688681), (0.4097222, 1.1338854), (0.39166668, 1.1338854), (0.4097222, 1.1688681), (0.42777777, 1.1688681), (0.42777777, 1.1338854), (0.4097222, 1.1338854), (0.42777777, 1.1688681), (0.44583333, 1.1688681), (0.44583333, 1.1338854), (0.42777777, 1.1338854), (0.44583333, 1.1688681), (0.46388888, 1.1688681), (0.46388888, 1.1338854), (0.44583333, 1.1338854), (0.46388888, 1.1688681), (0.48194444, 1.1688681), (0.48194444, 1.1338854), (0.46388888, 1.1338854), (0.48194444, 1.1688681), (0.5, 1.1688681), (0.5, 1.1338854), (0.48194444, 1.1338854), (0.5, 1.1688681), (0.51805556, 1.1688681), (0.51805556, 1.1338854), (0.5, 1.1338854), (0.51805556, 1.1688681), (0.5361111, 1.1688681), (0.5361111, 1.1338854), (0.51805556, 1.1338854), (0.5361111, 1.1688681), (0.5541667, 1.1688681), (0.5541667, 1.1338854), (0.5361111, 1.1338854), (0.5541667, 1.1688681), (0.57222223, 1.1688681), (0.57222223, 1.1338854), (0.5541667, 1.1338854), (0.57222223, 1.1688681), (0.5902778, 1.1688681), (0.5902778, 1.1338854), (0.57222223, 1.1338854), (0.5902778, 1.1688681), (0.60833335, 1.1688681), (0.60833335, 1.1338854), (0.5902778, 1.1338854), (0.60833335, 1.1688681), (0.6263889, 1.1688681), (0.6263889, 1.1338854), (0.60833335, 1.1338854), (0.6263889, 1.1688681), (0.6444444, 1.1688681), (0.6444444, 1.1338854), (0.6263889, 1.1338854), (0.6444444, 1.1688681), (0.6625, 1.1688681), (0.6625, 1.1338854), (0.6444444, 1.1338854), (0.6625, 1.1688681), (0.6805555, 1.1688681), (0.6805555, 1.1338854), (0.6625, 1.1338854), (0.6805555, 1.1688681), (0.69861114, 1.1688681), (0.69861114, 1.1338854), (0.6805555, 1.1338854), (0.69861114, 1.1688681), (0.7166667, 1.1688681), (0.7166667, 1.1338854), (0.69861114, 1.1338854), (0.28333333, 1.1338854), (0.3013889, 1.1338854), (0.3013889, 1.0989028), (0.28333333, 1.0989028), (0.3013889, 1.1338854), (0.31944445, 1.1338854), (0.31944445, 1.0989028), (0.3013889, 1.0989028), (0.31944445, 1.1338854), (0.3375, 1.1338854), (0.3375, 1.0989028), (0.31944445, 1.0989028), (0.3375, 1.1338854), (0.35555553, 1.1338854), (0.35555553, 1.0989028), (0.3375, 1.0989028), (0.35555553, 1.1338854), (0.37361112, 1.1338854), (0.37361112, 1.0989028), (0.35555553, 1.0989028), (0.37361112, 1.1338854), (0.39166668, 1.1338854), (0.39166668, 1.0989028), (0.37361112, 1.0989028), (0.39166668, 1.1338854), (0.4097222, 1.1338854), (0.4097222, 1.0989028), (0.39166668, 1.0989028), (0.4097222, 1.1338854), (0.42777777, 1.1338854), (0.42777777, 1.0989028), (0.4097222, 1.0989028), (0.42777777, 1.1338854), (0.44583333, 1.1338854), (0.44583333, 1.0989028), (0.42777777, 1.0989028), (0.44583333, 1.1338854), (0.46388888, 1.1338854), (0.46388888, 1.0989028), (0.44583333, 1.0989028), (0.46388888, 1.1338854), (0.48194444, 1.1338854), (0.48194444, 1.0989028), (0.46388888, 1.0989028), (0.48194444, 1.1338854), (0.5, 1.1338854), (0.5, 1.0989028), (0.48194444, 1.0989028), (0.5, 1.1338854), (0.51805556, 1.1338854), (0.51805556, 1.0989028), (0.5, 1.0989028), (0.51805556, 1.1338854), (0.5361111, 1.1338854), (0.5361111, 1.0989028), (0.51805556, 1.0989028), (0.5361111, 1.1338854), (0.5541667, 1.1338854), (0.5541667, 1.0989028), (0.5361111, 1.0989028), (0.5541667, 1.1338854), (0.57222223, 1.1338854), (0.57222223, 1.0989028), (0.5541667, 1.0989028), (0.57222223, 1.1338854), (0.5902778, 1.1338854), (0.5902778, 1.0989028), (0.57222223, 1.0989028), (0.5902778, 1.1338854), (0.60833335, 1.1338854), (0.60833335, 1.0989028), (0.5902778, 1.0989028), (0.60833335, 1.1338854), (0.6263889, 1.1338854), (0.6263889, 1.0989028), (0.60833335, 1.0989028), (0.6263889, 1.1338854), (0.6444444, 1.1338854), (0.6444444, 1.0989028), (0.6263889, 1.0989028), (0.6444444, 1.1338854), (0.6625, 1.1338854), (0.6625, 1.0989028), (0.6444444, 1.0989028), (0.6625, 1.1338854), (0.6805555, 1.1338854), (0.6805555, 1.0989028), (0.6625, 1.0989028), (0.6805555, 1.1338854), (0.69861114, 1.1338854), (0.69861114, 1.0989028), (0.6805555, 1.0989028), (0.69861114, 1.1338854), (0.7166667, 1.1338854), (0.7166667, 1.0989028), (0.69861114, 1.0989028), (0.28333333, 1.0989028), (0.3013889, 1.0989028), (0.3013889, 1.0639201), (0.28333333, 1.0639201), (0.3013889, 1.0989028), (0.31944445, 1.0989028), (0.31944445, 1.0639201), (0.3013889, 1.0639201), (0.31944445, 1.0989028), (0.3375, 1.0989028), (0.3375, 1.0639201), (0.31944445, 1.0639201), (0.3375, 1.0989028), (0.35555553, 1.0989028), (0.35555553, 1.0639201), (0.3375, 1.0639201), (0.35555553, 1.0989028), (0.37361112, 1.0989028), (0.37361112, 1.0639201), (0.35555553, 1.0639201), (0.37361112, 1.0989028), (0.39166668, 1.0989028), (0.39166668, 1.0639201), (0.37361112, 1.0639201), (0.39166668, 1.0989028), (0.4097222, 1.0989028), (0.4097222, 1.0639201), (0.39166668, 1.0639201), (0.4097222, 1.0989028), (0.42777777, 1.0989028), (0.42777777, 1.0639201), (0.4097222, 1.0639201), (0.42777777, 1.0989028), (0.44583333, 1.0989028), (0.44583333, 1.0639201), (0.42777777, 1.0639201), (0.44583333, 1.0989028), (0.46388888, 1.0989028), (0.46388888, 1.0639201), (0.44583333, 1.0639201), (0.46388888, 1.0989028), (0.48194444, 1.0989028), (0.48194444, 1.0639201), (0.46388888, 1.0639201), (0.48194444, 1.0989028), (0.5, 1.0989028), (0.5, 1.0639201), (0.48194444, 1.0639201), (0.5, 1.0989028), (0.51805556, 1.0989028), (0.51805556, 1.0639201), (0.5, 1.0639201), (0.51805556, 1.0989028), (0.5361111, 1.0989028), (0.5361111, 1.0639201), (0.51805556, 1.0639201), (0.5361111, 1.0989028), (0.5541667, 1.0989028), (0.5541667, 1.0639201), (0.5361111, 1.0639201), (0.5541667, 1.0989028), (0.57222223, 1.0989028), (0.57222223, 1.0639201), (0.5541667, 1.0639201), (0.57222223, 1.0989028), (0.5902778, 1.0989028), (0.5902778, 1.0639201), (0.57222223, 1.0639201), (0.5902778, 1.0989028), (0.60833335, 1.0989028), (0.60833335, 1.0639201), (0.5902778, 1.0639201), (0.60833335, 1.0989028), (0.6263889, 1.0989028), (0.6263889, 1.0639201), (0.60833335, 1.0639201), (0.6263889, 1.0989028), (0.6444444, 1.0989028), (0.6444444, 1.0639201), (0.6263889, 1.0639201), (0.6444444, 1.0989028), (0.6625, 1.0989028), (0.6625, 1.0639201), (0.6444444, 1.0639201), (0.6625, 1.0989028), (0.6805555, 1.0989028), (0.6805555, 1.0639201), (0.6625, 1.0639201), (0.6805555, 1.0989028), (0.69861114, 1.0989028), (0.69861114, 1.0639201), (0.6805555, 1.0639201), (0.69861114, 1.0989028), (0.7166667, 1.0989028), (0.7166667, 1.0639201), (0.69861114, 1.0639201), (0.28333333, 1.0639201), (0.3013889, 1.0639201), (0.3013889, 1.0289375), (0.28333333, 1.0289375), (0.3013889, 1.0639201), (0.31944445, 1.0639201), (0.31944445, 1.0289375), (0.3013889, 1.0289375), (0.31944445, 1.0639201), (0.3375, 1.0639201), (0.3375, 1.0289375), (0.31944445, 1.0289375), (0.3375, 1.0639201), (0.35555553, 1.0639201), (0.35555553, 1.0289375), (0.3375, 1.0289375), (0.35555553, 1.0639201), (0.37361112, 1.0639201), (0.37361112, 1.0289375), (0.35555553, 1.0289375), (0.37361112, 1.0639201), (0.39166668, 1.0639201), (0.39166668, 1.0289375), (0.37361112, 1.0289375), (0.39166668, 1.0639201), (0.4097222, 1.0639201), (0.4097222, 1.0289375), (0.39166668, 1.0289375), (0.4097222, 1.0639201), (0.42777777, 1.0639201), (0.42777777, 1.0289375), (0.4097222, 1.0289375), (0.42777777, 1.0639201), (0.44583333, 1.0639201), (0.44583333, 1.0289375), (0.42777777, 1.0289375), (0.44583333, 1.0639201), (0.46388888, 1.0639201), (0.46388888, 1.0289375), (0.44583333, 1.0289375), (0.46388888, 1.0639201), (0.48194444, 1.0639201), (0.48194444, 1.0289375), (0.46388888, 1.0289375), (0.48194444, 1.0639201), (0.5, 1.0639201), (0.5, 1.0289375), (0.48194444, 1.0289375), (0.5, 1.0639201), (0.51805556, 1.0639201), (0.51805556, 1.0289375), (0.5, 1.0289375), (0.51805556, 1.0639201), (0.5361111, 1.0639201), (0.5361111, 1.0289375), (0.51805556, 1.0289375), (0.5361111, 1.0639201), (0.5541667, 1.0639201), (0.5541667, 1.0289375), (0.5361111, 1.0289375), (0.5541667, 1.0639201), (0.57222223, 1.0639201), (0.57222223, 1.0289375), (0.5541667, 1.0289375), (0.57222223, 1.0639201), (0.5902778, 1.0639201), (0.5902778, 1.0289375), (0.57222223, 1.0289375), (0.5902778, 1.0639201), (0.60833335, 1.0639201), (0.60833335, 1.0289375), (0.5902778, 1.0289375), (0.60833335, 1.0639201), (0.6263889, 1.0639201), (0.6263889, 1.0289375), (0.60833335, 1.0289375), (0.6263889, 1.0639201), (0.6444444, 1.0639201), (0.6444444, 1.0289375), (0.6263889, 1.0289375), (0.6444444, 1.0639201), (0.6625, 1.0639201), (0.6625, 1.0289375), (0.6444444, 1.0289375), (0.6625, 1.0639201), (0.6805555, 1.0639201), (0.6805555, 1.0289375), (0.6625, 1.0289375), (0.6805555, 1.0639201), (0.69861114, 1.0639201), (0.69861114, 1.0289375), (0.6805555, 1.0289375), (0.69861114, 1.0639201), (0.7166667, 1.0639201), (0.7166667, 1.0289375), (0.69861114, 1.0289375), (0.28333333, 1.0289375), (0.3013889, 1.0289375), (0.3013889, 0.9939549), (0.28333333, 0.9939549), (0.3013889, 1.0289375), (0.31944445, 1.0289375), (0.31944445, 0.9939549), (0.3013889, 0.9939549), (0.31944445, 1.0289375), (0.3375, 1.0289375), (0.3375, 0.9939549), (0.31944445, 0.9939549), (0.3375, 1.0289375), (0.35555553, 1.0289375), (0.35555553, 0.9939549), (0.3375, 0.9939549), (0.35555553, 1.0289375), (0.37361112, 1.0289375), (0.37361112, 0.9939549), (0.35555553, 0.9939549), (0.37361112, 1.0289375), (0.39166668, 1.0289375), (0.39166668, 0.9939549), (0.37361112, 0.9939549), (0.39166668, 1.0289375), (0.4097222, 1.0289375), (0.4097222, 0.9939549), (0.39166668, 0.9939549), (0.4097222, 1.0289375), (0.42777777, 1.0289375), (0.42777777, 0.9939549), (0.4097222, 0.9939549), (0.42777777, 1.0289375), (0.44583333, 1.0289375), (0.44583333, 0.9939549), (0.42777777, 0.9939549), (0.44583333, 1.0289375), (0.46388888, 1.0289375), (0.46388888, 0.9939549), (0.44583333, 0.9939549), (0.46388888, 1.0289375), (0.48194444, 1.0289375), (0.48194444, 0.9939549), (0.46388888, 0.9939549), (0.48194444, 1.0289375), (0.5, 1.0289375), (0.5, 0.9939549), (0.48194444, 0.9939549), (0.5, 1.0289375), (0.51805556, 1.0289375), (0.51805556, 0.9939549), (0.5, 0.9939549), (0.51805556, 1.0289375), (0.5361111, 1.0289375), (0.5361111, 0.9939549), (0.51805556, 0.9939549), (0.5361111, 1.0289375), (0.5541667, 1.0289375), (0.5541667, 0.9939549), (0.5361111, 0.9939549), (0.5541667, 1.0289375), (0.57222223, 1.0289375), (0.57222223, 0.9939549), (0.5541667, 0.9939549), (0.57222223, 1.0289375), (0.5902778, 1.0289375), (0.5902778, 0.9939549), (0.57222223, 0.9939549), (0.5902778, 1.0289375), (0.60833335, 1.0289375), (0.60833335, 0.9939549), (0.5902778, 0.9939549), (0.60833335, 1.0289375), (0.6263889, 1.0289375), (0.6263889, 0.9939549), (0.60833335, 0.9939549), (0.6263889, 1.0289375), (0.6444444, 1.0289375), (0.6444444, 0.9939549), (0.6263889, 0.9939549), (0.6444444, 1.0289375), (0.6625, 1.0289375), (0.6625, 0.9939549), (0.6444444, 0.9939549), (0.6625, 1.0289375), (0.6805555, 1.0289375), (0.6805555, 0.9939549), (0.6625, 0.9939549), (0.6805555, 1.0289375), (0.69861114, 1.0289375), (0.69861114, 0.9939549), (0.6805555, 0.9939549), (0.69861114, 1.0289375), (0.7166667, 1.0289375), (0.7166667, 0.9939549), (0.69861114, 0.9939549), (0.28333333, 0.9939549), (0.3013889, 0.9939549), (0.3013889, 0.9589722), (0.28333333, 0.9589722), (0.3013889, 0.9939549), (0.31944445, 0.9939549), (0.31944445, 0.9589722), (0.3013889, 0.9589722), (0.31944445, 0.9939549), (0.3375, 0.9939549), (0.3375, 0.9589722), (0.31944445, 0.9589722), (0.3375, 0.9939549), (0.35555553, 0.9939549), (0.35555553, 0.9589722), (0.3375, 0.9589722), (0.35555553, 0.9939549), (0.37361112, 0.9939549), (0.37361112, 0.9589722), (0.35555553, 0.9589722), (0.37361112, 0.9939549), (0.39166668, 0.9939549), (0.39166668, 0.9589722), (0.37361112, 0.9589722), (0.39166668, 0.9939549), (0.4097222, 0.9939549), (0.4097222, 0.9589722), (0.39166668, 0.9589722), (0.4097222, 0.9939549), (0.42777777, 0.9939549), (0.42777777, 0.9589722), (0.4097222, 0.9589722), (0.42777777, 0.9939549), (0.44583333, 0.9939549), (0.44583333, 0.9589722), (0.42777777, 0.9589722), (0.44583333, 0.9939549), (0.46388888, 0.9939549), (0.46388888, 0.9589722), (0.44583333, 0.9589722), (0.46388888, 0.9939549), (0.48194444, 0.9939549), (0.48194444, 0.9589722), (0.46388888, 0.9589722), (0.48194444, 0.9939549), (0.5, 0.9939549), (0.5, 0.9589722), (0.48194444, 0.9589722), (0.5, 0.9939549), (0.51805556, 0.9939549), (0.51805556, 0.9589722), (0.5, 0.9589722), (0.51805556, 0.9939549), (0.5361111, 0.9939549), (0.5361111, 0.9589722), (0.51805556, 0.9589722), (0.5361111, 0.9939549), (0.5541667, 0.9939549), (0.5541667, 0.9589722), (0.5361111, 0.9589722), (0.5541667, 0.9939549), (0.57222223, 0.9939549), (0.57222223, 0.9589722), (0.5541667, 0.9589722), (0.57222223, 0.9939549), (0.5902778, 0.9939549), (0.5902778, 0.9589722), (0.57222223, 0.9589722), (0.5902778, 0.9939549), (0.60833335, 0.9939549), (0.60833335, 0.9589722), (0.5902778, 0.9589722), (0.60833335, 0.9939549), (0.6263889, 0.9939549), (0.6263889, 0.9589722), (0.60833335, 0.9589722), (0.6263889, 0.9939549), (0.6444444, 0.9939549), (0.6444444, 0.9589722), (0.6263889, 0.9589722), (0.6444444, 0.9939549), (0.6625, 0.9939549), (0.6625, 0.9589722), (0.6444444, 0.9589722), (0.6625, 0.9939549), (0.6805555, 0.9939549), (0.6805555, 0.9589722), (0.6625, 0.9589722), (0.6805555, 0.9939549), (0.69861114, 0.9939549), (0.69861114, 0.9589722), (0.6805555, 0.9589722), (0.69861114, 0.9939549), (0.7166667, 0.9939549), (0.7166667, 0.9589722), (0.69861114, 0.9589722), (0.28333333, 0.9589722), (0.3013889, 0.9589722), (0.3013889, 0.9239896), (0.28333333, 0.9239896), (0.3013889, 0.9589722), (0.31944445, 0.9589722), (0.31944445, 0.9239896), (0.3013889, 0.9239896), (0.31944445, 0.9589722), (0.3375, 0.9589722), (0.3375, 0.9239896), (0.31944445, 0.9239896), (0.3375, 0.9589722), (0.35555553, 0.9589722), (0.35555553, 0.9239896), (0.3375, 0.9239896), (0.35555553, 0.9589722), (0.37361112, 0.9589722), (0.37361112, 0.9239896), (0.35555553, 0.9239896), (0.37361112, 0.9589722), (0.39166668, 0.9589722), (0.39166668, 0.9239896), (0.37361112, 0.9239896), (0.39166668, 0.9589722), (0.4097222, 0.9589722), (0.4097222, 0.9239896), (0.39166668, 0.9239896), (0.4097222, 0.9589722), (0.42777777, 0.9589722), (0.42777777, 0.9239896), (0.4097222, 0.9239896), (0.42777777, 0.9589722), (0.44583333, 0.9589722), (0.44583333, 0.9239896), (0.42777777, 0.9239896), (0.44583333, 0.9589722), (0.46388888, 0.9589722), (0.46388888, 0.9239896), (0.44583333, 0.9239896), (0.46388888, 0.9589722), (0.48194444, 0.9589722), (0.48194444, 0.9239896), (0.46388888, 0.9239896), (0.48194444, 0.9589722), (0.5, 0.9589722), (0.5, 0.9239896), (0.48194444, 0.9239896), (0.5, 0.9589722), (0.51805556, 0.9589722), (0.51805556, 0.9239896), (0.5, 0.9239896), (0.51805556, 0.9589722), (0.5361111, 0.9589722), (0.5361111, 0.9239896), (0.51805556, 0.9239896), (0.5361111, 0.9589722), (0.5541667, 0.9589722), (0.5541667, 0.9239896), (0.5361111, 0.9239896), (0.5541667, 0.9589722), (0.57222223, 0.9589722), (0.57222223, 0.9239896), (0.5541667, 0.9239896), (0.57222223, 0.9589722), (0.5902778, 0.9589722), (0.5902778, 0.9239896), (0.57222223, 0.9239896), (0.5902778, 0.9589722), (0.60833335, 0.9589722), (0.60833335, 0.9239896), (0.5902778, 0.9239896), (0.60833335, 0.9589722), (0.6263889, 0.9589722), (0.6263889, 0.9239896), (0.60833335, 0.9239896), (0.6263889, 0.9589722), (0.6444444, 0.9589722), (0.6444444, 0.9239896), (0.6263889, 0.9239896), (0.6444444, 0.9589722), (0.6625, 0.9589722), (0.6625, 0.9239896), (0.6444444, 0.9239896), (0.6625, 0.9589722), (0.6805555, 0.9589722), (0.6805555, 0.9239896), (0.6625, 0.9239896), (0.6805555, 0.9589722), (0.69861114, 0.9589722), (0.69861114, 0.9239896), (0.6805555, 0.9239896), (0.69861114, 0.9589722), (0.7166667, 0.9589722), (0.7166667, 0.9239896), (0.69861114, 0.9239896), (0.28333333, 0.9239896), (0.3013889, 0.9239896), (0.3013889, 0.889007), (0.28333333, 0.889007), (0.3013889, 0.9239896), (0.31944445, 0.9239896), (0.31944445, 0.889007), (0.3013889, 0.889007), (0.31944445, 0.9239896), (0.3375, 0.9239896), (0.3375, 0.889007), (0.31944445, 0.889007), (0.3375, 0.9239896), (0.35555553, 0.9239896), (0.35555553, 0.889007), (0.3375, 0.889007), (0.35555553, 0.9239896), (0.37361112, 0.9239896), (0.37361112, 0.889007), (0.35555553, 0.889007), (0.37361112, 0.9239896), (0.39166668, 0.9239896), (0.39166668, 0.889007), (0.37361112, 0.889007), (0.39166668, 0.9239896), (0.4097222, 0.9239896), (0.4097222, 0.889007), (0.39166668, 0.889007), (0.4097222, 0.9239896), (0.42777777, 0.9239896), (0.42777777, 0.889007), (0.4097222, 0.889007), (0.42777777, 0.9239896), (0.44583333, 0.9239896), (0.44583333, 0.889007), (0.42777777, 0.889007), (0.44583333, 0.9239896), (0.46388888, 0.9239896), (0.46388888, 0.889007), (0.44583333, 0.889007), (0.46388888, 0.9239896), (0.48194444, 0.9239896), (0.48194444, 0.889007), (0.46388888, 0.889007), (0.48194444, 0.9239896), (0.5, 0.9239896), (0.5, 0.889007), (0.48194444, 0.889007), (0.5, 0.9239896), (0.51805556, 0.9239896), (0.51805556, 0.889007), (0.5, 0.889007), (0.51805556, 0.9239896), (0.5361111, 0.9239896), (0.5361111, 0.889007), (0.51805556, 0.889007), (0.5361111, 0.9239896), (0.5541667, 0.9239896), (0.5541667, 0.889007), (0.5361111, 0.889007), (0.5541667, 0.9239896), (0.57222223, 0.9239896), (0.57222223, 0.889007), (0.5541667, 0.889007), (0.57222223, 0.9239896), (0.5902778, 0.9239896), (0.5902778, 0.889007), (0.57222223, 0.889007), (0.5902778, 0.9239896), (0.60833335, 0.9239896), (0.60833335, 0.889007), (0.5902778, 0.889007), (0.60833335, 0.9239896), (0.6263889, 0.9239896), (0.6263889, 0.889007), (0.60833335, 0.889007), (0.6263889, 0.9239896), (0.6444444, 0.9239896), (0.6444444, 0.889007), (0.6263889, 0.889007), (0.6444444, 0.9239896), (0.6625, 0.9239896), (0.6625, 0.889007), (0.6444444, 0.889007), (0.6625, 0.9239896), (0.6805555, 0.9239896), (0.6805555, 0.889007), (0.6625, 0.889007), (0.6805555, 0.9239896), (0.69861114, 0.9239896), (0.69861114, 0.889007), (0.6805555, 0.889007), (0.69861114, 0.9239896), (0.7166667, 0.9239896), (0.7166667, 0.889007), (0.69861114, 0.889007), (0.28333333, 0.889007), (0.3013889, 0.889007), (0.3013889, 0.85402435), (0.28333333, 0.85402435), (0.3013889, 0.889007), (0.31944445, 0.889007), (0.31944445, 0.85402435), (0.3013889, 0.85402435), (0.31944445, 0.889007), (0.3375, 0.889007), (0.3375, 0.85402435), (0.31944445, 0.85402435), (0.3375, 0.889007), (0.35555553, 0.889007), (0.35555553, 0.85402435), (0.3375, 0.85402435), (0.35555553, 0.889007), (0.37361112, 0.889007), (0.37361112, 0.85402435), (0.35555553, 0.85402435), (0.37361112, 0.889007), (0.39166668, 0.889007), (0.39166668, 0.85402435), (0.37361112, 0.85402435), (0.39166668, 0.889007), (0.4097222, 0.889007), (0.4097222, 0.85402435), (0.39166668, 0.85402435), (0.4097222, 0.889007), (0.42777777, 0.889007), (0.42777777, 0.85402435), (0.4097222, 0.85402435), (0.42777777, 0.889007), (0.44583333, 0.889007), (0.44583333, 0.85402435), (0.42777777, 0.85402435), (0.44583333, 0.889007), (0.46388888, 0.889007), (0.46388888, 0.85402435), (0.44583333, 0.85402435), (0.46388888, 0.889007), (0.48194444, 0.889007), (0.48194444, 0.85402435), (0.46388888, 0.85402435), (0.48194444, 0.889007), (0.5, 0.889007), (0.5, 0.85402435), (0.48194444, 0.85402435), (0.5, 0.889007), (0.51805556, 0.889007), (0.51805556, 0.85402435), (0.5, 0.85402435), (0.51805556, 0.889007), (0.5361111, 0.889007), (0.5361111, 0.85402435), (0.51805556, 0.85402435), (0.5361111, 0.889007), (0.5541667, 0.889007), (0.5541667, 0.85402435), (0.5361111, 0.85402435), (0.5541667, 0.889007), (0.57222223, 0.889007), (0.57222223, 0.85402435), (0.5541667, 0.85402435), (0.57222223, 0.889007), (0.5902778, 0.889007), (0.5902778, 0.85402435), (0.57222223, 0.85402435), (0.5902778, 0.889007), (0.60833335, 0.889007), (0.60833335, 0.85402435), (0.5902778, 0.85402435), (0.60833335, 0.889007), (0.6263889, 0.889007), (0.6263889, 0.85402435), (0.60833335, 0.85402435), (0.6263889, 0.889007), (0.6444444, 0.889007), (0.6444444, 0.85402435), (0.6263889, 0.85402435), (0.6444444, 0.889007), (0.6625, 0.889007), (0.6625, 0.85402435), (0.6444444, 0.85402435), (0.6625, 0.889007), (0.6805555, 0.889007), (0.6805555, 0.85402435), (0.6625, 0.85402435), (0.6805555, 0.889007), (0.69861114, 0.889007), (0.69861114, 0.85402435), (0.6805555, 0.85402435), (0.69861114, 0.889007), (0.7166667, 0.889007), (0.7166667, 0.85402435), (0.69861114, 0.85402435), (0.28333333, 0.85402435), (0.3013889, 0.85402435), (0.3013889, 0.81904167), (0.28333333, 0.81904167), (0.3013889, 0.85402435), (0.31944445, 0.85402435), (0.31944445, 0.81904167), (0.3013889, 0.81904167), (0.31944445, 0.85402435), (0.3375, 0.85402435), (0.3375, 0.81904167), (0.31944445, 0.81904167), (0.3375, 0.85402435), (0.35555553, 0.85402435), (0.35555553, 0.81904167), (0.3375, 0.81904167), (0.35555553, 0.85402435), (0.37361112, 0.85402435), (0.37361112, 0.81904167), (0.35555553, 0.81904167), (0.37361112, 0.85402435), (0.39166668, 0.85402435), (0.39166668, 0.81904167), (0.37361112, 0.81904167), (0.39166668, 0.85402435), (0.4097222, 0.85402435), (0.4097222, 0.81904167), (0.39166668, 0.81904167), (0.4097222, 0.85402435), (0.42777777, 0.85402435), (0.42777777, 0.81904167), (0.4097222, 0.81904167), (0.42777777, 0.85402435), (0.44583333, 0.85402435), (0.44583333, 0.81904167), (0.42777777, 0.81904167), (0.44583333, 0.85402435), (0.46388888, 0.85402435), (0.46388888, 0.81904167), (0.44583333, 0.81904167), (0.46388888, 0.85402435), (0.48194444, 0.85402435), (0.48194444, 0.81904167), (0.46388888, 0.81904167), (0.48194444, 0.85402435), (0.5, 0.85402435), (0.5, 0.81904167), (0.48194444, 0.81904167), (0.5, 0.85402435), (0.51805556, 0.85402435), (0.51805556, 0.81904167), (0.5, 0.81904167), (0.51805556, 0.85402435), (0.5361111, 0.85402435), (0.5361111, 0.81904167), (0.51805556, 0.81904167), (0.5361111, 0.85402435), (0.5541667, 0.85402435), (0.5541667, 0.81904167), (0.5361111, 0.81904167), (0.5541667, 0.85402435), (0.57222223, 0.85402435), (0.57222223, 0.81904167), (0.5541667, 0.81904167), (0.57222223, 0.85402435), (0.5902778, 0.85402435), (0.5902778, 0.81904167), (0.57222223, 0.81904167), (0.5902778, 0.85402435), (0.60833335, 0.85402435), (0.60833335, 0.81904167), (0.5902778, 0.81904167), (0.60833335, 0.85402435), (0.6263889, 0.85402435), (0.6263889, 0.81904167), (0.60833335, 0.81904167), (0.6263889, 0.85402435), (0.6444444, 0.85402435), (0.6444444, 0.81904167), (0.6263889, 0.81904167), (0.6444444, 0.85402435), (0.6625, 0.85402435), (0.6625, 0.81904167), (0.6444444, 0.81904167), (0.6625, 0.85402435), (0.6805555, 0.85402435), (0.6805555, 0.81904167), (0.6625, 0.81904167), (0.6805555, 0.85402435), (0.69861114, 0.85402435), (0.69861114, 0.81904167), (0.6805555, 0.81904167), (0.69861114, 0.85402435), (0.7166667, 0.85402435), (0.7166667, 0.81904167), (0.69861114, 0.81904167), (0.28333333, 0.81904167), (0.3013889, 0.81904167), (0.3013889, 0.78405905), (0.28333333, 0.78405905), (0.3013889, 0.81904167), (0.31944445, 0.81904167), (0.31944445, 0.78405905), (0.3013889, 0.78405905), (0.31944445, 0.81904167), (0.3375, 0.81904167), (0.3375, 0.78405905), (0.31944445, 0.78405905), (0.3375, 0.81904167), (0.35555553, 0.81904167), (0.35555553, 0.78405905), (0.3375, 0.78405905), (0.35555553, 0.81904167), (0.37361112, 0.81904167), (0.37361112, 0.78405905), (0.35555553, 0.78405905), (0.37361112, 0.81904167), (0.39166668, 0.81904167), (0.39166668, 0.78405905), (0.37361112, 0.78405905), (0.39166668, 0.81904167), (0.4097222, 0.81904167), (0.4097222, 0.78405905), (0.39166668, 0.78405905), (0.4097222, 0.81904167), (0.42777777, 0.81904167), (0.42777777, 0.78405905), (0.4097222, 0.78405905), (0.42777777, 0.81904167), (0.44583333, 0.81904167), (0.44583333, 0.78405905), (0.42777777, 0.78405905), (0.44583333, 0.81904167), (0.46388888, 0.81904167), (0.46388888, 0.78405905), (0.44583333, 0.78405905), (0.46388888, 0.81904167), (0.48194444, 0.81904167), (0.48194444, 0.78405905), (0.46388888, 0.78405905), (0.48194444, 0.81904167), (0.5, 0.81904167), (0.5, 0.78405905), (0.48194444, 0.78405905), (0.5, 0.81904167), (0.51805556, 0.81904167), (0.51805556, 0.78405905), (0.5, 0.78405905), (0.51805556, 0.81904167), (0.5361111, 0.81904167), (0.5361111, 0.78405905), (0.51805556, 0.78405905), (0.5361111, 0.81904167), (0.5541667, 0.81904167), (0.5541667, 0.78405905), (0.5361111, 0.78405905), (0.5541667, 0.81904167), (0.57222223, 0.81904167), (0.57222223, 0.78405905), (0.5541667, 0.78405905), (0.57222223, 0.81904167), (0.5902778, 0.81904167), (0.5902778, 0.78405905), (0.57222223, 0.78405905), (0.5902778, 0.81904167), (0.60833335, 0.81904167), (0.60833335, 0.78405905), (0.5902778, 0.78405905), (0.60833335, 0.81904167), (0.6263889, 0.81904167), (0.6263889, 0.78405905), (0.60833335, 0.78405905), (0.6263889, 0.81904167), (0.6444444, 0.81904167), (0.6444444, 0.78405905), (0.6263889, 0.78405905), (0.6444444, 0.81904167), (0.6625, 0.81904167), (0.6625, 0.78405905), (0.6444444, 0.78405905), (0.6625, 0.81904167), (0.6805555, 0.81904167), (0.6805555, 0.78405905), (0.6625, 0.78405905), (0.6805555, 0.81904167), (0.69861114, 0.81904167), (0.69861114, 0.78405905), (0.6805555, 0.78405905), (0.69861114, 0.81904167), (0.7166667, 0.81904167), (0.7166667, 0.78405905), (0.69861114, 0.78405905), (0.28333333, 0.78405905), (0.3013889, 0.78405905), (0.3013889, 0.7490764), (0.28333333, 0.7490764), (0.3013889, 0.78405905), (0.31944445, 0.78405905), (0.31944445, 0.7490764), (0.3013889, 0.7490764), (0.31944445, 0.78405905), (0.3375, 0.78405905), (0.3375, 0.7490764), (0.31944445, 0.7490764), (0.3375, 0.78405905), (0.35555553, 0.78405905), (0.35555553, 0.7490764), (0.3375, 0.7490764), (0.35555553, 0.78405905), (0.37361112, 0.78405905), (0.37361112, 0.7490764), (0.35555553, 0.7490764), (0.37361112, 0.78405905), (0.39166668, 0.78405905), (0.39166668, 0.7490764), (0.37361112, 0.7490764), (0.39166668, 0.78405905), (0.4097222, 0.78405905), (0.4097222, 0.7490764), (0.39166668, 0.7490764), (0.4097222, 0.78405905), (0.42777777, 0.78405905), (0.42777777, 0.7490764), (0.4097222, 0.7490764), (0.42777777, 0.78405905), (0.44583333, 0.78405905), (0.44583333, 0.7490764), (0.42777777, 0.7490764), (0.44583333, 0.78405905), (0.46388888, 0.78405905), (0.46388888, 0.7490764), (0.44583333, 0.7490764), (0.46388888, 0.78405905), (0.48194444, 0.78405905), (0.48194444, 0.7490764), (0.46388888, 0.7490764), (0.48194444, 0.78405905), (0.5, 0.78405905), (0.5, 0.7490764), (0.48194444, 0.7490764), (0.5, 0.78405905), (0.51805556, 0.78405905), (0.51805556, 0.7490764), (0.5, 0.7490764), (0.51805556, 0.78405905), (0.5361111, 0.78405905), (0.5361111, 0.7490764), (0.51805556, 0.7490764), (0.5361111, 0.78405905), (0.5541667, 0.78405905), (0.5541667, 0.7490764), (0.5361111, 0.7490764), (0.5541667, 0.78405905), (0.57222223, 0.78405905), (0.57222223, 0.7490764), (0.5541667, 0.7490764), (0.57222223, 0.78405905), (0.5902778, 0.78405905), (0.5902778, 0.7490764), (0.57222223, 0.7490764), (0.5902778, 0.78405905), (0.60833335, 0.78405905), (0.60833335, 0.7490764), (0.5902778, 0.7490764), (0.60833335, 0.78405905), (0.6263889, 0.78405905), (0.6263889, 0.7490764), (0.60833335, 0.7490764), (0.6263889, 0.78405905), (0.6444444, 0.78405905), (0.6444444, 0.7490764), (0.6263889, 0.7490764), (0.6444444, 0.78405905), (0.6625, 0.78405905), (0.6625, 0.7490764), (0.6444444, 0.7490764), (0.6625, 0.78405905), (0.6805555, 0.78405905), (0.6805555, 0.7490764), (0.6625, 0.7490764), (0.6805555, 0.78405905), (0.69861114, 0.78405905), (0.69861114, 0.7490764), (0.6805555, 0.7490764), (0.69861114, 0.78405905), (0.7166667, 0.78405905), (0.7166667, 0.7490764), (0.69861114, 0.7490764), (0.28333333, 0.7490764), (0.3013889, 0.7490764), (0.3013889, 0.71409374), (0.28333333, 0.71409374), (0.3013889, 0.7490764), (0.31944445, 0.7490764), (0.31944445, 0.71409374), (0.3013889, 0.71409374), (0.31944445, 0.7490764), (0.3375, 0.7490764), (0.3375, 0.71409374), (0.31944445, 0.71409374), (0.3375, 0.7490764), (0.35555553, 0.7490764), (0.35555553, 0.71409374), (0.3375, 0.71409374), (0.35555553, 0.7490764), (0.37361112, 0.7490764), (0.37361112, 0.71409374), (0.35555553, 0.71409374), (0.37361112, 0.7490764), (0.39166668, 0.7490764), (0.39166668, 0.71409374), (0.37361112, 0.71409374), (0.39166668, 0.7490764), (0.4097222, 0.7490764), (0.4097222, 0.71409374), (0.39166668, 0.71409374), (0.4097222, 0.7490764), (0.42777777, 0.7490764), (0.42777777, 0.71409374), (0.4097222, 0.71409374), (0.42777777, 0.7490764), (0.44583333, 0.7490764), (0.44583333, 0.71409374), (0.42777777, 0.71409374), (0.44583333, 0.7490764), (0.46388888, 0.7490764), (0.46388888, 0.71409374), (0.44583333, 0.71409374), (0.46388888, 0.7490764), (0.48194444, 0.7490764), (0.48194444, 0.71409374), (0.46388888, 0.71409374), (0.48194444, 0.7490764), (0.5, 0.7490764), (0.5, 0.71409374), (0.48194444, 0.71409374), (0.5, 0.7490764), (0.51805556, 0.7490764), (0.51805556, 0.71409374), (0.5, 0.71409374), (0.51805556, 0.7490764), (0.5361111, 0.7490764), (0.5361111, 0.71409374), (0.51805556, 0.71409374), (0.5361111, 0.7490764), (0.5541667, 0.7490764), (0.5541667, 0.71409374), (0.5361111, 0.71409374), (0.5541667, 0.7490764), (0.57222223, 0.7490764), (0.57222223, 0.71409374), (0.5541667, 0.71409374), (0.57222223, 0.7490764), (0.5902778, 0.7490764), (0.5902778, 0.71409374), (0.57222223, 0.71409374), (0.5902778, 0.7490764), (0.60833335, 0.7490764), (0.60833335, 0.71409374), (0.5902778, 0.71409374), (0.60833335, 0.7490764), (0.6263889, 0.7490764), (0.6263889, 0.71409374), (0.60833335, 0.71409374), (0.6263889, 0.7490764), (0.6444444, 0.7490764), (0.6444444, 0.71409374), (0.6263889, 0.71409374), (0.6444444, 0.7490764), (0.6625, 0.7490764), (0.6625, 0.71409374), (0.6444444, 0.71409374), (0.6625, 0.7490764), (0.6805555, 0.7490764), (0.6805555, 0.71409374), (0.6625, 0.71409374), (0.6805555, 0.7490764), (0.69861114, 0.7490764), (0.69861114, 0.71409374), (0.6805555, 0.71409374), (0.69861114, 0.7490764), (0.7166667, 0.7490764), (0.7166667, 0.71409374), (0.69861114, 0.71409374), (0.28333333, 0.71409374), (0.3013889, 0.71409374), (0.3013889, 0.6791111), (0.28333333, 0.6791111), (0.3013889, 0.71409374), (0.31944445, 0.71409374), (0.31944445, 0.6791111), (0.3013889, 0.6791111), (0.31944445, 0.71409374), (0.3375, 0.71409374), (0.3375, 0.6791111), (0.31944445, 0.6791111), (0.3375, 0.71409374), (0.35555553, 0.71409374), (0.35555553, 0.6791111), (0.3375, 0.6791111), (0.35555553, 0.71409374), (0.37361112, 0.71409374), (0.37361112, 0.6791111), (0.35555553, 0.6791111), (0.37361112, 0.71409374), (0.39166668, 0.71409374), (0.39166668, 0.6791111), (0.37361112, 0.6791111), (0.39166668, 0.71409374), (0.4097222, 0.71409374), (0.4097222, 0.6791111), (0.39166668, 0.6791111), (0.4097222, 0.71409374), (0.42777777, 0.71409374), (0.42777777, 0.6791111), (0.4097222, 0.6791111), (0.42777777, 0.71409374), (0.44583333, 0.71409374), (0.44583333, 0.6791111), (0.42777777, 0.6791111), (0.44583333, 0.71409374), (0.46388888, 0.71409374), (0.46388888, 0.6791111), (0.44583333, 0.6791111), (0.46388888, 0.71409374), (0.48194444, 0.71409374), (0.48194444, 0.6791111), (0.46388888, 0.6791111), (0.48194444, 0.71409374), (0.5, 0.71409374), (0.5, 0.6791111), (0.48194444, 0.6791111), (0.5, 0.71409374), (0.51805556, 0.71409374), (0.51805556, 0.6791111), (0.5, 0.6791111), (0.51805556, 0.71409374), (0.5361111, 0.71409374), (0.5361111, 0.6791111), (0.51805556, 0.6791111), (0.5361111, 0.71409374), (0.5541667, 0.71409374), (0.5541667, 0.6791111), (0.5361111, 0.6791111), (0.5541667, 0.71409374), (0.57222223, 0.71409374), (0.57222223, 0.6791111), (0.5541667, 0.6791111), (0.57222223, 0.71409374), (0.5902778, 0.71409374), (0.5902778, 0.6791111), (0.57222223, 0.6791111), (0.5902778, 0.71409374), (0.60833335, 0.71409374), (0.60833335, 0.6791111), (0.5902778, 0.6791111), (0.60833335, 0.71409374), (0.6263889, 0.71409374), (0.6263889, 0.6791111), (0.60833335, 0.6791111), (0.6263889, 0.71409374), (0.6444444, 0.71409374), (0.6444444, 0.6791111), (0.6263889, 0.6791111), (0.6444444, 0.71409374), (0.6625, 0.71409374), (0.6625, 0.6791111), (0.6444444, 0.6791111), (0.6625, 0.71409374), (0.6805555, 0.71409374), (0.6805555, 0.6791111), (0.6625, 0.6791111), (0.6805555, 0.71409374), (0.69861114, 0.71409374), (0.69861114, 0.6791111), (0.6805555, 0.6791111), (0.69861114, 0.71409374), (0.7166667, 0.71409374), (0.7166667, 0.6791111), (0.69861114, 0.6791111), (0.28333333, 0.6791111), (0.3013889, 0.6791111), (0.3013889, 0.64412856), (0.28333333, 0.64412856), (0.3013889, 0.6791111), (0.31944445, 0.6791111), (0.31944445, 0.64412856), (0.3013889, 0.64412856), (0.31944445, 0.6791111), (0.3375, 0.6791111), (0.3375, 0.64412856), (0.31944445, 0.64412856), (0.3375, 0.6791111), (0.35555553, 0.6791111), (0.35555553, 0.64412856), (0.3375, 0.64412856), (0.35555553, 0.6791111), (0.37361112, 0.6791111), (0.37361112, 0.64412856), (0.35555553, 0.64412856), (0.37361112, 0.6791111), (0.39166668, 0.6791111), (0.39166668, 0.64412856), (0.37361112, 0.64412856), (0.39166668, 0.6791111), (0.4097222, 0.6791111), (0.4097222, 0.64412856), (0.39166668, 0.64412856), (0.4097222, 0.6791111), (0.42777777, 0.6791111), (0.42777777, 0.64412856), (0.4097222, 0.64412856), (0.42777777, 0.6791111), (0.44583333, 0.6791111), (0.44583333, 0.64412856), (0.42777777, 0.64412856), (0.44583333, 0.6791111), (0.46388888, 0.6791111), (0.46388888, 0.64412856), (0.44583333, 0.64412856), (0.46388888, 0.6791111), (0.48194444, 0.6791111), (0.48194444, 0.64412856), (0.46388888, 0.64412856), (0.48194444, 0.6791111), (0.5, 0.6791111), (0.5, 0.64412856), (0.48194444, 0.64412856), (0.5, 0.6791111), (0.51805556, 0.6791111), (0.51805556, 0.64412856), (0.5, 0.64412856), (0.51805556, 0.6791111), (0.5361111, 0.6791111), (0.5361111, 0.64412856), (0.51805556, 0.64412856), (0.5361111, 0.6791111), (0.5541667, 0.6791111), (0.5541667, 0.64412856), (0.5361111, 0.64412856), (0.5541667, 0.6791111), (0.57222223, 0.6791111), (0.57222223, 0.64412856), (0.5541667, 0.64412856), (0.57222223, 0.6791111), (0.5902778, 0.6791111), (0.5902778, 0.64412856), (0.57222223, 0.64412856), (0.5902778, 0.6791111), (0.60833335, 0.6791111), (0.60833335, 0.64412856), (0.5902778, 0.64412856), (0.60833335, 0.6791111), (0.6263889, 0.6791111), (0.6263889, 0.64412856), (0.60833335, 0.64412856), (0.6263889, 0.6791111), (0.6444444, 0.6791111), (0.6444444, 0.64412856), (0.6263889, 0.64412856), (0.6444444, 0.6791111), (0.6625, 0.6791111), (0.6625, 0.64412856), (0.6444444, 0.64412856), (0.6625, 0.6791111), (0.6805555, 0.6791111), (0.6805555, 0.64412856), (0.6625, 0.64412856), (0.6805555, 0.6791111), (0.69861114, 0.6791111), (0.69861114, 0.64412856), (0.6805555, 0.64412856), (0.69861114, 0.6791111), (0.7166667, 0.6791111), (0.7166667, 0.64412856), (0.69861114, 0.64412856), (0.28333333, 0.64412856), (0.3013889, 0.64412856), (0.3013889, 0.6091458), (0.28333333, 0.6091458), (0.3013889, 0.64412856), (0.31944445, 0.64412856), (0.31944445, 0.6091458), (0.3013889, 0.6091458), (0.31944445, 0.64412856), (0.3375, 0.64412856), (0.3375, 0.6091458), (0.31944445, 0.6091458), (0.3375, 0.64412856), (0.35555553, 0.64412856), (0.35555553, 0.6091458), (0.3375, 0.6091458), (0.35555553, 0.64412856), (0.37361112, 0.64412856), (0.37361112, 0.6091458), (0.35555553, 0.6091458), (0.37361112, 0.64412856), (0.39166668, 0.64412856), (0.39166668, 0.6091458), (0.37361112, 0.6091458), (0.39166668, 0.64412856), (0.4097222, 0.64412856), (0.4097222, 0.6091458), (0.39166668, 0.6091458), (0.4097222, 0.64412856), (0.42777777, 0.64412856), (0.42777777, 0.6091458), (0.4097222, 0.6091458), (0.42777777, 0.64412856), (0.44583333, 0.64412856), (0.44583333, 0.6091458), (0.42777777, 0.6091458), (0.44583333, 0.64412856), (0.46388888, 0.64412856), (0.46388888, 0.6091458), (0.44583333, 0.6091458), (0.46388888, 0.64412856), (0.48194444, 0.64412856), (0.48194444, 0.6091458), (0.46388888, 0.6091458), (0.48194444, 0.64412856), (0.5, 0.64412856), (0.5, 0.6091458), (0.48194444, 0.6091458), (0.5, 0.64412856), (0.51805556, 0.64412856), (0.51805556, 0.6091458), (0.5, 0.6091458), (0.51805556, 0.64412856), (0.5361111, 0.64412856), (0.5361111, 0.6091458), (0.51805556, 0.6091458), (0.5361111, 0.64412856), (0.5541667, 0.64412856), (0.5541667, 0.6091458), (0.5361111, 0.6091458), (0.5541667, 0.64412856), (0.57222223, 0.64412856), (0.57222223, 0.6091458), (0.5541667, 0.6091458), (0.57222223, 0.64412856), (0.5902778, 0.64412856), (0.5902778, 0.6091458), (0.57222223, 0.6091458), (0.5902778, 0.64412856), (0.60833335, 0.64412856), (0.60833335, 0.6091458), (0.5902778, 0.6091458), (0.60833335, 0.64412856), (0.6263889, 0.64412856), (0.6263889, 0.6091458), (0.60833335, 0.6091458), (0.6263889, 0.64412856), (0.6444444, 0.64412856), (0.6444444, 0.6091458), (0.6263889, 0.6091458), (0.6444444, 0.64412856), (0.6625, 0.64412856), (0.6625, 0.6091458), (0.6444444, 0.6091458), (0.6625, 0.64412856), (0.6805555, 0.64412856), (0.6805555, 0.6091458), (0.6625, 0.6091458), (0.6805555, 0.64412856), (0.69861114, 0.64412856), (0.69861114, 0.6091458), (0.6805555, 0.6091458), (0.69861114, 0.64412856), (0.7166667, 0.64412856), (0.7166667, 0.6091458), (0.69861114, 0.6091458), (0.28333333, 0.6091458), (0.3013889, 0.6091458), (0.3013889, 0.5741632), (0.28333333, 0.5741632), (0.3013889, 0.6091458), (0.31944445, 0.6091458), (0.31944445, 0.5741632), (0.3013889, 0.5741632), (0.31944445, 0.6091458), (0.3375, 0.6091458), (0.3375, 0.5741632), (0.31944445, 0.5741632), (0.3375, 0.6091458), (0.35555553, 0.6091458), (0.35555553, 0.5741632), (0.3375, 0.5741632), (0.35555553, 0.6091458), (0.37361112, 0.6091458), (0.37361112, 0.5741632), (0.35555553, 0.5741632), (0.37361112, 0.6091458), (0.39166668, 0.6091458), (0.39166668, 0.5741632), (0.37361112, 0.5741632), (0.39166668, 0.6091458), (0.4097222, 0.6091458), (0.4097222, 0.5741632), (0.39166668, 0.5741632), (0.4097222, 0.6091458), (0.42777777, 0.6091458), (0.42777777, 0.5741632), (0.4097222, 0.5741632), (0.42777777, 0.6091458), (0.44583333, 0.6091458), (0.44583333, 0.5741632), (0.42777777, 0.5741632), (0.44583333, 0.6091458), (0.46388888, 0.6091458), (0.46388888, 0.5741632), (0.44583333, 0.5741632), (0.46388888, 0.6091458), (0.48194444, 0.6091458), (0.48194444, 0.5741632), (0.46388888, 0.5741632), (0.48194444, 0.6091458), (0.5, 0.6091458), (0.5, 0.5741632), (0.48194444, 0.5741632), (0.5, 0.6091458), (0.51805556, 0.6091458), (0.51805556, 0.5741632), (0.5, 0.5741632), (0.51805556, 0.6091458), (0.5361111, 0.6091458), (0.5361111, 0.5741632), (0.51805556, 0.5741632), (0.5361111, 0.6091458), (0.5541667, 0.6091458), (0.5541667, 0.5741632), (0.5361111, 0.5741632), (0.5541667, 0.6091458), (0.57222223, 0.6091458), (0.57222223, 0.5741632), (0.5541667, 0.5741632), (0.57222223, 0.6091458), (0.5902778, 0.6091458), (0.5902778, 0.5741632), (0.57222223, 0.5741632), (0.5902778, 0.6091458), (0.60833335, 0.6091458), (0.60833335, 0.5741632), (0.5902778, 0.5741632), (0.60833335, 0.6091458), (0.6263889, 0.6091458), (0.6263889, 0.5741632), (0.60833335, 0.5741632), (0.6263889, 0.6091458), (0.6444444, 0.6091458), (0.6444444, 0.5741632), (0.6263889, 0.5741632), (0.6444444, 0.6091458), (0.6625, 0.6091458), (0.6625, 0.5741632), (0.6444444, 0.5741632), (0.6625, 0.6091458), (0.6805555, 0.6091458), (0.6805555, 0.5741632), (0.6625, 0.5741632), (0.6805555, 0.6091458), (0.69861114, 0.6091458), (0.69861114, 0.5741632), (0.6805555, 0.5741632), (0.69861114, 0.6091458), (0.7166667, 0.6091458), (0.7166667, 0.5741632), (0.69861114, 0.5741632), (0.28333333, 0.5741632), (0.3013889, 0.5741632), (0.3013889, 0.5391806), (0.28333333, 0.5391806), (0.3013889, 0.5741632), (0.31944445, 0.5741632), (0.31944445, 0.5391806), (0.3013889, 0.5391806), (0.31944445, 0.5741632), (0.3375, 0.5741632), (0.3375, 0.5391806), (0.31944445, 0.5391806), (0.3375, 0.5741632), (0.35555553, 0.5741632), (0.35555553, 0.5391806), (0.3375, 0.5391806), (0.35555553, 0.5741632), (0.37361112, 0.5741632), (0.37361112, 0.5391806), (0.35555553, 0.5391806), (0.37361112, 0.5741632), (0.39166668, 0.5741632), (0.39166668, 0.5391806), (0.37361112, 0.5391806), (0.39166668, 0.5741632), (0.4097222, 0.5741632), (0.4097222, 0.5391806), (0.39166668, 0.5391806), (0.4097222, 0.5741632), (0.42777777, 0.5741632), (0.42777777, 0.5391806), (0.4097222, 0.5391806), (0.42777777, 0.5741632), (0.44583333, 0.5741632), (0.44583333, 0.5391806), (0.42777777, 0.5391806), (0.44583333, 0.5741632), (0.46388888, 0.5741632), (0.46388888, 0.5391806), (0.44583333, 0.5391806), (0.46388888, 0.5741632), (0.48194444, 0.5741632), (0.48194444, 0.5391806), (0.46388888, 0.5391806), (0.48194444, 0.5741632), (0.5, 0.5741632), (0.5, 0.5391806), (0.48194444, 0.5391806), (0.5, 0.5741632), (0.51805556, 0.5741632), (0.51805556, 0.5391806), (0.5, 0.5391806), (0.51805556, 0.5741632), (0.5361111, 0.5741632), (0.5361111, 0.5391806), (0.51805556, 0.5391806), (0.5361111, 0.5741632), (0.5541667, 0.5741632), (0.5541667, 0.5391806), (0.5361111, 0.5391806), (0.5541667, 0.5741632), (0.57222223, 0.5741632), (0.57222223, 0.5391806), (0.5541667, 0.5391806), (0.57222223, 0.5741632), (0.5902778, 0.5741632), (0.5902778, 0.5391806), (0.57222223, 0.5391806), (0.5902778, 0.5741632), (0.60833335, 0.5741632), (0.60833335, 0.5391806), (0.5902778, 0.5391806), (0.60833335, 0.5741632), (0.6263889, 0.5741632), (0.6263889, 0.5391806), (0.60833335, 0.5391806), (0.6263889, 0.5741632), (0.6444444, 0.5741632), (0.6444444, 0.5391806), (0.6263889, 0.5391806), (0.6444444, 0.5741632), (0.6625, 0.5741632), (0.6625, 0.5391806), (0.6444444, 0.5391806), (0.6625, 0.5741632), (0.6805555, 0.5741632), (0.6805555, 0.5391806), (0.6625, 0.5391806), (0.6805555, 0.5741632), (0.69861114, 0.5741632), (0.69861114, 0.5391806), (0.6805555, 0.5391806), (0.69861114, 0.5741632), (0.7166667, 0.5741632), (0.7166667, 0.5391806), (0.69861114, 0.5391806), (0.28333333, 0.5391806), (0.3013889, 0.5391806), (0.3013889, 0.50419796), (0.28333333, 0.50419796), (0.3013889, 0.5391806), (0.31944445, 0.5391806), (0.31944445, 0.50419796), (0.3013889, 0.50419796), (0.31944445, 0.5391806), (0.3375, 0.5391806), (0.3375, 0.50419796), (0.31944445, 0.50419796), (0.3375, 0.5391806), (0.35555553, 0.5391806), (0.35555553, 0.50419796), (0.3375, 0.50419796), (0.35555553, 0.5391806), (0.37361112, 0.5391806), (0.37361112, 0.50419796), (0.35555553, 0.50419796), (0.37361112, 0.5391806), (0.39166668, 0.5391806), (0.39166668, 0.50419796), (0.37361112, 0.50419796), (0.39166668, 0.5391806), (0.4097222, 0.5391806), (0.4097222, 0.50419796), (0.39166668, 0.50419796), (0.4097222, 0.5391806), (0.42777777, 0.5391806), (0.42777777, 0.50419796), (0.4097222, 0.50419796), (0.42777777, 0.5391806), (0.44583333, 0.5391806), (0.44583333, 0.50419796), (0.42777777, 0.50419796), (0.44583333, 0.5391806), (0.46388888, 0.5391806), (0.46388888, 0.50419796), (0.44583333, 0.50419796), (0.46388888, 0.5391806), (0.48194444, 0.5391806), (0.48194444, 0.50419796), (0.46388888, 0.50419796), (0.48194444, 0.5391806), (0.5, 0.5391806), (0.5, 0.50419796), (0.48194444, 0.50419796), (0.5, 0.5391806), (0.51805556, 0.5391806), (0.51805556, 0.50419796), (0.5, 0.50419796), (0.51805556, 0.5391806), (0.5361111, 0.5391806), (0.5361111, 0.50419796), (0.51805556, 0.50419796), (0.5361111, 0.5391806), (0.5541667, 0.5391806), (0.5541667, 0.50419796), (0.5361111, 0.50419796), (0.5541667, 0.5391806), (0.57222223, 0.5391806), (0.57222223, 0.50419796), (0.5541667, 0.50419796), (0.57222223, 0.5391806), (0.5902778, 0.5391806), (0.5902778, 0.50419796), (0.57222223, 0.50419796), (0.5902778, 0.5391806), (0.60833335, 0.5391806), (0.60833335, 0.50419796), (0.5902778, 0.50419796), (0.60833335, 0.5391806), (0.6263889, 0.5391806), (0.6263889, 0.50419796), (0.60833335, 0.50419796), (0.6263889, 0.5391806), (0.6444444, 0.5391806), (0.6444444, 0.50419796), (0.6263889, 0.50419796), (0.6444444, 0.5391806), (0.6625, 0.5391806), (0.6625, 0.50419796), (0.6444444, 0.50419796), (0.6625, 0.5391806), (0.6805555, 0.5391806), (0.6805555, 0.50419796), (0.6625, 0.50419796), (0.6805555, 0.5391806), (0.69861114, 0.5391806), (0.69861114, 0.50419796), (0.6805555, 0.50419796), (0.69861114, 0.5391806), (0.7166667, 0.5391806), (0.7166667, 0.50419796), (0.69861114, 0.50419796), (0.28333333, 0.50419796), (0.3013889, 0.50419796), (0.3013889, 0.46921533), (0.28333333, 0.46921533), (0.3013889, 0.50419796), (0.31944445, 0.50419796), (0.31944445, 0.46921533), (0.3013889, 0.46921533), (0.31944445, 0.50419796), (0.3375, 0.50419796), (0.3375, 0.46921533), (0.31944445, 0.46921533), (0.3375, 0.50419796), (0.35555553, 0.50419796), (0.35555553, 0.46921533), (0.3375, 0.46921533), (0.35555553, 0.50419796), (0.37361112, 0.50419796), (0.37361112, 0.46921533), (0.35555553, 0.46921533), (0.37361112, 0.50419796), (0.39166668, 0.50419796), (0.39166668, 0.46921533), (0.37361112, 0.46921533), (0.39166668, 0.50419796), (0.4097222, 0.50419796), (0.4097222, 0.46921533), (0.39166668, 0.46921533), (0.4097222, 0.50419796), (0.42777777, 0.50419796), (0.42777777, 0.46921533), (0.4097222, 0.46921533), (0.42777777, 0.50419796), (0.44583333, 0.50419796), (0.44583333, 0.46921533), (0.42777777, 0.46921533), (0.44583333, 0.50419796), (0.46388888, 0.50419796), (0.46388888, 0.46921533), (0.44583333, 0.46921533), (0.46388888, 0.50419796), (0.48194444, 0.50419796), (0.48194444, 0.46921533), (0.46388888, 0.46921533), (0.48194444, 0.50419796), (0.5, 0.50419796), (0.5, 0.46921533), (0.48194444, 0.46921533), (0.5, 0.50419796), (0.51805556, 0.50419796), (0.51805556, 0.46921533), (0.5, 0.46921533), (0.51805556, 0.50419796), (0.5361111, 0.50419796), (0.5361111, 0.46921533), (0.51805556, 0.46921533), (0.5361111, 0.50419796), (0.5541667, 0.50419796), (0.5541667, 0.46921533), (0.5361111, 0.46921533), (0.5541667, 0.50419796), (0.57222223, 0.50419796), (0.57222223, 0.46921533), (0.5541667, 0.46921533), (0.57222223, 0.50419796), (0.5902778, 0.50419796), (0.5902778, 0.46921533), (0.57222223, 0.46921533), (0.5902778, 0.50419796), (0.60833335, 0.50419796), (0.60833335, 0.46921533), (0.5902778, 0.46921533), (0.60833335, 0.50419796), (0.6263889, 0.50419796), (0.6263889, 0.46921533), (0.60833335, 0.46921533), (0.6263889, 0.50419796), (0.6444444, 0.50419796), (0.6444444, 0.46921533), (0.6263889, 0.46921533), (0.6444444, 0.50419796), (0.6625, 0.50419796), (0.6625, 0.46921533), (0.6444444, 0.46921533), (0.6625, 0.50419796), (0.6805555, 0.50419796), (0.6805555, 0.46921533), (0.6625, 0.46921533), (0.6805555, 0.50419796), (0.69861114, 0.50419796), (0.69861114, 0.46921533), (0.6805555, 0.46921533), (0.69861114, 0.50419796), (0.7166667, 0.50419796), (0.7166667, 0.46921533), (0.69861114, 0.46921533), (0.28333333, 0.46921533), (0.3013889, 0.46921533), (0.3013889, 0.4342327), (0.28333333, 0.4342327), (0.3013889, 0.46921533), (0.31944445, 0.46921533), (0.31944445, 0.4342327), (0.3013889, 0.4342327), (0.31944445, 0.46921533), (0.3375, 0.46921533), (0.3375, 0.4342327), (0.31944445, 0.4342327), (0.3375, 0.46921533), (0.35555553, 0.46921533), (0.35555553, 0.4342327), (0.3375, 0.4342327), (0.35555553, 0.46921533), (0.37361112, 0.46921533), (0.37361112, 0.4342327), (0.35555553, 0.4342327), (0.37361112, 0.46921533), (0.39166668, 0.46921533), (0.39166668, 0.4342327), (0.37361112, 0.4342327), (0.39166668, 0.46921533), (0.4097222, 0.46921533), (0.4097222, 0.4342327), (0.39166668, 0.4342327), (0.4097222, 0.46921533), (0.42777777, 0.46921533), (0.42777777, 0.4342327), (0.4097222, 0.4342327), (0.42777777, 0.46921533), (0.44583333, 0.46921533), (0.44583333, 0.4342327), (0.42777777, 0.4342327), (0.44583333, 0.46921533), (0.46388888, 0.46921533), (0.46388888, 0.4342327), (0.44583333, 0.4342327), (0.46388888, 0.46921533), (0.48194444, 0.46921533), (0.48194444, 0.4342327), (0.46388888, 0.4342327), (0.48194444, 0.46921533), (0.5, 0.46921533), (0.5, 0.4342327), (0.48194444, 0.4342327), (0.5, 0.46921533), (0.51805556, 0.46921533), (0.51805556, 0.4342327), (0.5, 0.4342327), (0.51805556, 0.46921533), (0.5361111, 0.46921533), (0.5361111, 0.4342327), (0.51805556, 0.4342327), (0.5361111, 0.46921533), (0.5541667, 0.46921533), (0.5541667, 0.4342327), (0.5361111, 0.4342327), (0.5541667, 0.46921533), (0.57222223, 0.46921533), (0.57222223, 0.4342327), (0.5541667, 0.4342327), (0.57222223, 0.46921533), (0.5902778, 0.46921533), (0.5902778, 0.4342327), (0.57222223, 0.4342327), (0.5902778, 0.46921533), (0.60833335, 0.46921533), (0.60833335, 0.4342327), (0.5902778, 0.4342327), (0.60833335, 0.46921533), (0.6263889, 0.46921533), (0.6263889, 0.4342327), (0.60833335, 0.4342327), (0.6263889, 0.46921533), (0.6444444, 0.46921533), (0.6444444, 0.4342327), (0.6263889, 0.4342327), (0.6444444, 0.46921533), (0.6625, 0.46921533), (0.6625, 0.4342327), (0.6444444, 0.4342327), (0.6625, 0.46921533), (0.6805555, 0.46921533), (0.6805555, 0.4342327), (0.6625, 0.4342327), (0.6805555, 0.46921533), (0.69861114, 0.46921533), (0.69861114, 0.4342327), (0.6805555, 0.4342327), (0.69861114, 0.46921533), (0.7166667, 0.46921533), (0.7166667, 0.4342327), (0.69861114, 0.4342327), (0.28333333, 0.4342327), (0.3013889, 0.4342327), (0.3013889, 0.39925003), (0.28333333, 0.39925003), (0.3013889, 0.4342327), (0.31944445, 0.4342327), (0.31944445, 0.39925003), (0.3013889, 0.39925003), (0.31944445, 0.4342327), (0.3375, 0.4342327), (0.3375, 0.39925003), (0.31944445, 0.39925003), (0.3375, 0.4342327), (0.35555553, 0.4342327), (0.35555553, 0.39925003), (0.3375, 0.39925003), (0.35555553, 0.4342327), (0.37361112, 0.4342327), (0.37361112, 0.39925003), (0.35555553, 0.39925003), (0.37361112, 0.4342327), (0.39166668, 0.4342327), (0.39166668, 0.39925003), (0.37361112, 0.39925003), (0.39166668, 0.4342327), (0.4097222, 0.4342327), (0.4097222, 0.39925003), (0.39166668, 0.39925003), (0.4097222, 0.4342327), (0.42777777, 0.4342327), (0.42777777, 0.39925003), (0.4097222, 0.39925003), (0.42777777, 0.4342327), (0.44583333, 0.4342327), (0.44583333, 0.39925003), (0.42777777, 0.39925003), (0.44583333, 0.4342327), (0.46388888, 0.4342327), (0.46388888, 0.39925003), (0.44583333, 0.39925003), (0.46388888, 0.4342327), (0.48194444, 0.4342327), (0.48194444, 0.39925003), (0.46388888, 0.39925003), (0.48194444, 0.4342327), (0.5, 0.4342327), (0.5, 0.39925003), (0.48194444, 0.39925003), (0.5, 0.4342327), (0.51805556, 0.4342327), (0.51805556, 0.39925003), (0.5, 0.39925003), (0.51805556, 0.4342327), (0.5361111, 0.4342327), (0.5361111, 0.39925003), (0.51805556, 0.39925003), (0.5361111, 0.4342327), (0.5541667, 0.4342327), (0.5541667, 0.39925003), (0.5361111, 0.39925003), (0.5541667, 0.4342327), (0.57222223, 0.4342327), (0.57222223, 0.39925003), (0.5541667, 0.39925003), (0.57222223, 0.4342327), (0.5902778, 0.4342327), (0.5902778, 0.39925003), (0.57222223, 0.39925003), (0.5902778, 0.4342327), (0.60833335, 0.4342327), (0.60833335, 0.39925003), (0.5902778, 0.39925003), (0.60833335, 0.4342327), (0.6263889, 0.4342327), (0.6263889, 0.39925003), (0.60833335, 0.39925003), (0.6263889, 0.4342327), (0.6444444, 0.4342327), (0.6444444, 0.39925003), (0.6263889, 0.39925003), (0.6444444, 0.4342327), (0.6625, 0.4342327), (0.6625, 0.39925003), (0.6444444, 0.39925003), (0.6625, 0.4342327), (0.6805555, 0.4342327), (0.6805555, 0.39925003), (0.6625, 0.39925003), (0.6805555, 0.4342327), (0.69861114, 0.4342327), (0.69861114, 0.39925003), (0.6805555, 0.39925003), (0.69861114, 0.4342327), (0.7166667, 0.4342327), (0.7166667, 0.39925003), (0.69861114, 0.39925003)] (\n            interpolation = \"faceVarying\"\n        )\n        texCoord2f[] primvars:emissionUV = [(0.23552485, 0.46207106), (0.23694484, 0.45838705), (0.21867196, 0.45276937), (0.21873009, 0.45747212), (0.23694484, 0.45838705), (0.24066626, 0.4545901), (0.22096747, 0.4478328), (0.21867196, 0.45276937), (0.24066626, 0.4545901), (0.24724846, 0.45082122), (0.22628973, 0.4428584), (0.22096747, 0.4478328), (0.24724846, 0.45082122), (0.25729614, 0.4472493), (0.23540068, 0.43809742), (0.22628973, 0.4428584), (0.25729614, 0.4472493), (0.27141488, 0.44405353), (0.2491072, 0.43382663), (0.23540068, 0.43809742), (0.27141488, 0.44405353), (0.29014078, 0.44139242), (0.268159, 0.43029872), (0.2491072, 0.43382663), (0.29014078, 0.44139242), (0.31384882, 0.43938208), (0.29311824, 0.42768055), (0.268159, 0.43029872), (0.31384882, 0.43938208), (0.34264544, 0.43806684), (0.3242043, 0.42602533), (0.29311824, 0.42768055), (0.34264544, 0.43806684), (0.3762902, 0.43742633), (0.36118877, 0.42527953), (0.3242043, 0.42602533), (0.3762902, 0.43742633), (0.4141495, 0.4373784), (0.40333664, 0.42529824), (0.36118877, 0.42527953), (0.4141495, 0.4373784), (0.45520452, 0.43780896), (0.44942057, 0.42589006), (0.40333664, 0.42529824), (0.45520452, 0.43780896), (0.49810207, 0.43860164), (0.49780917, 0.42687014), (0.44942057, 0.42589006), (0.49810207, 0.43860164), (0.54125977, 0.43965244), (0.5465601, 0.42809352), (0.49780917, 0.42687014), (0.54125977, 0.43965244), (0.5830314, 0.44090694), (0.59361684, 0.42948768), (0.5465601, 0.42809352), (0.5830314, 0.44090694), (0.62187403, 0.44235536), (0.6370585, 0.43106136), (0.59361684, 0.42948768), (0.62187403, 0.44235536), (0.6565548, 0.4440375), (0.6753414, 0.4328988), (0.6370585, 0.43106136), (0.6565548, 0.4440375), (0.6862751, 0.4460224), (0.7075035, 0.43514863), (0.6753414, 0.4328988), (0.6862751, 0.4460224), (0.71070737, 0.44838592), (0.73322237, 0.43795922), (0.7075035, 0.43514863), (0.71070737, 0.44838592), (0.72994083, 0.45115933), (0.7527487, 0.44141993), (0.73322237, 0.43795922), (0.72994083, 0.45115933), (0.7443882, 0.4543227), (0.7667091, 0.44548726), (0.7527487, 0.44141993), (0.7443882, 0.4543227), (0.7546272, 0.45778304), (0.7759398, 0.4500083), (0.7667091, 0.44548726), (0.7546272, 0.45778304), (0.7613093, 0.46141127), (0.7812944, 0.4547574), (0.7759398, 0.4500083), (0.7613093, 0.46141127), (0.7650775, 0.46506658), (0.78358305, 0.4595041), (0.7812944, 0.4547574), (0.7650775, 0.46506658), (0.7665021, 0.46862152), (0.7834932, 0.46405825), (0.78358305, 0.4595041), (0.21873009, 0.45747212), (0.21867196, 0.45276937), (0.20001219, 0.4460658), (0.20180358, 0.452133), (0.21867196, 0.45276937), (0.22096747, 0.4478328), (0.20055968, 0.43955413), (0.20001219, 0.4460658), (0.22096747, 0.4478328), (0.22628973, 0.4428584), (0.20424113, 0.43286538), (0.20055968, 0.43955413), (0.22628973, 0.4428584), (0.23540068, 0.43809742), (0.21201032, 0.42638093), (0.20424113, 0.43286538), (0.23540068, 0.43809742), (0.2491072, 0.43382663), (0.22493032, 0.42055333), (0.21201032, 0.42638093), (0.2491072, 0.43382663), (0.268159, 0.43029872), (0.24404308, 0.41578484), (0.22493032, 0.42055333), (0.268159, 0.43029872), (0.29311824, 0.42768055), (0.2701716, 0.4123363), (0.24404308, 0.41578484), (0.29311824, 0.42768055), (0.3242043, 0.42602533), (0.3036868, 0.41026297), (0.2701716, 0.4123363), (0.3242043, 0.42602533), (0.36118877, 0.42527953), (0.34434506, 0.40943518), (0.3036868, 0.41026297), (0.36118877, 0.42527953), (0.40333664, 0.42529824), (0.3912565, 0.40960237), (0.34434506, 0.40943518), (0.40333664, 0.42529824), (0.44942057, 0.42589006), (0.44294825, 0.41044924), (0.3912565, 0.40960237), (0.44942057, 0.42589006), (0.49780917, 0.42687014), (0.49746346, 0.41168153), (0.44294825, 0.41044924), (0.49780917, 0.42687014), (0.5465601, 0.42809352), (0.5524789, 0.41309983), (0.49746346, 0.41168153), (0.5465601, 0.42809352), (0.59361684, 0.42948768), (0.6054928, 0.4146161), (0.5524789, 0.41309983), (0.59361684, 0.42948768), (0.6370585, 0.43106136), (0.6541059, 0.4162642), (0.6054928, 0.4146161), (0.6370585, 0.43106136), (0.6753414, 0.4328988), (0.6963666, 0.41819856), (0.6541059, 0.4162642), (0.6753414, 0.4328988), (0.7075035, 0.43514863), (0.7310858, 0.42069867), (0.6963666, 0.41819856), (0.7075035, 0.43514863), (0.73322237, 0.43795922), (0.7579611, 0.42407274), (0.7310858, 0.42069867), (0.73322237, 0.43795922), (0.7527487, 0.44141993), (0.77744496, 0.42849708), (0.7579611, 0.42407274), (0.7527487, 0.44141993), (0.7667091, 0.44548726), (0.7905041, 0.43390864), (0.77744496, 0.42849708), (0.7667091, 0.44548726), (0.7759398, 0.4500083), (0.7982901, 0.44001234), (0.7905041, 0.43390864), (0.7759398, 0.4500083), (0.7812944, 0.4547574), (0.80193204, 0.44640493), (0.7982901, 0.44001234), (0.7812944, 0.4547574), (0.78358305, 0.4595041), (0.8024206, 0.45270464), (0.80193204, 0.44640493), (0.78358305, 0.4595041), (0.7834932, 0.46405825), (0.80057144, 0.45862743), (0.8024206, 0.45270464), (0.20180358, 0.452133), (0.20001219, 0.4460658), (0.18132615, 0.43809727), (0.18509188, 0.4459862), (0.20001219, 0.4460658), (0.20055968, 0.43955413), (0.17978995, 0.42939043), (0.18132615, 0.43809727), (0.20055968, 0.43955413), (0.20424113, 0.43286538), (0.1814003, 0.42022076), (0.17978995, 0.42939043), (0.20424113, 0.43286538), (0.21201032, 0.42638093), (0.18733099, 0.41118154), (0.1814003, 0.42022076), (0.21201032, 0.42638093), (0.22493032, 0.42055333), (0.19898044, 0.40301928), (0.18733099, 0.41118154), (0.22493032, 0.42055333), (0.24404308, 0.41578484), (0.21781096, 0.39644042), (0.19898044, 0.40301928), (0.24404308, 0.41578484), (0.2701716, 0.4123363), (0.24502634, 0.39185658), (0.21781096, 0.39644042), (0.2701716, 0.4123363), (0.3036868, 0.41026297), (0.28117603, 0.3892827), (0.24502634, 0.39185658), (0.3036868, 0.41026297), (0.34434506, 0.40943518), (0.32592344, 0.38843468), (0.28117603, 0.3892827), (0.34434506, 0.40943518), (0.3912565, 0.40960237), (0.37809768, 0.38887602), (0.32592344, 0.38843468), (0.3912565, 0.40960237), (0.44294825, 0.41044924), (0.43590504, 0.39010796), (0.37809768, 0.38887602), (0.44294825, 0.41044924), (0.49746346, 0.41168153), (0.49707046, 0.39167547), (0.43590504, 0.39010796), (0.49746346, 0.41168153), (0.5524789, 0.41309983), (0.55891395, 0.393301), (0.49707046, 0.39167547), (0.5524789, 0.41309983), (0.6054928, 0.4146161), (0.6185021, 0.39490938), (0.55891395, 0.393301), (0.6054928, 0.4146161), (0.6541059, 0.4162642), (0.6728884, 0.3965516), (0.6185021, 0.39490938), (0.6541059, 0.4162642), (0.6963666, 0.41819856), (0.7195733, 0.3984587), (0.6728884, 0.3965516), (0.6963666, 0.41819856), (0.7310858, 0.42069867), (0.7570054, 0.4011305), (0.7195733, 0.3984587), (0.7310858, 0.42069867), (0.7579611, 0.42407274), (0.78485215, 0.40519932), (0.7570054, 0.4011305), (0.7579611, 0.42407274), (0.77744496, 0.42849708), (0.8038819, 0.41104892), (0.78485215, 0.40519932), (0.77744496, 0.42849708), (0.7905041, 0.43390864), (0.81550974, 0.4185369), (0.8038819, 0.41104892), (0.7905041, 0.43390864), (0.7982901, 0.44001234), (0.82134086, 0.42707404), (0.81550974, 0.4185369), (0.7982901, 0.44001234), (0.80193204, 0.44640493), (0.8228417, 0.43592012), (0.82134086, 0.42707404), (0.80193204, 0.44640493), (0.8024206, 0.45270464), (0.82120764, 0.44444332), (0.8228417, 0.43592012), (0.8024206, 0.45270464), (0.80057144, 0.45862743), (0.8173633, 0.45224065), (0.82120764, 0.44444332), (0.18509188, 0.4459862), (0.18132615, 0.43809727), (0.1630847, 0.4287443), (0.1690303, 0.43903527), (0.18132615, 0.43809727), (0.17978995, 0.42939043), (0.15913548, 0.41698533), (0.1630847, 0.4287443), (0.17978995, 0.42939043), (0.1814003, 0.42022076), (0.15819511, 0.4041888), (0.15913548, 0.41698533), (0.1814003, 0.42022076), (0.18733099, 0.41118154), (0.16167726, 0.3912639), (0.15819511, 0.4041888), (0.18733099, 0.41118154), (0.19898044, 0.40301928), (0.17142044, 0.37951556), (0.16167726, 0.3912639), (0.19898044, 0.40301928), (0.21781096, 0.39644042), (0.18951422, 0.37023917), (0.17142044, 0.37951556), (0.21781096, 0.39644042), (0.24502634, 0.39185658), (0.21776454, 0.36412287), (0.18951422, 0.37023917), (0.24502634, 0.39185658), (0.28117603, 0.3892827), (0.25693503, 0.36100507), (0.21776454, 0.36412287), (0.28117603, 0.3892827), (0.32592344, 0.38843468), (0.30636236, 0.3602478), (0.25693503, 0.36100507), (0.32592344, 0.38843468), (0.37809768, 0.38887602), (0.36432394, 0.36113924), (0.30636236, 0.3602478), (0.37809768, 0.38887602), (0.43590504, 0.39010796), (0.4286045, 0.36292136), (0.36432394, 0.36113924), (0.43590504, 0.39010796), (0.49707046, 0.39167547), (0.4966711, 0.36488807), (0.4286045, 0.36292136), (0.49707046, 0.39167547), (0.55891395, 0.393301), (0.56561327, 0.36670664), (0.4966711, 0.36488807), (0.55891395, 0.393301), (0.6185021, 0.39490938), (0.63220036, 0.36838925), (0.56561327, 0.36670664), (0.6185021, 0.39490938), (0.6728884, 0.3965516), (0.6929811, 0.36995298), (0.63220036, 0.36838925), (0.6728884, 0.3965516), (0.7195733, 0.3984587), (0.7447013, 0.37160242), (0.6929811, 0.36995298), (0.7195733, 0.3984587), (0.7570054, 0.4011305), (0.7851302, 0.37420827), (0.7447013, 0.37160242), (0.7570054, 0.4011305), (0.78485215, 0.40519932), (0.81377745, 0.3791114), (0.7851302, 0.37420827), (0.78485215, 0.40519932), (0.8038819, 0.41104892), (0.8318105, 0.3871442), (0.81377745, 0.3791114), (0.8038819, 0.41104892), (0.81550974, 0.4185369), (0.84134316, 0.39796284), (0.8318105, 0.3871442), (0.81550974, 0.4185369), (0.82134086, 0.42707404), (0.8446172, 0.41033524), (0.84134316, 0.39796284), (0.82134086, 0.42707404), (0.8228417, 0.43592012), (0.8435174, 0.4228734), (0.8446172, 0.41033524), (0.8228417, 0.43592012), (0.82120764, 0.44444332), (0.8394566, 0.43456635), (0.8435174, 0.4228734), (0.82120764, 0.44444332), (0.8173633, 0.45224065), (0.83343333, 0.4448886), (0.8394566, 0.43456635), (0.1690303, 0.43903527), (0.1630847, 0.4287443), (0.14588307, 0.41806287), (0.1541402, 0.431432), (0.1630847, 0.4287443), (0.15913548, 0.41698533), (0.13923302, 0.40213066), (0.14588307, 0.41806287), (0.15913548, 0.41698533), (0.15819511, 0.4041888), (0.13523857, 0.38405263), (0.13923302, 0.40213066), (0.15819511, 0.4041888), (0.16167726, 0.3912639), (0.1355193, 0.36514816), (0.13523857, 0.38405263), (0.16167726, 0.3912639), (0.17142044, 0.37951556), (0.14247057, 0.34774113), (0.1355193, 0.36514816), (0.17142044, 0.37951556), (0.18951422, 0.37023917), (0.15916923, 0.33438575), (0.14247057, 0.34774113), (0.18951422, 0.37023917), (0.21776454, 0.36412287), (0.18849434, 0.3263273), (0.15916923, 0.33438575), (0.21776454, 0.36412287), (0.25693503, 0.36100507), (0.23148072, 0.32279366), (0.18849434, 0.3263273), (0.25693503, 0.36100507), (0.30636236, 0.3602478), (0.28652903, 0.32227603), (0.23148072, 0.32279366), (0.30636236, 0.3602478), (0.36432394, 0.36113924), (0.3507878, 0.32375896), (0.28652903, 0.32227603), (0.36432394, 0.36113924), (0.4286045, 0.36292136), (0.421608, 0.32625762), (0.3507878, 0.32375896), (0.4286045, 0.36292136), (0.4966711, 0.36488807), (0.4963848, 0.3286109), (0.421608, 0.32625762), (0.4966711, 0.36488807), (0.56561327, 0.36670664), (0.5721341, 0.33051488), (0.4963848, 0.3286109), (0.56561327, 0.36670664), (0.63220036, 0.36838925), (0.64570534, 0.332358), (0.5721341, 0.33051488), (0.63220036, 0.36838925), (0.6929811, 0.36995298), (0.7134743, 0.33392414), (0.64570534, 0.332358), (0.6929811, 0.36995298), (0.7447013, 0.37160242), (0.77119184, 0.33494624), (0.7134743, 0.33392414), (0.7447013, 0.37160242), (0.7851302, 0.37420827), (0.8152766, 0.3368695), (0.77119184, 0.33494624), (0.7851302, 0.37420827), (0.81377745, 0.3791114), (0.844611, 0.34266633), (0.8152766, 0.3368695), (0.81377745, 0.3791114), (0.8318105, 0.3871442), (0.8609275, 0.3541951), (0.844611, 0.34266633), (0.8318105, 0.3871442), (0.84134316, 0.39796284), (0.8674903, 0.37052435), (0.8609275, 0.3541951), (0.84134316, 0.39796284), (0.8446172, 0.41033524), (0.86748904, 0.3889832), (0.8674903, 0.37052435), (0.8446172, 0.41033524), (0.8435174, 0.4228734), (0.86331654, 0.4070239), (0.86748904, 0.3889832), (0.8435174, 0.4228734), (0.8394566, 0.43456635), (0.856571, 0.42312276), (0.86331654, 0.4070239), (0.8394566, 0.43456635), (0.83343333, 0.4448886), (0.84826213, 0.43672857), (0.856571, 0.42312276), (0.1541402, 0.431432), (0.14588307, 0.41806287), (0.13043866, 0.4064687), (0.14101212, 0.42356017), (0.14588307, 0.41806287), (0.13923302, 0.40213066), (0.1209163, 0.3851047), (0.13043866, 0.4064687), (0.13923302, 0.40213066), (0.13523857, 0.38405263), (0.11339752, 0.35955605), (0.1209163, 0.3851047), (0.13523857, 0.38405263), (0.1355193, 0.36514816), (0.10957857, 0.33150184), (0.11339752, 0.35955605), (0.1355193, 0.36514816), (0.14247057, 0.34774113), (0.11245854, 0.30500084), (0.10957857, 0.33150184), (0.14247057, 0.34774113), (0.15916923, 0.33438575), (0.12669048, 0.28541395), (0.11245854, 0.30500084), (0.15916923, 0.33438575), (0.18849434, 0.3263273), (0.1572919, 0.27531573), (0.12669048, 0.28541395), (0.18849434, 0.3263273), (0.23148072, 0.32279366), (0.20576034, 0.27203712), (0.1572919, 0.27531573), (0.23148072, 0.32279366), (0.28652903, 0.32227603), (0.26795676, 0.27185112), (0.20576034, 0.27203712), (0.28652903, 0.32227603), (0.3507878, 0.32375896), (0.3388051, 0.27380508), (0.26795676, 0.27185112), (0.3507878, 0.32375896), (0.421608, 0.32625762), (0.4157057, 0.27708113), (0.3388051, 0.27380508), (0.421608, 0.32625762), (0.4963848, 0.3286109), (0.49649346, 0.279545), (0.4157057, 0.27708113), (0.4963848, 0.3286109), (0.5721341, 0.33051488), (0.57790697, 0.2811725), (0.49649346, 0.279545), (0.5721341, 0.33051488), (0.64570534, 0.332358), (0.6575294, 0.2835869), (0.57790697, 0.2811725), (0.64570534, 0.332358), (0.7134743, 0.33392414), (0.732693, 0.2857323), (0.6575294, 0.2835869), (0.7134743, 0.33392414), (0.77119184, 0.33494624), (0.79802215, 0.28562707), (0.732693, 0.2857323), (0.77119184, 0.33494624), (0.8152766, 0.3368695), (0.84724987, 0.28546807), (0.79802215, 0.28562707), (0.8152766, 0.3368695), (0.844611, 0.34266633), (0.8773112, 0.29201373), (0.84724987, 0.28546807), (0.844611, 0.34266633), (0.8609275, 0.3541951), (0.8908353, 0.30938148), (0.8773112, 0.29201373), (0.8609275, 0.3541951), (0.8674903, 0.37052435), (0.8932244, 0.33488426), (0.8908353, 0.30938148), (0.8674903, 0.37052435), (0.86748904, 0.3889832), (0.88911223, 0.36279902), (0.8932244, 0.33488426), (0.86748904, 0.3889832), (0.86331654, 0.4070239), (0.8814419, 0.38869193), (0.88911223, 0.36279902), (0.86331654, 0.4070239), (0.856571, 0.42312276), (0.87186337, 0.41057763), (0.8814419, 0.38869193), (0.856571, 0.42312276), (0.84826213, 0.43672857), (0.8612793, 0.42819035), (0.87186337, 0.41057763), (0.14101212, 0.42356017), (0.13043866, 0.4064687), (0.11757387, 0.39495718), (0.13027748, 0.41611317), (0.13043866, 0.4064687), (0.1209163, 0.3851047), (0.105236225, 0.3671657), (0.11757387, 0.39495718), (0.1209163, 0.3851047), (0.11339752, 0.35955605), (0.09392514, 0.33185828), (0.105236225, 0.3671657), (0.11339752, 0.35955605), (0.10957857, 0.33150184), (0.08507946, 0.2904219), (0.09392514, 0.33185828), (0.10957857, 0.33150184), (0.11245854, 0.30500084), (0.08206037, 0.24927273), (0.08507946, 0.2904219), (0.11245854, 0.30500084), (0.12669048, 0.28541395), (0.091927186, 0.2199224), (0.08206037, 0.24927273), (0.12669048, 0.28541395), (0.1572919, 0.27531573), (0.12428518, 0.20874262), (0.091927186, 0.2199224), (0.1572919, 0.27531573), (0.20576034, 0.27203712), (0.18161073, 0.20779301), (0.12428518, 0.20874262), (0.20576034, 0.27203712), (0.26795676, 0.27185112), (0.25307655, 0.2078593), (0.18161073, 0.20779301), (0.26795676, 0.27185112), (0.3388051, 0.27380508), (0.3300337, 0.20956439), (0.25307655, 0.2078593), (0.3388051, 0.27380508), (0.4157057, 0.27708113), (0.41167188, 0.21338002), (0.3300337, 0.20956439), (0.4157057, 0.27708113), (0.49649346, 0.279545), (0.49754202, 0.21501973), (0.41167188, 0.21338002), (0.49649346, 0.279545), (0.57790697, 0.2811725), (0.58239007, 0.21547061), (0.49754202, 0.21501973), (0.57790697, 0.2811725), (0.6575294, 0.2835869), (0.6657478, 0.21947506), (0.58239007, 0.21547061), (0.6575294, 0.2835869), (0.732693, 0.2857323), (0.7479896, 0.22354329), (0.6657478, 0.21947506), (0.732693, 0.2857323), (0.79802215, 0.28562707), (0.8231717, 0.22192736), (0.7479896, 0.22354329), (0.79802215, 0.28562707), (0.84724987, 0.28546807), (0.88068247, 0.21723165), (0.8231717, 0.22192736), (0.84724987, 0.28546807), (0.8773112, 0.29201373), (0.91167, 0.22425015), (0.88068247, 0.21723165), (0.8773112, 0.29201373), (0.8908353, 0.30938148), (0.92069495, 0.25164124), (0.91167, 0.22425015), (0.8908353, 0.30938148), (0.8932244, 0.33488426), (0.91732913, 0.29179195), (0.92069495, 0.25164124), (0.8932244, 0.33488426), (0.88911223, 0.36279902), (0.9082936, 0.33327463), (0.91732913, 0.29179195), (0.88911223, 0.36279902), (0.8814419, 0.38869193), (0.89689165, 0.3693319), (0.9082936, 0.33327463), (0.8814419, 0.38869193), (0.87186337, 0.41057763), (0.8845508, 0.39806038), (0.89689165, 0.3693319), (0.87186337, 0.41057763), (0.8612793, 0.42819035), (0.87188333, 0.42006162), (0.8845508, 0.39806038), (0.13027748, 0.41611317), (0.11757387, 0.39495718), (0.108154476, 0.3852078), (0.12255007, 0.41007897), (0.11757387, 0.39495718), (0.105236225, 0.3671657), (0.09343662, 0.3510653), (0.108154476, 0.3852078), (0.105236225, 0.3671657), (0.09392514, 0.33185828), (0.0785835, 0.30501288), (0.09343662, 0.3510653), (0.09392514, 0.33185828), (0.08507946, 0.2904219), (0.06423556, 0.24646541), (0.0785835, 0.30501288), (0.08507946, 0.2904219), (0.08206037, 0.24927273), (0.053039692, 0.18303585), (0.06423556, 0.24646541), (0.08206037, 0.24927273), (0.091927186, 0.2199224), (0.05505852, 0.13799687), (0.053039692, 0.18303585), (0.091927186, 0.2199224), (0.12428518, 0.20874262), (0.090887204, 0.1275527), (0.05505852, 0.13799687), (0.12428518, 0.20874262), (0.18161073, 0.20779301), (0.16242693, 0.13236186), (0.090887204, 0.1275527), (0.18161073, 0.20779301), (0.25307655, 0.2078593), (0.2443132, 0.13293035), (0.16242693, 0.13236186), (0.25307655, 0.2078593), (0.3300337, 0.20956439), (0.32606506, 0.13342318), (0.2443132, 0.13293035), (0.3300337, 0.20956439), (0.41167188, 0.21338002), (0.4095642, 0.13687101), (0.32606506, 0.13342318), (0.41167188, 0.21338002), (0.49754202, 0.21501973), (0.5004531, 0.1359111), (0.4095642, 0.13687101), (0.49754202, 0.21501973), (0.58239007, 0.21547061), (0.5850501, 0.13421124), (0.5004531, 0.1359111), (0.58239007, 0.21547061), (0.6657478, 0.21947506), (0.66932684, 0.14025825), (0.5850501, 0.13421124), (0.6657478, 0.21947506), (0.7479896, 0.22354329), (0.7568895, 0.14747661), (0.66932684, 0.14025825), (0.7479896, 0.22354329), (0.8231717, 0.22192736), (0.8418157, 0.14518286), (0.7568895, 0.14747661), (0.8231717, 0.22192736), (0.88068247, 0.21723165), (0.91350704, 0.13438416), (0.8418157, 0.14518286), (0.88068247, 0.21723165), (0.91167, 0.22425015), (0.9461602, 0.1416595), (0.91350704, 0.13438416), (0.91167, 0.22425015), (0.92069495, 0.25164124), (0.9482625, 0.18604259), (0.9461602, 0.1416595), (0.92069495, 0.25164124), (0.91732913, 0.29179195), (0.9375834, 0.24725325), (0.9482625, 0.18604259), (0.91732913, 0.29179195), (0.9082936, 0.33327463), (0.92334735, 0.30510023), (0.9375834, 0.24725325), (0.9082936, 0.33327463), (0.89689165, 0.3693319), (0.90849394, 0.3520283), (0.92334735, 0.30510023), (0.89689165, 0.3693319), (0.8845508, 0.39806038), (0.8938148, 0.38744685), (0.90849394, 0.3520283), (0.8845508, 0.39806038), (0.87188333, 0.42006162), (0.8795018, 0.41345197), (0.8938148, 0.38744685), (0.12255007, 0.41007897), (0.108154476, 0.3852078), (0.102956, 0.37926853), (0.11833881, 0.4065185), (0.108154476, 0.3852078), (0.09343662, 0.3510653), (0.086780116, 0.34080124), (0.102956, 0.37926853), (0.09343662, 0.3510653), (0.0785835, 0.30501288), (0.06955979, 0.28670466), (0.086780116, 0.34080124), (0.0785835, 0.30501288), (0.06423556, 0.24646541), (0.050874438, 0.21320166), (0.06955979, 0.28670466), (0.06423556, 0.24646541), (0.053039692, 0.18303585), (0.030865397, 0.12609695), (0.050874438, 0.21320166), (0.053039692, 0.18303585), (0.05505852, 0.13799687), (0.019119745, 0.06215585), (0.030865397, 0.12609695), (0.05505852, 0.13799687), (0.090887204, 0.1275527), (0.06753936, 0.045739654), (0.019119745, 0.06215585), (0.090887204, 0.1275527), (0.16242693, 0.13236186), (0.15151563, 0.04630157), (0.06753936, 0.045739654), (0.16242693, 0.13236186), (0.2443132, 0.13293035), (0.239299, 0.048891272), (0.15151563, 0.04630157), (0.2443132, 0.13293035), (0.32606506, 0.13342318), (0.32579014, 0.04853702), (0.239299, 0.048891272), (0.32606506, 0.13342318), (0.4095642, 0.13687101), (0.4097668, 0.049638677), (0.32579014, 0.04853702), (0.4095642, 0.13687101), (0.5004531, 0.1359111), (0.50354636, 0.046688624), (0.4097668, 0.049638677), (0.5004531, 0.1359111), (0.5850501, 0.13421124), (0.5861563, 0.047448985), (0.50354636, 0.046688624), (0.5850501, 0.13421124), (0.66932684, 0.14025825), (0.6705173, 0.051568896), (0.5861563, 0.047448985), (0.66932684, 0.14025825), (0.7568895, 0.14747661), (0.75948405, 0.05898819), (0.6705173, 0.051568896), (0.7568895, 0.14747661), (0.8418157, 0.14518286), (0.8451956, 0.055759646), (0.75948405, 0.05898819), (0.8418157, 0.14518286), (0.91350704, 0.13438416), (0.9345597, 0.04901887), (0.8451956, 0.055759646), (0.91350704, 0.13438416), (0.9461602, 0.1416595), (0.98111993, 0.05673781), (0.9345597, 0.04901887), (0.9461602, 0.1416595), (0.9482625, 0.18604259), (0.9688281, 0.12932862), (0.98111993, 0.05673781), (0.9482625, 0.18604259), (0.9375834, 0.24725325), (0.95033777, 0.21492618), (0.9688281, 0.12932862), (0.9375834, 0.24725325), (0.92334735, 0.30510023), (0.9321657, 0.28628704), (0.95033777, 0.21492618), (0.92334735, 0.30510023), (0.90849394, 0.3520283), (0.915025, 0.34106976), (0.9321657, 0.28628704), (0.90849394, 0.3520283), (0.8938148, 0.38744685), (0.89892083, 0.3809864), (0.915025, 0.34106976), (0.8938148, 0.38744685), (0.8795018, 0.41345197), (0.88364553, 0.40954393), (0.89892083, 0.3809864), (0.11833881, 0.4065185), (0.102956, 0.37926853), (0.10247376, 0.3786963), (0.11795062, 0.40617996), (0.102956, 0.37926853), (0.086780116, 0.34080124), (0.086156376, 0.33979148), (0.10247376, 0.3786963), (0.086780116, 0.34080124), (0.06955979, 0.28670466), (0.06869708, 0.28484455), (0.086156376, 0.33979148), (0.06955979, 0.28670466), (0.050874438, 0.21320166), (0.049533654, 0.20963389), (0.06869708, 0.28484455), (0.050874438, 0.21320166), (0.030865397, 0.12609695), (0.028333688, 0.11958926), (0.049533654, 0.20963389), (0.030865397, 0.12609695), (0.019119745, 0.06215585), (0.012920969, 0.05184795), (0.028333688, 0.11958926), (0.019119745, 0.06215585), (0.06753936, 0.045739654), (0.0661119, 0.029464781), (0.012920969, 0.05184795), (0.06753936, 0.045739654), (0.15151563, 0.04630157), (0.1511854, 0.027453383), (0.0661119, 0.029464781), (0.15151563, 0.04630157), (0.239299, 0.048891272), (0.23835237, 0.030046446), (0.1511854, 0.027453383), (0.239299, 0.048891272), (0.32579014, 0.04853702), (0.32549816, 0.030999476), (0.23835237, 0.030046446), (0.32579014, 0.04853702), (0.4097668, 0.049638677), (0.4113055, 0.03088092), (0.32549816, 0.030999476), (0.4097668, 0.049638677), (0.50354636, 0.046688624), (0.5023601, 0.028618297), (0.4113055, 0.03088092), (0.50354636, 0.046688624), (0.5861563, 0.047448985), (0.58640754, 0.029645177), (0.5023601, 0.028618297), (0.5861563, 0.047448985), (0.6705173, 0.051568896), (0.67075056, 0.033442006), (0.58640754, 0.029645177), (0.6705173, 0.051568896), (0.75948405, 0.05898819), (0.7587094, 0.039329655), (0.67075056, 0.033442006), (0.75948405, 0.05898819), (0.8451956, 0.055759646), (0.84580845, 0.033975884), (0.7587094, 0.039329655), (0.8451956, 0.055759646), (0.9345597, 0.04901887), (0.934802, 0.03168096), (0.84580845, 0.033975884), (0.9345597, 0.04901887), (0.98111993, 0.05673781), (0.9883326, 0.043248218), (0.934802, 0.03168096), (0.98111993, 0.05673781), (0.9688281, 0.12932862), (0.9712408, 0.12230276), (0.9883326, 0.043248218), (0.9688281, 0.12932862), (0.95033777, 0.21492618), (0.95160383, 0.21151705), (0.9712408, 0.12230276), (0.95033777, 0.21492618), (0.9321657, 0.28628704), (0.9330035, 0.2843982), (0.95160383, 0.21151705), (0.9321657, 0.28628704), (0.915025, 0.34106976), (0.91563725, 0.33999616), (0.9330035, 0.2843982), (0.915025, 0.34106976), (0.89892083, 0.3809864), (0.89939636, 0.3803638), (0.91563725, 0.33999616), (0.89892083, 0.3809864), (0.88364553, 0.40954393), (0.8840266, 0.40917227), (0.89939636, 0.3803638), (0.11795062, 0.40617996), (0.10247376, 0.3786963), (0.106755905, 0.38365182), (0.121413134, 0.40913677), (0.10247376, 0.3786963), (0.086156376, 0.33979148), (0.09165687, 0.34841195), (0.106755905, 0.38365182), (0.086156376, 0.33979148), (0.06869708, 0.28484455), (0.076201186, 0.3003755), (0.09165687, 0.34841195), (0.06869708, 0.28484455), (0.049533654, 0.20963389), (0.06081047, 0.2383339), (0.076201186, 0.3003755), (0.049533654, 0.20963389), (0.028333688, 0.11958926), (0.04775307, 0.16973364), (0.06081047, 0.2383339), (0.028333688, 0.11958926), (0.012920969, 0.05184795), (0.04757852, 0.12087098), (0.04775307, 0.16973364), (0.012920969, 0.05184795), (0.0661119, 0.029464781), (0.08473821, 0.11042619), (0.04757852, 0.12087098), (0.0661119, 0.029464781), (0.1511854, 0.027453383), (0.15953533, 0.11619047), (0.08473821, 0.11042619), (0.1511854, 0.027453383), (0.23835237, 0.030046446), (0.2432612, 0.11702228), (0.15953533, 0.11619047), (0.23835237, 0.030046446), (0.32549816, 0.030999476), (0.32590607, 0.117201135), (0.2432612, 0.11702228), (0.32549816, 0.030999476), (0.4113055, 0.03088092), (0.40926933, 0.12038572), (0.32590607, 0.117201135), (0.4113055, 0.03088092), (0.5023601, 0.028618297), (0.50133765, 0.11873583), (0.40926933, 0.12038572), (0.5023601, 0.028618297), (0.58640754, 0.029645177), (0.58532447, 0.11685814), (0.50133765, 0.11873583), (0.58640754, 0.029645177), (0.67075056, 0.033442006), (0.6696268, 0.12289219), (0.58532447, 0.11685814), (0.67075056, 0.033442006), (0.7587094, 0.039329655), (0.75793374, 0.1307543), (0.6696268, 0.12289219), (0.7587094, 0.039329655), (0.84580845, 0.033975884), (0.84391797, 0.12860946), (0.75793374, 0.1307543), (0.84580845, 0.033975884), (0.934802, 0.03168096), (0.91938967, 0.11703061), (0.84391797, 0.12860946), (0.934802, 0.03168096), (0.9883326, 0.043248218), (0.952899, 0.12416357), (0.91938967, 0.11703061), (0.9883326, 0.043248218), (0.9712408, 0.12230276), (0.95315826, 0.1731327), (0.952899, 0.12416357), (0.9712408, 0.12230276), (0.95160383, 0.21151705), (0.94087183, 0.23924626), (0.95315826, 0.1731327), (0.95160383, 0.21151705), (0.9330035, 0.2843982), (0.92567664, 0.30029973), (0.94087183, 0.23924626), (0.9330035, 0.2843982), (0.91563725, 0.33999616), (0.91024053, 0.349188), (0.92567664, 0.30029973), (0.91563725, 0.33999616), (0.89939636, 0.3803638), (0.8951916, 0.38575464), (0.91024053, 0.349188), (0.89939636, 0.3803638), (0.8840266, 0.40917227), (0.8806212, 0.41241854), (0.8951916, 0.38575464), (0.121413134, 0.40913677), (0.106755905, 0.38365182), (0.11538715, 0.3928018), (0.12847295, 0.41475883), (0.106755905, 0.38365182), (0.09165687, 0.34841195), (0.1025238, 0.36368182), (0.11538715, 0.3928018), (0.09165687, 0.34841195), (0.076201186, 0.3003755), (0.09046021, 0.32622284), (0.1025238, 0.36368182), (0.076201186, 0.3003755), (0.06081047, 0.2383339), (0.080522485, 0.28158268), (0.09046021, 0.32622284), (0.06081047, 0.2383339), (0.04775307, 0.16973364), (0.0760537, 0.23661079), (0.080522485, 0.28158268), (0.04775307, 0.16973364), (0.04757852, 0.12087098), (0.08469894, 0.20467222), (0.0760537, 0.23661079), (0.04757852, 0.12087098), (0.08473821, 0.11042619), (0.11752498, 0.19352524), (0.08469894, 0.20467222), (0.08473821, 0.11042619), (0.15953533, 0.11619047), (0.17723916, 0.1934821), (0.11752498, 0.19352524), (0.15953533, 0.11619047), (0.2432612, 0.11702228), (0.25079298, 0.1935938), (0.17723916, 0.1934821), (0.2432612, 0.11702228), (0.32590607, 0.117201135), (0.3288142, 0.19512092), (0.25079298, 0.1935938), (0.32590607, 0.117201135), (0.40926933, 0.12038572), (0.41112146, 0.1989645), (0.3288142, 0.19512092), (0.40926933, 0.12038572), (0.50133765, 0.11873583), (0.4979391, 0.200239), (0.41112146, 0.1989645), (0.50133765, 0.11873583), (0.58532447, 0.11685814), (0.58308977, 0.2002948), (0.4979391, 0.200239), (0.58532447, 0.11685814), (0.6696268, 0.12289219), (0.66682106, 0.20476535), (0.58308977, 0.2002948), (0.6696268, 0.12289219), (0.75793374, 0.1307543), (0.750317, 0.2094006), (0.66682106, 0.20476535), (0.75793374, 0.1307543), (0.84391797, 0.12860946), (0.8276623, 0.20751053), (0.750317, 0.2094006), (0.84391797, 0.12860946), (0.91938967, 0.11703061), (0.8874354, 0.20159477), (0.8276623, 0.20751053), (0.91938967, 0.11703061), (0.952899, 0.12416357), (0.91864115, 0.20869826), (0.8874354, 0.20159477), (0.952899, 0.12416357), (0.95315826, 0.1731327), (0.92649746, 0.2388234), (0.91864115, 0.20869826), (0.95315826, 0.1731327), (0.94087183, 0.23924626), (0.9217842, 0.2826759), (0.92649746, 0.2388234), (0.94087183, 0.23924626), (0.92567664, 0.30029973), (0.91169846, 0.32731318), (0.9217842, 0.2826759), (0.92567664, 0.30029973), (0.91024053, 0.349188), (0.89956194, 0.36557934), (0.91169846, 0.32731318), (0.91024053, 0.349188), (0.8951916, 0.38575464), (0.88670313, 0.39571476), (0.89956194, 0.36557934), (0.8951916, 0.38575464), (0.8806212, 0.41241854), (0.8736679, 0.4185792), (0.88670313, 0.39571476), (0.12847295, 0.41475883), (0.11538715, 0.3928018), (0.12763183, 0.40411493), (0.13865395, 0.42200997), (0.11538715, 0.3928018), (0.1025238, 0.36368182), (0.11753191, 0.38152555), (0.12763183, 0.40411493), (0.1025238, 0.36368182), (0.09046021, 0.32622284), (0.109264985, 0.35419464), (0.11753191, 0.38152555), (0.09046021, 0.32622284), (0.080522485, 0.28158268), (0.104511015, 0.3238256), (0.109264985, 0.35419464), (0.080522485, 0.28158268), (0.0760537, 0.23661079), (0.10637648, 0.2949219), (0.104511015, 0.3238256), (0.0760537, 0.23661079), (0.08469894, 0.20467222), (0.119923666, 0.27372664), (0.10637648, 0.2949219), (0.08469894, 0.20467222), (0.11752498, 0.19352524), (0.15082496, 0.26328683), (0.119923666, 0.27372664), (0.11752498, 0.19352524), (0.17723916, 0.1934821), (0.20072183, 0.26024228), (0.15082496, 0.26328683), (0.17723916, 0.1934821), (0.25079298, 0.1935938), (0.26459143, 0.260117), (0.20072183, 0.26024228), (0.25079298, 0.1935938), (0.3288142, 0.19512092), (0.3367377, 0.26210064), (0.26459143, 0.260117), (0.3288142, 0.19512092), (0.41112146, 0.1989645), (0.41473117, 0.26551858), (0.3367377, 0.26210064), (0.41112146, 0.1989645), (0.4979391, 0.200239), (0.49660426, 0.26792246), (0.41473117, 0.26551858), (0.4979391, 0.200239), (0.58308977, 0.2002948), (0.5789204, 0.26940846), (0.49660426, 0.26792246), (0.58308977, 0.2002948), (0.66682106, 0.20476535), (0.65952456, 0.2720397), (0.5789204, 0.26940846), (0.66682106, 0.20476535), (0.750317, 0.2094006), (0.7361633, 0.27444172), (0.65952456, 0.2720397), (0.750317, 0.2094006), (0.8276623, 0.20751053), (0.8032832, 0.2740495), (0.7361633, 0.27444172), (0.8276623, 0.20751053), (0.8874354, 0.20159477), (0.8538434, 0.2732075), (0.8032832, 0.2740495), (0.8874354, 0.20159477), (0.91864115, 0.20869826), (0.8840696, 0.27986613), (0.8538434, 0.2732075), (0.91864115, 0.20869826), (0.92649746, 0.2388234), (0.896859, 0.29882815), (0.8840696, 0.27986613), (0.92649746, 0.2388234), (0.9217842, 0.2826759), (0.8982292, 0.32676902), (0.896859, 0.29882815), (0.9217842, 0.2826759), (0.91169846, 0.32731318), (0.8931895, 0.35706615), (0.8982292, 0.32676902), (0.91169846, 0.32731318), (0.89956194, 0.36557934), (0.88478386, 0.3848296), (0.8931895, 0.35706615), (0.89956194, 0.36557934), (0.88670313, 0.39571476), (0.8746347, 0.4080228), (0.88478386, 0.3848296), (0.88670313, 0.39571476), (0.8736679, 0.4185792), (0.86361384, 0.4265014), (0.8746347, 0.4080228), (0.13865395, 0.42200997), (0.12763183, 0.40411493), (0.14262852, 0.41579476), (0.15135385, 0.429862), (0.12763183, 0.40411493), (0.11753191, 0.38152555), (0.13541271, 0.39887822), (0.14262852, 0.41579476), (0.11753191, 0.38152555), (0.109264985, 0.35419464), (0.13074699, 0.37949437), (0.13541271, 0.39887822), (0.109264985, 0.35419464), (0.104511015, 0.3238256), (0.13028388, 0.35905045), (0.13074699, 0.37949437), (0.104511015, 0.3238256), (0.10637648, 0.2949219), (0.13653883, 0.34015602), (0.13028388, 0.35905045), (0.10637648, 0.2949219), (0.119923666, 0.27372664), (0.15284927, 0.32575852), (0.13653883, 0.34015602), (0.119923666, 0.27372664), (0.15082496, 0.26328683), (0.18240722, 0.31727895), (0.15284927, 0.32575852), (0.15082496, 0.26328683), (0.20072183, 0.26024228), (0.22631593, 0.31371367), (0.18240722, 0.31727895), (0.20072183, 0.26024228), (0.26459143, 0.260117), (0.2826493, 0.3132597), (0.22631593, 0.31371367), (0.26459143, 0.260117), (0.3367377, 0.26210064), (0.34821698, 0.3148617), (0.2826493, 0.3132597), (0.3367377, 0.26210064), (0.41473117, 0.26551858), (0.42031142, 0.31751692), (0.34821698, 0.3148617), (0.41473117, 0.26551858), (0.49660426, 0.26792246), (0.49636188, 0.31992915), (0.42031142, 0.31751692), (0.49660426, 0.26792246), (0.5789204, 0.26940846), (0.5733689, 0.32181963), (0.49636188, 0.31992915), (0.5789204, 0.26940846), (0.65952456, 0.2720397), (0.6482604, 0.3237263), (0.5733689, 0.32181963), (0.65952456, 0.2720397), (0.7361633, 0.27444172), (0.7174932, 0.3253392), (0.6482604, 0.3237263), (0.7361633, 0.27444172), (0.8032832, 0.2740495), (0.77657485, 0.32617798), (0.7174932, 0.3253392), (0.8032832, 0.2740495), (0.8538434, 0.2732075), (0.82153094, 0.32783195), (0.77657485, 0.32617798), (0.8538434, 0.2732075), (0.8840696, 0.27986613), (0.8510027, 0.33379796), (0.82153094, 0.32783195), (0.8840696, 0.27986613), (0.896859, 0.29882815), (0.86686033, 0.34626135), (0.8510027, 0.33379796), (0.896859, 0.29882815), (0.8982292, 0.32676902), (0.8726985, 0.3640748), (0.86686033, 0.34626135), (0.8982292, 0.32676902), (0.8931895, 0.35706615), (0.87194586, 0.38411933), (0.8726985, 0.3640748), (0.8931895, 0.35706615), (0.88478386, 0.3848296), (0.86710817, 0.40353054), (0.87194586, 0.38411933), (0.88478386, 0.3848296), (0.8746347, 0.4080228), (0.85979944, 0.42067593), (0.86710817, 0.40353054), (0.8746347, 0.4080228), (0.86361384, 0.4265014), (0.85102785, 0.43503103), (0.85979944, 0.42067593), (0.15135385, 0.429862), (0.14262852, 0.41579476), (0.15954062, 0.42670846), (0.16594054, 0.437559), (0.14262852, 0.41579476), (0.13541271, 0.39887822), (0.15507044, 0.41420963), (0.15954062, 0.42670846), (0.13541271, 0.39887822), (0.13074699, 0.37949437), (0.15356086, 0.40050885), (0.15507044, 0.41420963), (0.13074699, 0.37949437), (0.13028388, 0.35905045), (0.15646751, 0.38658547), (0.15356086, 0.40050885), (0.13028388, 0.35905045), (0.13653883, 0.34015602), (0.1657333, 0.37390622), (0.15646751, 0.38658547), (0.13653883, 0.34015602), (0.15284927, 0.32575852), (0.18360968, 0.3639438), (0.1657333, 0.37390622), (0.15284927, 0.32575852), (0.18240722, 0.31727895), (0.21206766, 0.3574679), (0.18360968, 0.3639438), (0.18240722, 0.31727895), (0.22631593, 0.31371367), (0.25191826, 0.35424754), (0.21206766, 0.3574679), (0.22631593, 0.31371367), (0.2826493, 0.3132597), (0.30238, 0.35352755), (0.25191826, 0.35424754), (0.2826493, 0.3132597), (0.34821698, 0.3148617), (0.36156264, 0.35452864), (0.30238, 0.35352755), (0.34821698, 0.3148617), (0.42031142, 0.31751692), (0.4271584, 0.3564427), (0.36156264, 0.35452864), (0.42031142, 0.31751692), (0.49636188, 0.31992915), (0.49659812, 0.3584924), (0.4271584, 0.3564427), (0.49636188, 0.31992915), (0.5733689, 0.32181963), (0.56694925, 0.36034226), (0.49659812, 0.3584924), (0.5733689, 0.32181963), (0.6482604, 0.3237263), (0.63495386, 0.3620423), (0.56694925, 0.36034226), (0.6482604, 0.3237263), (0.7174932, 0.3253392), (0.6970898, 0.36359146), (0.63495386, 0.3620423), (0.7174932, 0.3253392), (0.77657485, 0.32617798), (0.74991554, 0.36514977), (0.6970898, 0.36359146), (0.77657485, 0.32617798), (0.82153094, 0.32783195), (0.79100484, 0.36768547), (0.74991554, 0.36514977), (0.82153094, 0.32783195), (0.8510027, 0.33379796), (0.81979316, 0.37276712), (0.79100484, 0.36768547), (0.8510027, 0.33379796), (0.86686033, 0.34626135), (0.83755076, 0.38137156), (0.81979316, 0.37276712), (0.86686033, 0.34626135), (0.8726985, 0.3640748), (0.8465679, 0.39307857), (0.83755076, 0.38137156), (0.8726985, 0.3640748), (0.87194586, 0.38411933), (0.8492475, 0.40645432), (0.8465679, 0.39307857), (0.87194586, 0.38411933), (0.86710817, 0.40353054), (0.8475676, 0.4199276), (0.8492475, 0.40645432), (0.86710817, 0.40353054), (0.85979944, 0.42067593), (0.84298694, 0.432395), (0.8475676, 0.4199276), (0.85979944, 0.42067593), (0.85102785, 0.43503103), (0.8365135, 0.44331107), (0.84298694, 0.432395), (0.16594054, 0.437559), (0.15954062, 0.42670846), (0.177625, 0.43633902), (0.18181099, 0.44465685), (0.15954062, 0.42670846), (0.15507044, 0.41420963), (0.1756324, 0.4271004), (0.177625, 0.43633902), (0.15507044, 0.41420963), (0.15356086, 0.40050885), (0.17677149, 0.41731012), (0.1756324, 0.4271004), (0.15356086, 0.40050885), (0.15646751, 0.38658547), (0.18226537, 0.4076191), (0.17677149, 0.41731012), (0.15646751, 0.38658547), (0.1657333, 0.37390622), (0.19359103, 0.398862), (0.18226537, 0.4076191), (0.1657333, 0.37390622), (0.18360968, 0.3639438), (0.21231528, 0.39182663), (0.19359103, 0.398862), (0.18360968, 0.3639438), (0.21206766, 0.3574679), (0.23973924, 0.38696954), (0.21231528, 0.39182663), (0.21206766, 0.3574679), (0.25191826, 0.35424754), (0.27645397, 0.38428754), (0.23973924, 0.38696954), (0.25191826, 0.35424754), (0.30238, 0.35352755), (0.32208198, 0.3834489), (0.27645397, 0.38428754), (0.30238, 0.35352755), (0.36156264, 0.35452864), (0.3753717, 0.38396442), (0.32208198, 0.3834489), (0.36156264, 0.35452864), (0.4271584, 0.3564427), (0.43445268, 0.38529366), (0.3753717, 0.38396442), (0.4271584, 0.3564427), (0.49659812, 0.3584924), (0.49698922, 0.3869356), (0.43445268, 0.38529366), (0.49659812, 0.3584924), (0.56694925, 0.36034226), (0.56024444, 0.38860315), (0.49698922, 0.3869356), (0.56694925, 0.36034226), (0.63495386, 0.3620423), (0.6212077, 0.39022544), (0.56024444, 0.38860315), (0.63495386, 0.3620423), (0.6970898, 0.36359146), (0.67682165, 0.39185578), (0.6212077, 0.39022544), (0.6970898, 0.36359146), (0.74991554, 0.36514977), (0.72445774, 0.39373446), (0.67682165, 0.39185578), (0.74991554, 0.36514977), (0.79100484, 0.36768547), (0.7624598, 0.39642063), (0.72445774, 0.39373446), (0.79100484, 0.36768547), (0.81979316, 0.37276712), (0.79047906, 0.4006461), (0.7624598, 0.39642063), (0.81979316, 0.37276712), (0.83755076, 0.38137156), (0.8093549, 0.40685663), (0.79047906, 0.4006461), (0.83755076, 0.38137156), (0.8465679, 0.39307857), (0.8206258, 0.41488895), (0.8093549, 0.40685663), (0.8465679, 0.39307857), (0.8492475, 0.40645432), (0.82599497, 0.42405778), (0.8206258, 0.41488895), (0.8492475, 0.40645432), (0.8475676, 0.4199276), (0.8270126, 0.4335275), (0.82599497, 0.42405778), (0.8475676, 0.4199276), (0.84298694, 0.432395), (0.82491773, 0.44259995), (0.8270126, 0.4335275), (0.84298694, 0.432395), (0.8365135, 0.44331107), (0.8206481, 0.45084438), (0.82491773, 0.44259995), (0.18181099, 0.44465685), (0.177625, 0.43633902), (0.19626385, 0.44457778), (0.19843103, 0.4509696), (0.177625, 0.43633902), (0.1756324, 0.4271004), (0.19642216, 0.4376857), (0.19626385, 0.44457778), (0.1756324, 0.4271004), (0.17677149, 0.41731012), (0.19972536, 0.43057203), (0.19642216, 0.4376857), (0.17677149, 0.41731012), (0.18226537, 0.4076191), (0.20716944, 0.42365554), (0.19972536, 0.43057203), (0.18226537, 0.4076191), (0.19359103, 0.398862), (0.21987762, 0.4174339), (0.20716944, 0.42365554), (0.19359103, 0.398862), (0.21231528, 0.39182663), (0.2389644, 0.41235712), (0.21987762, 0.4174339), (0.21231528, 0.39182663), (0.23973924, 0.38696954), (0.26531717, 0.40870994), (0.2389644, 0.41235712), (0.23973924, 0.38696954), (0.27645397, 0.38428754), (0.29933825, 0.4065411), (0.26531717, 0.40870994), (0.27645397, 0.38428754), (0.32208198, 0.3834489), (0.34077704, 0.40570304), (0.29933825, 0.4065411), (0.32208198, 0.3834489), (0.3753717, 0.38396442), (0.38870105, 0.40591228), (0.34077704, 0.40570304), (0.3753717, 0.38396442), (0.43445268, 0.38529366), (0.44157892, 0.40682486), (0.38870105, 0.40591228), (0.43445268, 0.38529366), (0.49698922, 0.3869356), (0.49738708, 0.4081194), (0.44157892, 0.40682486), (0.49698922, 0.3869356), (0.56024444, 0.38860315), (0.5537301, 0.409577), (0.49738708, 0.4081194), (0.56024444, 0.38860315), (0.6212077, 0.39022544), (0.60801333, 0.41111454), (0.5537301, 0.409577), (0.6212077, 0.39022544), (0.67682165, 0.39185578), (0.6577311, 0.41276842), (0.60801333, 0.41111454), (0.67682165, 0.39185578), (0.72445774, 0.39373446), (0.7008404, 0.4147113), (0.6577311, 0.41276842), (0.72445774, 0.39373446), (0.7624598, 0.39642063), (0.73608935, 0.41725525), (0.7008404, 0.4147113), (0.7624598, 0.39642063), (0.79047906, 0.4006461), (0.7631676, 0.42075518), (0.73608935, 0.41725525), (0.79047906, 0.4006461), (0.8093549, 0.40685663), (0.7826014, 0.42542255), (0.7631676, 0.42075518), (0.8093549, 0.40685663), (0.8206258, 0.41488895), (0.7954171, 0.43117645), (0.7826014, 0.42542255), (0.8206258, 0.41488895), (0.82599497, 0.42405778), (0.80285615, 0.43768534), (0.7954171, 0.43117645), (0.82599497, 0.42405778), (0.8270126, 0.4335275), (0.80610555, 0.444493), (0.80285615, 0.43768534), (0.8270126, 0.4335275), (0.82491773, 0.44259995), (0.80619735, 0.4511758), (0.80610555, 0.444493), (0.82491773, 0.44259995), (0.8206481, 0.45084438), (0.80396354, 0.4574277), (0.80619735, 0.4511758), (0.19843103, 0.4509696), (0.19626385, 0.44457778), (0.21496122, 0.4515209), (0.21534613, 0.45646626), (0.19626385, 0.44457778), (0.19642216, 0.4376857), (0.21693264, 0.44630983), (0.21496122, 0.4515209), (0.19642216, 0.4376857), (0.19972536, 0.43057203), (0.22195894, 0.4410398), (0.21693264, 0.44630983), (0.19972536, 0.43057203), (0.20716944, 0.42365554), (0.23083745, 0.43598452), (0.22195894, 0.4410398), (0.20716944, 0.42365554), (0.21987762, 0.4174339), (0.24441878, 0.43144888), (0.23083745, 0.43598452), (0.21987762, 0.4174339), (0.2389644, 0.41235712), (0.26350754, 0.42770734), (0.24441878, 0.43144888), (0.2389644, 0.41235712), (0.26531717, 0.40870994), (0.28870708, 0.4249436), (0.26350754, 0.42770734), (0.26531717, 0.40870994), (0.29933825, 0.4065411), (0.32026622, 0.4232111), (0.28870708, 0.4249436), (0.29933825, 0.4065411), (0.34077704, 0.40570304), (0.35795644, 0.42244533), (0.32026622, 0.4232111), (0.34077704, 0.40570304), (0.38870105, 0.40591228), (0.40101907, 0.4224869), (0.35795644, 0.42244533), (0.38870105, 0.40591228), (0.44157892, 0.40682486), (0.44818014, 0.4231202), (0.40101907, 0.4224869), (0.44157892, 0.40682486), (0.49738708, 0.4081194), (0.49774447, 0.42414534), (0.44818014, 0.4231202), (0.49738708, 0.4081194), (0.5537301, 0.409577), (0.5476944, 0.42540556), (0.49774447, 0.42414534), (0.5537301, 0.409577), (0.60801333, 0.41111454), (0.5958913, 0.4268269), (0.5476944, 0.42540556), (0.60801333, 0.41111454), (0.6577311, 0.41276842), (0.6403205, 0.4284201), (0.5958913, 0.4268269), (0.6577311, 0.41276842), (0.7008404, 0.4147113), (0.6793683, 0.43028492), (0.6403205, 0.4284201), (0.7008404, 0.4147113), (0.73608935, 0.41725525), (0.71203136, 0.4325861), (0.6793683, 0.43028492), (0.73608935, 0.41725525), (0.7631676, 0.42075518), (0.7379936, 0.43550083), (0.71203136, 0.4325861), (0.7631676, 0.42075518), (0.7826014, 0.42542255), (0.7575395, 0.4391248), (0.7379936, 0.43550083), (0.7826014, 0.42542255), (0.7954171, 0.43117645), (0.77135915, 0.4434191), (0.7575395, 0.4391248), (0.7954171, 0.43117645), (0.80285615, 0.43768534), (0.78033465, 0.44820777), (0.77135915, 0.4434191), (0.80285615, 0.43768534), (0.80610555, 0.444493), (0.78538173, 0.45323634), (0.78033465, 0.44820777), (0.80610555, 0.444493), (0.80619735, 0.4511758), (0.7873346, 0.45825124), (0.78538173, 0.45323634), (0.80619735, 0.4511758), (0.80396354, 0.4574277), (0.7869127, 0.46304452), (0.7873346, 0.45825124), (0.21534613, 0.45646626), (0.21496122, 0.4515209), (0.2333345, 0.45734152), (0.23219068, 0.46120557), (0.21496122, 0.4515209), (0.21693264, 0.44630983), (0.2367968, 0.45334575), (0.2333345, 0.45734152), (0.21693264, 0.44630983), (0.22195894, 0.4410398), (0.24315426, 0.4493671), (0.2367968, 0.45334575), (0.22195894, 0.4410398), (0.23083745, 0.43598452), (0.25304297, 0.4455893), (0.24315426, 0.4493671), (0.23083745, 0.43598452), (0.24441878, 0.43144888), (0.26710546, 0.44220796), (0.25304297, 0.4455893), (0.24441878, 0.43144888), (0.26350754, 0.42770734), (0.2859144, 0.43939537), (0.26710546, 0.44220796), (0.26350754, 0.42770734), (0.28870708, 0.4249436), (0.30987847, 0.43727896), (0.2859144, 0.43939537), (0.28870708, 0.4249436), (0.32026622, 0.4232111), (0.33912343, 0.43590033), (0.30987847, 0.43727896), (0.32026622, 0.4232111), (0.35795644, 0.42244533), (0.3734106, 0.43523803), (0.33912343, 0.43590033), (0.35795644, 0.42244533), (0.40101907, 0.4224869), (0.41209027, 0.43519822), (0.3734106, 0.43523803), (0.40101907, 0.4224869), (0.44818014, 0.4231202), (0.4541058, 0.4356575), (0.41209027, 0.43519822), (0.44818014, 0.4231202), (0.49774447, 0.42414534), (0.49804813, 0.43648157), (0.4541058, 0.4356575), (0.49774447, 0.42414534), (0.5476944, 0.42540556), (0.54226846, 0.43756464), (0.49804813, 0.43648157), (0.5476944, 0.42540556), (0.5958913, 0.4268269), (0.58504146, 0.43884736), (0.54226846, 0.43756464), (0.5958913, 0.4268269), (0.6403205, 0.4284201), (0.6247616, 0.44032416), (0.58504146, 0.43884736), (0.6403205, 0.4284201), (0.6793683, 0.43028492), (0.66013545, 0.44204032), (0.6247616, 0.44032416), (0.6793683, 0.43028492), (0.71203136, 0.4325861), (0.6903342, 0.4440773), (0.66013545, 0.44204032), (0.71203136, 0.4325861), (0.7379936, 0.43550083), (0.71503127, 0.4465233), (0.6903342, 0.4440773), (0.7379936, 0.43550083), (0.7575395, 0.4391248), (0.73434794, 0.44941726), (0.71503127, 0.4465233), (0.7575395, 0.4391248), (0.77135915, 0.4434191), (0.74872684, 0.45273617), (0.73434794, 0.44941726), (0.77135915, 0.4434191), (0.78033465, 0.44820777), (0.75879234, 0.4563753), (0.74872684, 0.45273617), (0.78033465, 0.44820777), (0.78538173, 0.45323634), (0.76524127, 0.46019694), (0.75879234, 0.4563753), (0.78538173, 0.45323634), (0.7873346, 0.45825124), (0.7687349, 0.464041), (0.76524127, 0.46019694), (0.7873346, 0.45825124), (0.7869127, 0.46304452), (0.76987827, 0.4677719), (0.7687349, 0.464041), (0.23219068, 0.46120557), (0.2333345, 0.45734152), (0.25110206, 0.46222198), (0.24867927, 0.4652764), (0.2333345, 0.45734152), (0.2367968, 0.45334575), (0.2557531, 0.45911407), (0.25110206, 0.46222198), (0.2367968, 0.45334575), (0.24315426, 0.4493671), (0.2631063, 0.4560599), (0.2557531, 0.45911407), (0.24315426, 0.4493671), (0.25304297, 0.4455893), (0.27365857, 0.45318103), (0.2631063, 0.4560599), (0.25304297, 0.4455893), (0.26710546, 0.44220796), (0.28789103, 0.45061168), (0.27365857, 0.45318103), (0.26710546, 0.44220796), (0.2859144, 0.43939537), (0.30621073, 0.4484638), (0.28789103, 0.45061168), (0.2859144, 0.43939537), (0.30987847, 0.43727896), (0.32887924, 0.44682515), (0.30621073, 0.4484638), (0.30987847, 0.43727896), (0.33912343, 0.43590033), (0.3559303, 0.4457316), (0.32887924, 0.44682515), (0.33912343, 0.43590033), (0.3734106, 0.43523803), (0.3871185, 0.44517776), (0.3559303, 0.4457316), (0.3734106, 0.43523803), (0.41209027, 0.43519822), (0.4218768, 0.44511214), (0.3871185, 0.44517776), (0.41209027, 0.43519822), (0.4541058, 0.4356575), (0.4593212, 0.4454592), (0.4218768, 0.44511214), (0.4541058, 0.4356575), (0.49804813, 0.43648157), (0.4983007, 0.44613564), (0.4593212, 0.4454592), (0.49804813, 0.43648157), (0.54226846, 0.43756464), (0.5374829, 0.44706735), (0.4983007, 0.44613564), (0.54226846, 0.43756464), (0.58504146, 0.43884736), (0.5754866, 0.4482063), (0.5374829, 0.44706735), (0.58504146, 0.43884736), (0.6247616, 0.44032416), (0.6110323, 0.44953766), (0.5754866, 0.4482063), (0.6247616, 0.44032416), (0.66013545, 0.44204032), (0.6430856, 0.45107973), (0.6110323, 0.44953766), (0.66013545, 0.44204032), (0.6903342, 0.4440773), (0.6709436, 0.4528646), (0.6430856, 0.45107973), (0.6903342, 0.4440773), (0.71503127, 0.4465233), (0.6942793, 0.4549314), (0.6709436, 0.4528646), (0.71503127, 0.4465233), (0.73434794, 0.44941726), (0.71310526, 0.45729235), (0.6942793, 0.4549314), (0.73434794, 0.44941726), (0.74872684, 0.45273617), (0.727694, 0.45992914), (0.71310526, 0.45729235), (0.74872684, 0.45273617), (0.75879234, 0.4563753), (0.7384812, 0.46278197), (0.727694, 0.45992914), (0.75879234, 0.4563753), (0.76524127, 0.46019694), (0.7459779, 0.4657632), (0.7384812, 0.46278197), (0.76524127, 0.46019694), (0.7687349, 0.464041), (0.7507066, 0.46877685), (0.7459779, 0.4657632), (0.7687349, 0.464041), (0.76987827, 0.4677719), (0.75316757, 0.4717293), (0.7507066, 0.46877685), (0.24867927, 0.4652764), (0.25110206, 0.46222198), (0.26806954, 0.46633777), (0.26460254, 0.46877524), (0.25110206, 0.46222198), (0.2557531, 0.45911407), (0.2736399, 0.463887), (0.26806954, 0.46633777), (0.2557531, 0.45911407), (0.2631063, 0.4560599), (0.28169984, 0.46150216), (0.2736399, 0.463887), (0.2631063, 0.4560599), (0.27365857, 0.45318103), (0.2926336, 0.4592747), (0.28169984, 0.46150216), (0.27365857, 0.45318103), (0.28789103, 0.45061168), (0.3067982, 0.45728928), (0.2926336, 0.4592747), (0.28789103, 0.45061168), (0.30621073, 0.4484638), (0.32447582, 0.45562795), (0.3067982, 0.45728928), (0.30621073, 0.4484638), (0.32887924, 0.44682515), (0.3458179, 0.45434764), (0.32447582, 0.45562795), (0.32887924, 0.44682515), (0.3559303, 0.4457316), (0.37080023, 0.45347992), (0.3458179, 0.45434764), (0.3559303, 0.4457316), (0.3871185, 0.44517776), (0.39917248, 0.45302948), (0.37080023, 0.45347992), (0.3871185, 0.44517776), (0.4218768, 0.44511214), (0.4304404, 0.45296413), (0.39917248, 0.45302948), (0.4218768, 0.44511214), (0.4593212, 0.4454592), (0.46386594, 0.45324218), (0.4304404, 0.45296413), (0.4593212, 0.4454592), (0.4983007, 0.44613564), (0.49850798, 0.45380628), (0.46386594, 0.45324218), (0.4983007, 0.44613564), (0.5374829, 0.44706735), (0.5332998, 0.4546076), (0.49850798, 0.45380628), (0.5374829, 0.44706735), (0.5754866, 0.4482063), (0.5671426, 0.45561185), (0.5332998, 0.4546076), (0.5754866, 0.4482063), (0.6110323, 0.44953766), (0.5990145, 0.4567949), (0.5671426, 0.45561185), (0.6110323, 0.44953766), (0.6430856, 0.45107973), (0.6280689, 0.45815918), (0.5990145, 0.4567949), (0.6430856, 0.45107973), (0.6709436, 0.4528646), (0.65372294, 0.45971394), (0.6280689, 0.45815918), (0.6709436, 0.4528646), (0.6942793, 0.4549314), (0.6756575, 0.46147105), (0.65372294, 0.45971394), (0.6942793, 0.4549314), (0.71310526, 0.45729235), (0.693812, 0.46343157), (0.6756575, 0.46147105), (0.71310526, 0.45729235), (0.727694, 0.45992914), (0.7083406, 0.46557578), (0.693812, 0.46343157), (0.727694, 0.45992914), (0.7384812, 0.46278197), (0.7195383, 0.46786758), (0.7083406, 0.46557578), (0.7384812, 0.46278197), (0.7459779, 0.4657632), (0.7277764, 0.47024795), (0.7195383, 0.46786758), (0.7459779, 0.4657632), (0.7507066, 0.46877685), (0.7334674, 0.47265923), (0.7277764, 0.47024795), (0.7507066, 0.46877685), (0.75316757, 0.4717293), (0.73700315, 0.4750386), (0.7334674, 0.47265923), (0.26460254, 0.46877524), (0.26806954, 0.46633777), (0.28410763, 0.46982375), (0.2798131, 0.4717883), (0.26806954, 0.46633777), (0.2736399, 0.463887), (0.290366, 0.46787012), (0.28410763, 0.46982375), (0.2736399, 0.463887), (0.28169984, 0.46150216), (0.2988932, 0.46598616), (0.290366, 0.46787012), (0.28169984, 0.46150216), (0.2926336, 0.4592747), (0.3099856, 0.4642351), (0.2988932, 0.46598616), (0.2926336, 0.4592747), (0.3067982, 0.45728928), (0.3239014, 0.46268168), (0.3099856, 0.4642351), (0.3067982, 0.45728928), (0.32447582, 0.45562795), (0.34083018, 0.46138057), (0.3239014, 0.46268168), (0.32447582, 0.45562795), (0.3458179, 0.45434764), (0.3608493, 0.46037376), (0.34083018, 0.46138057), (0.3458179, 0.45434764), (0.37080023, 0.45347992), (0.3838949, 0.45968774), (0.3608493, 0.46037376), (0.37080023, 0.45347992), (0.39917248, 0.45302948), (0.40971982, 0.45932695), (0.3838949, 0.45968774), (0.39917248, 0.45302948), (0.4304404, 0.45296413), (0.4378934, 0.45927447), (0.40971982, 0.45932695), (0.4304404, 0.45296413), (0.46386594, 0.45324218), (0.46780336, 0.45950744), (0.4378934, 0.45927447), (0.46386594, 0.45324218), (0.49850798, 0.45380628), (0.4986823, 0.45998806), (0.46780336, 0.45950744), (0.49850798, 0.45380628), (0.5332998, 0.4546076), (0.5296698, 0.46068075), (0.4986823, 0.45998806), (0.5332998, 0.4546076), (0.5671426, 0.45561185), (0.55989355, 0.46155927), (0.5296698, 0.46068075), (0.5671426, 0.45561185), (0.5990145, 0.4567949), (0.5885321, 0.46260062), (0.55989355, 0.46155927), (0.5990145, 0.4567949), (0.6280689, 0.45815918), (0.61489826, 0.4637988), (0.5885321, 0.46260062), (0.6280689, 0.45815918), (0.65372294, 0.45971394), (0.63849473, 0.4651503), (0.61489826, 0.4637988), (0.65372294, 0.45971394), (0.6756575, 0.46147105), (0.6590264, 0.46665302), (0.63849473, 0.4651503), (0.6756575, 0.46147105), (0.693812, 0.46343157), (0.67639565, 0.46830064), (0.6590264, 0.46665302), (0.693812, 0.46343157), (0.7083406, 0.46557578), (0.6906637, 0.4700788), (0.67639565, 0.46830064), (0.7083406, 0.46557578), (0.7195383, 0.46786758), (0.7020267, 0.4719559), (0.6906637, 0.4700788), (0.7195383, 0.46786758), (0.7277764, 0.47024795), (0.7107553, 0.4738989), (0.7020267, 0.4719559), (0.7277764, 0.47024795), (0.7334674, 0.47265923), (0.71715814, 0.47586566), (0.7107553, 0.4738989), (0.7334674, 0.47265923), (0.73700315, 0.4750386), (0.7215501, 0.4778128), (0.71715814, 0.47586566), (0.2798131, 0.4717883), (0.28410763, 0.46982375), (0.2991512, 0.47279963), (0.29421654, 0.47439817), (0.28410763, 0.46982375), (0.290366, 0.46787012), (0.30589572, 0.4712257), (0.2991512, 0.47279963), (0.290366, 0.46787012), (0.2988932, 0.46598616), (0.31469458, 0.46971866), (0.30589572, 0.4712257), (0.2988932, 0.46598616), (0.3099856, 0.4642351), (0.3257705, 0.46832785), (0.31469458, 0.46971866), (0.3099856, 0.4642351), (0.3239014, 0.46268168), (0.33930865, 0.4670989), (0.3257705, 0.46832785), (0.3239014, 0.46268168), (0.34083018, 0.46138057), (0.35542744, 0.4660705), (0.33930865, 0.4670989), (0.34083018, 0.46138057), (0.3608493, 0.46037376), (0.3741546, 0.46527362), (0.35542744, 0.4660705), (0.3608493, 0.46037376), (0.3838949, 0.45968774), (0.39539832, 0.4647312), (0.3741546, 0.46527362), (0.3838949, 0.45968774), (0.40971982, 0.45932695), (0.41892684, 0.46444625), (0.39539832, 0.4647312), (0.40971982, 0.45932695), (0.4378934, 0.45927447), (0.4443676, 0.46441367), (0.41892684, 0.46444625), (0.4378934, 0.45927447), (0.46780336, 0.45950744), (0.47120816, 0.46461707), (0.4443676, 0.46441367), (0.46780336, 0.45950744), (0.4986823, 0.45998806), (0.49882448, 0.46503204), (0.47120816, 0.46461707), (0.4986823, 0.45998806), (0.5296698, 0.46068075), (0.52652305, 0.46563414), (0.49882448, 0.46503204), (0.5296698, 0.46068075), (0.55989355, 0.46155927), (0.5536028, 0.46639943), (0.52652305, 0.46563414), (0.55989355, 0.46155927), (0.5885321, 0.46260062), (0.579404, 0.4673137), (0.5536028, 0.46639943), (0.5885321, 0.46260062), (0.61489826, 0.4637988), (0.60336703, 0.4683619), (0.579404, 0.4673137), (0.61489826, 0.4637988), (0.63849473, 0.4651503), (0.6250652, 0.46953702), (0.60336703, 0.4683619), (0.63849473, 0.4651503), (0.6590264, 0.46665302), (0.64422625, 0.47082743), (0.6250652, 0.46953702), (0.6590264, 0.46665302), (0.67639565, 0.46830064), (0.6607383, 0.47222817), (0.64422625, 0.47082743), (0.67639565, 0.46830064), (0.6906637, 0.4700788), (0.67460704, 0.4737233), (0.6607383, 0.47222817), (0.6906637, 0.4700788), (0.7020267, 0.4719559), (0.685949, 0.47528887), (0.67460704, 0.4737233), (0.7020267, 0.4719559), (0.7107553, 0.4738989), (0.69495803, 0.4769005), (0.685949, 0.47528887), (0.7107553, 0.4738989), (0.71715814, 0.47586566), (0.7018616, 0.47853178), (0.69495803, 0.4769005), (0.71715814, 0.47586566), (0.7215501, 0.4778128), (0.7069108, 0.4801504), (0.7018616, 0.47853178), (0.29421654, 0.47439817), (0.2991512, 0.47279963), (0.31317115, 0.47535542), (0.3077637, 0.4766672), (0.2991512, 0.47279963), (0.30589572, 0.4712257), (0.32023767, 0.47407702), (0.31317115, 0.47535542), (0.30589572, 0.4712257), (0.31469458, 0.46971866), (0.32915285, 0.47286174), (0.32023767, 0.47407702), (0.31469458, 0.46971866), (0.3257705, 0.46832785), (0.34007892, 0.47174567), (0.32915285, 0.47286174), (0.3257705, 0.46832785), (0.33930865, 0.4670989), (0.35314798, 0.4707625), (0.34007892, 0.47174567), (0.33930865, 0.4670989), (0.35542744, 0.4660705), (0.36842862, 0.46994478), (0.35314798, 0.4707625), (0.35542744, 0.4660705), (0.3741546, 0.46527362), (0.38591224, 0.46931186), (0.36842862, 0.46994478), (0.3741546, 0.46527362), (0.39539832, 0.4647312), (0.40549475, 0.4688833), (0.38591224, 0.46931186), (0.39539832, 0.4647312), (0.41892684, 0.46444625), (0.4269626, 0.46866247), (0.40549475, 0.4688833), (0.41892684, 0.46444625), (0.4443676, 0.46441367), (0.4499935, 0.4686515), (0.4269626, 0.46866247), (0.4443676, 0.46441367), (0.47120816, 0.46461707), (0.47415674, 0.46883327), (0.4499935, 0.4686515), (0.47120816, 0.46461707), (0.49882448, 0.46503204), (0.49894428, 0.4691961), (0.47415674, 0.46883327), (0.49882448, 0.46503204), (0.52652305, 0.46563414), (0.5237951, 0.46972176), (0.49894428, 0.4691961), (0.52652305, 0.46563414), (0.5536028, 0.46639943), (0.54814565, 0.47039178), (0.5237951, 0.46972176), (0.5536028, 0.46639943), (0.579404, 0.4673137), (0.57145745, 0.47119048), (0.54814565, 0.47039178), (0.579404, 0.4673137), (0.60336703, 0.4683619), (0.5932684, 0.4721056), (0.57145745, 0.47119048), (0.60336703, 0.4683619), (0.6250652, 0.46953702), (0.6132253, 0.47312692), (0.5932684, 0.4721056), (0.6250652, 0.46953702), (0.64422625, 0.47082743), (0.63108075, 0.47424275), (0.6132253, 0.47312692), (0.64422625, 0.47082743), (0.6607383, 0.47222817), (0.64670503, 0.47544348), (0.63108075, 0.47424275), (0.6607383, 0.47222817), (0.67460704, 0.4737233), (0.66007525, 0.47671297), (0.64670503, 0.47544348), (0.67460704, 0.4737233), (0.685949, 0.47528887), (0.67125714, 0.47803703), (0.66007525, 0.47671297), (0.685949, 0.47528887), (0.69495803, 0.4769005), (0.6803808, 0.47939476), (0.67125714, 0.47803703), (0.69495803, 0.4769005), (0.7018616, 0.47853178), (0.6876107, 0.48076674), (0.6803808, 0.47939476), (0.7018616, 0.47853178), (0.7069108, 0.4801504), (0.693145, 0.48212957), (0.6876107, 0.48076674)] (\n            interpolation = \"faceVarying\"\n        )\n        texCoord2f[] primvars:st = [(-0.5416666, -0.5416666), (-0.4548611, -0.5416666), (-0.4548611, -0.45486104), (-0.5416666, -0.45486104), (-0.4548611, -0.5416666), (-0.36805552, -0.5416666), (-0.36805552, -0.45486104), (-0.4548611, -0.45486104), (-0.36805552, -0.5416666), (-0.28125, -0.5416666), (-0.28125, -0.45486104), (-0.36805552, -0.45486104), (-0.28125, -0.5416666), (-0.19444448, -0.5416666), (-0.19444448, -0.45486104), (-0.28125, -0.45486104), (-0.19444448, -0.5416666), (-0.107638896, -0.5416666), (-0.107638896, -0.45486104), (-0.19444448, -0.45486104), (-0.107638896, -0.5416666), (-0.020833313, -0.5416666), (-0.020833313, -0.45486104), (-0.107638896, -0.45486104), (-0.020833313, -0.5416666), (0.06597221, -0.5416666), (0.06597221, -0.45486104), (-0.020833313, -0.45486104), (0.06597221, -0.5416666), (0.15277776, -0.5416666), (0.15277776, -0.45486104), (0.06597221, -0.45486104), (0.15277776, -0.5416666), (0.23958334, -0.5416666), (0.23958334, -0.45486104), (0.15277776, -0.45486104), (0.23958334, -0.5416666), (0.32638887, -0.5416666), (0.32638887, -0.45486104), (0.23958334, -0.45486104), (0.32638887, -0.5416666), (0.4131944, -0.5416666), (0.4131944, -0.45486104), (0.32638887, -0.45486104), (0.4131944, -0.5416666), (0.5, -0.5416666), (0.5, -0.45486104), (0.4131944, -0.45486104), (0.5, -0.5416666), (0.5868055, -0.5416666), (0.5868055, -0.45486104), (0.5, -0.45486104), (0.5868055, -0.5416666), (0.67361104, -0.5416666), (0.67361104, -0.45486104), (0.5868055, -0.45486104), (0.67361104, -0.5416666), (0.7604166, -0.5416666), (0.7604166, -0.45486104), (0.67361104, -0.45486104), (0.7604166, -0.5416666), (0.8472222, -0.5416666), (0.8472222, -0.45486104), (0.7604166, -0.45486104), (0.8472222, -0.5416666), (0.9340277, -0.5416666), (0.9340277, -0.45486104), (0.8472222, -0.45486104), (0.9340277, -0.5416666), (1.0208333, -0.5416666), (1.0208333, -0.45486104), (0.9340277, -0.45486104), (1.0208333, -0.5416666), (1.1076388, -0.5416666), (1.1076388, -0.45486104), (1.0208333, -0.45486104), (1.1076388, -0.5416666), (1.1944444, -0.5416666), (1.1944444, -0.45486104), (1.1076388, -0.45486104), (1.1944444, -0.5416666), (1.28125, -0.5416666), (1.28125, -0.45486104), (1.1944444, -0.45486104), (1.28125, -0.5416666), (1.3680553, -0.5416666), (1.3680553, -0.45486104), (1.28125, -0.45486104), (1.3680553, -0.5416666), (1.454861, -0.5416666), (1.454861, -0.45486104), (1.3680553, -0.45486104), (1.454861, -0.5416666), (1.5416666, -0.5416666), (1.5416666, -0.45486104), (1.454861, -0.45486104), (-0.5416666, -0.45486104), (-0.4548611, -0.45486104), (-0.4548611, -0.36805552), (-0.5416666, -0.36805552), (-0.4548611, -0.45486104), (-0.36805552, -0.45486104), (-0.36805552, -0.36805552), (-0.4548611, -0.36805552), (-0.36805552, -0.45486104), (-0.28125, -0.45486104), (-0.28125, -0.36805552), (-0.36805552, -0.36805552), (-0.28125, -0.45486104), (-0.19444448, -0.45486104), (-0.19444448, -0.36805552), (-0.28125, -0.36805552), (-0.19444448, -0.45486104), (-0.107638896, -0.45486104), (-0.107638896, -0.36805552), (-0.19444448, -0.36805552), (-0.107638896, -0.45486104), (-0.020833313, -0.45486104), (-0.020833313, -0.36805552), (-0.107638896, -0.36805552), (-0.020833313, -0.45486104), (0.06597221, -0.45486104), (0.06597221, -0.36805552), (-0.020833313, -0.36805552), (0.06597221, -0.45486104), (0.15277776, -0.45486104), (0.15277776, -0.36805552), (0.06597221, -0.36805552), (0.15277776, -0.45486104), (0.23958334, -0.45486104), (0.23958334, -0.36805552), (0.15277776, -0.36805552), (0.23958334, -0.45486104), (0.32638887, -0.45486104), (0.32638887, -0.36805552), (0.23958334, -0.36805552), (0.32638887, -0.45486104), (0.4131944, -0.45486104), (0.4131944, -0.36805552), (0.32638887, -0.36805552), (0.4131944, -0.45486104), (0.5, -0.45486104), (0.5, -0.36805552), (0.4131944, -0.36805552), (0.5, -0.45486104), (0.5868055, -0.45486104), (0.5868055, -0.36805552), (0.5, -0.36805552), (0.5868055, -0.45486104), (0.67361104, -0.45486104), (0.67361104, -0.36805552), (0.5868055, -0.36805552), (0.67361104, -0.45486104), (0.7604166, -0.45486104), (0.7604166, -0.36805552), (0.67361104, -0.36805552), (0.7604166, -0.45486104), (0.8472222, -0.45486104), (0.8472222, -0.36805552), (0.7604166, -0.36805552), (0.8472222, -0.45486104), (0.9340277, -0.45486104), (0.9340277, -0.36805552), (0.8472222, -0.36805552), (0.9340277, -0.45486104), (1.0208333, -0.45486104), (1.0208333, -0.36805552), (0.9340277, -0.36805552), (1.0208333, -0.45486104), (1.1076388, -0.45486104), (1.1076388, -0.36805552), (1.0208333, -0.36805552), (1.1076388, -0.45486104), (1.1944444, -0.45486104), (1.1944444, -0.36805552), (1.1076388, -0.36805552), (1.1944444, -0.45486104), (1.28125, -0.45486104), (1.28125, -0.36805552), (1.1944444, -0.36805552), (1.28125, -0.45486104), (1.3680553, -0.45486104), (1.3680553, -0.36805552), (1.28125, -0.36805552), (1.3680553, -0.45486104), (1.454861, -0.45486104), (1.454861, -0.36805552), (1.3680553, -0.36805552), (1.454861, -0.45486104), (1.5416666, -0.45486104), (1.5416666, -0.36805552), (1.454861, -0.36805552), (-0.5416666, -0.36805552), (-0.4548611, -0.36805552), (-0.4548611, -0.28124994), (-0.5416666, -0.28124994), (-0.4548611, -0.36805552), (-0.36805552, -0.36805552), (-0.36805552, -0.28124994), (-0.4548611, -0.28124994), (-0.36805552, -0.36805552), (-0.28125, -0.36805552), (-0.28125, -0.28124994), (-0.36805552, -0.28124994), (-0.28125, -0.36805552), (-0.19444448, -0.36805552), (-0.19444448, -0.28124994), (-0.28125, -0.28124994), (-0.19444448, -0.36805552), (-0.107638896, -0.36805552), (-0.107638896, -0.28124994), (-0.19444448, -0.28124994), (-0.107638896, -0.36805552), (-0.020833313, -0.36805552), (-0.020833313, -0.28124994), (-0.107638896, -0.28124994), (-0.020833313, -0.36805552), (0.06597221, -0.36805552), (0.06597221, -0.28124994), (-0.020833313, -0.28124994), (0.06597221, -0.36805552), (0.15277776, -0.36805552), (0.15277776, -0.28124994), (0.06597221, -0.28124994), (0.15277776, -0.36805552), (0.23958334, -0.36805552), (0.23958334, -0.28124994), (0.15277776, -0.28124994), (0.23958334, -0.36805552), (0.32638887, -0.36805552), (0.32638887, -0.28124994), (0.23958334, -0.28124994), (0.32638887, -0.36805552), (0.4131944, -0.36805552), (0.4131944, -0.28124994), (0.32638887, -0.28124994), (0.4131944, -0.36805552), (0.5, -0.36805552), (0.5, -0.28124994), (0.4131944, -0.28124994), (0.5, -0.36805552), (0.5868055, -0.36805552), (0.5868055, -0.28124994), (0.5, -0.28124994), (0.5868055, -0.36805552), (0.67361104, -0.36805552), (0.67361104, -0.28124994), (0.5868055, -0.28124994), (0.67361104, -0.36805552), (0.7604166, -0.36805552), (0.7604166, -0.28124994), (0.67361104, -0.28124994), (0.7604166, -0.36805552), (0.8472222, -0.36805552), (0.8472222, -0.28124994), (0.7604166, -0.28124994), (0.8472222, -0.36805552), (0.9340277, -0.36805552), (0.9340277, -0.28124994), (0.8472222, -0.28124994), (0.9340277, -0.36805552), (1.0208333, -0.36805552), (1.0208333, -0.28124994), (0.9340277, -0.28124994), (1.0208333, -0.36805552), (1.1076388, -0.36805552), (1.1076388, -0.28124994), (1.0208333, -0.28124994), (1.1076388, -0.36805552), (1.1944444, -0.36805552), (1.1944444, -0.28124994), (1.1076388, -0.28124994), (1.1944444, -0.36805552), (1.28125, -0.36805552), (1.28125, -0.28124994), (1.1944444, -0.28124994), (1.28125, -0.36805552), (1.3680553, -0.36805552), (1.3680553, -0.28124994), (1.28125, -0.28124994), (1.3680553, -0.36805552), (1.454861, -0.36805552), (1.454861, -0.28124994), (1.3680553, -0.28124994), (1.454861, -0.36805552), (1.5416666, -0.36805552), (1.5416666, -0.28124994), (1.454861, -0.28124994), (-0.5416666, -0.28124994), (-0.4548611, -0.28124994), (-0.4548611, -0.19444448), (-0.5416666, -0.19444448), (-0.4548611, -0.28124994), (-0.36805552, -0.28124994), (-0.36805552, -0.19444448), (-0.4548611, -0.19444448), (-0.36805552, -0.28124994), (-0.28125, -0.28124994), (-0.28125, -0.19444448), (-0.36805552, -0.19444448), (-0.28125, -0.28124994), (-0.19444448, -0.28124994), (-0.19444448, -0.19444448), (-0.28125, -0.19444448), (-0.19444448, -0.28124994), (-0.107638896, -0.28124994), (-0.107638896, -0.19444448), (-0.19444448, -0.19444448), (-0.107638896, -0.28124994), (-0.020833313, -0.28124994), (-0.020833313, -0.19444448), (-0.107638896, -0.19444448), (-0.020833313, -0.28124994), (0.06597221, -0.28124994), (0.06597221, -0.19444448), (-0.020833313, -0.19444448), (0.06597221, -0.28124994), (0.15277776, -0.28124994), (0.15277776, -0.19444448), (0.06597221, -0.19444448), (0.15277776, -0.28124994), (0.23958334, -0.28124994), (0.23958334, -0.19444448), (0.15277776, -0.19444448), (0.23958334, -0.28124994), (0.32638887, -0.28124994), (0.32638887, -0.19444448), (0.23958334, -0.19444448), (0.32638887, -0.28124994), (0.4131944, -0.28124994), (0.4131944, -0.19444448), (0.32638887, -0.19444448), (0.4131944, -0.28124994), (0.5, -0.28124994), (0.5, -0.19444448), (0.4131944, -0.19444448), (0.5, -0.28124994), (0.5868055, -0.28124994), (0.5868055, -0.19444448), (0.5, -0.19444448), (0.5868055, -0.28124994), (0.67361104, -0.28124994), (0.67361104, -0.19444448), (0.5868055, -0.19444448), (0.67361104, -0.28124994), (0.7604166, -0.28124994), (0.7604166, -0.19444448), (0.67361104, -0.19444448), (0.7604166, -0.28124994), (0.8472222, -0.28124994), (0.8472222, -0.19444448), (0.7604166, -0.19444448), (0.8472222, -0.28124994), (0.9340277, -0.28124994), (0.9340277, -0.19444448), (0.8472222, -0.19444448), (0.9340277, -0.28124994), (1.0208333, -0.28124994), (1.0208333, -0.19444448), (0.9340277, -0.19444448), (1.0208333, -0.28124994), (1.1076388, -0.28124994), (1.1076388, -0.19444448), (1.0208333, -0.19444448), (1.1076388, -0.28124994), (1.1944444, -0.28124994), (1.1944444, -0.19444448), (1.1076388, -0.19444448), (1.1944444, -0.28124994), (1.28125, -0.28124994), (1.28125, -0.19444448), (1.1944444, -0.19444448), (1.28125, -0.28124994), (1.3680553, -0.28124994), (1.3680553, -0.19444448), (1.28125, -0.19444448), (1.3680553, -0.28124994), (1.454861, -0.28124994), (1.454861, -0.19444448), (1.3680553, -0.19444448), (1.454861, -0.28124994), (1.5416666, -0.28124994), (1.5416666, -0.19444448), (1.454861, -0.19444448), (-0.5416666, -0.19444448), (-0.4548611, -0.19444448), (-0.4548611, -0.107638896), (-0.5416666, -0.107638896), (-0.4548611, -0.19444448), (-0.36805552, -0.19444448), (-0.36805552, -0.107638896), (-0.4548611, -0.107638896), (-0.36805552, -0.19444448), (-0.28125, -0.19444448), (-0.28125, -0.107638896), (-0.36805552, -0.107638896), (-0.28125, -0.19444448), (-0.19444448, -0.19444448), (-0.19444448, -0.107638896), (-0.28125, -0.107638896), (-0.19444448, -0.19444448), (-0.107638896, -0.19444448), (-0.107638896, -0.107638896), (-0.19444448, -0.107638896), (-0.107638896, -0.19444448), (-0.020833313, -0.19444448), (-0.020833313, -0.107638896), (-0.107638896, -0.107638896), (-0.020833313, -0.19444448), (0.06597221, -0.19444448), (0.06597221, -0.107638896), (-0.020833313, -0.107638896), (0.06597221, -0.19444448), (0.15277776, -0.19444448), (0.15277776, -0.107638896), (0.06597221, -0.107638896), (0.15277776, -0.19444448), (0.23958334, -0.19444448), (0.23958334, -0.107638896), (0.15277776, -0.107638896), (0.23958334, -0.19444448), (0.32638887, -0.19444448), (0.32638887, -0.107638896), (0.23958334, -0.107638896), (0.32638887, -0.19444448), (0.4131944, -0.19444448), (0.4131944, -0.107638896), (0.32638887, -0.107638896), (0.4131944, -0.19444448), (0.5, -0.19444448), (0.5, -0.107638896), (0.4131944, -0.107638896), (0.5, -0.19444448), (0.5868055, -0.19444448), (0.5868055, -0.107638896), (0.5, -0.107638896), (0.5868055, -0.19444448), (0.67361104, -0.19444448), (0.67361104, -0.107638896), (0.5868055, -0.107638896), (0.67361104, -0.19444448), (0.7604166, -0.19444448), (0.7604166, -0.107638896), (0.67361104, -0.107638896), (0.7604166, -0.19444448), (0.8472222, -0.19444448), (0.8472222, -0.107638896), (0.7604166, -0.107638896), (0.8472222, -0.19444448), (0.9340277, -0.19444448), (0.9340277, -0.107638896), (0.8472222, -0.107638896), (0.9340277, -0.19444448), (1.0208333, -0.19444448), (1.0208333, -0.107638896), (0.9340277, -0.107638896), (1.0208333, -0.19444448), (1.1076388, -0.19444448), (1.1076388, -0.107638896), (1.0208333, -0.107638896), (1.1076388, -0.19444448), (1.1944444, -0.19444448), (1.1944444, -0.107638896), (1.1076388, -0.107638896), (1.1944444, -0.19444448), (1.28125, -0.19444448), (1.28125, -0.107638896), (1.1944444, -0.107638896), (1.28125, -0.19444448), (1.3680553, -0.19444448), (1.3680553, -0.107638896), (1.28125, -0.107638896), (1.3680553, -0.19444448), (1.454861, -0.19444448), (1.454861, -0.107638896), (1.3680553, -0.107638896), (1.454861, -0.19444448), (1.5416666, -0.19444448), (1.5416666, -0.107638896), (1.454861, -0.107638896), (-0.5416666, -0.107638896), (-0.4548611, -0.107638896), (-0.4548611, -0.020833313), (-0.5416666, -0.020833313), (-0.4548611, -0.107638896), (-0.36805552, -0.107638896), (-0.36805552, -0.020833313), (-0.4548611, -0.020833313), (-0.36805552, -0.107638896), (-0.28125, -0.107638896), (-0.28125, -0.020833313), (-0.36805552, -0.020833313), (-0.28125, -0.107638896), (-0.19444448, -0.107638896), (-0.19444448, -0.020833313), (-0.28125, -0.020833313), (-0.19444448, -0.107638896), (-0.107638896, -0.107638896), (-0.107638896, -0.020833313), (-0.19444448, -0.020833313), (-0.107638896, -0.107638896), (-0.020833313, -0.107638896), (-0.020833313, -0.020833313), (-0.107638896, -0.020833313), (-0.020833313, -0.107638896), (0.06597221, -0.107638896), (0.06597221, -0.020833313), (-0.020833313, -0.020833313), (0.06597221, -0.107638896), (0.15277776, -0.107638896), (0.15277776, -0.020833313), (0.06597221, -0.020833313), (0.15277776, -0.107638896), (0.23958334, -0.107638896), (0.23958334, -0.020833313), (0.15277776, -0.020833313), (0.23958334, -0.107638896), (0.32638887, -0.107638896), (0.32638887, -0.020833313), (0.23958334, -0.020833313), (0.32638887, -0.107638896), (0.4131944, -0.107638896), (0.4131944, -0.020833313), (0.32638887, -0.020833313), (0.4131944, -0.107638896), (0.5, -0.107638896), (0.5, -0.020833313), (0.4131944, -0.020833313), (0.5, -0.107638896), (0.5868055, -0.107638896), (0.5868055, -0.020833313), (0.5, -0.020833313), (0.5868055, -0.107638896), (0.67361104, -0.107638896), (0.67361104, -0.020833313), (0.5868055, -0.020833313), (0.67361104, -0.107638896), (0.7604166, -0.107638896), (0.7604166, -0.020833313), (0.67361104, -0.020833313), (0.7604166, -0.107638896), (0.8472222, -0.107638896), (0.8472222, -0.020833313), (0.7604166, -0.020833313), (0.8472222, -0.107638896), (0.9340277, -0.107638896), (0.9340277, -0.020833313), (0.8472222, -0.020833313), (0.9340277, -0.107638896), (1.0208333, -0.107638896), (1.0208333, -0.020833313), (0.9340277, -0.020833313), (1.0208333, -0.107638896), (1.1076388, -0.107638896), (1.1076388, -0.020833313), (1.0208333, -0.020833313), (1.1076388, -0.107638896), (1.1944444, -0.107638896), (1.1944444, -0.020833313), (1.1076388, -0.020833313), (1.1944444, -0.107638896), (1.28125, -0.107638896), (1.28125, -0.020833313), (1.1944444, -0.020833313), (1.28125, -0.107638896), (1.3680553, -0.107638896), (1.3680553, -0.020833313), (1.28125, -0.020833313), (1.3680553, -0.107638896), (1.454861, -0.107638896), (1.454861, -0.020833313), (1.3680553, -0.020833313), (1.454861, -0.107638896), (1.5416666, -0.107638896), (1.5416666, -0.020833313), (1.454861, -0.020833313), (-0.5416666, -0.020833313), (-0.4548611, -0.020833313), (-0.4548611, 0.06597221), (-0.5416666, 0.06597221), (-0.4548611, -0.020833313), (-0.36805552, -0.020833313), (-0.36805552, 0.06597221), (-0.4548611, 0.06597221), (-0.36805552, -0.020833313), (-0.28125, -0.020833313), (-0.28125, 0.06597221), (-0.36805552, 0.06597221), (-0.28125, -0.020833313), (-0.19444448, -0.020833313), (-0.19444448, 0.06597221), (-0.28125, 0.06597221), (-0.19444448, -0.020833313), (-0.107638896, -0.020833313), (-0.107638896, 0.06597221), (-0.19444448, 0.06597221), (-0.107638896, -0.020833313), (-0.020833313, -0.020833313), (-0.020833313, 0.06597221), (-0.107638896, 0.06597221), (-0.020833313, -0.020833313), (0.06597221, -0.020833313), (0.06597221, 0.06597221), (-0.020833313, 0.06597221), (0.06597221, -0.020833313), (0.15277776, -0.020833313), (0.15277776, 0.06597221), (0.06597221, 0.06597221), (0.15277776, -0.020833313), (0.23958334, -0.020833313), (0.23958334, 0.06597221), (0.15277776, 0.06597221), (0.23958334, -0.020833313), (0.32638887, -0.020833313), (0.32638887, 0.06597221), (0.23958334, 0.06597221), (0.32638887, -0.020833313), (0.4131944, -0.020833313), (0.4131944, 0.06597221), (0.32638887, 0.06597221), (0.4131944, -0.020833313), (0.5, -0.020833313), (0.5, 0.06597221), (0.4131944, 0.06597221), (0.5, -0.020833313), (0.5868055, -0.020833313), (0.5868055, 0.06597221), (0.5, 0.06597221), (0.5868055, -0.020833313), (0.67361104, -0.020833313), (0.67361104, 0.06597221), (0.5868055, 0.06597221), (0.67361104, -0.020833313), (0.7604166, -0.020833313), (0.7604166, 0.06597221), (0.67361104, 0.06597221), (0.7604166, -0.020833313), (0.8472222, -0.020833313), (0.8472222, 0.06597221), (0.7604166, 0.06597221), (0.8472222, -0.020833313), (0.9340277, -0.020833313), (0.9340277, 0.06597221), (0.8472222, 0.06597221), (0.9340277, -0.020833313), (1.0208333, -0.020833313), (1.0208333, 0.06597221), (0.9340277, 0.06597221), (1.0208333, -0.020833313), (1.1076388, -0.020833313), (1.1076388, 0.06597221), (1.0208333, 0.06597221), (1.1076388, -0.020833313), (1.1944444, -0.020833313), (1.1944444, 0.06597221), (1.1076388, 0.06597221), (1.1944444, -0.020833313), (1.28125, -0.020833313), (1.28125, 0.06597221), (1.1944444, 0.06597221), (1.28125, -0.020833313), (1.3680553, -0.020833313), (1.3680553, 0.06597221), (1.28125, 0.06597221), (1.3680553, -0.020833313), (1.454861, -0.020833313), (1.454861, 0.06597221), (1.3680553, 0.06597221), (1.454861, -0.020833313), (1.5416666, -0.020833313), (1.5416666, 0.06597221), (1.454861, 0.06597221), (-0.5416666, 0.06597221), (-0.4548611, 0.06597221), (-0.4548611, 0.15277779), (-0.5416666, 0.15277779), (-0.4548611, 0.06597221), (-0.36805552, 0.06597221), (-0.36805552, 0.15277779), (-0.4548611, 0.15277779), (-0.36805552, 0.06597221), (-0.28125, 0.06597221), (-0.28125, 0.15277779), (-0.36805552, 0.15277779), (-0.28125, 0.06597221), (-0.19444448, 0.06597221), (-0.19444448, 0.15277779), (-0.28125, 0.15277779), (-0.19444448, 0.06597221), (-0.107638896, 0.06597221), (-0.107638896, 0.15277779), (-0.19444448, 0.15277779), (-0.107638896, 0.06597221), (-0.020833313, 0.06597221), (-0.020833313, 0.15277779), (-0.107638896, 0.15277779), (-0.020833313, 0.06597221), (0.06597221, 0.06597221), (0.06597221, 0.15277779), (-0.020833313, 0.15277779), (0.06597221, 0.06597221), (0.15277776, 0.06597221), (0.15277776, 0.15277779), (0.06597221, 0.15277779), (0.15277776, 0.06597221), (0.23958334, 0.06597221), (0.23958334, 0.15277779), (0.15277776, 0.15277779), (0.23958334, 0.06597221), (0.32638887, 0.06597221), (0.32638887, 0.15277779), (0.23958334, 0.15277779), (0.32638887, 0.06597221), (0.4131944, 0.06597221), (0.4131944, 0.15277779), (0.32638887, 0.15277779), (0.4131944, 0.06597221), (0.5, 0.06597221), (0.5, 0.15277779), (0.4131944, 0.15277779), (0.5, 0.06597221), (0.5868055, 0.06597221), (0.5868055, 0.15277779), (0.5, 0.15277779), (0.5868055, 0.06597221), (0.67361104, 0.06597221), (0.67361104, 0.15277779), (0.5868055, 0.15277779), (0.67361104, 0.06597221), (0.7604166, 0.06597221), (0.7604166, 0.15277779), (0.67361104, 0.15277779), (0.7604166, 0.06597221), (0.8472222, 0.06597221), (0.8472222, 0.15277779), (0.7604166, 0.15277779), (0.8472222, 0.06597221), (0.9340277, 0.06597221), (0.9340277, 0.15277779), (0.8472222, 0.15277779), (0.9340277, 0.06597221), (1.0208333, 0.06597221), (1.0208333, 0.15277779), (0.9340277, 0.15277779), (1.0208333, 0.06597221), (1.1076388, 0.06597221), (1.1076388, 0.15277779), (1.0208333, 0.15277779), (1.1076388, 0.06597221), (1.1944444, 0.06597221), (1.1944444, 0.15277779), (1.1076388, 0.15277779), (1.1944444, 0.06597221), (1.28125, 0.06597221), (1.28125, 0.15277779), (1.1944444, 0.15277779), (1.28125, 0.06597221), (1.3680553, 0.06597221), (1.3680553, 0.15277779), (1.28125, 0.15277779), (1.3680553, 0.06597221), (1.454861, 0.06597221), (1.454861, 0.15277779), (1.3680553, 0.15277779), (1.454861, 0.06597221), (1.5416666, 0.06597221), (1.5416666, 0.15277779), (1.454861, 0.15277779), (-0.5416666, 0.15277779), (-0.4548611, 0.15277779), (-0.4548611, 0.23958334), (-0.5416666, 0.23958334), (-0.4548611, 0.15277779), (-0.36805552, 0.15277779), (-0.36805552, 0.23958334), (-0.4548611, 0.23958334), (-0.36805552, 0.15277779), (-0.28125, 0.15277779), (-0.28125, 0.23958334), (-0.36805552, 0.23958334), (-0.28125, 0.15277779), (-0.19444448, 0.15277779), (-0.19444448, 0.23958334), (-0.28125, 0.23958334), (-0.19444448, 0.15277779), (-0.107638896, 0.15277779), (-0.107638896, 0.23958334), (-0.19444448, 0.23958334), (-0.107638896, 0.15277779), (-0.020833313, 0.15277779), (-0.020833313, 0.23958334), (-0.107638896, 0.23958334), (-0.020833313, 0.15277779), (0.06597221, 0.15277779), (0.06597221, 0.23958334), (-0.020833313, 0.23958334), (0.06597221, 0.15277779), (0.15277776, 0.15277779), (0.15277776, 0.23958334), (0.06597221, 0.23958334), (0.15277776, 0.15277779), (0.23958334, 0.15277779), (0.23958334, 0.23958334), (0.15277776, 0.23958334), (0.23958334, 0.15277779), (0.32638887, 0.15277779), (0.32638887, 0.23958334), (0.23958334, 0.23958334), (0.32638887, 0.15277779), (0.4131944, 0.15277779), (0.4131944, 0.23958334), (0.32638887, 0.23958334), (0.4131944, 0.15277779), (0.5, 0.15277779), (0.5, 0.23958334), (0.4131944, 0.23958334), (0.5, 0.15277779), (0.5868055, 0.15277779), (0.5868055, 0.23958334), (0.5, 0.23958334), (0.5868055, 0.15277779), (0.67361104, 0.15277779), (0.67361104, 0.23958334), (0.5868055, 0.23958334), (0.67361104, 0.15277779), (0.7604166, 0.15277779), (0.7604166, 0.23958334), (0.67361104, 0.23958334), (0.7604166, 0.15277779), (0.8472222, 0.15277779), (0.8472222, 0.23958334), (0.7604166, 0.23958334), (0.8472222, 0.15277779), (0.9340277, 0.15277779), (0.9340277, 0.23958334), (0.8472222, 0.23958334), (0.9340277, 0.15277779), (1.0208333, 0.15277779), (1.0208333, 0.23958334), (0.9340277, 0.23958334), (1.0208333, 0.15277779), (1.1076388, 0.15277779), (1.1076388, 0.23958334), (1.0208333, 0.23958334), (1.1076388, 0.15277779), (1.1944444, 0.15277779), (1.1944444, 0.23958334), (1.1076388, 0.23958334), (1.1944444, 0.15277779), (1.28125, 0.15277779), (1.28125, 0.23958334), (1.1944444, 0.23958334), (1.28125, 0.15277779), (1.3680553, 0.15277779), (1.3680553, 0.23958334), (1.28125, 0.23958334), (1.3680553, 0.15277779), (1.454861, 0.15277779), (1.454861, 0.23958334), (1.3680553, 0.23958334), (1.454861, 0.15277779), (1.5416666, 0.15277779), (1.5416666, 0.23958334), (1.454861, 0.23958334), (-0.5416666, 0.23958334), (-0.4548611, 0.23958334), (-0.4548611, 0.32638887), (-0.5416666, 0.32638887), (-0.4548611, 0.23958334), (-0.36805552, 0.23958334), (-0.36805552, 0.32638887), (-0.4548611, 0.32638887), (-0.36805552, 0.23958334), (-0.28125, 0.23958334), (-0.28125, 0.32638887), (-0.36805552, 0.32638887), (-0.28125, 0.23958334), (-0.19444448, 0.23958334), (-0.19444448, 0.32638887), (-0.28125, 0.32638887), (-0.19444448, 0.23958334), (-0.107638896, 0.23958334), (-0.107638896, 0.32638887), (-0.19444448, 0.32638887), (-0.107638896, 0.23958334), (-0.020833313, 0.23958334), (-0.020833313, 0.32638887), (-0.107638896, 0.32638887), (-0.020833313, 0.23958334), (0.06597221, 0.23958334), (0.06597221, 0.32638887), (-0.020833313, 0.32638887), (0.06597221, 0.23958334), (0.15277776, 0.23958334), (0.15277776, 0.32638887), (0.06597221, 0.32638887), (0.15277776, 0.23958334), (0.23958334, 0.23958334), (0.23958334, 0.32638887), (0.15277776, 0.32638887), (0.23958334, 0.23958334), (0.32638887, 0.23958334), (0.32638887, 0.32638887), (0.23958334, 0.32638887), (0.32638887, 0.23958334), (0.4131944, 0.23958334), (0.4131944, 0.32638887), (0.32638887, 0.32638887), (0.4131944, 0.23958334), (0.5, 0.23958334), (0.5, 0.32638887), (0.4131944, 0.32638887), (0.5, 0.23958334), (0.5868055, 0.23958334), (0.5868055, 0.32638887), (0.5, 0.32638887), (0.5868055, 0.23958334), (0.67361104, 0.23958334), (0.67361104, 0.32638887), (0.5868055, 0.32638887), (0.67361104, 0.23958334), (0.7604166, 0.23958334), (0.7604166, 0.32638887), (0.67361104, 0.32638887), (0.7604166, 0.23958334), (0.8472222, 0.23958334), (0.8472222, 0.32638887), (0.7604166, 0.32638887), (0.8472222, 0.23958334), (0.9340277, 0.23958334), (0.9340277, 0.32638887), (0.8472222, 0.32638887), (0.9340277, 0.23958334), (1.0208333, 0.23958334), (1.0208333, 0.32638887), (0.9340277, 0.32638887), (1.0208333, 0.23958334), (1.1076388, 0.23958334), (1.1076388, 0.32638887), (1.0208333, 0.32638887), (1.1076388, 0.23958334), (1.1944444, 0.23958334), (1.1944444, 0.32638887), (1.1076388, 0.32638887), (1.1944444, 0.23958334), (1.28125, 0.23958334), (1.28125, 0.32638887), (1.1944444, 0.32638887), (1.28125, 0.23958334), (1.3680553, 0.23958334), (1.3680553, 0.32638887), (1.28125, 0.32638887), (1.3680553, 0.23958334), (1.454861, 0.23958334), (1.454861, 0.32638887), (1.3680553, 0.32638887), (1.454861, 0.23958334), (1.5416666, 0.23958334), (1.5416666, 0.32638887), (1.454861, 0.32638887), (-0.5416666, 0.32638887), (-0.4548611, 0.32638887), (-0.4548611, 0.4131944), (-0.5416666, 0.4131944), (-0.4548611, 0.32638887), (-0.36805552, 0.32638887), (-0.36805552, 0.4131944), (-0.4548611, 0.4131944), (-0.36805552, 0.32638887), (-0.28125, 0.32638887), (-0.28125, 0.4131944), (-0.36805552, 0.4131944), (-0.28125, 0.32638887), (-0.19444448, 0.32638887), (-0.19444448, 0.4131944), (-0.28125, 0.4131944), (-0.19444448, 0.32638887), (-0.107638896, 0.32638887), (-0.107638896, 0.4131944), (-0.19444448, 0.4131944), (-0.107638896, 0.32638887), (-0.020833313, 0.32638887), (-0.020833313, 0.4131944), (-0.107638896, 0.4131944), (-0.020833313, 0.32638887), (0.06597221, 0.32638887), (0.06597221, 0.4131944), (-0.020833313, 0.4131944), (0.06597221, 0.32638887), (0.15277776, 0.32638887), (0.15277776, 0.4131944), (0.06597221, 0.4131944), (0.15277776, 0.32638887), (0.23958334, 0.32638887), (0.23958334, 0.4131944), (0.15277776, 0.4131944), (0.23958334, 0.32638887), (0.32638887, 0.32638887), (0.32638887, 0.4131944), (0.23958334, 0.4131944), (0.32638887, 0.32638887), (0.4131944, 0.32638887), (0.4131944, 0.4131944), (0.32638887, 0.4131944), (0.4131944, 0.32638887), (0.5, 0.32638887), (0.5, 0.4131944), (0.4131944, 0.4131944), (0.5, 0.32638887), (0.5868055, 0.32638887), (0.5868055, 0.4131944), (0.5, 0.4131944), (0.5868055, 0.32638887), (0.67361104, 0.32638887), (0.67361104, 0.4131944), (0.5868055, 0.4131944), (0.67361104, 0.32638887), (0.7604166, 0.32638887), (0.7604166, 0.4131944), (0.67361104, 0.4131944), (0.7604166, 0.32638887), (0.8472222, 0.32638887), (0.8472222, 0.4131944), (0.7604166, 0.4131944), (0.8472222, 0.32638887), (0.9340277, 0.32638887), (0.9340277, 0.4131944), (0.8472222, 0.4131944), (0.9340277, 0.32638887), (1.0208333, 0.32638887), (1.0208333, 0.4131944), (0.9340277, 0.4131944), (1.0208333, 0.32638887), (1.1076388, 0.32638887), (1.1076388, 0.4131944), (1.0208333, 0.4131944), (1.1076388, 0.32638887), (1.1944444, 0.32638887), (1.1944444, 0.4131944), (1.1076388, 0.4131944), (1.1944444, 0.32638887), (1.28125, 0.32638887), (1.28125, 0.4131944), (1.1944444, 0.4131944), (1.28125, 0.32638887), (1.3680553, 0.32638887), (1.3680553, 0.4131944), (1.28125, 0.4131944), (1.3680553, 0.32638887), (1.454861, 0.32638887), (1.454861, 0.4131944), (1.3680553, 0.4131944), (1.454861, 0.32638887), (1.5416666, 0.32638887), (1.5416666, 0.4131944), (1.454861, 0.4131944), (-0.5416666, 0.4131944), (-0.4548611, 0.4131944), (-0.4548611, 0.5), (-0.5416666, 0.5), (-0.4548611, 0.4131944), (-0.36805552, 0.4131944), (-0.36805552, 0.5), (-0.4548611, 0.5), (-0.36805552, 0.4131944), (-0.28125, 0.4131944), (-0.28125, 0.5), (-0.36805552, 0.5), (-0.28125, 0.4131944), (-0.19444448, 0.4131944), (-0.19444448, 0.5), (-0.28125, 0.5), (-0.19444448, 0.4131944), (-0.107638896, 0.4131944), (-0.107638896, 0.5), (-0.19444448, 0.5), (-0.107638896, 0.4131944), (-0.020833313, 0.4131944), (-0.020833313, 0.5), (-0.107638896, 0.5), (-0.020833313, 0.4131944), (0.06597221, 0.4131944), (0.06597221, 0.5), (-0.020833313, 0.5), (0.06597221, 0.4131944), (0.15277776, 0.4131944), (0.15277776, 0.5), (0.06597221, 0.5), (0.15277776, 0.4131944), (0.23958334, 0.4131944), (0.23958334, 0.5), (0.15277776, 0.5), (0.23958334, 0.4131944), (0.32638887, 0.4131944), (0.32638887, 0.5), (0.23958334, 0.5), (0.32638887, 0.4131944), (0.4131944, 0.4131944), (0.4131944, 0.5), (0.32638887, 0.5), (0.4131944, 0.4131944), (0.5, 0.4131944), (0.5, 0.5), (0.4131944, 0.5), (0.5, 0.4131944), (0.5868055, 0.4131944), (0.5868055, 0.5), (0.5, 0.5), (0.5868055, 0.4131944), (0.67361104, 0.4131944), (0.67361104, 0.5), (0.5868055, 0.5), (0.67361104, 0.4131944), (0.7604166, 0.4131944), (0.7604166, 0.5), (0.67361104, 0.5), (0.7604166, 0.4131944), (0.8472222, 0.4131944), (0.8472222, 0.5), (0.7604166, 0.5), (0.8472222, 0.4131944), (0.9340277, 0.4131944), (0.9340277, 0.5), (0.8472222, 0.5), (0.9340277, 0.4131944), (1.0208333, 0.4131944), (1.0208333, 0.5), (0.9340277, 0.5), (1.0208333, 0.4131944), (1.1076388, 0.4131944), (1.1076388, 0.5), (1.0208333, 0.5), (1.1076388, 0.4131944), (1.1944444, 0.4131944), (1.1944444, 0.5), (1.1076388, 0.5), (1.1944444, 0.4131944), (1.28125, 0.4131944), (1.28125, 0.5), (1.1944444, 0.5), (1.28125, 0.4131944), (1.3680553, 0.4131944), (1.3680553, 0.5), (1.28125, 0.5), (1.3680553, 0.4131944), (1.454861, 0.4131944), (1.454861, 0.5), (1.3680553, 0.5), (1.454861, 0.4131944), (1.5416666, 0.4131944), (1.5416666, 0.5), (1.454861, 0.5), (-0.5416666, 0.5), (-0.4548611, 0.5), (-0.4548611, 0.5868055), (-0.5416666, 0.5868055), (-0.4548611, 0.5), (-0.36805552, 0.5), (-0.36805552, 0.5868055), (-0.4548611, 0.5868055), (-0.36805552, 0.5), (-0.28125, 0.5), (-0.28125, 0.5868055), (-0.36805552, 0.5868055), (-0.28125, 0.5), (-0.19444448, 0.5), (-0.19444448, 0.5868055), (-0.28125, 0.5868055), (-0.19444448, 0.5), (-0.107638896, 0.5), (-0.107638896, 0.5868055), (-0.19444448, 0.5868055), (-0.107638896, 0.5), (-0.020833313, 0.5), (-0.020833313, 0.5868055), (-0.107638896, 0.5868055), (-0.020833313, 0.5), (0.06597221, 0.5), (0.06597221, 0.5868055), (-0.020833313, 0.5868055), (0.06597221, 0.5), (0.15277776, 0.5), (0.15277776, 0.5868055), (0.06597221, 0.5868055), (0.15277776, 0.5), (0.23958334, 0.5), (0.23958334, 0.5868055), (0.15277776, 0.5868055), (0.23958334, 0.5), (0.32638887, 0.5), (0.32638887, 0.5868055), (0.23958334, 0.5868055), (0.32638887, 0.5), (0.4131944, 0.5), (0.4131944, 0.5868055), (0.32638887, 0.5868055), (0.4131944, 0.5), (0.5, 0.5), (0.5, 0.5868055), (0.4131944, 0.5868055), (0.5, 0.5), (0.5868055, 0.5), (0.5868055, 0.5868055), (0.5, 0.5868055), (0.5868055, 0.5), (0.67361104, 0.5), (0.67361104, 0.5868055), (0.5868055, 0.5868055), (0.67361104, 0.5), (0.7604166, 0.5), (0.7604166, 0.5868055), (0.67361104, 0.5868055), (0.7604166, 0.5), (0.8472222, 0.5), (0.8472222, 0.5868055), (0.7604166, 0.5868055), (0.8472222, 0.5), (0.9340277, 0.5), (0.9340277, 0.5868055), (0.8472222, 0.5868055), (0.9340277, 0.5), (1.0208333, 0.5), (1.0208333, 0.5868055), (0.9340277, 0.5868055), (1.0208333, 0.5), (1.1076388, 0.5), (1.1076388, 0.5868055), (1.0208333, 0.5868055), (1.1076388, 0.5), (1.1944444, 0.5), (1.1944444, 0.5868055), (1.1076388, 0.5868055), (1.1944444, 0.5), (1.28125, 0.5), (1.28125, 0.5868055), (1.1944444, 0.5868055), (1.28125, 0.5), (1.3680553, 0.5), (1.3680553, 0.5868055), (1.28125, 0.5868055), (1.3680553, 0.5), (1.454861, 0.5), (1.454861, 0.5868055), (1.3680553, 0.5868055), (1.454861, 0.5), (1.5416666, 0.5), (1.5416666, 0.5868055), (1.454861, 0.5868055), (-0.5416666, 0.5868055), (-0.4548611, 0.5868055), (-0.4548611, 0.67361104), (-0.5416666, 0.67361104), (-0.4548611, 0.5868055), (-0.36805552, 0.5868055), (-0.36805552, 0.67361104), (-0.4548611, 0.67361104), (-0.36805552, 0.5868055), (-0.28125, 0.5868055), (-0.28125, 0.67361104), (-0.36805552, 0.67361104), (-0.28125, 0.5868055), (-0.19444448, 0.5868055), (-0.19444448, 0.67361104), (-0.28125, 0.67361104), (-0.19444448, 0.5868055), (-0.107638896, 0.5868055), (-0.107638896, 0.67361104), (-0.19444448, 0.67361104), (-0.107638896, 0.5868055), (-0.020833313, 0.5868055), (-0.020833313, 0.67361104), (-0.107638896, 0.67361104), (-0.020833313, 0.5868055), (0.06597221, 0.5868055), (0.06597221, 0.67361104), (-0.020833313, 0.67361104), (0.06597221, 0.5868055), (0.15277776, 0.5868055), (0.15277776, 0.67361104), (0.06597221, 0.67361104), (0.15277776, 0.5868055), (0.23958334, 0.5868055), (0.23958334, 0.67361104), (0.15277776, 0.67361104), (0.23958334, 0.5868055), (0.32638887, 0.5868055), (0.32638887, 0.67361104), (0.23958334, 0.67361104), (0.32638887, 0.5868055), (0.4131944, 0.5868055), (0.4131944, 0.67361104), (0.32638887, 0.67361104), (0.4131944, 0.5868055), (0.5, 0.5868055), (0.5, 0.67361104), (0.4131944, 0.67361104), (0.5, 0.5868055), (0.5868055, 0.5868055), (0.5868055, 0.67361104), (0.5, 0.67361104), (0.5868055, 0.5868055), (0.67361104, 0.5868055), (0.67361104, 0.67361104), (0.5868055, 0.67361104), (0.67361104, 0.5868055), (0.7604166, 0.5868055), (0.7604166, 0.67361104), (0.67361104, 0.67361104), (0.7604166, 0.5868055), (0.8472222, 0.5868055), (0.8472222, 0.67361104), (0.7604166, 0.67361104), (0.8472222, 0.5868055), (0.9340277, 0.5868055), (0.9340277, 0.67361104), (0.8472222, 0.67361104), (0.9340277, 0.5868055), (1.0208333, 0.5868055), (1.0208333, 0.67361104), (0.9340277, 0.67361104), (1.0208333, 0.5868055), (1.1076388, 0.5868055), (1.1076388, 0.67361104), (1.0208333, 0.67361104), (1.1076388, 0.5868055), (1.1944444, 0.5868055), (1.1944444, 0.67361104), (1.1076388, 0.67361104), (1.1944444, 0.5868055), (1.28125, 0.5868055), (1.28125, 0.67361104), (1.1944444, 0.67361104), (1.28125, 0.5868055), (1.3680553, 0.5868055), (1.3680553, 0.67361104), (1.28125, 0.67361104), (1.3680553, 0.5868055), (1.454861, 0.5868055), (1.454861, 0.67361104), (1.3680553, 0.67361104), (1.454861, 0.5868055), (1.5416666, 0.5868055), (1.5416666, 0.67361104), (1.454861, 0.67361104), (-0.5416666, 0.67361104), (-0.4548611, 0.67361104), (-0.4548611, 0.7604167), (-0.5416666, 0.7604167), (-0.4548611, 0.67361104), (-0.36805552, 0.67361104), (-0.36805552, 0.7604167), (-0.4548611, 0.7604167), (-0.36805552, 0.67361104), (-0.28125, 0.67361104), (-0.28125, 0.7604167), (-0.36805552, 0.7604167), (-0.28125, 0.67361104), (-0.19444448, 0.67361104), (-0.19444448, 0.7604167), (-0.28125, 0.7604167), (-0.19444448, 0.67361104), (-0.107638896, 0.67361104), (-0.107638896, 0.7604167), (-0.19444448, 0.7604167), (-0.107638896, 0.67361104), (-0.020833313, 0.67361104), (-0.020833313, 0.7604167), (-0.107638896, 0.7604167), (-0.020833313, 0.67361104), (0.06597221, 0.67361104), (0.06597221, 0.7604167), (-0.020833313, 0.7604167), (0.06597221, 0.67361104), (0.15277776, 0.67361104), (0.15277776, 0.7604167), (0.06597221, 0.7604167), (0.15277776, 0.67361104), (0.23958334, 0.67361104), (0.23958334, 0.7604167), (0.15277776, 0.7604167), (0.23958334, 0.67361104), (0.32638887, 0.67361104), (0.32638887, 0.7604167), (0.23958334, 0.7604167), (0.32638887, 0.67361104), (0.4131944, 0.67361104), (0.4131944, 0.7604167), (0.32638887, 0.7604167), (0.4131944, 0.67361104), (0.5, 0.67361104), (0.5, 0.7604167), (0.4131944, 0.7604167), (0.5, 0.67361104), (0.5868055, 0.67361104), (0.5868055, 0.7604167), (0.5, 0.7604167), (0.5868055, 0.67361104), (0.67361104, 0.67361104), (0.67361104, 0.7604167), (0.5868055, 0.7604167), (0.67361104, 0.67361104), (0.7604166, 0.67361104), (0.7604166, 0.7604167), (0.67361104, 0.7604167), (0.7604166, 0.67361104), (0.8472222, 0.67361104), (0.8472222, 0.7604167), (0.7604166, 0.7604167), (0.8472222, 0.67361104), (0.9340277, 0.67361104), (0.9340277, 0.7604167), (0.8472222, 0.7604167), (0.9340277, 0.67361104), (1.0208333, 0.67361104), (1.0208333, 0.7604167), (0.9340277, 0.7604167), (1.0208333, 0.67361104), (1.1076388, 0.67361104), (1.1076388, 0.7604167), (1.0208333, 0.7604167), (1.1076388, 0.67361104), (1.1944444, 0.67361104), (1.1944444, 0.7604167), (1.1076388, 0.7604167), (1.1944444, 0.67361104), (1.28125, 0.67361104), (1.28125, 0.7604167), (1.1944444, 0.7604167), (1.28125, 0.67361104), (1.3680553, 0.67361104), (1.3680553, 0.7604167), (1.28125, 0.7604167), (1.3680553, 0.67361104), (1.454861, 0.67361104), (1.454861, 0.7604167), (1.3680553, 0.7604167), (1.454861, 0.67361104), (1.5416666, 0.67361104), (1.5416666, 0.7604167), (1.454861, 0.7604167), (-0.5416666, 0.7604167), (-0.4548611, 0.7604167), (-0.4548611, 0.8472222), (-0.5416666, 0.8472222), (-0.4548611, 0.7604167), (-0.36805552, 0.7604167), (-0.36805552, 0.8472222), (-0.4548611, 0.8472222), (-0.36805552, 0.7604167), (-0.28125, 0.7604167), (-0.28125, 0.8472222), (-0.36805552, 0.8472222), (-0.28125, 0.7604167), (-0.19444448, 0.7604167), (-0.19444448, 0.8472222), (-0.28125, 0.8472222), (-0.19444448, 0.7604167), (-0.107638896, 0.7604167), (-0.107638896, 0.8472222), (-0.19444448, 0.8472222), (-0.107638896, 0.7604167), (-0.020833313, 0.7604167), (-0.020833313, 0.8472222), (-0.107638896, 0.8472222), (-0.020833313, 0.7604167), (0.06597221, 0.7604167), (0.06597221, 0.8472222), (-0.020833313, 0.8472222), (0.06597221, 0.7604167), (0.15277776, 0.7604167), (0.15277776, 0.8472222), (0.06597221, 0.8472222), (0.15277776, 0.7604167), (0.23958334, 0.7604167), (0.23958334, 0.8472222), (0.15277776, 0.8472222), (0.23958334, 0.7604167), (0.32638887, 0.7604167), (0.32638887, 0.8472222), (0.23958334, 0.8472222), (0.32638887, 0.7604167), (0.4131944, 0.7604167), (0.4131944, 0.8472222), (0.32638887, 0.8472222), (0.4131944, 0.7604167), (0.5, 0.7604167), (0.5, 0.8472222), (0.4131944, 0.8472222), (0.5, 0.7604167), (0.5868055, 0.7604167), (0.5868055, 0.8472222), (0.5, 0.8472222), (0.5868055, 0.7604167), (0.67361104, 0.7604167), (0.67361104, 0.8472222), (0.5868055, 0.8472222), (0.67361104, 0.7604167), (0.7604166, 0.7604167), (0.7604166, 0.8472222), (0.67361104, 0.8472222), (0.7604166, 0.7604167), (0.8472222, 0.7604167), (0.8472222, 0.8472222), (0.7604166, 0.8472222), (0.8472222, 0.7604167), (0.9340277, 0.7604167), (0.9340277, 0.8472222), (0.8472222, 0.8472222), (0.9340277, 0.7604167), (1.0208333, 0.7604167), (1.0208333, 0.8472222), (0.9340277, 0.8472222), (1.0208333, 0.7604167), (1.1076388, 0.7604167), (1.1076388, 0.8472222), (1.0208333, 0.8472222), (1.1076388, 0.7604167), (1.1944444, 0.7604167), (1.1944444, 0.8472222), (1.1076388, 0.8472222), (1.1944444, 0.7604167), (1.28125, 0.7604167), (1.28125, 0.8472222), (1.1944444, 0.8472222), (1.28125, 0.7604167), (1.3680553, 0.7604167), (1.3680553, 0.8472222), (1.28125, 0.8472222), (1.3680553, 0.7604167), (1.454861, 0.7604167), (1.454861, 0.8472222), (1.3680553, 0.8472222), (1.454861, 0.7604167), (1.5416666, 0.7604167), (1.5416666, 0.8472222), (1.454861, 0.8472222), (-0.5416666, 0.8472222), (-0.4548611, 0.8472222), (-0.4548611, 0.93402773), (-0.5416666, 0.93402773), (-0.4548611, 0.8472222), (-0.36805552, 0.8472222), (-0.36805552, 0.93402773), (-0.4548611, 0.93402773), (-0.36805552, 0.8472222), (-0.28125, 0.8472222), (-0.28125, 0.93402773), (-0.36805552, 0.93402773), (-0.28125, 0.8472222), (-0.19444448, 0.8472222), (-0.19444448, 0.93402773), (-0.28125, 0.93402773), (-0.19444448, 0.8472222), (-0.107638896, 0.8472222), (-0.107638896, 0.93402773), (-0.19444448, 0.93402773), (-0.107638896, 0.8472222), (-0.020833313, 0.8472222), (-0.020833313, 0.93402773), (-0.107638896, 0.93402773), (-0.020833313, 0.8472222), (0.06597221, 0.8472222), (0.06597221, 0.93402773), (-0.020833313, 0.93402773), (0.06597221, 0.8472222), (0.15277776, 0.8472222), (0.15277776, 0.93402773), (0.06597221, 0.93402773), (0.15277776, 0.8472222), (0.23958334, 0.8472222), (0.23958334, 0.93402773), (0.15277776, 0.93402773), (0.23958334, 0.8472222), (0.32638887, 0.8472222), (0.32638887, 0.93402773), (0.23958334, 0.93402773), (0.32638887, 0.8472222), (0.4131944, 0.8472222), (0.4131944, 0.93402773), (0.32638887, 0.93402773), (0.4131944, 0.8472222), (0.5, 0.8472222), (0.5, 0.93402773), (0.4131944, 0.93402773), (0.5, 0.8472222), (0.5868055, 0.8472222), (0.5868055, 0.93402773), (0.5, 0.93402773), (0.5868055, 0.8472222), (0.67361104, 0.8472222), (0.67361104, 0.93402773), (0.5868055, 0.93402773), (0.67361104, 0.8472222), (0.7604166, 0.8472222), (0.7604166, 0.93402773), (0.67361104, 0.93402773), (0.7604166, 0.8472222), (0.8472222, 0.8472222), (0.8472222, 0.93402773), (0.7604166, 0.93402773), (0.8472222, 0.8472222), (0.9340277, 0.8472222), (0.9340277, 0.93402773), (0.8472222, 0.93402773), (0.9340277, 0.8472222), (1.0208333, 0.8472222), (1.0208333, 0.93402773), (0.9340277, 0.93402773), (1.0208333, 0.8472222), (1.1076388, 0.8472222), (1.1076388, 0.93402773), (1.0208333, 0.93402773), (1.1076388, 0.8472222), (1.1944444, 0.8472222), (1.1944444, 0.93402773), (1.1076388, 0.93402773), (1.1944444, 0.8472222), (1.28125, 0.8472222), (1.28125, 0.93402773), (1.1944444, 0.93402773), (1.28125, 0.8472222), (1.3680553, 0.8472222), (1.3680553, 0.93402773), (1.28125, 0.93402773), (1.3680553, 0.8472222), (1.454861, 0.8472222), (1.454861, 0.93402773), (1.3680553, 0.93402773), (1.454861, 0.8472222), (1.5416666, 0.8472222), (1.5416666, 0.93402773), (1.454861, 0.93402773), (-0.5416666, 0.93402773), (-0.4548611, 0.93402773), (-0.4548611, 1.0208333), (-0.5416666, 1.0208333), (-0.4548611, 0.93402773), (-0.36805552, 0.93402773), (-0.36805552, 1.0208333), (-0.4548611, 1.0208333), (-0.36805552, 0.93402773), (-0.28125, 0.93402773), (-0.28125, 1.0208333), (-0.36805552, 1.0208333), (-0.28125, 0.93402773), (-0.19444448, 0.93402773), (-0.19444448, 1.0208333), (-0.28125, 1.0208333), (-0.19444448, 0.93402773), (-0.107638896, 0.93402773), (-0.107638896, 1.0208333), (-0.19444448, 1.0208333), (-0.107638896, 0.93402773), (-0.020833313, 0.93402773), (-0.020833313, 1.0208333), (-0.107638896, 1.0208333), (-0.020833313, 0.93402773), (0.06597221, 0.93402773), (0.06597221, 1.0208333), (-0.020833313, 1.0208333), (0.06597221, 0.93402773), (0.15277776, 0.93402773), (0.15277776, 1.0208333), (0.06597221, 1.0208333), (0.15277776, 0.93402773), (0.23958334, 0.93402773), (0.23958334, 1.0208333), (0.15277776, 1.0208333), (0.23958334, 0.93402773), (0.32638887, 0.93402773), (0.32638887, 1.0208333), (0.23958334, 1.0208333), (0.32638887, 0.93402773), (0.4131944, 0.93402773), (0.4131944, 1.0208333), (0.32638887, 1.0208333), (0.4131944, 0.93402773), (0.5, 0.93402773), (0.5, 1.0208333), (0.4131944, 1.0208333), (0.5, 0.93402773), (0.5868055, 0.93402773), (0.5868055, 1.0208333), (0.5, 1.0208333), (0.5868055, 0.93402773), (0.67361104, 0.93402773), (0.67361104, 1.0208333), (0.5868055, 1.0208333), (0.67361104, 0.93402773), (0.7604166, 0.93402773), (0.7604166, 1.0208333), (0.67361104, 1.0208333), (0.7604166, 0.93402773), (0.8472222, 0.93402773), (0.8472222, 1.0208333), (0.7604166, 1.0208333), (0.8472222, 0.93402773), (0.9340277, 0.93402773), (0.9340277, 1.0208333), (0.8472222, 1.0208333), (0.9340277, 0.93402773), (1.0208333, 0.93402773), (1.0208333, 1.0208333), (0.9340277, 1.0208333), (1.0208333, 0.93402773), (1.1076388, 0.93402773), (1.1076388, 1.0208333), (1.0208333, 1.0208333), (1.1076388, 0.93402773), (1.1944444, 0.93402773), (1.1944444, 1.0208333), (1.1076388, 1.0208333), (1.1944444, 0.93402773), (1.28125, 0.93402773), (1.28125, 1.0208333), (1.1944444, 1.0208333), (1.28125, 0.93402773), (1.3680553, 0.93402773), (1.3680553, 1.0208333), (1.28125, 1.0208333), (1.3680553, 0.93402773), (1.454861, 0.93402773), (1.454861, 1.0208333), (1.3680553, 1.0208333), (1.454861, 0.93402773), (1.5416666, 0.93402773), (1.5416666, 1.0208333), (1.454861, 1.0208333), (-0.5416666, 1.0208333), (-0.4548611, 1.0208333), (-0.4548611, 1.1076388), (-0.5416666, 1.1076388), (-0.4548611, 1.0208333), (-0.36805552, 1.0208333), (-0.36805552, 1.1076388), (-0.4548611, 1.1076388), (-0.36805552, 1.0208333), (-0.28125, 1.0208333), (-0.28125, 1.1076388), (-0.36805552, 1.1076388), (-0.28125, 1.0208333), (-0.19444448, 1.0208333), (-0.19444448, 1.1076388), (-0.28125, 1.1076388), (-0.19444448, 1.0208333), (-0.107638896, 1.0208333), (-0.107638896, 1.1076388), (-0.19444448, 1.1076388), (-0.107638896, 1.0208333), (-0.020833313, 1.0208333), (-0.020833313, 1.1076388), (-0.107638896, 1.1076388), (-0.020833313, 1.0208333), (0.06597221, 1.0208333), (0.06597221, 1.1076388), (-0.020833313, 1.1076388), (0.06597221, 1.0208333), (0.15277776, 1.0208333), (0.15277776, 1.1076388), (0.06597221, 1.1076388), (0.15277776, 1.0208333), (0.23958334, 1.0208333), (0.23958334, 1.1076388), (0.15277776, 1.1076388), (0.23958334, 1.0208333), (0.32638887, 1.0208333), (0.32638887, 1.1076388), (0.23958334, 1.1076388), (0.32638887, 1.0208333), (0.4131944, 1.0208333), (0.4131944, 1.1076388), (0.32638887, 1.1076388), (0.4131944, 1.0208333), (0.5, 1.0208333), (0.5, 1.1076388), (0.4131944, 1.1076388), (0.5, 1.0208333), (0.5868055, 1.0208333), (0.5868055, 1.1076388), (0.5, 1.1076388), (0.5868055, 1.0208333), (0.67361104, 1.0208333), (0.67361104, 1.1076388), (0.5868055, 1.1076388), (0.67361104, 1.0208333), (0.7604166, 1.0208333), (0.7604166, 1.1076388), (0.67361104, 1.1076388), (0.7604166, 1.0208333), (0.8472222, 1.0208333), (0.8472222, 1.1076388), (0.7604166, 1.1076388), (0.8472222, 1.0208333), (0.9340277, 1.0208333), (0.9340277, 1.1076388), (0.8472222, 1.1076388), (0.9340277, 1.0208333), (1.0208333, 1.0208333), (1.0208333, 1.1076388), (0.9340277, 1.1076388), (1.0208333, 1.0208333), (1.1076388, 1.0208333), (1.1076388, 1.1076388), (1.0208333, 1.1076388), (1.1076388, 1.0208333), (1.1944444, 1.0208333), (1.1944444, 1.1076388), (1.1076388, 1.1076388), (1.1944444, 1.0208333), (1.28125, 1.0208333), (1.28125, 1.1076388), (1.1944444, 1.1076388), (1.28125, 1.0208333), (1.3680553, 1.0208333), (1.3680553, 1.1076388), (1.28125, 1.1076388), (1.3680553, 1.0208333), (1.454861, 1.0208333), (1.454861, 1.1076388), (1.3680553, 1.1076388), (1.454861, 1.0208333), (1.5416666, 1.0208333), (1.5416666, 1.1076388), (1.454861, 1.1076388), (-0.5416666, 1.1076388), (-0.4548611, 1.1076388), (-0.4548611, 1.1944444), (-0.5416666, 1.1944444), (-0.4548611, 1.1076388), (-0.36805552, 1.1076388), (-0.36805552, 1.1944444), (-0.4548611, 1.1944444), (-0.36805552, 1.1076388), (-0.28125, 1.1076388), (-0.28125, 1.1944444), (-0.36805552, 1.1944444), (-0.28125, 1.1076388), (-0.19444448, 1.1076388), (-0.19444448, 1.1944444), (-0.28125, 1.1944444), (-0.19444448, 1.1076388), (-0.107638896, 1.1076388), (-0.107638896, 1.1944444), (-0.19444448, 1.1944444), (-0.107638896, 1.1076388), (-0.020833313, 1.1076388), (-0.020833313, 1.1944444), (-0.107638896, 1.1944444), (-0.020833313, 1.1076388), (0.06597221, 1.1076388), (0.06597221, 1.1944444), (-0.020833313, 1.1944444), (0.06597221, 1.1076388), (0.15277776, 1.1076388), (0.15277776, 1.1944444), (0.06597221, 1.1944444), (0.15277776, 1.1076388), (0.23958334, 1.1076388), (0.23958334, 1.1944444), (0.15277776, 1.1944444), (0.23958334, 1.1076388), (0.32638887, 1.1076388), (0.32638887, 1.1944444), (0.23958334, 1.1944444), (0.32638887, 1.1076388), (0.4131944, 1.1076388), (0.4131944, 1.1944444), (0.32638887, 1.1944444), (0.4131944, 1.1076388), (0.5, 1.1076388), (0.5, 1.1944444), (0.4131944, 1.1944444), (0.5, 1.1076388), (0.5868055, 1.1076388), (0.5868055, 1.1944444), (0.5, 1.1944444), (0.5868055, 1.1076388), (0.67361104, 1.1076388), (0.67361104, 1.1944444), (0.5868055, 1.1944444), (0.67361104, 1.1076388), (0.7604166, 1.1076388), (0.7604166, 1.1944444), (0.67361104, 1.1944444), (0.7604166, 1.1076388), (0.8472222, 1.1076388), (0.8472222, 1.1944444), (0.7604166, 1.1944444), (0.8472222, 1.1076388), (0.9340277, 1.1076388), (0.9340277, 1.1944444), (0.8472222, 1.1944444), (0.9340277, 1.1076388), (1.0208333, 1.1076388), (1.0208333, 1.1944444), (0.9340277, 1.1944444), (1.0208333, 1.1076388), (1.1076388, 1.1076388), (1.1076388, 1.1944444), (1.0208333, 1.1944444), (1.1076388, 1.1076388), (1.1944444, 1.1076388), (1.1944444, 1.1944444), (1.1076388, 1.1944444), (1.1944444, 1.1076388), (1.28125, 1.1076388), (1.28125, 1.1944444), (1.1944444, 1.1944444), (1.28125, 1.1076388), (1.3680553, 1.1076388), (1.3680553, 1.1944444), (1.28125, 1.1944444), (1.3680553, 1.1076388), (1.454861, 1.1076388), (1.454861, 1.1944444), (1.3680553, 1.1944444), (1.454861, 1.1076388), (1.5416666, 1.1076388), (1.5416666, 1.1944444), (1.454861, 1.1944444), (-0.5416666, 1.1944444), (-0.4548611, 1.1944444), (-0.4548611, 1.28125), (-0.5416666, 1.28125), (-0.4548611, 1.1944444), (-0.36805552, 1.1944444), (-0.36805552, 1.28125), (-0.4548611, 1.28125), (-0.36805552, 1.1944444), (-0.28125, 1.1944444), (-0.28125, 1.28125), (-0.36805552, 1.28125), (-0.28125, 1.1944444), (-0.19444448, 1.1944444), (-0.19444448, 1.28125), (-0.28125, 1.28125), (-0.19444448, 1.1944444), (-0.107638896, 1.1944444), (-0.107638896, 1.28125), (-0.19444448, 1.28125), (-0.107638896, 1.1944444), (-0.020833313, 1.1944444), (-0.020833313, 1.28125), (-0.107638896, 1.28125), (-0.020833313, 1.1944444), (0.06597221, 1.1944444), (0.06597221, 1.28125), (-0.020833313, 1.28125), (0.06597221, 1.1944444), (0.15277776, 1.1944444), (0.15277776, 1.28125), (0.06597221, 1.28125), (0.15277776, 1.1944444), (0.23958334, 1.1944444), (0.23958334, 1.28125), (0.15277776, 1.28125), (0.23958334, 1.1944444), (0.32638887, 1.1944444), (0.32638887, 1.28125), (0.23958334, 1.28125), (0.32638887, 1.1944444), (0.4131944, 1.1944444), (0.4131944, 1.28125), (0.32638887, 1.28125), (0.4131944, 1.1944444), (0.5, 1.1944444), (0.5, 1.28125), (0.4131944, 1.28125), (0.5, 1.1944444), (0.5868055, 1.1944444), (0.5868055, 1.28125), (0.5, 1.28125), (0.5868055, 1.1944444), (0.67361104, 1.1944444), (0.67361104, 1.28125), (0.5868055, 1.28125), (0.67361104, 1.1944444), (0.7604166, 1.1944444), (0.7604166, 1.28125), (0.67361104, 1.28125), (0.7604166, 1.1944444), (0.8472222, 1.1944444), (0.8472222, 1.28125), (0.7604166, 1.28125), (0.8472222, 1.1944444), (0.9340277, 1.1944444), (0.9340277, 1.28125), (0.8472222, 1.28125), (0.9340277, 1.1944444), (1.0208333, 1.1944444), (1.0208333, 1.28125), (0.9340277, 1.28125), (1.0208333, 1.1944444), (1.1076388, 1.1944444), (1.1076388, 1.28125), (1.0208333, 1.28125), (1.1076388, 1.1944444), (1.1944444, 1.1944444), (1.1944444, 1.28125), (1.1076388, 1.28125), (1.1944444, 1.1944444), (1.28125, 1.1944444), (1.28125, 1.28125), (1.1944444, 1.28125), (1.28125, 1.1944444), (1.3680553, 1.1944444), (1.3680553, 1.28125), (1.28125, 1.28125), (1.3680553, 1.1944444), (1.454861, 1.1944444), (1.454861, 1.28125), (1.3680553, 1.28125), (1.454861, 1.1944444), (1.5416666, 1.1944444), (1.5416666, 1.28125), (1.454861, 1.28125), (-0.5416666, 1.28125), (-0.4548611, 1.28125), (-0.4548611, 1.3680553), (-0.5416666, 1.3680553), (-0.4548611, 1.28125), (-0.36805552, 1.28125), (-0.36805552, 1.3680553), (-0.4548611, 1.3680553), (-0.36805552, 1.28125), (-0.28125, 1.28125), (-0.28125, 1.3680553), (-0.36805552, 1.3680553), (-0.28125, 1.28125), (-0.19444448, 1.28125), (-0.19444448, 1.3680553), (-0.28125, 1.3680553), (-0.19444448, 1.28125), (-0.107638896, 1.28125), (-0.107638896, 1.3680553), (-0.19444448, 1.3680553), (-0.107638896, 1.28125), (-0.020833313, 1.28125), (-0.020833313, 1.3680553), (-0.107638896, 1.3680553), (-0.020833313, 1.28125), (0.06597221, 1.28125), (0.06597221, 1.3680553), (-0.020833313, 1.3680553), (0.06597221, 1.28125), (0.15277776, 1.28125), (0.15277776, 1.3680553), (0.06597221, 1.3680553), (0.15277776, 1.28125), (0.23958334, 1.28125), (0.23958334, 1.3680553), (0.15277776, 1.3680553), (0.23958334, 1.28125), (0.32638887, 1.28125), (0.32638887, 1.3680553), (0.23958334, 1.3680553), (0.32638887, 1.28125), (0.4131944, 1.28125), (0.4131944, 1.3680553), (0.32638887, 1.3680553), (0.4131944, 1.28125), (0.5, 1.28125), (0.5, 1.3680553), (0.4131944, 1.3680553), (0.5, 1.28125), (0.5868055, 1.28125), (0.5868055, 1.3680553), (0.5, 1.3680553), (0.5868055, 1.28125), (0.67361104, 1.28125), (0.67361104, 1.3680553), (0.5868055, 1.3680553), (0.67361104, 1.28125), (0.7604166, 1.28125), (0.7604166, 1.3680553), (0.67361104, 1.3680553), (0.7604166, 1.28125), (0.8472222, 1.28125), (0.8472222, 1.3680553), (0.7604166, 1.3680553), (0.8472222, 1.28125), (0.9340277, 1.28125), (0.9340277, 1.3680553), (0.8472222, 1.3680553), (0.9340277, 1.28125), (1.0208333, 1.28125), (1.0208333, 1.3680553), (0.9340277, 1.3680553), (1.0208333, 1.28125), (1.1076388, 1.28125), (1.1076388, 1.3680553), (1.0208333, 1.3680553), (1.1076388, 1.28125), (1.1944444, 1.28125), (1.1944444, 1.3680553), (1.1076388, 1.3680553), (1.1944444, 1.28125), (1.28125, 1.28125), (1.28125, 1.3680553), (1.1944444, 1.3680553), (1.28125, 1.28125), (1.3680553, 1.28125), (1.3680553, 1.3680553), (1.28125, 1.3680553), (1.3680553, 1.28125), (1.454861, 1.28125), (1.454861, 1.3680553), (1.3680553, 1.3680553), (1.454861, 1.28125), (1.5416666, 1.28125), (1.5416666, 1.3680553), (1.454861, 1.3680553), (-0.5416666, 1.3680553), (-0.4548611, 1.3680553), (-0.4548611, 1.4548609), (-0.5416666, 1.4548609), (-0.4548611, 1.3680553), (-0.36805552, 1.3680553), (-0.36805552, 1.4548609), (-0.4548611, 1.4548609), (-0.36805552, 1.3680553), (-0.28125, 1.3680553), (-0.28125, 1.4548609), (-0.36805552, 1.4548609), (-0.28125, 1.3680553), (-0.19444448, 1.3680553), (-0.19444448, 1.4548609), (-0.28125, 1.4548609), (-0.19444448, 1.3680553), (-0.107638896, 1.3680553), (-0.107638896, 1.4548609), (-0.19444448, 1.4548609), (-0.107638896, 1.3680553), (-0.020833313, 1.3680553), (-0.020833313, 1.4548609), (-0.107638896, 1.4548609), (-0.020833313, 1.3680553), (0.06597221, 1.3680553), (0.06597221, 1.4548609), (-0.020833313, 1.4548609), (0.06597221, 1.3680553), (0.15277776, 1.3680553), (0.15277776, 1.4548609), (0.06597221, 1.4548609), (0.15277776, 1.3680553), (0.23958334, 1.3680553), (0.23958334, 1.4548609), (0.15277776, 1.4548609), (0.23958334, 1.3680553), (0.32638887, 1.3680553), (0.32638887, 1.4548609), (0.23958334, 1.4548609), (0.32638887, 1.3680553), (0.4131944, 1.3680553), (0.4131944, 1.4548609), (0.32638887, 1.4548609), (0.4131944, 1.3680553), (0.5, 1.3680553), (0.5, 1.4548609), (0.4131944, 1.4548609), (0.5, 1.3680553), (0.5868055, 1.3680553), (0.5868055, 1.4548609), (0.5, 1.4548609), (0.5868055, 1.3680553), (0.67361104, 1.3680553), (0.67361104, 1.4548609), (0.5868055, 1.4548609), (0.67361104, 1.3680553), (0.7604166, 1.3680553), (0.7604166, 1.4548609), (0.67361104, 1.4548609), (0.7604166, 1.3680553), (0.8472222, 1.3680553), (0.8472222, 1.4548609), (0.7604166, 1.4548609), (0.8472222, 1.3680553), (0.9340277, 1.3680553), (0.9340277, 1.4548609), (0.8472222, 1.4548609), (0.9340277, 1.3680553), (1.0208333, 1.3680553), (1.0208333, 1.4548609), (0.9340277, 1.4548609), (1.0208333, 1.3680553), (1.1076388, 1.3680553), (1.1076388, 1.4548609), (1.0208333, 1.4548609), (1.1076388, 1.3680553), (1.1944444, 1.3680553), (1.1944444, 1.4548609), (1.1076388, 1.4548609), (1.1944444, 1.3680553), (1.28125, 1.3680553), (1.28125, 1.4548609), (1.1944444, 1.4548609), (1.28125, 1.3680553), (1.3680553, 1.3680553), (1.3680553, 1.4548609), (1.28125, 1.4548609), (1.3680553, 1.3680553), (1.454861, 1.3680553), (1.454861, 1.4548609), (1.3680553, 1.4548609), (1.454861, 1.3680553), (1.5416666, 1.3680553), (1.5416666, 1.4548609), (1.454861, 1.4548609), (-0.5416666, 1.4548609), (-0.4548611, 1.4548609), (-0.4548611, 1.5416666), (-0.5416666, 1.5416666), (-0.4548611, 1.4548609), (-0.36805552, 1.4548609), (-0.36805552, 1.5416666), (-0.4548611, 1.5416666), (-0.36805552, 1.4548609), (-0.28125, 1.4548609), (-0.28125, 1.5416666), (-0.36805552, 1.5416666), (-0.28125, 1.4548609), (-0.19444448, 1.4548609), (-0.19444448, 1.5416666), (-0.28125, 1.5416666), (-0.19444448, 1.4548609), (-0.107638896, 1.4548609), (-0.107638896, 1.5416666), (-0.19444448, 1.5416666), (-0.107638896, 1.4548609), (-0.020833313, 1.4548609), (-0.020833313, 1.5416666), (-0.107638896, 1.5416666), (-0.020833313, 1.4548609), (0.06597221, 1.4548609), (0.06597221, 1.5416666), (-0.020833313, 1.5416666), (0.06597221, 1.4548609), (0.15277776, 1.4548609), (0.15277776, 1.5416666), (0.06597221, 1.5416666), (0.15277776, 1.4548609), (0.23958334, 1.4548609), (0.23958334, 1.5416666), (0.15277776, 1.5416666), (0.23958334, 1.4548609), (0.32638887, 1.4548609), (0.32638887, 1.5416666), (0.23958334, 1.5416666), (0.32638887, 1.4548609), (0.4131944, 1.4548609), (0.4131944, 1.5416666), (0.32638887, 1.5416666), (0.4131944, 1.4548609), (0.5, 1.4548609), (0.5, 1.5416666), (0.4131944, 1.5416666), (0.5, 1.4548609), (0.5868055, 1.4548609), (0.5868055, 1.5416666), (0.5, 1.5416666), (0.5868055, 1.4548609), (0.67361104, 1.4548609), (0.67361104, 1.5416666), (0.5868055, 1.5416666), (0.67361104, 1.4548609), (0.7604166, 1.4548609), (0.7604166, 1.5416666), (0.67361104, 1.5416666), (0.7604166, 1.4548609), (0.8472222, 1.4548609), (0.8472222, 1.5416666), (0.7604166, 1.5416666), (0.8472222, 1.4548609), (0.9340277, 1.4548609), (0.9340277, 1.5416666), (0.8472222, 1.5416666), (0.9340277, 1.4548609), (1.0208333, 1.4548609), (1.0208333, 1.5416666), (0.9340277, 1.5416666), (1.0208333, 1.4548609), (1.1076388, 1.4548609), (1.1076388, 1.5416666), (1.0208333, 1.5416666), (1.1076388, 1.4548609), (1.1944444, 1.4548609), (1.1944444, 1.5416666), (1.1076388, 1.5416666), (1.1944444, 1.4548609), (1.28125, 1.4548609), (1.28125, 1.5416666), (1.1944444, 1.5416666), (1.28125, 1.4548609), (1.3680553, 1.4548609), (1.3680553, 1.5416666), (1.28125, 1.5416666), (1.3680553, 1.4548609), (1.454861, 1.4548609), (1.454861, 1.5416666), (1.3680553, 1.5416666), (1.454861, 1.4548609), (1.5416666, 1.4548609), (1.5416666, 1.5416666), (1.454861, 1.5416666)] (\n            interpolation = \"faceVarying\"\n        )\n        int[] primvars:st:indices = None\n        int[] primvars:uv2:indices = None\n        int[] primvars:uv3:indices = None\n        uniform token subdivisionScheme = \"none\"\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Material \"Material\" (\n        references = None\n    )\n    {\n        token outputs:mtlx:surface.connect = </Ground/Material/PreviewSurface.outputs:out>\n        token outputs:realitykit:vertex\n        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (1584.082, 297.875)\n        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 208\n\n        def Shader \"PreviewSurface\"\n        {\n            uniform token info:id = \"ND_UsdPreviewSurface_surfaceshader\"\n            float inputs:clearcoat\n            float inputs:clearcoatRoughness\n            color3f inputs:diffuseColor = (0, 0, 0) (\n                colorSpace = \"srgb_texture\"\n            )\n            color3f inputs:diffuseColor.connect = None\n            color3f inputs:emissiveColor.connect = </Ground/Material/Add.outputs:out>\n            float inputs:ior\n            float inputs:metallic\n            float3 inputs:normal\n            float inputs:occlusion\n            float inputs:opacity\n            float inputs:roughness = 1\n            token outputs:out\n            float2 ui:nodegraph:node:pos = (1358.9023, 236.28516)\n            int ui:nodegraph:node:stackingOrder = 208\n            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = [\"Advanced\"]\n        }\n\n        def Shader \"Swizzle\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_swizzle_color4_color3\"\n            string inputs:channels = \"rgb\"\n            color4f inputs:in = (0, 0.9914394, 1, 1) (\n                colorSpace = \"srgb_texture\"\n            )\n            color4f inputs:in.connect = </Ground/Material/Reflection_Diffuse.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (600.34766, 201.72266)\n            int ui:nodegraph:node:stackingOrder = 214\n        }\n\n        def Shader \"Read_EmissionUV\"\n        {\n            uniform token info:id = \"ND_UsdPrimvarReader_vector2\"\n            float2 inputs:fallback\n            string inputs:varname = \"emissionUV\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (25.28125, 95.32422)\n            int ui:nodegraph:node:stackingOrder = 155\n        }\n\n        def Shader \"Read_AttenuationUV\"\n        {\n            uniform token info:id = \"ND_UsdPrimvarReader_vector2\"\n            float2 inputs:fallback\n            string inputs:varname = \"attenuationUV\"\n            float2 outputs:out\n            float2 ui:nodegraph:node:pos = (21.964844, 237.73828)\n            int ui:nodegraph:node:stackingOrder = 155\n        }\n\n        def Shader \"ViewDirection\"\n        {\n            uniform token info:id = \"ND_realitykit_viewdirection_vector3\"\n            float3 outputs:out\n            float2 ui:nodegraph:node:pos = (3.890625, 370.65625)\n            int ui:nodegraph:node:stackingOrder = 124\n        }\n\n        def Shader \"Reflection_Diffuse\"\n        {\n            uniform token info:id = \"ND_realitykit_light_spill_diffuse\"\n            asset inputs:attenuationMap = @DefaultAttenuationMap.exr@\n            float2 inputs:attenuationUV.connect = </Ground/Material/Read_AttenuationUV.outputs:out>\n            float2 inputs:emitterUV.connect = </Ground/Material/Read_EmissionUV.outputs:out>\n            color4f outputs:out\n            float2 ui:nodegraph:node:pos = (278.48438, 138.34766)\n            int ui:nodegraph:node:stackingOrder = 167\n        }\n\n        def Shader \"Reflection_Specular\"\n        {\n            uniform token info:id = \"ND_realitykit_light_spill_specular\"\n            float2 inputs:antialiasingStrength\n            float3 inputs:reflection_origin\n            float3 inputs:unreflected_direction.connect = </Ground/Material/ViewDirection.outputs:out>\n            color4f outputs:out\n            float2 ui:nodegraph:node:pos = (304.35938, 380.5625)\n            int ui:nodegraph:node:stackingOrder = 168\n        }\n\n        def Shader \"Separate4\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_separate4_color4\"\n            color4f inputs:in.connect = </Ground/Material/Reflection_Specular.outputs:out>\n            float outputs:outa\n            float outputs:outb\n            float outputs:outg\n            float outputs:outr\n            float2 ui:nodegraph:node:pos = (570.3125, 468.03516)\n            int ui:nodegraph:node:stackingOrder = 169\n        }\n\n        def Shader \"Combine3\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_combine3_color3\"\n            float inputs:in1.connect = </Ground/Material/Separate4.outputs:outr>\n            float inputs:in2.connect = </Ground/Material/Separate4.outputs:outg>\n            float inputs:in3.connect = </Ground/Material/Separate4.outputs:outb>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (748.46875, 459.0625)\n            int ui:nodegraph:node:stackingOrder = 174\n        }\n\n        def Shader \"Mix_1\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_mix_color3\"\n            color3f inputs:bg\n            color3f inputs:fg.connect = </Ground/Material/Combine3.outputs:out>\n            float inputs:mix.connect = </Ground/Material/Separate4.outputs:outa>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (934.75, 462.09375)\n            int ui:nodegraph:node:stackingOrder = 212\n        }\n\n        def Shader \"Add\" (\n            references = None\n        )\n        {\n            uniform token info:id = \"ND_add_color3\"\n            color3f inputs:in1.connect = </Ground/Material/Swizzle.outputs:out>\n            color3f inputs:in2.connect = </Ground/Material/Mix_1.outputs:out>\n            color3f outputs:out\n            float2 ui:nodegraph:node:pos = (1128.5977, 255.71094)\n            int ui:nodegraph:node:stackingOrder = 210\n        }\n    }\n}\n\n"
  },
  {
    "path": "bsky 3D/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "content": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildren = [\"Sphere_Left\", \"Sphere_Right\", \"GridMaterial\"]\n    def \"SkyDome\" (\n        active = true\n        prepend references = @SkyDome.usdz@\n    )\n    {\n        float3 xformOp:scale = (0.01, 0.01, 0.01)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n    }\n\n    def Xform \"Video_Dock\" (\n        references = None\n    )\n    {\n        double3 xformOp:translate = (0, 0.8, -3)\n        uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n        def Xform \"Player\"\n        {\n            double3 xformOp:translate = (0, 0.6, 0)\n            uniform token[] xformOpOrder = [\"xformOp:translate\", \"xformOp:orient\", \"xformOp:scale\"]\n\n            def RealityKitComponent \"CustomDockingRegion\"\n            {\n                token info:id = \"RealityKit.CustomDockingRegion\"\n\n                def RealityKitStruct \"m_bounds\"\n                {\n                    float3 max = (1.2, 0.5, 0)\n                    float3 min = (-1.2, -0.5, -0)\n                }\n            }\n        }\n\n        def \"Ground\" (\n            prepend references = @Ground/Ground.usda@\n        )\n        {\n        }\n    }\n}\n\n"
  },
  {
    "path": "bsky 3D/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "content": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "bsky 3D/README.md",
    "content": "# Bluesky 3D\n3D Visualizer for Bluesky's Jetstream Firehose\n\nhttps://github.com/user-attachments/assets/2b5ef07d-bd55-42dd-815c-52516f6d6831\n"
  },
  {
    "path": "bsky 3D/bsky 3D/AppModel.swift",
    "content": "//\n//  AppModel.swift\n//  bsky 3D\n//\n//  Created by IVAN CAMPOS on 11/25/24.\n//\n\nimport SwiftUI\n\n/// Maintains app-wide state\n@MainActor\n@Observable\nclass AppModel {\n    let immersiveSpaceID = \"ImmersiveSpace\"\n    enum ImmersiveSpaceState {\n        case closed\n        case inTransition\n        case open\n    }\n    var immersiveSpaceState = ImmersiveSpaceState.closed\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.solidimagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.solidimagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  bsky 3D\n//\n//  Created by IVAN CAMPOS on 11/25/24.\n//\n\nimport SwiftUI\nimport RealityKit\n\nstruct ContentView: View {\n\n    var body: some View {\n        VStack {\n            \n            Text(\"Bluesky 3D\")\n                .font(.custom(\"Orbitron-ExtraBold\", size: 72))\n                .foregroundColor(Color(hex: \"#007BFF\") ?? .blue)\n            \n            Text(\"bsky.app/profile/ivancampos.com\")\n                .font(.custom(\"Orbitron-Regular\", size: 48))\n                .foregroundColor(Color(hex: \"#1e90ff\") ?? .cyan)\n            \n            ToggleImmersiveSpaceButton()\n        }\n    }\n}\n\nextension Color {\n    init?(hex: String) {\n        var hexSanitized = hex.trimmingCharacters(in: .whitespacesAndNewlines)\n        hexSanitized = hexSanitized.hasPrefix(\"#\") ? String(hexSanitized.dropFirst()) : hexSanitized\n\n        let length = hexSanitized.count\n        guard length == 6 || length == 8 else { return nil }\n\n        var rgb: UInt64 = 0\n        Scanner(string: hexSanitized).scanHexInt64(&rgb)\n\n        let red, green, blue, alpha: Double\n        if length == 6 {\n            red = Double((rgb >> 16) & 0xFF) / 255.0\n            green = Double((rgb >> 8) & 0xFF) / 255.0\n            blue = Double(rgb & 0xFF) / 255.0\n            alpha = 1.0\n        } else {\n            red = Double((rgb >> 24) & 0xFF) / 255.0\n            green = Double((rgb >> 16) & 0xFF) / 255.0\n            blue = Double((rgb >> 8) & 0xFF) / 255.0\n            alpha = Double(rgb & 0xFF) / 255.0\n        }\n\n        self.init(.sRGB, red: red, green: green, blue: blue, opacity: alpha)\n    }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/ImmersiveView.swift",
    "content": "//\n//  ImmersiveView.swift\n//  bsky 3D\n//\n//  Created by IVAN CAMPOS on 11/25/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimport RealityKitContent\n\nstruct ImmersiveView: View {\n    @Environment(AppModel.self) var appModel\n\n    @ObservedObject var webSocketService = WebSocketService()\n    \n    @State private var realityKitContent: RealityViewContent?\n    \n    var body: some View {\n        RealityView { content in\n            realityKitContent = content\n        }\n        .onAppear {\n            webSocketService.connect()\n        }\n        .onDisappear {\n            webSocketService.disconnect()\n        }\n        .onChange(of: webSocketService.postText) { oldValue, newValue in\n            guard let realityKitContent = realityKitContent else { return }\n\n            // Create and configure a new text entity based on the new value\n            let textEntity = createTextEntity(text: newValue)\n\n            // Add the new entity to the RealityKit content\n            realityKitContent.add(textEntity)\n            \n            // Schedule the textEntity to fade away after 3 seconds\n            DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {\n                // Scale the textEntity to zero over 1 second\n                textEntity.move(to: Transform(scale: .zero), relativeTo: textEntity, duration: 1.0)\n                \n                // Schedule removal of the textEntity after the animation duration\n                DispatchQueue.main.asyncAfter(deadline: .now() + 4.0) { // 3 seconds + 1 second for animation\n                    realityKitContent.remove(textEntity)\n                }\n            }\n        }\n        .preferredSurroundingsEffect(.colorMultiply(.gray))\n    }\n    \n    func createTextEntity(text: String) -> ModelEntity {\n        print(\"Creating text entity: \\(text)\")\n        \n        // Determine the color based on the text content\n        let textColor: UIColor\n        var fontName: String = \"Orbitron-Regular\"\n        if containsJapanese(text: text) {\n            textColor = .red\n            fontName = \"Orbitron-ExtraBold\"\n        } else if text.lowercased().hasPrefix(\"http\") {\n            textColor = .cyan\n        } else if text.hasPrefix(\"@\") || text.hasPrefix(\"#\") {\n            textColor = .green\n        } else if text.lowercased().contains(\"bitcoin\") || text.lowercased().contains(\"btc\") {\n            textColor = .orange\n        } else if text.lowercased().contains(\"bluesky\") {\n            textColor = UIColor(red: 0.0, green: 123.0/255.0, blue: 255.0/255.0, alpha: 1.0)\n        } else {\n            textColor = .white\n        }\n\n        // Create the text mesh\n        let textMesh = MeshResource.generateText(\n            text,\n            extrusionDepth: 0.0,  // Depth of the 3D text\n            font: UIFont(name: fontName, size: 0.05) ?? .systemFont(ofSize: 0.05),  // System font or a custom one\n            containerFrame: CGRect(x: 0, y: 0, width: 1.5, height: 0.75),\n            alignment: .center,     // Center alignment\n            lineBreakMode: .byWordWrapping\n        )\n\n        // Create a material for the text\n        let material = UnlitMaterial(color: textColor)\n\n        // Combine the mesh and material into a model entity\n        let textEntity = ModelEntity(mesh: textMesh, materials: [material])\n\n        // Randomize the position (in meters) of the text entity within a certain range\n        let randomX = Float.random(in: -2...0)\n        let randomY = Float.random(in: 0.5...2.0)\n        let randomZ = Float.random(in: -4.0 ... -1.0)\n\n        // Position the text entity\n        textEntity.position = [randomX, randomY, randomZ]  // Set the randomized position\n\n        return textEntity\n    }\n\n    // Function to check if the text contains Japanese characters\n    func containsJapanese(text: String) -> Bool {\n        for scalar in text.unicodeScalars {\n            if (scalar.value >= 0x3040 && scalar.value <= 0x309F) ||  // Hiragana\n               (scalar.value >= 0x30A0 && scalar.value <= 0x30FF) ||  // Katakana\n               (scalar.value >= 0x4E00 && scalar.value <= 0x9FAF) {  // Kanji\n                return true\n            }\n        }\n        return false\n    }\n    \n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n    <key>UIAppFonts</key>\n    <array>\n        <string>Orbitron.ttf</string>\n        <string>Orbitron-ExtraBold.ttf</string>\n    </array>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationPreferredDefaultSceneSessionRole</key>\n\t\t<string>UIWindowSceneSessionRoleApplication</string>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<true/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/Root.swift",
    "content": "//\n//  Root.swift\n//  Jetstream\n//\n//  Created by IVAN CAMPOS on 11/24/24.\n//\n\nimport Foundation\n\n// Top-level JSON structure\nstruct Root: Codable {\n    let did: String\n    let timeUs: Int\n    let kind: String\n    let commit: Commit?\n\n    enum CodingKeys: String, CodingKey {\n        case did\n        case timeUs = \"time_us\"\n        case kind\n        case commit\n    }\n}\n\n// Commit structure\nstruct Commit: Codable {\n    let rev: String?\n    let operation: String?\n    let collection: String?\n    let rkey: String?\n    let record: Record?\n    let cid: String?\n}\n\n// Record structure\nstruct Record: Codable {\n    let type: String?\n    let createdAt: String?\n    let embed: Embed?\n    let langs: [String]?\n    let text: String?\n\n    enum CodingKeys: String, CodingKey {\n        case type = \"$type\"\n        case createdAt\n        case embed\n        case langs\n        case text\n    }\n}\n\n// Embed structure\nstruct Embed: Codable {\n    let type: String?\n    let media: Media?\n    let record: EmbedRecord?\n\n    enum CodingKeys: String, CodingKey {\n        case type = \"$type\"\n        case media\n        case record\n    }\n}\n\n// Media structure\nstruct Media: Codable {\n    let type: String?\n    let external: External?\n\n    enum CodingKeys: String, CodingKey {\n        case type = \"$type\"\n        case external\n    }\n}\n\n// External structure\nstruct External: Codable {\n    let description: String?\n    let thumb: Thumb?\n    let title: String?\n    let uri: String?\n}\n\n// Thumb structure\nstruct Thumb: Codable {\n    let type: String?\n    let ref: Ref?\n    let mimeType: String?\n    let size: Int?\n\n    enum CodingKeys: String, CodingKey {\n        case type = \"$type\"\n        case ref\n        case mimeType\n        case size\n    }\n}\n\n// Ref structure\nstruct Ref: Codable {\n    let link: String?\n\n    enum CodingKeys: String, CodingKey {\n        case link = \"$link\"\n    }\n}\n\n// EmbedRecord structure\nstruct EmbedRecord: Codable {\n    let type: String?\n    let record: RecordDetails?\n\n    enum CodingKeys: String, CodingKey {\n        case type = \"$type\"\n        case record\n    }\n}\n\n// RecordDetails structure\nstruct RecordDetails: Codable {\n    let cid: String?\n    let uri: String?\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/ToggleImmersiveSpaceButton.swift",
    "content": "//\n//  ToggleImmersiveSpaceButton.swift\n//  bsky 3D\n//\n//  Created by IVAN CAMPOS on 11/25/24.\n//\n\nimport SwiftUI\n\nstruct ToggleImmersiveSpaceButton: View {\n\n    @Environment(AppModel.self) private var appModel\n\n    @Environment(\\.dismissImmersiveSpace) private var dismissImmersiveSpace\n    @Environment(\\.openImmersiveSpace) private var openImmersiveSpace\n\n    var body: some View {\n        Button {\n            Task { @MainActor in\n                switch appModel.immersiveSpaceState {\n                    case .open:\n                        appModel.immersiveSpaceState = .inTransition\n                        await dismissImmersiveSpace()\n                        // Don't set immersiveSpaceState to .closed because there\n                        // are multiple paths to ImmersiveView.onDisappear().\n                        // Only set .closed in ImmersiveView.onDisappear().\n\n                    case .closed:\n                        appModel.immersiveSpaceState = .inTransition\n                        switch await openImmersiveSpace(id: appModel.immersiveSpaceID) {\n                            case .opened:\n                                // Don't set immersiveSpaceState to .open because there\n                                // may be multiple paths to ImmersiveView.onAppear().\n                                // Only set .open in ImmersiveView.onAppear().\n                                break\n\n                            case .userCancelled, .error:\n                                // On error, we need to mark the immersive space\n                                // as closed because it failed to open.\n                                fallthrough\n                            @unknown default:\n                                // On unknown response, assume space did not open.\n                                appModel.immersiveSpaceState = .closed\n                        }\n\n                    case .inTransition:\n                        // This case should not ever happen because button is disabled for this case.\n                        break\n                }\n            }\n        } label: {\n            Text(appModel.immersiveSpaceState == .open ? \"Hide Immersive Space\" : \"Show Immersive Space\")\n        }\n        .disabled(appModel.immersiveSpaceState == .inTransition)\n        .animation(.none, value: 0)\n        .fontWeight(.semibold)\n    }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/WebSocketService.swift",
    "content": "//\n//  WebSocketService.swift\n//  WebSockets\n//\n//  Created by IVAN CAMPOS on 11/24/24.\n//\n\nimport Foundation\nimport SwiftUI\n\nclass WebSocketService: ObservableObject {\n    private var webSocketTask: URLSessionWebSocketTask?\n    //ALL -> \"wss://jetstream2.us-west.bsky.network/subscribe\"\n    //POSTS -> \"wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=app.bsky.feed.post\"\n    /*\n     \"wss://jetstream2.us-west.bsky.network/subscribe?\n     wantedCollections=app.bsky.feed.post&\n     wantedCollections=app.bsky.feed.like&\n     wantedCollections=app.bsky.graph.follow&\n     wantedDids=did:plc:q6gjnaw2blty4crticxkmujt&\n     cursor=1725519626134432\"\n    */\n    private let url = URL(string: \"wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=app.bsky.feed.post\")!\n    \n    @Published var postText: String = \"Loading...\"\n    \n    init() {\n        \n    }\n    \n    deinit {\n        disconnect()\n    }\n    \n    func connect() {\n        let session = URLSession(configuration: .default)\n        webSocketTask = session.webSocketTask(with: url)\n        webSocketTask?.resume()\n        \n        receiveMessage()\n        \n        // Setup a ping/pong mechanism to keep the connection alive or detect disconnections.\n        setupHeartbeat()\n    }\n    \n    private func setupHeartbeat() {\n        // Send a ping at regular intervals\n        Timer.scheduledTimer(withTimeInterval: 30, repeats: true) { [weak self] _ in\n            self?.webSocketTask?.sendPing { error in\n                if let error = error {\n                    print(\"Ping failed: \\(error.localizedDescription)\")\n                    self?.reconnect()\n                }\n            }\n        }\n    }\n    \n    private func reconnect() {\n        disconnect()\n        connect()\n    }\n    \n    func disconnect() {\n        webSocketTask?.cancel(with: .goingAway, reason: nil)\n        webSocketTask = nil\n    }\n    \n    private func receiveMessage() {\n        webSocketTask?.receive { [weak self] result in\n            switch result {\n            case .failure(let error):\n                print(\"Error in receiving message: \\(error)\")\n            case .success(let message):\n                switch message {\n                case .string(let text):\n                    self?.handleMessage(text)\n                case .data(let data):\n                    //print(\"Received data: \\(data)\")\n                    if let text = String(data: data, encoding: .utf8) {\n                        self?.handleMessage(text)\n                    }\n                default:\n                    break\n                }\n                \n                self?.receiveMessage() // Keep listening\n            }\n        }\n    }\n    \n    private func handleMessage(_ text: String) {\n        guard let jsonData = text.data(using: .utf8) else {\n            print(\"Invalid JSON string.\")\n            return\n        }\n\n        do {\n            let root = try JSONDecoder().decode(Root.self, from: jsonData)\n            \n            guard let commit = root.commit else {\n                print(\"Commit data is missing.\")\n                return\n            }\n            \n            if let currentCollection = commit.collection, let currentRecord = commit.record?.text {\n                // print(\"Collection: \\(currentCollection), Record: \\(currentRecord)\")\n                \n                DispatchQueue.main.async {\n                    if currentRecord.range(\n                        of: \"$AAPL|bitcoin|Vision Pro|visionOS|BTC|XG|Miami Dolphins|xgalx|Dodgers|Boston|xcode|swiftUI|realityKit|spatial comp|reality|XR|simulation|immers|virtual reality|augmented reality|mixed reality|extended reality|artificial intelligence|openAI|futur|ethereum|kendrick|3D|bluesky|midjourney|ai art|aiart|tesla|GPT|nike|ps5|$ETH|innovation|NFL|NBA|starter pack|𝕏||₿|matrix|inception|cyber|playstation|skynet|robot\",\n                        options: [.regularExpression, .caseInsensitive]) != nil {\n                        self.postText = currentRecord\n                    }\n                }\n            } else {\n                print(\"Missing required fields: collection or record text.\")\n            }\n        } catch let DecodingError.keyNotFound(key, context) {\n            print(\"Key '\\(key.stringValue)' not found:\", context.debugDescription)\n        } catch let DecodingError.valueNotFound(type, context) {\n            print(\"Value of type '\\(type)' not found:\", context.debugDescription)\n        } catch let DecodingError.typeMismatch(type, context) {\n            print(\"Type mismatch for type '\\(type)':\", context.debugDescription)\n        } catch let DecodingError.dataCorrupted(context) {\n            print(\"Data corrupted:\", context.debugDescription)\n        } catch {\n            print(\"Unknown error: \\(error.localizedDescription)\")\n        }\n    }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D/bsky_3DApp.swift",
    "content": "//\n//  bsky_3DApp.swift\n//  bsky 3D\n//\n//  Created by IVAN CAMPOS on 11/25/24.\n//\n\nimport SwiftUI\n\n@main\nstruct bsky_3DApp: App {\n\n    @State private var appModel = AppModel()\n    \n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n                .environment(appModel)\n        }\n        .windowStyle(.plain)\n        .persistentSystemOverlays(.hidden)\n\n        ImmersiveSpace(id: appModel.immersiveSpaceID) {\n            ImmersiveView()\n                .environment(appModel)\n                .onAppear {\n                    appModel.immersiveSpaceState = .open\n                }\n                .onDisappear {\n                    appModel.immersiveSpaceState = .closed\n                }\n        }\n        .immersionStyle(selection: .constant(.mixed), in: .mixed)\n        \n    }\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 77;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3B62EA0C2CF4E8CB00F28ED4 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B62EA0B2CF4E8CB00F28ED4 /* RealityKitContent */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3B62EA062CF4E8CB00F28ED4 /* bsky 3D.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"bsky 3D.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3B62EA0A2CF4E8CB00F28ED4 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */\n\t\t3B62EA212CF4E8CC00F28ED4 /* Exceptions for \"bsky 3D\" folder in \"bsky 3D\" target */ = {\n\t\t\tisa = PBXFileSystemSynchronizedBuildFileExceptionSet;\n\t\t\tmembershipExceptions = (\n\t\t\t\tInfo.plist,\n\t\t\t);\n\t\t\ttarget = 3B62EA052CF4E8CB00F28ED4 /* bsky 3D */;\n\t\t};\n/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */\n\n/* Begin PBXFileSystemSynchronizedRootGroup section */\n\t\t3B62EA082CF4E8CB00F28ED4 /* bsky 3D */ = {\n\t\t\tisa = PBXFileSystemSynchronizedRootGroup;\n\t\t\texceptions = (\n\t\t\t\t3B62EA212CF4E8CC00F28ED4 /* Exceptions for \"bsky 3D\" folder in \"bsky 3D\" target */,\n\t\t\t);\n\t\t\tpath = \"bsky 3D\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXFileSystemSynchronizedRootGroup section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3B62EA032CF4E8CB00F28ED4 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3B62EA0C2CF4E8CB00F28ED4 /* RealityKitContent in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3B62E9FD2CF4E8CB00F28ED4 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B62EA082CF4E8CB00F28ED4 /* bsky 3D */,\n\t\t\t\t3B62EA092CF4E8CB00F28ED4 /* Packages */,\n\t\t\t\t3B62EA072CF4E8CB00F28ED4 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B62EA072CF4E8CB00F28ED4 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B62EA062CF4E8CB00F28ED4 /* bsky 3D.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3B62EA092CF4E8CB00F28ED4 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B62EA0A2CF4E8CB00F28ED4 /* RealityKitContent */,\n\t\t\t);\n\t\t\tpath = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3B62EA052CF4E8CB00F28ED4 /* bsky 3D */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3B62EA222CF4E8CC00F28ED4 /* Build configuration list for PBXNativeTarget \"bsky 3D\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3B62EA022CF4E8CB00F28ED4 /* Sources */,\n\t\t\t\t3B62EA032CF4E8CB00F28ED4 /* Frameworks */,\n\t\t\t\t3B62EA042CF4E8CB00F28ED4 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tfileSystemSynchronizedGroups = (\n\t\t\t\t3B62EA082CF4E8CB00F28ED4 /* bsky 3D */,\n\t\t\t);\n\t\t\tname = \"bsky 3D\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t3B62EA0B2CF4E8CB00F28ED4 /* RealityKitContent */,\n\t\t\t);\n\t\t\tproductName = \"bsky 3D\";\n\t\t\tproductReference = 3B62EA062CF4E8CB00F28ED4 /* bsky 3D.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3B62E9FE2CF4E8CB00F28ED4 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1620;\n\t\t\t\tLastUpgradeCheck = 1620;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3B62EA052CF4E8CB00F28ED4 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 16.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3B62EA012CF4E8CB00F28ED4 /* Build configuration list for PBXProject \"bsky 3D\" */;\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3B62E9FD2CF4E8CB00F28ED4;\n\t\t\tminimizedProjectReferenceProxies = 1;\n\t\t\tpreferredProjectObjectVersion = 77;\n\t\t\tproductRefGroup = 3B62EA072CF4E8CB00F28ED4 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3B62EA052CF4E8CB00F28ED4 /* bsky 3D */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3B62EA042CF4E8CB00F28ED4 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3B62EA022CF4E8CB00F28ED4 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3B62EA232CF4E8CC00F28ED4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"bsky 3D/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.bsky-3D\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 7;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B62EA242CF4E8CC00F28ED4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"bsky 3D/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 2DJDH872JZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(TARGET_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.ivancampos.bsky-3D\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"xros xrsimulator\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 7;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3B62EA252CF4E8CC00F28ED4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 2.1;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3B62EA262CF4E8CC00F28ED4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = xros;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 2.1;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3B62EA012CF4E8CB00F28ED4 /* Build configuration list for PBXProject \"bsky 3D\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B62EA252CF4E8CC00F28ED4 /* Debug */,\n\t\t\t\t3B62EA262CF4E8CC00F28ED4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3B62EA222CF4E8CC00F28ED4 /* Build configuration list for PBXNativeTarget \"bsky 3D\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3B62EA232CF4E8CC00F28ED4 /* Debug */,\n\t\t\t\t3B62EA242CF4E8CC00F28ED4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t3B62EA0B2CF4E8CB00F28ED4 /* RealityKitContent */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = RealityKitContent;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3B62E9FE2CF4E8CB00F28ED4 /* Project object */;\n}\n"
  },
  {
    "path": "bsky 3D/bsky 3D.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  }
]