[
  {
    "path": "README.md",
    "content": "# temperature-swiftui\n\n\n![temperature](https://user-images.githubusercontent.com/7387461/228286617-0a7b1d6e-5085-4756-b0cc-38d1f5c0f66c.gif)\n\nMore behind the story here https://twitter.com/realvjy/status/1640342553563217920\n"
  },
  {
    "path": "Temperature/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": "Temperature/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"AppIcon.png\",\n      \"idiom\" : \"universal\",\n      \"platform\" : \"ios\",\n      \"size\" : \"1024x1024\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/Avatar 1.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"Avatar 1.jpg\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\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": "Temperature/Assets.xcassets/Avatar5.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"Avatar 5.jpg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"properties\" : {\n    \"template-rendering-intent\" : \"original\"\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/BG.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0.951\",\n          \"green\" : \"0.943\",\n          \"red\" : \"0.933\"\n        }\n      },\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/Spline.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"Spline.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\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": "Temperature/Assets.xcassets/cold.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"cold.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"cold@2x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"cold@3x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/curve-nob.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"curve-nob.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"curve-nob@2x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"curve-nob@3x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/fire.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"fire.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"fire@2x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"fire@3x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/mark-num.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"mark-num.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"mark-num@2x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"mark-num@3x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/nob.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"nob.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"nob@2x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"nob@3x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/normal.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"normal.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"filename\" : \"normal@2x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"filename\" : \"normal@3x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport SwiftUI\n\n\nstruct ContentView: View {\n    @State private var waveOffset: CGFloat = 0\n    \n    @State var progress: CGFloat = 0.5\n    @State var startAnimation: CGFloat = 0\n    \n    @State var waterFill: CGFloat = 0.5\n    var body: some View {\n        \n        ZStack {\n            LinearGradient(gradient: Gradient(colors: [Color(red: 1.0, green: 1.0, blue: 1.0, opacity: 1), Color(red: 0.93, green: 0.94, blue: 0.97, opacity: 1)]), startPoint: .init(x: 0.0, y: 0.75), endPoint: .init(x: 1.0, y: 1.0))\n                .edgesIgnoringSafeArea(.all)\n            Tube()\n            \n        }\n\n\n//        VStack {\n//            WaterWave()\n//            VStack {\n//                Image(systemName: \"globe\")\n//                    .imageScale(.large)\n//                    .foregroundColor(.accentColor)\n//                Text(\"Hello, world!\")\n//            }\n//            .padding()\n//            Spacer()\n//        }\n    }\n}\n\nstruct ContentView_Previews: PreviewProvider {\n    static var previews: some View {\n        ContentView()\n    }\n}\n\n"
  },
  {
    "path": "Temperature/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/TemperatureApp.swift",
    "content": "//\n//  TemperatureApp.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport SwiftUI\n\n@main\nstruct TemperatureApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n    }\n}\n"
  },
  {
    "path": "Temperature/Utilities/Extensions.swift",
    "content": "//\n//  Extensions.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\nimport SwiftUI\n\n\n\nextension UIColor {\n    convenience init(hex: String) {\n        var hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()\n        if hexString.hasPrefix(\"#\") {\n            hexString.remove(at: hexString.startIndex)\n        }\n        var rgbValue: UInt64 = 0\n        Scanner(string: hexString).scanHexInt64(&rgbValue)\n        let red = CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0\n        let green = CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0\n        let blue = CGFloat(rgbValue & 0x0000FF) / 255.0\n        self.init(red: red, green: green, blue: blue, alpha: 1.0)\n    }\n}\n"
  },
  {
    "path": "Temperature/View/Home.swift",
    "content": "//\n//  Home.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//  This is testing out screen. Check Tube.swift for final code\n\nimport SwiftUI\n\n\nstruct Home: View {\n    \n    @State var maxHeight: CGFloat = UIScreen.main.bounds.height / 3\n    @State var progress: CGFloat = 0.5\n    @State var startAnimation: CGFloat = 0\n    @State var sliderHeight: CGFloat = 0\n    @State var sliderProgress: CGFloat = 0\n    @State var lastDragValue: CGFloat = 0\n    var body: some View {\n        VStack{\n\n            // Mark: Wave Form\n            GeometryReader{proxy in\n                let size = proxy.size\n                \n                ZStack {\n                    \n                  \n                    WaterWaveS(progress: progress, waveHeight: 0.02, offset: startAnimation)\n                        .fill(\n                            LinearGradient(gradient: Gradient(colors: [\n                                Color(UIColor(hex: \"#EE3A32\")),\n                                Color(UIColor(hex: \"#EF803B\")),\n                                Color(UIColor(hex: \"#EBAC38\")),\n                                Color(UIColor(hex: \"#D7C05E\")),\n                                Color(UIColor(hex: \"#ABC770\")),\n                                Color(UIColor(hex: \"#55C1DC\")),\n                            ]), startPoint: .top, endPoint: .bottom)\n                        )\n                        .frame(width: 96, height: 456)\n                        .mask(RoundedRectangle(cornerRadius: 48))\n\n                    //Water Drops shapes\n                        .overlay(content: {\n                            ZStack{\n                                Circle()\n                                    .fill(.white.opacity(0.1))\n                                    .frame(width: 15, height: 15)\n                                    .offset(x: -20)\n                                \n                                Circle()\n                                    .fill(.white.opacity(0.2))\n                                    .frame(width: 15, height: 15)\n                                    .offset(x:40, y: 30)\n                                Circle()\n                                    .fill(.white.opacity(0.2))\n                                    .frame(width: 25, height: 25)\n                                    .offset(x: -30, y: 80)\n                                \n                                Circle()\n                                    .fill(.white.opacity(0.2))\n                                    .frame(width: 10, height: 10)\n                                    .offset(x: 40, y: 100)\n                                \n                                Circle()\n                                    .fill(.white.opacity(0.2))\n                                    .frame(width: 20, height: 20)\n                                    .offset(x: 50, y: 70)\n                            }\n                        })\n                    \n                    //Masking in drop\n//                        .mask {\n//                            Image(systemName: \"square.fill\")\n//                                .resizable()\n//                                .renderingMode(.template)\n//                                .aspectRatio(contentMode: .fit)\n//                                .padding(20)\n//                        }\n                    // Add button\n                        .overlay(alignment: .bottom) {\n//                            Button{\n//                                progress += 0.01\n//                            } label: {\n//                                Image(systemName: \"plus\")\n//                                    .font(.system(size: 40, weight: .black))\n//                                    .foregroundColor(Color(.blue))\n//                                    .shadow(radius: 2)\n//                                    .padding(25)\n//                                    .background(.white, in: Circle())\n//                            }\n//                            .offset(y: 40)\n                        }\n                    \n                }\n                .frame(width: size.width, height: size.height, alignment: .center)\n                .onAppear{\n                        //Looping animation\n                    withAnimation(.easeInOut(duration: 0.8).repeatForever(autoreverses: false)){\n                        //loop will not finish if staranimation will be larger than rect width\n                        startAnimation = size.width\n                    }\n                }\n                \n            }\n            VStack {\n                // Slider...\n                \n                ZStack(alignment: .bottom, content: {\n                    Rectangle()\n                        .fill(Color(.gray).opacity(0.15))\n                    Rectangle()\n                        .fill(Color.blue)\n                        .frame(height: sliderHeight)\n                })\n                .frame(width: 120, height: maxHeight)\n                .cornerRadius(32)\n                .gesture(DragGesture(minimumDistance: 0).onChanged({ (value) in\n                    //getting dragvalue...\n                    let translation = value.translation\n                    \n                    sliderHeight = -translation.height + lastDragValue\n                    \n                    //Limiing slide height value\n                    sliderHeight = sliderHeight > maxHeight ? maxHeight : sliderHeight\n                    \n                    sliderHeight = sliderHeight >= 0 ? sliderHeight : 0\n                    \n                    //updating progress\n                    let progres = sliderHeight / maxHeight\n                    sliderProgress = progres <= 1.0 ? progres : 1\n                    \n                    \n                }).onEnded({ (value) in\n                    \n                    // Storing las drag value for restorating\n                    \n                    sliderHeight = sliderHeight > maxHeight ? maxHeight : sliderHeight\n                    \n                    // Negative height...\n                    \n                    sliderHeight = sliderHeight >= 0 ? sliderHeight : 0\n                    \n                    lastDragValue = sliderHeight\n                    \n                    \n                    \n                    \n                }))\n                .overlay(\n                    Text(\"\\(Int(sliderProgress * 100))%\")\n                        .fontWeight(.semibold)\n                        .foregroundColor(.black)\n                        .padding(.vertical, 10)\n                        .padding(.horizontal, 18)\n                        .background(.white)\n                        .cornerRadius(12)\n                        .padding(.vertical, 25)\n                        .offset(y: sliderHeight < maxHeight - 105 ? -sliderHeight : -maxHeight+105)\n                    ,alignment: .bottom\n                )\n            }\n            Slider(value: $progress)\n                \n        }\n        .padding()\n        .frame(minWidth: 0, maxWidth: .infinity)\n\n    }\n}\n\n\nstruct Home_Previews: PreviewProvider {\n    static var previews: some View {\n        Home()\n    }\n}\n\nstruct WaterWaveS: Shape{\n    \n    var progress: CGFloat\n    \n    // Wave Height\n    var waveHeight: CGFloat\n    // Initial Animation Start\n    \n    var offset: CGFloat\n\n    //Enabling animation\n    \n    var animatableData: CGFloat{\n        get{offset}\n        set{offset = newValue}\n    }\n    \n    func path(in rect: CGRect) -> Path {\n        return Path{path in\n            path.move(to: .zero)\n            \n            //Mark: Drawing Waves using Sine\n            let progressHeight: CGFloat = (1 - progress) * rect.height\n            let height = waveHeight * rect.height\n            \n            \n            for value in stride(from: 0, through: rect.width, by: 1){\n                let x: CGFloat = value\n                let sine: CGFloat = sin(Angle(degrees: value + offset).radians)\n//                let sine: CGFloat = sin(1)\n                let y: CGFloat = progressHeight + (height * sine)\n                \n                path.addLine(to: CGPoint(x: x, y: y))\n                \n            }\n            \n            // Bottom Portion\n            path.addLine(to: CGPoint(x: rect.width, y: rect.height))\n            path.addLine(to: CGPoint(x: 0, y: rect.height))\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Temperature/View/Tube.swift",
    "content": "//\n//  Tube.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport SwiftUI\n\nstruct Tube: View {\n    @State var progress: CGFloat = 0.25\n    @State var startAnimation: CGFloat = 0\n    @State private var position = CGPoint(x: 100, y: 0)\n    @State private var dragOffset = CGSize.zero\n    let maskSize = CGSize(width: 122, height: 400)\n    @State private var sliderValue = 0.5\n    \n    \n    @State var maxHeight: CGFloat = 420\n    //Slider properties\n    @State var sliderHeight: CGFloat = 0\n    @State var sliderProgress: CGFloat = 0\n    @State var lastDragValue: CGFloat = 0\n    let menuItems = [\n        (\"Menu 1\", \"cold\"),\n        (\"Menu 2\", \"normal\"),\n        (\"Menu 3\", \"fire\")\n    ]\n    @State private var selectedMenuIndex = 1\n    @State private var backgroundColor = Color(UIColor(hex: \"#A4FFEF\"))\n    \n    // selected item index\n    @State private var selectedMenu = 0\n    \n    // slide background position\n    @State private var backgroundOffset: CGFloat = 0\n    @State private var previousSelectedMenu = 0\n    \n    var body: some View {\n        \n        \n        ZStack {\n            LinearGradient(gradient: Gradient(colors: [Color(red: 1.0, green: 1.0, blue: 1.0, opacity: 1), Color(red: 0.96, green: 0.96, blue: 0.97, opacity: 1)]), startPoint: .init(x: 0.5, y: 0.75), endPoint: .init(x: 1.0, y: 1.0))\n                .edgesIgnoringSafeArea(.all)\n            GeometryReader{ proxy in\n                let size = proxy.size\n                ZStack {\n                    ZStack {\n                        ZStack(alignment: .top, content: {\n                            Text(\"\\(Int((sliderProgress*(30))+20 ))\")\n                                .fontWeight(.bold)\n                                .foregroundColor(Color(UIColor(hex: \"#BFC7D7\")).opacity(0.6))\n                                .padding(.vertical, 10)\n                                .multilineTextAlignment(.trailing)\n                                .padding(.horizontal, 18)\n                                .font(.system(size: 120))\n                                .cornerRadius(12)\n                            Text(\"°\")\n                                .fontWeight(.regular)\n                                .foregroundColor(Color(UIColor(hex: \"#BFC7D7\")).opacity(0.6))\n                                .padding(.vertical, 10)\n                                .padding(.horizontal, 18)\n                                .font(.system(size: 80))\n                                .cornerRadius(12)\n                                .offset(x: 100)\n                        })\n                    }\n                    .frame(width: size.width, height: size.height, alignment: .top)\n                    .offset(y: -10)\n                    \n                    \n                    //Marker\n                    ZStack(alignment: .bottom, content:{\n                        Rectangle()\n                            .fill(Color(UIColor(hex: \"#DFE5F1\")).opacity(0.5))\n                            .frame(width: 52, height: 430, alignment: .bottom)\n                        Rectangle()\n                            .fill(Color(UIColor(hex: \"#A1A7B4\")).opacity(0.8))\n                            .frame(width: 52, height: sliderHeight, alignment: .bottom)\n                    })\n                    .frame(width: 52, height: 430, alignment: .bottom)\n                    .mask(Image(\"mark-num\"))\n                    .offset(x:-120)\n                    \n                    //Tube\n                    ZStack{\n                        RoundedRectangle(cornerRadius: 20)\n                            .fill(\n                                LinearGradient(gradient: Gradient(colors: [\n                                    Color(UIColor(hex: \"#EE3A32\")),\n                                    Color(UIColor(hex: \"#EF803B\")),\n                                    Color(UIColor(hex: \"#EBAC38\")),\n                                    Color(UIColor(hex: \"#D7C05E\")),\n                                    Color(UIColor(hex: \"#ABC770\")),\n                                    Color(UIColor(hex: \"#55C1DC\")),\n                                ]), startPoint: .top, endPoint: .bottom))\n                            .frame(width: 50, height: 406)\n                            .mask(RoundedRectangle(cornerRadius: 48))\n                            .blur(radius: 32)\n                            .opacity(0.8)\n                            .offset(x: -50, y: 0)\n                        RoundedRectangle(cornerRadius: 20)\n                            .fill(\n                                LinearGradient(gradient: Gradient(colors: [\n                                    Color(UIColor(hex: \"#ECECEC\")),\n                                    Color(UIColor(hex: \"#FFFFFF\")),\n                                    \n                                ]), startPoint: .top, endPoint: .bottom)\n                            )\n                            .frame(width: 96, height: 456)\n                            .mask(RoundedRectangle(cornerRadius: 48))\n                            .opacity(0.8)\n                        \n                        WaterWaveS(progress: sliderProgress, waveHeight: 0.04, offset: startAnimation+190)\n                            .fill(\n                                LinearGradient(gradient: Gradient(colors: [\n                                    Color(UIColor(hex: \"#EE3A32\")),\n                                    Color(UIColor(hex: \"#EF803B\")),\n                                    Color(UIColor(hex: \"#EBAC38\")),\n                                    Color(UIColor(hex: \"#D7C05E\")),\n                                    Color(UIColor(hex: \"#ABC770\")),\n                                    Color(UIColor(hex: \"#55C1DC\")),\n                                ]), startPoint: .top, endPoint: .bottom)\n                            )\n                            .frame(width: 96, height: 456)\n                            .mask(RoundedRectangle(cornerRadius: 48))\n                            .overlay(\n                                Capsule()\n                                    .stroke(Color(red: 236/255, green: 234/255, blue: 235/255),\n                                            lineWidth: 1)\n                                    .shadow(color: Color.black.opacity(0.7), radius: 10, x: 0, y: 0)\n                                    .clipShape(\n                                        Capsule()\n                                    )\n                            )\n                        \n                        WaterWaveS(progress: sliderProgress, waveHeight: 0.04, offset: startAnimation)\n                            .fill(\n                                LinearGradient(gradient: Gradient(colors: [\n                                    Color(UIColor(hex: \"#EE3A32\")),\n                                    Color(UIColor(hex: \"#EF803B\")),\n                                    Color(UIColor(hex: \"#EBAC38\")),\n                                    Color(UIColor(hex: \"#D7C05E\")),\n                                    Color(UIColor(hex: \"#ABC770\")),\n                                    Color(UIColor(hex: \"#55C1DC\")),\n                                ]), startPoint: .top, endPoint: .bottom)\n                            )\n                            .frame(width: 96, height: 456)\n                            .mask(RoundedRectangle(cornerRadius: 48))\n                            .opacity(0.5)\n                        RoundedRectangle(cornerRadius: 54)\n                            .strokeBorder(\n                                LinearGradient(gradient: Gradient(colors: [Color(red: 1.0, green: 1.0, blue: 1.0, opacity: 0.8), Color(red: 0.93, green: 0.94, blue: 0.97, opacity: 1)]), startPoint: .top, endPoint: .bottom)\n                                , lineWidth: 6)\n                            .frame(width: 108, height: 468)\n                        \n                        \n                        RoundedRectangle(cornerRadius: 20)\n                            .fill(.white)\n                            .frame(width: 26, height: 390)\n                            .mask(RoundedRectangle(cornerRadius: 48))\n                            .blur(radius: 7)\n                            .opacity(0.5)\n                            .blendMode(.overlay)\n                            .offset(x: 16, y: 0)\n                        \n                        RoundedRectangle(cornerRadius: 20)\n                            .fill(.white)\n                            .frame(width: 12, height: 370)\n                            .mask(RoundedRectangle(cornerRadius: 48))\n                            .blur(radius: 4)\n                            .opacity(0.3)\n                            .blendMode(.overlay)\n                            .offset(x: -24, y: 0)\n                        \n                    }\n                    \n                    .frame(width: size.width, height: size.height, alignment: .center)\n                    .onAppear{\n                        //Looping animation\n                        withAnimation(.linear(duration: 0.7).repeatForever(autoreverses: false)){\n                            //loop will not finish if staranimation will be larger than rect width\n                            startAnimation = size.width\n                        }\n                    }\n                    \n                    ZStack{\n                        //Other stack for slider\n                        VStack {\n                            ZStack{\n                                \n                                Rectangle()\n                                    .fill(getModifiedColor(Color.teal))\n                                    .frame(height: 1000)\n                                    .cornerRadius(10)\n                                    .padding(8)\n                                \n                                Rectangle()\n                                    .fill(.red)\n                                    .frame(width: 100, height: 100)\n                                    .blur(radius: 8)\n                            }\n                            .mask(Image(\"curve-nob\"))\n                            .offset(x: -24, y: position.y + 210 - sliderHeight)\n                        }\n                        .frame(width: 200)\n                        .mask(\n                            LinearGradient(gradient: Gradient(colors: [.clear, .black, .black, .black, .clear]), startPoint: .top, endPoint: .bottom)\n                                .frame(height: maxHeight + 100)\n                        )\n                        \n                        VStack {\n                            // Slider...\n                            \n                            ZStack(alignment: .bottom, content: {\n                                Rectangle()\n                                    .fill(Color(.gray).opacity(0.01))\n                                \n                                \n                                // - (maxheight - 48)\n                                //sliderHeight <= max ? -sliderHeight : -(sliderHeight - 48)\n                            })\n                            .frame(width: 120, height: maxHeight)\n                            .cornerRadius(32)\n                            .gesture(DragGesture(minimumDistance: 0).onChanged({ (value) in\n                                //getting dragvalue...\n                                let translation = value.translation\n                                \n                                sliderHeight = -translation.height + lastDragValue\n                                \n                                //Limiing slide height value\n                                sliderHeight = sliderHeight > maxHeight ? maxHeight : sliderHeight\n                                \n                                sliderHeight = sliderHeight >= 0 ? sliderHeight : 0\n                                \n                                //updating progress\n                                let progres = sliderHeight / maxHeight\n                                sliderProgress = progres <= 1.0 ? progres : 1\n                                \n                                switch sliderProgress {\n                                case 0..<0.5:\n                                    backgroundColor = Color(UIColor(hex: \"#A4FFEF\"))\n                                    selectedMenu = 0\n                                case 0.5..<0.8:\n                                    backgroundColor = Color(UIColor(hex: \"#FFEDAE\"))\n                                    selectedMenu = 1\n                                default:\n                                    backgroundColor = Color(UIColor(hex: \"#FFC5C5\"))\n                                    selectedMenu = 2\n                                }\n                                    \n                                \n                                \n                            }).onEnded({ (value) in\n                                \n                                // Storing las drag value for restorating\n                                \n                                sliderHeight = sliderHeight > maxHeight ? maxHeight : sliderHeight\n                                \n                                // Negative height...\n                                \n                                sliderHeight = sliderHeight >= 0 ? sliderHeight : 0\n                                \n                                lastDragValue = sliderHeight\n                                \n                                \n                            }))\n                            \n                        }.offset( y:0)\n                        VStack{\n                            Image(\"nob\")\n                                .resizable()\n                                .frame(width: 48, height: 48)\n                                .offset(x: 0, y: -sliderHeight  )\n                        }\n                        .frame(width: 120, height: maxHeight+48, alignment: .bottom)\n                        .zIndex(-1)\n                    }\n                    .frame(width: 200, height: 600)\n                    .offset(x: 130)\n                    \n                    \n                }\n                \n            }\n            \n            VStack{\n                Spacer()\n                HStack(spacing: 20) {\n                    MenuButton(imageName: \"cold\", label: \"cold\", isSelected: selectedMenu == 0)\n                        .scaleEffect(selectedMenu == 0 ? 1.2 : 1.0) // Scale up when selected\n                        .onTapGesture {\n                            backgroundColor = Color(UIColor(hex: \"#A4FFEF\"))\n                            previousSelectedMenu = selectedMenu\n                            sliderProgress = 0\n                            withAnimation {\n                                self.selectedMenu = 0\n                            }\n                        }\n                    MenuButton(imageName: \"normal\", label: \"normal\", isSelected: selectedMenu == 1)\n                        .scaleEffect(selectedMenu == 1 ? 1.2 : 1.0) // Scale up when selected\n                        .onTapGesture {\n                            backgroundColor = Color(UIColor(hex: \"#FFEDAE\"))\n                            previousSelectedMenu = selectedMenu\n                            sliderProgress = 0.5\n                            \n                            withAnimation {\n                                self.selectedMenu = 1\n                            }\n                        }\n                    \n                    MenuButton(imageName: \"fire\", label: \"fire\", isSelected: selectedMenu == 2)\n                        .scaleEffect(selectedMenu == 2 ? 1.2 : 1.0) // Scale up when selected\n                        .onTapGesture {\n                            backgroundColor = Color(UIColor(hex: \"#FFC5C5\"))\n                            previousSelectedMenu = selectedMenu\n                            sliderProgress = 1\n                            withAnimation {\n                                self.selectedMenu = 2\n                            }\n                        }\n                }\n                \n                .background(\n                    GeometryReader { proxy in\n                        let iconWidth = CGFloat(60) // change this to the actual width of your icon\n                        let backgroundWidth = proxy.size.width / 3\n                        let extraOffset = (proxy.size.width - backgroundWidth * 3 - 10) / 2 // calculate extra offset for first and last background\n                        let menuOffset = CGFloat(selectedMenu) * (backgroundWidth + 10)\n                        let centerOffset = (backgroundWidth - iconWidth) / 2\n                        let leadingOffset = centerOffset + menuOffset + extraOffset * (selectedMenu == 0 ? -1 : selectedMenu == 2 ? 1 : 0)\n\n                     \n                        RoundedRectangle(cornerRadius: 30)\n                            .foregroundColor(backgroundColor)\n                            .frame(width: iconWidth, height: proxy.size.height)\n                            .offset(x: leadingOffset - 10)\n                            .blur(radius: 7)\n                            .animation(.easeInOut(duration: 0.3), value: selectedMenu)\n                            .opacity(0.5)\n                            .onTapGesture {\n                                withAnimation {\n                                    self.selectedMenu = 2\n                                }\n                            }\n                    }\n                )\n                .frame(maxWidth: .infinity)\n                    .padding(.horizontal, 30)\n   \n            }\n            .offset(y: -10)\n            \n        }\n        \n        \n    }\n    \n    \n    \n    private func getModifiedColor(_ color: Color) -> Color {\n        let teal = Color.teal\n        let green = Color.green\n        let yellow = Color.yellow\n        let orange = Color.orange\n        let red = Color.red\n        \n        switch sliderProgress {\n        case 0..<0.125:\n            return blendColors(teal, green, fraction: sliderProgress / 0.125)\n        case 0.125..<0.25:\n            return blendColors(green, yellow, fraction: (sliderProgress - 0.125) / 0.125)\n        case 0.25..<0.5:\n            return blendColors(yellow, orange, fraction: (sliderProgress - 0.25) / 0.25)\n        case 0.5..<0.75:\n            return blendColors(orange, red, fraction: (sliderProgress - 0.5) / 0.25)\n        case 0.75...1:\n            return red\n        default:\n            return color\n        }\n    }\n    \n    private func blendColors(_ color1: Color, _ color2: Color, fraction: Double) -> Color {\n        let cgColor1 = color1.cgColor\n        let cgColor2 = color2.cgColor\n        \n        guard let components1 = cgColor1?.components, let components2 = cgColor2?.components else {\n            return color1\n        }\n        \n        let red = components1[0] * (1 - fraction) + components2[0] * fraction\n        let green = components1[1] * (1 - fraction) + components2[1] * fraction\n        let blue = components1[2] * (1 - fraction) + components2[2] * fraction\n        let alpha = components1[3] * (1 - fraction) + components2[3] * fraction\n        \n        return Color(red: Double(red), green: Double(green), blue: Double(blue), opacity: Double(alpha))\n    }\n}\n\n\nstruct Tube_Previews: PreviewProvider {\n    static var previews: some View {\n        Tube()\n    }\n}\n\n\nstruct MenuButton: View {\n    var imageName: String\n    var label: String\n    var isSelected: Bool\n    \n    var body: some View {\n        ZStack(alignment: .center, content:{\n            Image(imageName)\n                //.foregroundColor(isSelected ? .blue : .gray)\n                .frame(width: 48, height: 48)\n            Rectangle()\n                .fill(Color(UIColor(hex: \"#BFC7D7\")).opacity(isSelected ? 0.0 : 1.0))\n                .frame(width: 52, height: 430, alignment: .bottom)\n                \n        })\n        .mask(Image(imageName))\n        .frame(width: 48, height: 48)\n        .padding(.horizontal, 10)\n        .padding(.vertical, 10)\n        \n    }\n}\n"
  },
  {
    "path": "Temperature/WaterWave.swift",
    "content": "//\n//  WaterWave.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\n\n\nimport SwiftUI\n\nstruct WaterWave: View {\n    @State private var waveOffset: CGFloat = 0\n        \n    var body: some View {\n            ZStack {\n                LinearGradient(gradient: Gradient(colors: [.blue, .purple]), startPoint: .topLeading, endPoint: .bottomTrailing)\n                    .edgesIgnoringSafeArea(.all)\n                Path { path in\n                    let width = UIScreen.main.bounds.width\n                    let height = UIScreen.main.bounds.height\n                    let midY = height / 2\n                    let waveWidth = CGFloat(0.8)\n                    let xOffset = waveOffset * width\n                    path.move(to: CGPoint(x: 0, y: midY))\n                    path.addLine(to: CGPoint(x: 0, y: height))\n                    path.addLine(to: CGPoint(x: width, y: height))\n                    path.addLine(to: CGPoint(x: width, y: midY))\n                    path.addCurve(to: CGPoint(x: 0, y: midY),\n                                  control1: CGPoint(x: width * waveWidth * 0.25 + xOffset, y: height * 0.75),\n                                  control2: CGPoint(x: width * waveWidth * 0.75 + xOffset, y: height * 0.25))\n                }\n                .fill(Color.white)\n                .opacity(0.4)\n            }\n            .onAppear {\n                withAnimation(Animation.linear(duration: 1).repeatForever()) {\n                    self.waveOffset = 1\n                }\n            }\n        }\n}\n\nstruct WaterWave_Previews: PreviewProvider {\n    static var previews: some View {\n        WaterWave()\n    }\n}\n"
  },
  {
    "path": "Temperature.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\t1E16F2DC29CCE1C900AC642B /* TemperatureApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2DB29CCE1C900AC642B /* TemperatureApp.swift */; };\n\t\t1E16F2DE29CCE1C900AC642B /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2DD29CCE1C900AC642B /* ContentView.swift */; };\n\t\t1E16F2E029CCE1CA00AC642B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1E16F2DF29CCE1CA00AC642B /* Assets.xcassets */; };\n\t\t1E16F2E329CCE1CA00AC642B /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1E16F2E229CCE1CA00AC642B /* Preview Assets.xcassets */; };\n\t\t1E16F2ED29CCE1CA00AC642B /* TemperatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2EC29CCE1CA00AC642B /* TemperatureTests.swift */; };\n\t\t1E16F2F729CCE1CA00AC642B /* TemperatureUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2F629CCE1CA00AC642B /* TemperatureUITests.swift */; };\n\t\t1E16F2F929CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2F829CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift */; };\n\t\t1E16F30629CCE78400AC642B /* WaterWave.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F30529CCE78400AC642B /* WaterWave.swift */; };\n\t\t1E16F32729CCFF6B00AC642B /* Home.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F32629CCFF6B00AC642B /* Home.swift */; };\n\t\t1E16F32929CE1F8000AC642B /* Tube.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F32829CE1F8000AC642B /* Tube.swift */; };\n\t\t1E16F32C29CE216D00AC642B /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F32B29CE216D00AC642B /* Extensions.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t1E16F2E929CCE1CA00AC642B /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 1E16F2D029CCE1C900AC642B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 1E16F2D729CCE1C900AC642B;\n\t\t\tremoteInfo = Temperature;\n\t\t};\n\t\t1E16F2F329CCE1CA00AC642B /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 1E16F2D029CCE1C900AC642B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 1E16F2D729CCE1C900AC642B;\n\t\t\tremoteInfo = Temperature;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t1E16F2D829CCE1C900AC642B /* Temperature.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Temperature.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t1E16F2DB29CCE1C900AC642B /* TemperatureApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureApp.swift; sourceTree = \"<group>\"; };\n\t\t1E16F2DD29CCE1C900AC642B /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t1E16F2DF29CCE1CA00AC642B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t1E16F2E229CCE1CA00AC642B /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t1E16F2E829CCE1CA00AC642B /* TemperatureTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TemperatureTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t1E16F2EC29CCE1CA00AC642B /* TemperatureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureTests.swift; sourceTree = \"<group>\"; };\n\t\t1E16F2F229CCE1CA00AC642B /* TemperatureUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TemperatureUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t1E16F2F629CCE1CA00AC642B /* TemperatureUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureUITests.swift; sourceTree = \"<group>\"; };\n\t\t1E16F2F829CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureUITestsLaunchTests.swift; sourceTree = \"<group>\"; };\n\t\t1E16F30529CCE78400AC642B /* WaterWave.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaterWave.swift; sourceTree = \"<group>\"; };\n\t\t1E16F32629CCFF6B00AC642B /* Home.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Home.swift; sourceTree = \"<group>\"; };\n\t\t1E16F32829CE1F8000AC642B /* Tube.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tube.swift; sourceTree = \"<group>\"; };\n\t\t1E16F32B29CE216D00AC642B /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t1E16F2D529CCE1C900AC642B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t1E16F2E529CCE1CA00AC642B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t1E16F2EF29CCE1CA00AC642B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t1E16F2CF29CCE1C900AC642B = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1E16F2DA29CCE1C900AC642B /* Temperature */,\n\t\t\t\t1E16F2EB29CCE1CA00AC642B /* TemperatureTests */,\n\t\t\t\t1E16F2F529CCE1CA00AC642B /* TemperatureUITests */,\n\t\t\t\t1E16F2D929CCE1C900AC642B /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1E16F2D929CCE1C900AC642B /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1E16F2D829CCE1C900AC642B /* Temperature.app */,\n\t\t\t\t1E16F2E829CCE1CA00AC642B /* TemperatureTests.xctest */,\n\t\t\t\t1E16F2F229CCE1CA00AC642B /* TemperatureUITests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1E16F2DA29CCE1C900AC642B /* Temperature */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1E16F32A29CE213300AC642B /* Utilities */,\n\t\t\t\t1E16F32529CCFF4700AC642B /* View */,\n\t\t\t\t1E16F2DB29CCE1C900AC642B /* TemperatureApp.swift */,\n\t\t\t\t1E16F30529CCE78400AC642B /* WaterWave.swift */,\n\t\t\t\t1E16F2DD29CCE1C900AC642B /* ContentView.swift */,\n\t\t\t\t1E16F2DF29CCE1CA00AC642B /* Assets.xcassets */,\n\t\t\t\t1E16F2E129CCE1CA00AC642B /* Preview Content */,\n\t\t\t);\n\t\t\tpath = Temperature;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1E16F2E129CCE1CA00AC642B /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1E16F2E229CCE1CA00AC642B /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1E16F2EB29CCE1CA00AC642B /* TemperatureTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1E16F2EC29CCE1CA00AC642B /* TemperatureTests.swift */,\n\t\t\t);\n\t\t\tpath = TemperatureTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1E16F2F529CCE1CA00AC642B /* TemperatureUITests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1E16F2F629CCE1CA00AC642B /* TemperatureUITests.swift */,\n\t\t\t\t1E16F2F829CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift */,\n\t\t\t);\n\t\t\tpath = TemperatureUITests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1E16F32529CCFF4700AC642B /* View */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1E16F32629CCFF6B00AC642B /* Home.swift */,\n\t\t\t\t1E16F32829CE1F8000AC642B /* Tube.swift */,\n\t\t\t);\n\t\t\tpath = View;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1E16F32A29CE213300AC642B /* Utilities */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1E16F32B29CE216D00AC642B /* Extensions.swift */,\n\t\t\t);\n\t\t\tpath = Utilities;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t1E16F2D729CCE1C900AC642B /* Temperature */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 1E16F2FC29CCE1CA00AC642B /* Build configuration list for PBXNativeTarget \"Temperature\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t1E16F2D429CCE1C900AC642B /* Sources */,\n\t\t\t\t1E16F2D529CCE1C900AC642B /* Frameworks */,\n\t\t\t\t1E16F2D629CCE1C900AC642B /* 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 = Temperature;\n\t\t\tpackageProductDependencies = (\n\t\t\t);\n\t\t\tproductName = Temperature;\n\t\t\tproductReference = 1E16F2D829CCE1C900AC642B /* Temperature.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t1E16F2E729CCE1CA00AC642B /* TemperatureTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 1E16F2FF29CCE1CA00AC642B /* Build configuration list for PBXNativeTarget \"TemperatureTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t1E16F2E429CCE1CA00AC642B /* Sources */,\n\t\t\t\t1E16F2E529CCE1CA00AC642B /* Frameworks */,\n\t\t\t\t1E16F2E629CCE1CA00AC642B /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t1E16F2EA29CCE1CA00AC642B /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = TemperatureTests;\n\t\t\tproductName = TemperatureTests;\n\t\t\tproductReference = 1E16F2E829CCE1CA00AC642B /* TemperatureTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t1E16F2F129CCE1CA00AC642B /* TemperatureUITests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 1E16F30229CCE1CA00AC642B /* Build configuration list for PBXNativeTarget \"TemperatureUITests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t1E16F2EE29CCE1CA00AC642B /* Sources */,\n\t\t\t\t1E16F2EF29CCE1CA00AC642B /* Frameworks */,\n\t\t\t\t1E16F2F029CCE1CA00AC642B /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t1E16F2F429CCE1CA00AC642B /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = TemperatureUITests;\n\t\t\tproductName = TemperatureUITests;\n\t\t\tproductReference = 1E16F2F229CCE1CA00AC642B /* TemperatureUITests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.ui-testing\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t1E16F2D029CCE1C900AC642B /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1420;\n\t\t\t\tLastUpgradeCheck = 1420;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t1E16F2D729CCE1C900AC642B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 14.2;\n\t\t\t\t\t};\n\t\t\t\t\t1E16F2E729CCE1CA00AC642B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 14.2;\n\t\t\t\t\t\tTestTargetID = 1E16F2D729CCE1C900AC642B;\n\t\t\t\t\t};\n\t\t\t\t\t1E16F2F129CCE1CA00AC642B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 14.2;\n\t\t\t\t\t\tTestTargetID = 1E16F2D729CCE1C900AC642B;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 1E16F2D329CCE1C900AC642B /* Build configuration list for PBXProject \"Temperature\" */;\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 = 1E16F2CF29CCE1C900AC642B;\n\t\t\tpackageReferences = (\n\t\t\t);\n\t\t\tproductRefGroup = 1E16F2D929CCE1C900AC642B /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t1E16F2D729CCE1C900AC642B /* Temperature */,\n\t\t\t\t1E16F2E729CCE1CA00AC642B /* TemperatureTests */,\n\t\t\t\t1E16F2F129CCE1CA00AC642B /* TemperatureUITests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t1E16F2D629CCE1C900AC642B /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1E16F2E329CCE1CA00AC642B /* Preview Assets.xcassets in Resources */,\n\t\t\t\t1E16F2E029CCE1CA00AC642B /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t1E16F2E629CCE1CA00AC642B /* 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\t\t1E16F2F029CCE1CA00AC642B /* 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\t1E16F2D429CCE1C900AC642B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1E16F30629CCE78400AC642B /* WaterWave.swift in Sources */,\n\t\t\t\t1E16F32C29CE216D00AC642B /* Extensions.swift in Sources */,\n\t\t\t\t1E16F32929CE1F8000AC642B /* Tube.swift in Sources */,\n\t\t\t\t1E16F2DE29CCE1C900AC642B /* ContentView.swift in Sources */,\n\t\t\t\t1E16F32729CCFF6B00AC642B /* Home.swift in Sources */,\n\t\t\t\t1E16F2DC29CCE1C900AC642B /* TemperatureApp.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t1E16F2E429CCE1CA00AC642B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1E16F2ED29CCE1CA00AC642B /* TemperatureTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t1E16F2EE29CCE1CA00AC642B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1E16F2F729CCE1CA00AC642B /* TemperatureUITests.swift in Sources */,\n\t\t\t\t1E16F2F929CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t1E16F2EA29CCE1CA00AC642B /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 1E16F2D729CCE1C900AC642B /* Temperature */;\n\t\t\ttargetProxy = 1E16F2E929CCE1CA00AC642B /* PBXContainerItemProxy */;\n\t\t};\n\t\t1E16F2F429CCE1CA00AC642B /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 1E16F2D729CCE1C900AC642B /* Temperature */;\n\t\t\ttargetProxy = 1E16F2F329CCE1CA00AC642B /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t1E16F2FA29CCE1CA00AC642B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\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\tGCC_C_LANGUAGE_STANDARD = gnu11;\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\tIPHONEOS_DEPLOYMENT_TARGET = 16.2;\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 = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t1E16F2FB29CCE1CA00AC642B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\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\tGCC_C_LANGUAGE_STANDARD = gnu11;\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\tIPHONEOS_DEPLOYMENT_TARGET = 16.2;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t1E16F2FD29CCE1CA00AC642B /* 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 = \"\\\"Temperature/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 9GRRFW5PQZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\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 = overlayz.studio.Temperature;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\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\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t1E16F2FE29CCE1CA00AC642B /* 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 = \"\\\"Temperature/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = 9GRRFW5PQZ;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\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 = overlayz.studio.Temperature;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\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\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t1E16F30029CCE1CA00AC642B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 16.2;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.TemperatureTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = NO;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/Temperature.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Temperature\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t1E16F30129CCE1CA00AC642B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 16.2;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.TemperatureTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = NO;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/Temperature.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Temperature\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t1E16F30329CCE1CA00AC642B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.TemperatureUITests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = NO;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tTEST_TARGET_NAME = Temperature;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t1E16F30429CCE1CA00AC642B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.TemperatureUITests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = NO;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tTEST_TARGET_NAME = Temperature;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t1E16F2D329CCE1C900AC642B /* Build configuration list for PBXProject \"Temperature\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t1E16F2FA29CCE1CA00AC642B /* Debug */,\n\t\t\t\t1E16F2FB29CCE1CA00AC642B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t1E16F2FC29CCE1CA00AC642B /* Build configuration list for PBXNativeTarget \"Temperature\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t1E16F2FD29CCE1CA00AC642B /* Debug */,\n\t\t\t\t1E16F2FE29CCE1CA00AC642B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t1E16F2FF29CCE1CA00AC642B /* Build configuration list for PBXNativeTarget \"TemperatureTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t1E16F30029CCE1CA00AC642B /* Debug */,\n\t\t\t\t1E16F30129CCE1CA00AC642B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t1E16F30229CCE1CA00AC642B /* Build configuration list for PBXNativeTarget \"TemperatureUITests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t1E16F30329CCE1CA00AC642B /* Debug */,\n\t\t\t\t1E16F30429CCE1CA00AC642B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 1E16F2D029CCE1C900AC642B /* Project object */;\n}\n"
  },
  {
    "path": "Temperature.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": "Temperature.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": "Temperature.xcodeproj/xcshareddata/xcschemes/Temperature.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1420\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"1E16F2D729CCE1C900AC642B\"\n               BuildableName = \"Temperature.app\"\n               BlueprintName = \"Temperature\"\n               ReferencedContainer = \"container:Temperature.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\"\n            parallelizable = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"1E16F2E729CCE1CA00AC642B\"\n               BuildableName = \"TemperatureTests.xctest\"\n               BlueprintName = \"TemperatureTests\"\n               ReferencedContainer = \"container:Temperature.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n         <TestableReference\n            skipped = \"NO\"\n            parallelizable = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"1E16F2F129CCE1CA00AC642B\"\n               BuildableName = \"TemperatureUITests.xctest\"\n               BlueprintName = \"TemperatureUITests\"\n               ReferencedContainer = \"container:Temperature.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"1E16F2D729CCE1C900AC642B\"\n            BuildableName = \"Temperature.app\"\n            BlueprintName = \"Temperature\"\n            ReferencedContainer = \"container:Temperature.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"1E16F2D729CCE1C900AC642B\"\n            BuildableName = \"Temperature.app\"\n            BlueprintName = \"Temperature\"\n            ReferencedContainer = \"container:Temperature.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Temperature.xcodeproj/xcuserdata/vijayverma.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   uuid = \"984A9CBE-6AAE-43DD-9AC2-A4667B21E9AA\"\n   type = \"1\"\n   version = \"2.0\">\n</Bucket>\n"
  },
  {
    "path": "Temperature.xcodeproj/xcuserdata/vijayverma.xcuserdatad/xcschemes/xcschememanagement.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>SchemeUserState</key>\n\t<dict>\n\t\t<key>Temperature.xcscheme_^#shared#^_</key>\n\t\t<dict>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t</dict>\n\t<key>SuppressBuildableAutocreation</key>\n\t<dict>\n\t\t<key>1E16F2D729CCE1C900AC642B</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>1E16F2E729CCE1CA00AC642B</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>1E16F2F129CCE1CA00AC642B</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "TemperatureTests/TemperatureTests.swift",
    "content": "//\n//  TemperatureTests.swift\n//  TemperatureTests\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport XCTest\n@testable import Temperature\n\nfinal class TemperatureTests: XCTestCase {\n\n    override func setUpWithError() throws {\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n    }\n\n    override func tearDownWithError() throws {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n    }\n\n    func testExample() throws {\n        // This is an example of a functional test case.\n        // Use XCTAssert and related functions to verify your tests produce the correct results.\n        // Any test you write for XCTest can be annotated as throws and async.\n        // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.\n        // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.\n    }\n\n    func testPerformanceExample() throws {\n        // This is an example of a performance test case.\n        self.measure {\n            // Put the code you want to measure the time of here.\n        }\n    }\n\n}\n"
  },
  {
    "path": "TemperatureUITests/TemperatureUITests.swift",
    "content": "//\n//  TemperatureUITests.swift\n//  TemperatureUITests\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport XCTest\n\nfinal class TemperatureUITests: XCTestCase {\n\n    override func setUpWithError() throws {\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n\n        // In UI tests it is usually best to stop immediately when a failure occurs.\n        continueAfterFailure = false\n\n        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.\n    }\n\n    override func tearDownWithError() throws {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n    }\n\n    func testExample() throws {\n        // UI tests must launch the application that they test.\n        let app = XCUIApplication()\n        app.launch()\n\n        // Use XCTAssert and related functions to verify your tests produce the correct results.\n    }\n\n    func testLaunchPerformance() throws {\n        if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {\n            // This measures how long it takes to launch your application.\n            measure(metrics: [XCTApplicationLaunchMetric()]) {\n                XCUIApplication().launch()\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TemperatureUITests/TemperatureUITestsLaunchTests.swift",
    "content": "//\n//  TemperatureUITestsLaunchTests.swift\n//  TemperatureUITests\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport XCTest\n\nfinal class TemperatureUITestsLaunchTests: XCTestCase {\n\n    override class var runsForEachTargetApplicationUIConfiguration: Bool {\n        true\n    }\n\n    override func setUpWithError() throws {\n        continueAfterFailure = false\n    }\n\n    func testLaunch() throws {\n        let app = XCUIApplication()\n        app.launch()\n\n        // Insert steps here to perform after app launch but before taking a screenshot,\n        // such as logging into a test account or navigating somewhere in the app\n\n        let attachment = XCTAttachment(screenshot: app.screenshot())\n        attachment.name = \"Launch Screen\"\n        attachment.lifetime = .keepAlways\n        add(attachment)\n    }\n}\n"
  }
]