From 28da793eff5e786cb6c5d1b663d9682e29033a62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sat, 10 Feb 2024 00:19:15 +0300 Subject: [PATCH 001/126] Add community logo asset --- Resources/SwiftBuddies-Buddie.png | Bin 0 -> 180175 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Resources/SwiftBuddies-Buddie.png diff --git a/Resources/SwiftBuddies-Buddie.png b/Resources/SwiftBuddies-Buddie.png new file mode 100644 index 0000000000000000000000000000000000000000..127465b8154b0904c6eb9fa92310ae9c0a62db8f GIT binary patch literal 180175 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�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

I;Kb04TC7u~fZq8+sRkswro+as?s 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 literal 0 HcmV?d00001 From 4ff31325d3ef786d01b5f0bb4611386ac0609b37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sat, 10 Feb 2024 17:27:45 +0300 Subject: [PATCH 002/126] Add new community logo assets --- Resources/buddies-icon-clear-bg.svg | 37 ++++++++++++++++++++++ Resources/buddies-icon-notext-clear-bg.svg | 24 ++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 Resources/buddies-icon-clear-bg.svg create mode 100644 Resources/buddies-icon-notext-clear-bg.svg diff --git a/Resources/buddies-icon-clear-bg.svg b/Resources/buddies-icon-clear-bg.svg new file mode 100644 index 0000000..a4a0216 --- /dev/null +++ b/Resources/buddies-icon-clear-bg.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Resources/buddies-icon-notext-clear-bg.svg b/Resources/buddies-icon-notext-clear-bg.svg new file mode 100644 index 0000000..5fc2c6f --- /dev/null +++ b/Resources/buddies-icon-notext-clear-bg.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + From f259ebb862d825c56991ed71bf354669092b8dda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukaan=20K=C4=B1l=C4=B1=C3=A7arslan?= <40922278+darkbringer1@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:02:28 +0300 Subject: [PATCH 003/126] Create README_en.md First commit of readme file in english --- README_en.md | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 README_en.md diff --git a/README_en.md b/README_en.md new file mode 100644 index 0000000..e1407be --- /dev/null +++ b/README_en.md @@ -0,0 +1,124 @@ + +# Buddies Community iOS App + +Welcome to the official iOS app for the Buddies Community! This project is a community-driven app built in SwiftUI & Tuist, it aims to serve the members of our vast community, from newcomers to seasoned professionals, providing networking opportunities, collaboration, and professional development. + +[![Contributors][contributors-shield]][contributors-url] +[![Forks][forks-shield]][forks-url] +[![Stargazers][stars-shield]][stars-url] +[![Issues][issues-shield]][issues-url] +[![MIT License][license-shield]][license-url] + +

+ + Logo + + +

Buddies iOS

+ +

+ Explore the docs » +
+
+ View Demo + · + Report Bug + · + Request Feature +

+
+ +### Built With + +* SwiftUI +* Tuist + +## Getting Started + +### Prerequisites + +* Swift 5.9+ +* Xcode 15+ +* Tuist 4+ + +### Installation + +1. Clone the repo + `git clone https://github.com/SwiftBuddiesTR/BuddiesIOS.git` +2. Install Tuist + Visit the [Tuist Installation Page](https://docs.tuist.io/documentation/tuist/installation/) +3. Generate your project + `tuist generate` + +## Features + +Currently, the app contains four main tabs: + +- Feed: An interactive platform where members can share photos, experiences, and messaging. +- Map: Shows location of upcoming meetups and suggests nearby places ideal for work, refreshments, or casual gatherings. +- About: A detailed section providing in-depth insight into our community. +- Contributors: A nod to individuals who've contributed selflessly to the project, serving as a portfolio showcase. + +## Roadmap + +While the app is in its early stages, future improvements and enhancements are planned. We also encourage community members to propose new features via pull requests. + +## Contributing + +We appreciate contributions, big or small. Juniors can learn by developing features and seniors can provide feedback and guidance, keeping the development process streamlined. + +1. Fork the project +2. Create your feature branch (`git checkout -b feature/AmazingFeature`) +3. Commit your changes (`git commit -am 'Add some AmazingFeature'`) +4. Push to the branch (`git push origin feature/AmazingFeature`) +5. Open a pull request + +## Community Links + +* [Telegram](https://t.me/swiftbuddies) +* [LinkedIn Group](https://lnkd.in/dm2N_VQs) +* [Kommunity](https://kommunity.com/swiftbuddies) + +## Contact +You can contribute to the project by reaching out via our Telegram group, let us know about the issues or your suggestions. + +[![Telegram Badge](https://img.shields.io/badge/Contact-Telegram-blue)](https://t.me/swiftbuddies) + +- First steps taken by + + **Doğukaan Kılıçarslan** + [@dogukaank_](https://twitter.com/dogukaank_) + + **Can Yoldaş** + [@cyns0](https://twitter.com/cyns0) + +Project Link: [https://github.com/SwiftBuddiesTR/BuddiesIOS](https://github.com/SwiftBuddiesTR/BuddiesIOS) + +## License + +This project is licensed under the MIT License - see the [LICENSE](https://github.com/SwiftBuddiesTR/BuddiesIOS/blob/main/LICENSE) file for details. + +## Acknowledgments + +A big thank you to all community members for their continuous support and contributions. Special thanks to: + +* Apple +* Tuist Contributors + +Remember, this is an Open-Source project. We look forward to your contribution, let's come together to make this app a more valuable tool for everyone in our community! + + + + +[contributors-shield]: https://img.shields.io/github/contributors/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=orange +[contributors-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=blue +[forks-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/network/members +[stars-shield]: https://img.shields.io/github/stars/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=green +[stars-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/stargazers +[issues-shield]: https://img.shields.io/github/issues/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=red +[issues-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/issues +[license-shield]: https://img.shields.io/github/license/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=yellow +[license-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/blob/main/LICENSE + +[readme-top]: #buddies-community-ios-app From 8748472c896f7af69fd01eccfb37b1de4cfcd5c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukaan=20K=C4=B1l=C4=B1=C3=A7arslan?= <40922278+darkbringer1@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:21:07 +0300 Subject: [PATCH 004/126] Update README_en.md Add shortcuts to sections --- README_en.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README_en.md b/README_en.md index e1407be..863f977 100644 --- a/README_en.md +++ b/README_en.md @@ -1,4 +1,7 @@ + +[First time here?](#project-details) + # Buddies Community iOS App Welcome to the official iOS app for the Buddies Community! This project is a community-driven app built in SwiftUI & Tuist, it aims to serve the members of our vast community, from newcomers to seasoned professionals, providing networking opportunities, collaboration, and professional development. @@ -28,11 +31,23 @@ Welcome to the official iOS app for the Buddies Community! This project is a com

+# Table of Contents +1. [Getting Started](#getting-started) +2. [Installation](#installation) +3. [Features](#Features) +4. [Roadmap](#Roadmap) +5. [Contributing](#Contributing) +6. [CommunityLinks](#CommunityLinks) +7. [Contact](#Contact) + + + ### Built With * SwiftUI * Tuist + ## Getting Started ### Prerequisites @@ -41,6 +56,7 @@ Welcome to the official iOS app for the Buddies Community! This project is a com * Xcode 15+ * Tuist 4+ + ### Installation 1. Clone the repo @@ -50,6 +66,7 @@ Welcome to the official iOS app for the Buddies Community! This project is a com 3. Generate your project `tuist generate` + ## Features Currently, the app contains four main tabs: @@ -59,10 +76,12 @@ Currently, the app contains four main tabs: - About: A detailed section providing in-depth insight into our community. - Contributors: A nod to individuals who've contributed selflessly to the project, serving as a portfolio showcase. + ## Roadmap While the app is in its early stages, future improvements and enhancements are planned. We also encourage community members to propose new features via pull requests. + ## Contributing We appreciate contributions, big or small. Juniors can learn by developing features and seniors can provide feedback and guidance, keeping the development process streamlined. @@ -73,12 +92,14 @@ We appreciate contributions, big or small. Juniors can learn by developing featu 4. Push to the branch (`git push origin feature/AmazingFeature`) 5. Open a pull request + ## Community Links * [Telegram](https://t.me/swiftbuddies) * [LinkedIn Group](https://lnkd.in/dm2N_VQs) * [Kommunity](https://kommunity.com/swiftbuddies) + ## Contact You can contribute to the project by reaching out via our Telegram group, let us know about the issues or your suggestions. @@ -107,6 +128,21 @@ A big thank you to all community members for their continuous support and contri Remember, this is an Open-Source project. We look forward to your contribution, let's come together to make this app a more valuable tool for everyone in our community! + + +## Project details + +If you're landing here for the first time, welcome to the Buddies Community iOS application project! This app, built with SwiftUI & Tuist, is the result of a collective effort driven by our community, comprising newcomers as well as seasoned professionals in iOS development. + +Buddies Community, being a platform dedicated to iOS development, aims to provide a productive environment fostering networking, collaboration, and knowledge sharing. Here, every member has an opportunity to contribute to the project, learn from the best, and get their hands dirty with real-world project experience. Our aim is to make this experience as enriching as possible, thereby helping members grow professionally and become better, more informed developers. + +It’s a space where you can share new ideas, discuss designs, learn architectural patterns, get feedback, and much more. And all of this around a practical project that continues to evolve, just like the tech industry itself. + +The iOS app offers features such as feed sharing, location suggestions, a comprehensive about section, and a contributors pane acknowledging those who've participated in developing this app. It's not just another pet project, but an application that is enriched with every contribution, making its value significantly higher than a solo endeavor. + +We invite you to explore this repository, install the app, and most importantly, contribute in whatever way you can. If you're skilled in Scala or Tuist, great! If you're not, great! We value all contributions and believe that everyone has something valuable to share. + +So dive in, explore, learn and share. We're excited to have you here and can't wait to see what you'll bring to the table. Welcome aboard! From 97ed4b80e6fc42188d8fcaf4174393ed0b2c7c8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukaan=20K=C4=B1l=C4=B1=C3=A7arslan?= <40922278+darkbringer1@users.noreply.github.com> Date: Mon, 12 Feb 2024 15:12:34 +0300 Subject: [PATCH 005/126] Rename README_en.md to README.md --- README_en.md => README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README_en.md => README.md (100%) diff --git a/README_en.md b/README.md similarity index 100% rename from README_en.md rename to README.md From 5116aaef3c9baea9a164702404bb15a2ff075208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukaan=20K=C4=B1l=C4=B1=C3=A7arslan?= <40922278+darkbringer1@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:36:17 +0300 Subject: [PATCH 006/126] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9c8c5a1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 SwiftBuddiesTR + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 2a069eeb14196383557756281f29d8a0a7b9bb6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukaan=20K=C4=B1l=C4=B1=C3=A7arslan?= <40922278+darkbringer1@users.noreply.github.com> Date: Sun, 11 Feb 2024 16:03:52 +0300 Subject: [PATCH 007/126] Create PULL_REQUEST_TEMPLATE.md --- PULL_REQUEST_TEMPLATE.md | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 PULL_REQUEST_TEMPLATE.md diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..642d2d8 --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,41 @@ +### Issue Link :link: + + +### Goals :soccer: + + + +### Implementation Details :construction: + + + +### Testing Details :mag: + + +### Screenshots/Gifs :camera: + +How to add gif/screenshots: +1. Drag and drop the gif/screenshot here, let it upload. +2. Copy the link and paste it like below -> +``` + +``` +3. add the appropriate file extension after it "*.gif" or "*.jpg" +- Important: Be careful not to exceed 150 points width that is specified. It makes it harder chech overall ui elements if width is wider than 150 points. + +Example usage: + + + +## PR Type +What kind of change does this PR introduce? + + + +- [ ] Bugfix +- [x] Feature +- [ ] Code style update (formatting, renaming) +- [ ] Refactoring (no functional changes, no api changes) +- [ ] Build related changes +- [ ] Documentation content changes +- [x] Other... Please describe: From a8a69de63244f5dc838fa851f69b7c0c783ae9d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 18 Mar 2024 21:02:44 +0300 Subject: [PATCH 008/126] Fix broken target objects after updating tuist 4.6.0 --- Project.swift | 6 +++--- .../Project+Templates.swift | 17 ++++++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Project.swift b/Project.swift index 8fe8caf..ad6202b 100644 --- a/Project.swift +++ b/Project.swift @@ -4,9 +4,9 @@ import MyPlugin extension Target { static func makeModule(name: String, dependencies: [TargetDependency] = [], hasResources: Bool = false) -> Target { - Target( + Target.target( name: name, - platform: .iOS, + destinations: .iOS, product: .framework, productName: name, bundleId: "com.swiftbuddies.\(name.lowercased())", @@ -57,7 +57,7 @@ let feedModule = Target.makeModule( // Creates our project using a helper function defined in ProjectDescriptionHelpers let project = Project.app( name: "SwiftBuddiesMain", - platform: .iOS, + destionations: .iOS, additionalTargets: [ feedModule, mapModule, diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift index 522b57c..c9af47d 100644 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -9,14 +9,14 @@ extension Project { /// Helper function to create the Project for this ExampleApp public static func app( name: String, - platform: Platform, + destionations: Destinations, additionalTargets: [Target], targetDependencies: [TargetDependency]? = nil ) -> Project { var targetDependencies = targetDependencies ?? [] targetDependencies.append(contentsOf: additionalTargets.compactMap({ TargetDependency.target(name: $0.name) })) var targets = makeAppTargets(name: name, - platform: platform, + destionations: destionations, dependencies: targetDependencies) @@ -29,17 +29,16 @@ extension Project { // MARK: - Private /// Helper function to create the application target and the unit test target. - private static func makeAppTargets(name: String, platform: Platform, dependencies: [TargetDependency]) -> [Target] { - let platform: Platform = platform + private static func makeAppTargets(name: String, destionations: Destinations, dependencies: [TargetDependency]) -> [Target] { let infoPlist: [String: Plist.Value] = [ "CFBundleShortVersionString": "1.0", "CFBundleVersion": "1", "UIMainStoryboardFile": "", "UILaunchStoryboardName": "LaunchScreen" ] - let mainTarget = Target( - name: name, - platform: platform, + let mainTarget = Target.target( + name: name, + destinations: destionations, product: .app, bundleId: "com.swiftbuddies.\(name.lowercased())", infoPlist: .extendingDefault(with: infoPlist), @@ -48,9 +47,9 @@ extension Project { dependencies: dependencies ) - let testTarget = Target( + let testTarget = Target.target( name: "\(name)Tests", - platform: platform, + destinations: destionations, product: .unitTests, bundleId: "com.swiftbuddies.\(name.lowercased())Tests", infoPlist: .default, From dc3967a062046c9261ef242bceeb17a42a5109b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sat, 23 Mar 2024 12:29:03 +0300 Subject: [PATCH 009/126] Update tuist dependency package file path --- Project.swift | 69 ++++++++++++++++--- .../SwiftBuddiesFeed/Sources/FeedView.swift | 1 + Tuist/Dependencies.swift | 19 ----- Tuist/Package.resolved | 23 +++++++ Tuist/Package.swift | 24 +++++++ .../Project+Templates.swift | 24 ++++--- 6 files changed, 119 insertions(+), 41 deletions(-) delete mode 100644 Tuist/Dependencies.swift create mode 100644 Tuist/Package.resolved create mode 100644 Tuist/Package.swift diff --git a/Project.swift b/Project.swift index ad6202b..277dee6 100644 --- a/Project.swift +++ b/Project.swift @@ -3,11 +3,16 @@ import ProjectDescriptionHelpers import MyPlugin extension Target { - static func makeModule(name: String, dependencies: [TargetDependency] = [], hasResources: Bool = false) -> Target { + static func makeModule( + name: String, + dependencies: [TargetDependency] = [], + hasResources: Bool = false + ) -> Target { + Target.target( name: name, destinations: .iOS, - product: .framework, + product: .dynamicLibrary, productName: name, bundleId: "com.swiftbuddies.\(name.lowercased())", sources: ["Targets/SwiftBuddies\(name)/Sources/**"], @@ -17,40 +22,82 @@ extension Target { } } +// URL: Version +// -> TargetDependency.package(name) +// -> Package(url, version + + extension TargetDependency { static func makeExternalTarget(name: String) -> TargetDependency { TargetDependency.external(name: name, condition: nil) } + + +} + +struct ThirdParty { + let name: String + let url: String + let version: Version +} + +extension ThirdParty { + static let network: ThirdParty = .init( + name: "DefaultNetworkOperationPackage", + url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", + version: "1.0.0" + ) + + func toTargetDependency() -> TargetDependency { + .package(product: self.name, type: .runtime, condition: nil) + } + + func toPackage() -> Package { + .remote(url: self.url, requirement: .upToNextMajor(from: self.version)) + } } +extension TargetDependency { + static func package(_ thirdParty: ThirdParty) -> Self { + thirdParty.toTargetDependency() + } +} +extension Package { + static func remote(_ thirdParty: ThirdParty) -> Self { + thirdParty.toPackage() + } +} // MARK: - Project // Local plugin loaded let localHelper = LocalHelper(name: "MyPlugin") -let networkDependency = TargetDependency.makeExternalTarget(name: "DefaultNetworkOperationPackage") -let swiftUIXDependency = TargetDependency.makeExternalTarget(name: "SwiftUIX") +//extension Package { +// static let network: Package = .package(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", from: "1.0.0") +//} + + let designTarget = Target.makeModule( name: "Design", - dependencies: [swiftUIXDependency], + dependencies: [], hasResources: true ) let contributorsModule = Target.makeModule( name: "Contributors", - dependencies: [.target(designTarget), networkDependency] + dependencies: [.target(designTarget)] ) let mapModule = Target.makeModule( name: "Map", - dependencies: [.target(designTarget), networkDependency] + dependencies: [.target(designTarget)] ) let aboutModule = Target.makeModule( name: "About", - dependencies: [.target(designTarget), networkDependency] + dependencies: [.target(designTarget)] ) let feedModule = Target.makeModule( name: "Feed", - dependencies: [.target(designTarget), networkDependency] + dependencies: [.target(designTarget), .package(.network)] ) @@ -58,14 +105,14 @@ let feedModule = Target.makeModule( let project = Project.app( name: "SwiftBuddiesMain", destionations: .iOS, - additionalTargets: [ + targets: [ feedModule, mapModule, aboutModule, contributorsModule, designTarget ], - targetDependencies: [networkDependency] + packages: [.remote(.network)] ) diff --git a/Targets/SwiftBuddiesFeed/Sources/FeedView.swift b/Targets/SwiftBuddiesFeed/Sources/FeedView.swift index b3a85fa..eb595be 100644 --- a/Targets/SwiftBuddiesFeed/Sources/FeedView.swift +++ b/Targets/SwiftBuddiesFeed/Sources/FeedView.swift @@ -1,6 +1,7 @@ import SwiftUI import Design +import DefaultNetworkOperationPackage public struct FeedView: View { diff --git a/Tuist/Dependencies.swift b/Tuist/Dependencies.swift deleted file mode 100644 index d82dd63..0000000 --- a/Tuist/Dependencies.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// Dependencies.swift -// Config -// -// Created by dogukaan on 20.01.2024. -// - -import Foundation -import ProjectDescription - -let dependencies = Dependencies( - swiftPackageManager: .init( - [.remote(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", - requirement: .upToNextMajor(from: .init(1, 0, 0))), - .remote(url: "https://github.com/SwiftUIX/SwiftUIX.git", - requirement: .upToNextMinor(from: .init(0, 1, 0)))] - ), - platforms: [.iOS, .macOS] -) diff --git a/Tuist/Package.resolved b/Tuist/Package.resolved new file mode 100644 index 0000000..f9d8e2b --- /dev/null +++ b/Tuist/Package.resolved @@ -0,0 +1,23 @@ +{ + "pins" : [ + { + "identity" : "defaultnetworkoperationpackage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/darkbringer1/DefaultNetworkOperationPackage", + "state" : { + "revision" : "b7e20d27362595726aeea298b6b4bd6f3734f480", + "version" : "1.3.0" + } + }, + { + "identity" : "swiftuix", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SwiftUIX/SwiftUIX.git", + "state" : { + "revision" : "a5a22a1aaca885c229f475af049d75a6d9144de8", + "version" : "0.1.9" + } + } + ], + "version" : 2 +} diff --git a/Tuist/Package.swift b/Tuist/Package.swift new file mode 100644 index 0000000..3cd8852 --- /dev/null +++ b/Tuist/Package.swift @@ -0,0 +1,24 @@ +// swift-tools-version: 5.9 +import PackageDescription + + +#if TUIST +import ProjectDescription +import ProjectDescriptionHelpers + + +let packageSettings = PackageSettings( + productTypes: [ + "DefaultNetworkOperationPackage": .dynamicLibrary, // default is .staticFramework +// "SwiftUIX": .framework + ] +) +#endif + +//let network = Package( +// name: "defaultnetworkoperationpackage", +// dependencies: [ +// .package(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", from: "1.0.0"), +// .package(url: "https://github.com/SwiftUIX/SwiftUIX.git", from: "0.1.0"), +// ] +//) diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift index c9af47d..db16476 100644 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -10,26 +10,28 @@ extension Project { public static func app( name: String, destionations: Destinations, - additionalTargets: [Target], - targetDependencies: [TargetDependency]? = nil + targets: [Target], + packages: [Package] ) -> Project { - var targetDependencies = targetDependencies ?? [] - targetDependencies.append(contentsOf: additionalTargets.compactMap({ TargetDependency.target(name: $0.name) })) - var targets = makeAppTargets(name: name, - destionations: destionations, - dependencies: targetDependencies) + //// targetDependencies.append(contentsOf: additionalTargets.compactMap({ TargetDependency.target(name: $0.name) })) + var appTarget = makeAppTargets(name: name, + destionations: destionations, + dependencies: targets) + + var targets = targets + targets.append(appTarget) - targets += additionalTargets return Project(name: name, organizationName: "SwiftBuddies", + packages: packages, targets: targets) } // MARK: - Private /// Helper function to create the application target and the unit test target. - private static func makeAppTargets(name: String, destionations: Destinations, dependencies: [TargetDependency]) -> [Target] { + private static func makeAppTargets(name: String, destionations: Destinations, dependencies: [Target]) -> Target { let infoPlist: [String: Plist.Value] = [ "CFBundleShortVersionString": "1.0", "CFBundleVersion": "1", @@ -44,7 +46,7 @@ extension Project { infoPlist: .extendingDefault(with: infoPlist), sources: ["Targets/\(name)/Sources/**"], // resources: ["Targets/\(name)/Resources/**"], - dependencies: dependencies + dependencies: dependencies.compactMap { TargetDependency.target(name: $0.name) } ) let testTarget = Target.target( @@ -57,6 +59,6 @@ extension Project { dependencies: [ .target(name: "\(name)") ]) - return [mainTarget] + return mainTarget } } From d04127d2190481216ed64fd9939490789ceebff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sun, 24 Mar 2024 18:56:21 +0300 Subject: [PATCH 010/126] Update tuist dependency graph for framework types --- Project.swift | 43 ++++++++++++------- Tuist/Package.swift | 34 +++++++-------- .../Project+Templates.swift | 28 ++++++------ 3 files changed, 58 insertions(+), 47 deletions(-) diff --git a/Project.swift b/Project.swift index 277dee6..0bf17ee 100644 --- a/Project.swift +++ b/Project.swift @@ -12,7 +12,7 @@ extension Target { Target.target( name: name, destinations: .iOS, - product: .dynamicLibrary, + product: .staticFramework, productName: name, bundleId: "com.swiftbuddies.\(name.lowercased())", sources: ["Targets/SwiftBuddies\(name)/Sources/**"], @@ -20,19 +20,30 @@ extension Target { dependencies: dependencies ) } + +// static func makeModule( +// name: String, +// dependencies: [TargetDependency] = [], +// hasResources: Bool = false +// ) -> Target { +// +// Target.target( +// name: name, +// destinations: .iOS, +// product: .dynamicLibrary, +// productName: name, +// bundleId: "com.swiftbuddies.\(name.lowercased())", +// sources: ["Targets/SwiftBuddies\(name)/Sources/**"], +// resources: hasResources ? ["Targets/SwiftBuddies\(name)/Resources/**"] : [], +// dependencies: dependencies +// ) +// } } -// URL: Version -// -> TargetDependency.package(name) -// -> Package(url, version - - extension TargetDependency { static func makeExternalTarget(name: String) -> TargetDependency { TargetDependency.external(name: name, condition: nil) } - - } struct ThirdParty { @@ -49,7 +60,7 @@ extension ThirdParty { ) func toTargetDependency() -> TargetDependency { - .package(product: self.name, type: .runtime, condition: nil) + .external(name: self.name, condition: PlatformCondition.when(.all)) } func toPackage() -> Package { @@ -82,7 +93,6 @@ let designTarget = Target.makeModule( dependencies: [], hasResources: true ) - let contributorsModule = Target.makeModule( name: "Contributors", dependencies: [.target(designTarget)] @@ -97,7 +107,13 @@ let aboutModule = Target.makeModule( ) let feedModule = Target.makeModule( name: "Feed", - dependencies: [.target(designTarget), .package(.network)] + dependencies: [ + .target(designTarget), + .external( + name: "DefaultNetworkOperationPackage", + condition: nil + ) + ] ) @@ -111,8 +127,5 @@ let project = Project.app( aboutModule, contributorsModule, designTarget - ], - packages: [.remote(.network)] + ] ) - - diff --git a/Tuist/Package.swift b/Tuist/Package.swift index 3cd8852..efe4d81 100644 --- a/Tuist/Package.swift +++ b/Tuist/Package.swift @@ -2,23 +2,23 @@ import PackageDescription -#if TUIST -import ProjectDescription -import ProjectDescriptionHelpers - +//#if TUIST +//import ProjectDescription +//import ProjectDescriptionHelpers +// +// +//let packageSettings = PackageSettings( +// productTypes: [ +// "DefaultNetworkOperationPackage": .staticLibrary, // default is .staticFramework +//// "SwiftUIX": .framework +// ] +//) +//#endif -let packageSettings = PackageSettings( - productTypes: [ - "DefaultNetworkOperationPackage": .dynamicLibrary, // default is .staticFramework -// "SwiftUIX": .framework +let package = Package( + name: "PackageName", + platforms: [.iOS(.v13)], + dependencies: [ + .package(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", from: "1.0.0") ] ) -#endif - -//let network = Package( -// name: "defaultnetworkoperationpackage", -// dependencies: [ -// .package(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", from: "1.0.0"), -// .package(url: "https://github.com/SwiftUIX/SwiftUIX.git", from: "0.1.0"), -// ] -//) diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift index db16476..1f1f978 100644 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -10,12 +10,11 @@ extension Project { public static func app( name: String, destionations: Destinations, - targets: [Target], - packages: [Package] + targets: [Target] ) -> Project { //// targetDependencies.append(contentsOf: additionalTargets.compactMap({ TargetDependency.target(name: $0.name) })) - var appTarget = makeAppTargets(name: name, + var appTarget = makeAppTarget(name: name, destionations: destionations, dependencies: targets) @@ -24,14 +23,13 @@ extension Project { return Project(name: name, organizationName: "SwiftBuddies", - packages: packages, targets: targets) } // MARK: - Private /// Helper function to create the application target and the unit test target. - private static func makeAppTargets(name: String, destionations: Destinations, dependencies: [Target]) -> Target { + private static func makeAppTarget(name: String, destionations: Destinations, dependencies: [Target]) -> Target { let infoPlist: [String: Plist.Value] = [ "CFBundleShortVersionString": "1.0", "CFBundleVersion": "1", @@ -49,16 +47,16 @@ extension Project { dependencies: dependencies.compactMap { TargetDependency.target(name: $0.name) } ) - let testTarget = Target.target( - name: "\(name)Tests", - destinations: destionations, - product: .unitTests, - bundleId: "com.swiftbuddies.\(name.lowercased())Tests", - infoPlist: .default, - sources: ["Targets/\(name)/Tests/**"], - dependencies: [ - .target(name: "\(name)") - ]) +// let testTarget = Target.target( +// name: "\(name)Tests", +// destinations: destionations, +// product: .unitTests, +// bundleId: "com.swiftbuddies.\(name.lowercased())Tests", +// infoPlist: .default, +// sources: ["Targets/\(name)/Tests/**"], +// dependencies: [ +// .target(name: "\(name)") +// ]) return mainTarget } } From c806561e3d5c31618f38eb7795277d6a5e2468c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 25 Mar 2024 20:54:34 +0300 Subject: [PATCH 011/126] Add .build file to .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 551a3f5..f37c68f 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,5 @@ Derived/ ### Tuist managed dependencies ### Tuist/Dependencies +Tuist/.build +Tuist/.build From 96f949e6886a94d45082e8c6fa270b60475d854f Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Wed, 3 Apr 2024 01:45:08 +0300 Subject: [PATCH 012/126] Fix package dependencies Remove: -Framework dependencies Add: -Spm dependencies to the project -Firebase auth initialization # Conflicts: # Project.swift # Resources/GoogleService-Info.plist # Targets/SwiftBuddiesLogin/Sources/LoginView.swift # Targets/SwiftBuddiesMain/Sources/AppMain.swift # Tuist/Package.swift --- .package.resolved | 131 ++++++++++++++++++ Project.swift | 27 +++- Scripts/FBCrashlyticsRunScript.sh | 2 + Scripts/firebase.sh | 3 + .../Project+Templates.swift | 23 ++- 5 files changed, 174 insertions(+), 12 deletions(-) create mode 100644 .package.resolved create mode 100644 Scripts/FBCrashlyticsRunScript.sh create mode 100644 Scripts/firebase.sh diff --git a/.package.resolved b/.package.resolved new file mode 100644 index 0000000..5cc5834 --- /dev/null +++ b/.package.resolved @@ -0,0 +1,131 @@ +{ + "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "7ce7be095bc3ed3c98b009532fe2d7698c132614", + "version" : "1.2024011601.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "3e464dad87dad2d29bb29a97836789bf0f8f67d2", + "version" : "10.18.1" + } + }, + { + "identity" : "defaultnetworkoperationpackage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/darkbringer1/DefaultNetworkOperationPackage", + "state" : { + "revision" : "083f861f66ecadc24613137c660a5a99e92f3fef", + "version" : "1.4.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk.git", + "state" : { + "revision" : "888f0b6026e2441a69e3ee2ad5293c7a92031e62", + "version" : "10.23.1" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "c7a5917ebe48d69f421aadf154ef3969c8b7f12d", + "version" : "10.23.1" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "a637d318ae7ae246b02d7305121275bc75ed5565", + "version" : "9.4.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "26c898aed8bed13b8a63057ee26500abbbcb8d55", + "version" : "7.13.1" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "67043f6389d0e28b38fa02d1c6952afeb04d807f", + "version" : "1.62.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "9534039303015a84837090d20fa21cae6e5eadb6", + "version" : "3.3.2" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648", + "version" : "100.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "43aaef65e0c665daadf848761d560e446d350d3d", + "version" : "1.22.4" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "9f0c76544701845ad98716f3f6a774a892152bcb", + "version" : "1.26.0" + } + } + ], + "version" : 2 +} diff --git a/Project.swift b/Project.swift index 0bf17ee..0ddc5f7 100644 --- a/Project.swift +++ b/Project.swift @@ -12,7 +12,7 @@ extension Target { Target.target( name: name, destinations: .iOS, - product: .staticFramework, + product: .dynamicLibrary, productName: name, bundleId: "com.swiftbuddies.\(name.lowercased())", sources: ["Targets/SwiftBuddies\(name)/Sources/**"], @@ -58,6 +58,11 @@ extension ThirdParty { url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", version: "1.0.0" ) + static let firebase: ThirdParty = .init( + name: "Firebase", + url: "https://github.com/firebase/firebase-ios-sdk.git", + version: "10.0.0" + ) func toTargetDependency() -> TargetDependency { .external(name: self.name, condition: PlatformCondition.when(.all)) @@ -109,10 +114,15 @@ let feedModule = Target.makeModule( name: "Feed", dependencies: [ .target(designTarget), - .external( - name: "DefaultNetworkOperationPackage", - condition: nil - ) + .package(product: "DefaultNetworkOperationPackage", type: .runtime, condition: nil) + ] +) +let loginModule = Target.makeModule( + name: "Login", + dependencies: [ + .target(designTarget), + .package(product: "DefaultNetworkOperationPackage", type: .runtime, condition: nil), + .package(product: "FirebaseAuth", type: .runtime, condition: nil) ] ) @@ -126,6 +136,11 @@ let project = Project.app( mapModule, aboutModule, contributorsModule, - designTarget + designTarget, + loginModule + ], + packages: [ + ThirdParty.network.toPackage(), + ThirdParty.firebase.toPackage() ] ) diff --git a/Scripts/FBCrashlyticsRunScript.sh b/Scripts/FBCrashlyticsRunScript.sh new file mode 100644 index 0000000..252fef2 --- /dev/null +++ b/Scripts/FBCrashlyticsRunScript.sh @@ -0,0 +1,2 @@ +"DEBUG_INFORMATION_FORMAT": "dwarf-with-dsym" +"OTHER_LDFLAGS": "-ObjC" diff --git a/Scripts/firebase.sh b/Scripts/firebase.sh new file mode 100644 index 0000000..fe79f1a --- /dev/null +++ b/Scripts/firebase.sh @@ -0,0 +1,3 @@ +if [ "${CONFIGURATION}" != "Debug" ]; then + "Tuist/Dependencies/SwiftPackageManager/.build/checkouts/firebase-ios-sdk/Crashlytics/run" "Tuist/Dependencies/SwiftPackageManager/.build/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols" -gsp ./Resources/GoogleService-Info.plist -p ios ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME} +fi diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift index 1f1f978..1ff96b1 100644 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -10,20 +10,23 @@ extension Project { public static func app( name: String, destionations: Destinations, - targets: [Target] + targets: [Target], + packages: [Package] ) -> Project { //// targetDependencies.append(contentsOf: additionalTargets.compactMap({ TargetDependency.target(name: $0.name) })) - var appTarget = makeAppTarget(name: name, - destionations: destionations, - dependencies: targets) + let appTarget = makeAppTarget(name: name, + destionations: destionations, + dependencies: targets) var targets = targets targets.append(appTarget) return Project(name: name, organizationName: "SwiftBuddies", - targets: targets) + packages: packages, + targets: targets + ) } // MARK: - Private @@ -36,6 +39,7 @@ extension Project { "UIMainStoryboardFile": "", "UILaunchStoryboardName": "LaunchScreen" ] + let mainTarget = Target.target( name: name, destinations: destionations, @@ -43,7 +47,8 @@ extension Project { bundleId: "com.swiftbuddies.\(name.lowercased())", infoPlist: .extendingDefault(with: infoPlist), sources: ["Targets/\(name)/Sources/**"], -// resources: ["Targets/\(name)/Resources/**"], + resources: ["Resources/**"], +// scripts: targetScripts, dependencies: dependencies.compactMap { TargetDependency.target(name: $0.name) } ) @@ -59,4 +64,10 @@ extension Project { // ]) return mainTarget } + + static let targetScripts = [ + TargetScript.pre(path: "./Scripts/FBCrashlyticsRunScript.sh", + name: "Firebase Crashlytics") + ] + } From d964b5ff82052244101543b612f18e24d214df0a Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Wed, 3 Apr 2024 01:45:08 +0300 Subject: [PATCH 013/126] Fix package dependencies Remove: -Framework dependencies Add: -Spm dependencies to the project -Firebase auth initialization # Conflicts: # Project.swift # Resources/GoogleService-Info.plist # Targets/SwiftBuddiesMain/Sources/AppMain.swift # Tuist/Package.swift --- Project.swift | 8 +++---- .../SwiftBuddiesMain/Sources/AppMain.swift | 24 ++++++++++++++++++- Tuist/Package.swift | 22 ++++++++--------- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/Project.swift b/Project.swift index 0ddc5f7..9de8a83 100644 --- a/Project.swift +++ b/Project.swift @@ -12,7 +12,7 @@ extension Target { Target.target( name: name, destinations: .iOS, - product: .dynamicLibrary, + product: .staticLibrary, productName: name, bundleId: "com.swiftbuddies.\(name.lowercased())", sources: ["Targets/SwiftBuddies\(name)/Sources/**"], @@ -139,8 +139,6 @@ let project = Project.app( designTarget, loginModule ], - packages: [ - ThirdParty.network.toPackage(), - ThirdParty.firebase.toPackage() - ] + packages: [ThirdParty.network.toPackage(), + ThirdParty.firebase.toPackage()] ) diff --git a/Targets/SwiftBuddiesMain/Sources/AppMain.swift b/Targets/SwiftBuddiesMain/Sources/AppMain.swift index 23adb4a..4ec6ba7 100644 --- a/Targets/SwiftBuddiesMain/Sources/AppMain.swift +++ b/Targets/SwiftBuddiesMain/Sources/AppMain.swift @@ -3,12 +3,15 @@ import Feed import Map import About import Contributors +import Login +import Firebase enum AppTab: Int, Identifiable { case feed = 0 case map case about case contributors + case login var id: Int { rawValue } } @@ -16,12 +19,23 @@ enum AppTab: Int, Identifiable { @main struct AppMain: App { - + @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate + @State var selectedTab: AppTab = .feed + init() { + + } var body: some Scene { WindowGroup { TabView(selection: $selectedTab) { + LoginView() + .tabItem { + Image(systemName: "person") + Text("Login") + } + .tag(AppTab.login) + FeedView() .tabItem { Image(systemName: "list.bullet") @@ -52,3 +66,11 @@ struct AppMain: App { } } } + + +class AppDelegate: NSObject, UIApplicationDelegate { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + FirebaseApp.configure() + return true + } +} diff --git a/Tuist/Package.swift b/Tuist/Package.swift index efe4d81..27e2e44 100644 --- a/Tuist/Package.swift +++ b/Tuist/Package.swift @@ -8,17 +8,15 @@ import PackageDescription // // //let packageSettings = PackageSettings( -// productTypes: [ -// "DefaultNetworkOperationPackage": .staticLibrary, // default is .staticFramework -//// "SwiftUIX": .framework -// ] +// productTypes: [: .dynamicLibrary], //) //#endif - -let package = Package( - name: "PackageName", - platforms: [.iOS(.v13)], - dependencies: [ - .package(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", from: "1.0.0") - ] -) +// +//let package = Package( +// name: "PackageName", +// platforms: [.iOS(.v15)], +// dependencies: [ +// .package(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", from: "1.0.0"), +// .package(url: "https://github.com/firebase/firebase-ios-sdk.git", from: "10.0.0") +// ] +//) From 54f9a83f72228589e3fb210ae1b3ccbed20564d7 Mon Sep 17 00:00:00 2001 From: Can Yoldas Date: Thu, 4 Apr 2024 17:15:18 +0200 Subject: [PATCH 014/126] fixed tuist build --- Project.swift | 12 +----------- Targets/SwiftBuddiesMain/Sources/AppMain.swift | 18 ------------------ 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/Project.swift b/Project.swift index 9de8a83..28428ec 100644 --- a/Project.swift +++ b/Project.swift @@ -117,15 +117,6 @@ let feedModule = Target.makeModule( .package(product: "DefaultNetworkOperationPackage", type: .runtime, condition: nil) ] ) -let loginModule = Target.makeModule( - name: "Login", - dependencies: [ - .target(designTarget), - .package(product: "DefaultNetworkOperationPackage", type: .runtime, condition: nil), - .package(product: "FirebaseAuth", type: .runtime, condition: nil) - ] -) - // Creates our project using a helper function defined in ProjectDescriptionHelpers let project = Project.app( @@ -136,8 +127,7 @@ let project = Project.app( mapModule, aboutModule, contributorsModule, - designTarget, - loginModule + designTarget ], packages: [ThirdParty.network.toPackage(), ThirdParty.firebase.toPackage()] diff --git a/Targets/SwiftBuddiesMain/Sources/AppMain.swift b/Targets/SwiftBuddiesMain/Sources/AppMain.swift index 4ec6ba7..fd92284 100644 --- a/Targets/SwiftBuddiesMain/Sources/AppMain.swift +++ b/Targets/SwiftBuddiesMain/Sources/AppMain.swift @@ -3,8 +3,6 @@ import Feed import Map import About import Contributors -import Login -import Firebase enum AppTab: Int, Identifiable { case feed = 0 @@ -16,10 +14,8 @@ enum AppTab: Int, Identifiable { var id: Int { rawValue } } - @main struct AppMain: App { - @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate @State var selectedTab: AppTab = .feed @@ -29,13 +25,6 @@ struct AppMain: App { var body: some Scene { WindowGroup { TabView(selection: $selectedTab) { - LoginView() - .tabItem { - Image(systemName: "person") - Text("Login") - } - .tag(AppTab.login) - FeedView() .tabItem { Image(systemName: "list.bullet") @@ -67,10 +56,3 @@ struct AppMain: App { } } - -class AppDelegate: NSObject, UIApplicationDelegate { - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { - FirebaseApp.configure() - return true - } -} From e61b6ade25079dc0e6f69181cffc9492c731a248 Mon Sep 17 00:00:00 2001 From: Can Yoldas Date: Wed, 10 Apr 2024 17:49:39 +0200 Subject: [PATCH 015/126] first commit --- .gitignore | 4 +- .mise.toml | 2 + .package.resolved | 117 ++---------- LICENSE | 21 --- PULL_REQUEST_TEMPLATE.md | 41 ----- Plugins/SwiftBuddiesIOS/Package.swift | 15 -- Plugins/SwiftBuddiesIOS/Plugin.swift | 3 - .../LocalHelper.swift | 9 - .../Sources/tuist-my-cli/main.swift | 1 - Project.swift | 173 ++++++------------ README.md | 160 ---------------- Resources/SwiftBuddies-Buddie.png | Bin 180175 -> 0 bytes Resources/buddies-icon-clear-bg.svg | 37 ---- Resources/buddies-icon-notext-clear-bg.svg | 24 --- Scripts/FBCrashlyticsRunScript.sh | 2 - Scripts/firebase.sh | 3 - .../AccentColor.colorset/Contents.json | 11 ++ .../AppIcon.appiconset/Contents.json | 98 ++++++++++ .../Resources/Assets.xcassets/Contents.json | 6 + .../Resources/LaunchScreen.storyboard | 25 +++ .../Preview Assets.xcassets/Contents.json | 6 + SwiftBuddiesIOS/Sources/ContentView.swift | 23 +++ .../Sources/SwiftBuddiesIOSApp.swift | 10 + .../AuthModule/Sources/Authenticator.swift | 23 +++ .../Targets/FeedModule/Sources/Feed.swift | 9 + .../Tests/SwiftBuddiesIOSTests.swift | 8 + .../SwiftBuddiesFeed/Sources/FeedView.swift | 20 -- .../SwiftBuddiesMain/Sources/AppMain.swift | 58 ------ .../SwiftBuddiesNetwork/Sources/Network.swift | 0 Tuist/Config.swift | 7 - Tuist/Package.resolved | 23 --- Tuist/Package.swift | 36 ++-- .../Project+Templates.swift | 73 -------- graph.png | Bin 42312 -> 0 bytes 34 files changed, 309 insertions(+), 739 deletions(-) create mode 100644 .mise.toml delete mode 100644 LICENSE delete mode 100644 PULL_REQUEST_TEMPLATE.md delete mode 100644 Plugins/SwiftBuddiesIOS/Package.swift delete mode 100644 Plugins/SwiftBuddiesIOS/Plugin.swift delete mode 100644 Plugins/SwiftBuddiesIOS/ProjectDescriptionHelpers/LocalHelper.swift delete mode 100644 Plugins/SwiftBuddiesIOS/Sources/tuist-my-cli/main.swift delete mode 100644 README.md delete mode 100644 Resources/SwiftBuddies-Buddie.png delete mode 100644 Resources/buddies-icon-clear-bg.svg delete mode 100644 Resources/buddies-icon-notext-clear-bg.svg delete mode 100644 Scripts/FBCrashlyticsRunScript.sh delete mode 100644 Scripts/firebase.sh create mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/Contents.json create mode 100644 SwiftBuddiesIOS/Resources/LaunchScreen.storyboard create mode 100644 SwiftBuddiesIOS/Resources/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 SwiftBuddiesIOS/Sources/ContentView.swift create mode 100644 SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift create mode 100644 SwiftBuddiesIOS/Targets/FeedModule/Sources/Feed.swift create mode 100644 SwiftBuddiesIOS/Tests/SwiftBuddiesIOSTests.swift delete mode 100644 Targets/SwiftBuddiesFeed/Sources/FeedView.swift delete mode 100644 Targets/SwiftBuddiesMain/Sources/AppMain.swift delete mode 100644 Targets/SwiftBuddiesNetwork/Sources/Network.swift delete mode 100644 Tuist/Config.swift delete mode 100644 Tuist/Package.resolved delete mode 100644 Tuist/ProjectDescriptionHelpers/Project+Templates.swift delete mode 100644 graph.png diff --git a/.gitignore b/.gitignore index f37c68f..24b244f 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,4 @@ graph.dot Derived/ ### Tuist managed dependencies ### -Tuist/Dependencies -Tuist/.build -Tuist/.build +Tuist/.build \ No newline at end of file diff --git a/.mise.toml b/.mise.toml new file mode 100644 index 0000000..bddfdd3 --- /dev/null +++ b/.mise.toml @@ -0,0 +1,2 @@ +[tools] +tuist = "4.9.0" diff --git a/.package.resolved b/.package.resolved index 5cc5834..ec526fc 100644 --- a/.package.resolved +++ b/.package.resolved @@ -1,75 +1,22 @@ { + "originHash" : "e11c677f3fdba414eff21261c4b5d041d25f436a83c1faaba2da6b9357e42259", "pins" : [ { - "identity" : "abseil-cpp-binary", + "identity" : "appauth-ios", "kind" : "remoteSourceControl", - "location" : "https://github.com/google/abseil-cpp-binary.git", + "location" : "https://github.com/openid/AppAuth-iOS.git", "state" : { - "revision" : "7ce7be095bc3ed3c98b009532fe2d7698c132614", - "version" : "1.2024011601.0" + "revision" : "7e2c09cbeb3bb799f26c268dbedb26325ea722a9", + "version" : "1.7.3" } }, { - "identity" : "app-check", + "identity" : "googlesignin-ios", "kind" : "remoteSourceControl", - "location" : "https://github.com/google/app-check.git", + "location" : "https://github.com/google/GoogleSignIn-iOS.git", "state" : { - "revision" : "3e464dad87dad2d29bb29a97836789bf0f8f67d2", - "version" : "10.18.1" - } - }, - { - "identity" : "defaultnetworkoperationpackage", - "kind" : "remoteSourceControl", - "location" : "https://github.com/darkbringer1/DefaultNetworkOperationPackage", - "state" : { - "revision" : "083f861f66ecadc24613137c660a5a99e92f3fef", - "version" : "1.4.0" - } - }, - { - "identity" : "firebase-ios-sdk", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/firebase-ios-sdk.git", - "state" : { - "revision" : "888f0b6026e2441a69e3ee2ad5293c7a92031e62", - "version" : "10.23.1" - } - }, - { - "identity" : "googleappmeasurement", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleAppMeasurement.git", - "state" : { - "revision" : "c7a5917ebe48d69f421aadf154ef3969c8b7f12d", - "version" : "10.23.1" - } - }, - { - "identity" : "googledatatransport", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleDataTransport.git", - "state" : { - "revision" : "a637d318ae7ae246b02d7305121275bc75ed5565", - "version" : "9.4.0" - } - }, - { - "identity" : "googleutilities", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleUtilities.git", - "state" : { - "revision" : "26c898aed8bed13b8a63057ee26500abbbcb8d55", - "version" : "7.13.1" - } - }, - { - "identity" : "grpc-binary", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/grpc-binary.git", - "state" : { - "revision" : "67043f6389d0e28b38fa02d1c6952afeb04d807f", - "version" : "1.62.1" + "revision" : "7932d33686c1dc4d7df7a919aae47361d1cdfda4", + "version" : "7.0.0" } }, { @@ -82,50 +29,14 @@ } }, { - "identity" : "interop-ios-for-google-sdks", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/interop-ios-for-google-sdks.git", - "state" : { - "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648", - "version" : "100.0.0" - } - }, - { - "identity" : "leveldb", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/leveldb.git", - "state" : { - "revision" : "43aaef65e0c665daadf848761d560e446d350d3d", - "version" : "1.22.4" - } - }, - { - "identity" : "nanopb", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/nanopb.git", - "state" : { - "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", - "version" : "2.30910.0" - } - }, - { - "identity" : "promises", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/promises.git", - "state" : { - "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", - "version" : "2.4.0" - } - }, - { - "identity" : "swift-protobuf", + "identity" : "gtmappauth", "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-protobuf.git", + "location" : "https://github.com/google/GTMAppAuth.git", "state" : { - "revision" : "9f0c76544701845ad98716f3f6a774a892152bcb", - "version" : "1.26.0" + "revision" : "cee3c709307912d040bd1e06ca919875a92339c6", + "version" : "2.0.0" } } ], - "version" : 2 + "version" : 3 } diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 9c8c5a1..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 SwiftBuddiesTR - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 642d2d8..0000000 --- a/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,41 +0,0 @@ -### Issue Link :link: - - -### Goals :soccer: - - - -### Implementation Details :construction: - - - -### Testing Details :mag: - - -### Screenshots/Gifs :camera: - -How to add gif/screenshots: -1. Drag and drop the gif/screenshot here, let it upload. -2. Copy the link and paste it like below -> -``` - -``` -3. add the appropriate file extension after it "*.gif" or "*.jpg" -- Important: Be careful not to exceed 150 points width that is specified. It makes it harder chech overall ui elements if width is wider than 150 points. - -Example usage: - - - -## PR Type -What kind of change does this PR introduce? - - - -- [ ] Bugfix -- [x] Feature -- [ ] Code style update (formatting, renaming) -- [ ] Refactoring (no functional changes, no api changes) -- [ ] Build related changes -- [ ] Documentation content changes -- [x] Other... Please describe: diff --git a/Plugins/SwiftBuddiesIOS/Package.swift b/Plugins/SwiftBuddiesIOS/Package.swift deleted file mode 100644 index 258c84c..0000000 --- a/Plugins/SwiftBuddiesIOS/Package.swift +++ /dev/null @@ -1,15 +0,0 @@ -// swift-tools-version: 5.4 - -import PackageDescription - -let package = Package( - name: "MyPlugin", - products: [ - .executable(name: "tuist-my-cli", targets: ["tuist-my-cli"]), - ], - targets: [ - .executableTarget( - name: "tuist-my-cli" - ), - ] -) diff --git a/Plugins/SwiftBuddiesIOS/Plugin.swift b/Plugins/SwiftBuddiesIOS/Plugin.swift deleted file mode 100644 index 86a1e55..0000000 --- a/Plugins/SwiftBuddiesIOS/Plugin.swift +++ /dev/null @@ -1,3 +0,0 @@ -import ProjectDescription - -let plugin = Plugin(name: "MyPlugin") \ No newline at end of file diff --git a/Plugins/SwiftBuddiesIOS/ProjectDescriptionHelpers/LocalHelper.swift b/Plugins/SwiftBuddiesIOS/ProjectDescriptionHelpers/LocalHelper.swift deleted file mode 100644 index 6f49a44..0000000 --- a/Plugins/SwiftBuddiesIOS/ProjectDescriptionHelpers/LocalHelper.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Foundation - -public struct LocalHelper { - let name: String - - public init(name: String) { - self.name = name - } -} diff --git a/Plugins/SwiftBuddiesIOS/Sources/tuist-my-cli/main.swift b/Plugins/SwiftBuddiesIOS/Sources/tuist-my-cli/main.swift deleted file mode 100644 index 6f05969..0000000 --- a/Plugins/SwiftBuddiesIOS/Sources/tuist-my-cli/main.swift +++ /dev/null @@ -1 +0,0 @@ -print("Hello, from your Tuist Task") \ No newline at end of file diff --git a/Project.swift b/Project.swift index 28428ec..4810b99 100644 --- a/Project.swift +++ b/Project.swift @@ -1,134 +1,71 @@ import ProjectDescription -import ProjectDescriptionHelpers -import MyPlugin +import Foundation extension Target { - static func makeModule( + static func featureTarget( name: String, - dependencies: [TargetDependency] = [], - hasResources: Bool = false - ) -> Target { - - Target.target( + productName: String, + dependencies: [TargetDependency], + resources: ResourceFileElements? = nil + ) -> Self { + target( name: name, destinations: .iOS, product: .staticLibrary, - productName: name, - bundleId: "com.swiftbuddies.\(name.lowercased())", - sources: ["Targets/SwiftBuddies\(name)/Sources/**"], - resources: hasResources ? ["Targets/SwiftBuddies\(name)/Resources/**"] : [], - dependencies: dependencies - ) + productName: productName, + bundleId: "com.swiftbuddies.\(productName.lowercased())", + sources: ["SwiftBuddiesIOS/Targets/\(name)Module/Sources/**"], + resources: resources, + dependencies: dependencies) } - -// static func makeModule( -// name: String, -// dependencies: [TargetDependency] = [], -// hasResources: Bool = false -// ) -> Target { -// -// Target.target( -// name: name, -// destinations: .iOS, -// product: .dynamicLibrary, -// productName: name, -// bundleId: "com.swiftbuddies.\(name.lowercased())", -// sources: ["Targets/SwiftBuddies\(name)/Sources/**"], -// resources: hasResources ? ["Targets/SwiftBuddies\(name)/Resources/**"] : [], -// dependencies: dependencies -// ) -// } } -extension TargetDependency { - static func makeExternalTarget(name: String) -> TargetDependency { - TargetDependency.external(name: name, condition: nil) - } -} - -struct ThirdParty { - let name: String - let url: String - let version: Version -} - -extension ThirdParty { - static let network: ThirdParty = .init( - name: "DefaultNetworkOperationPackage", - url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", - version: "1.0.0" - ) - static let firebase: ThirdParty = .init( - name: "Firebase", - url: "https://github.com/firebase/firebase-ios-sdk.git", - version: "10.0.0" - ) - - func toTargetDependency() -> TargetDependency { - .external(name: self.name, condition: PlatformCondition.when(.all)) - } - - func toPackage() -> Package { - .remote(url: self.url, requirement: .upToNextMajor(from: self.version)) - } -} - -extension TargetDependency { - static func package(_ thirdParty: ThirdParty) -> Self { - thirdParty.toTargetDependency() - } -} -extension Package { - static func remote(_ thirdParty: ThirdParty) -> Self { - thirdParty.toPackage() - } -} -// MARK: - Project +let feedModule = Target.featureTarget( + name: "Feed", + productName: "Feed", + dependencies: [] +) -// Local plugin loaded -let localHelper = LocalHelper(name: "MyPlugin") +let authModule = Target.featureTarget( + name: "Auth", + productName: "Auth", + dependencies: [.package(product: "GoogleSignIn", type: .runtime, condition: .none)] +) -//extension Package { -// static let network: Package = .package(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", from: "1.0.0") -//} -let designTarget = Target.makeModule( - name: "Design", - dependencies: [], - hasResources: true -) -let contributorsModule = Target.makeModule( - name: "Contributors", - dependencies: [.target(designTarget)] -) -let mapModule = Target.makeModule( - name: "Map", - dependencies: [.target(designTarget)] -) -let aboutModule = Target.makeModule( - name: "About", - dependencies: [.target(designTarget)] -) -let feedModule = Target.makeModule( - name: "Feed", - dependencies: [ - .target(designTarget), - .package(product: "DefaultNetworkOperationPackage", type: .runtime, condition: nil) - ] -) - -// Creates our project using a helper function defined in ProjectDescriptionHelpers -let project = Project.app( - name: "SwiftBuddiesMain", - destionations: .iOS, +let project = Project( + name: "SwiftBuddiesIOS", + packages: [.remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0"))], targets: [ - feedModule, - mapModule, - aboutModule, - contributorsModule, - designTarget - ], - packages: [ThirdParty.network.toPackage(), - ThirdParty.firebase.toPackage()] + .target( + name: "SwiftBuddiesIOS", + destinations: .iOS, + product: .app, + bundleId: "io.tuist.SwiftBuddiesIOS", + infoPlist: .extendingDefault( + with: [ + "CFBundleShortVersionString": "1.0", + "CFBundleVersion": "1", + "UIMainStoryboardFile": "", + "UILaunchStoryboardName": "LaunchScreen", + "CLIENT_ID": "221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8.apps.googleusercontent.com", + "REVERSED_CLIENT_ID": "com.googleusercontent.apps.221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8", + "CFBundleURLTypes": [ + ["CFBundleURLSchemes": ["com.googleusercontent.apps.221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8"]] + ] + ] + ), + sources: ["SwiftBuddiesIOS/Sources/**"], + resources: ["SwiftBuddiesIOS/Resources/**"], + dependencies: [ + .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .target(authModule), + .target(feedModule) + ] + ), + authModule, + feedModule + + ] ) diff --git a/README.md b/README.md deleted file mode 100644 index 863f977..0000000 --- a/README.md +++ /dev/null @@ -1,160 +0,0 @@ - - -[First time here?](#project-details) - -# Buddies Community iOS App - -Welcome to the official iOS app for the Buddies Community! This project is a community-driven app built in SwiftUI & Tuist, it aims to serve the members of our vast community, from newcomers to seasoned professionals, providing networking opportunities, collaboration, and professional development. - -[![Contributors][contributors-shield]][contributors-url] -[![Forks][forks-shield]][forks-url] -[![Stargazers][stars-shield]][stars-url] -[![Issues][issues-shield]][issues-url] -[![MIT License][license-shield]][license-url] - -
- - Logo - - -

Buddies iOS

- -

- Explore the docs » -
-
- View Demo - · - Report Bug - · - Request Feature -

-
- -# Table of Contents -1. [Getting Started](#getting-started) -2. [Installation](#installation) -3. [Features](#Features) -4. [Roadmap](#Roadmap) -5. [Contributing](#Contributing) -6. [CommunityLinks](#CommunityLinks) -7. [Contact](#Contact) - - - -### Built With - -* SwiftUI -* Tuist - - -## Getting Started - -### Prerequisites - -* Swift 5.9+ -* Xcode 15+ -* Tuist 4+ - - -### Installation - -1. Clone the repo - `git clone https://github.com/SwiftBuddiesTR/BuddiesIOS.git` -2. Install Tuist - Visit the [Tuist Installation Page](https://docs.tuist.io/documentation/tuist/installation/) -3. Generate your project - `tuist generate` - - -## Features - -Currently, the app contains four main tabs: - -- Feed: An interactive platform where members can share photos, experiences, and messaging. -- Map: Shows location of upcoming meetups and suggests nearby places ideal for work, refreshments, or casual gatherings. -- About: A detailed section providing in-depth insight into our community. -- Contributors: A nod to individuals who've contributed selflessly to the project, serving as a portfolio showcase. - - -## Roadmap - -While the app is in its early stages, future improvements and enhancements are planned. We also encourage community members to propose new features via pull requests. - - -## Contributing - -We appreciate contributions, big or small. Juniors can learn by developing features and seniors can provide feedback and guidance, keeping the development process streamlined. - -1. Fork the project -2. Create your feature branch (`git checkout -b feature/AmazingFeature`) -3. Commit your changes (`git commit -am 'Add some AmazingFeature'`) -4. Push to the branch (`git push origin feature/AmazingFeature`) -5. Open a pull request - - -## Community Links - -* [Telegram](https://t.me/swiftbuddies) -* [LinkedIn Group](https://lnkd.in/dm2N_VQs) -* [Kommunity](https://kommunity.com/swiftbuddies) - - -## Contact -You can contribute to the project by reaching out via our Telegram group, let us know about the issues or your suggestions. - -[![Telegram Badge](https://img.shields.io/badge/Contact-Telegram-blue)](https://t.me/swiftbuddies) - -- First steps taken by - - **Doğukaan Kılıçarslan** - [@dogukaank_](https://twitter.com/dogukaank_) - - **Can Yoldaş** - [@cyns0](https://twitter.com/cyns0) - -Project Link: [https://github.com/SwiftBuddiesTR/BuddiesIOS](https://github.com/SwiftBuddiesTR/BuddiesIOS) - -## License - -This project is licensed under the MIT License - see the [LICENSE](https://github.com/SwiftBuddiesTR/BuddiesIOS/blob/main/LICENSE) file for details. - -## Acknowledgments - -A big thank you to all community members for their continuous support and contributions. Special thanks to: - -* Apple -* Tuist Contributors - -Remember, this is an Open-Source project. We look forward to your contribution, let's come together to make this app a more valuable tool for everyone in our community! - - - -## Project details - -If you're landing here for the first time, welcome to the Buddies Community iOS application project! This app, built with SwiftUI & Tuist, is the result of a collective effort driven by our community, comprising newcomers as well as seasoned professionals in iOS development. - -Buddies Community, being a platform dedicated to iOS development, aims to provide a productive environment fostering networking, collaboration, and knowledge sharing. Here, every member has an opportunity to contribute to the project, learn from the best, and get their hands dirty with real-world project experience. Our aim is to make this experience as enriching as possible, thereby helping members grow professionally and become better, more informed developers. - -It’s a space where you can share new ideas, discuss designs, learn architectural patterns, get feedback, and much more. And all of this around a practical project that continues to evolve, just like the tech industry itself. - -The iOS app offers features such as feed sharing, location suggestions, a comprehensive about section, and a contributors pane acknowledging those who've participated in developing this app. It's not just another pet project, but an application that is enriched with every contribution, making its value significantly higher than a solo endeavor. - -We invite you to explore this repository, install the app, and most importantly, contribute in whatever way you can. If you're skilled in Scala or Tuist, great! If you're not, great! We value all contributions and believe that everyone has something valuable to share. - -So dive in, explore, learn and share. We're excited to have you here and can't wait to see what you'll bring to the table. Welcome aboard! - - - -[contributors-shield]: https://img.shields.io/github/contributors/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=orange -[contributors-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/graphs/contributors -[forks-shield]: https://img.shields.io/github/forks/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=blue -[forks-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/network/members -[stars-shield]: https://img.shields.io/github/stars/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=green -[stars-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/stargazers -[issues-shield]: https://img.shields.io/github/issues/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=red -[issues-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/issues -[license-shield]: https://img.shields.io/github/license/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=yellow -[license-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/blob/main/LICENSE - -[readme-top]: #buddies-community-ios-app diff --git a/Resources/SwiftBuddies-Buddie.png b/Resources/SwiftBuddies-Buddie.png deleted file mode 100644 index 127465b8154b0904c6eb9fa92310ae9c0a62db8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180175 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�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

I;Kb04TC7u~fZq8+sRkswro+as?s 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 diff --git a/Resources/buddies-icon-clear-bg.svg b/Resources/buddies-icon-clear-bg.svg deleted file mode 100644 index a4a0216..0000000 --- a/Resources/buddies-icon-clear-bg.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Resources/buddies-icon-notext-clear-bg.svg b/Resources/buddies-icon-notext-clear-bg.svg deleted file mode 100644 index 5fc2c6f..0000000 --- a/Resources/buddies-icon-notext-clear-bg.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Scripts/FBCrashlyticsRunScript.sh b/Scripts/FBCrashlyticsRunScript.sh deleted file mode 100644 index 252fef2..0000000 --- a/Scripts/FBCrashlyticsRunScript.sh +++ /dev/null @@ -1,2 +0,0 @@ -"DEBUG_INFORMATION_FORMAT": "dwarf-with-dsym" -"OTHER_LDFLAGS": "-ObjC" diff --git a/Scripts/firebase.sh b/Scripts/firebase.sh deleted file mode 100644 index fe79f1a..0000000 --- a/Scripts/firebase.sh +++ /dev/null @@ -1,3 +0,0 @@ -if [ "${CONFIGURATION}" != "Debug" ]; then - "Tuist/Dependencies/SwiftPackageManager/.build/checkouts/firebase-ios-sdk/Crashlytics/run" "Tuist/Dependencies/SwiftPackageManager/.build/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols" -gsp ./Resources/GoogleService-Info.plist -p ios ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME} -fi diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftBuddiesIOS/Resources/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/SwiftBuddiesIOS/Resources/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/Contents.json b/SwiftBuddiesIOS/Resources/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftBuddiesIOS/Resources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Resources/LaunchScreen.storyboard b/SwiftBuddiesIOS/Resources/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/SwiftBuddiesIOS/Resources/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SwiftBuddiesIOS/Resources/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftBuddiesIOS/Resources/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftBuddiesIOS/Resources/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift new file mode 100644 index 0000000..5618e67 --- /dev/null +++ b/SwiftBuddiesIOS/Sources/ContentView.swift @@ -0,0 +1,23 @@ +import SwiftUI +import Auth + +public struct ContentView: View { + public init() {} + + public var body: some View { + Button(action: { + Task { @MainActor in + let _ = try? await Authenticator.shared.signIn() + } + }, label: { + /*@START_MENU_TOKEN@*/Text("Button")/*@END_MENU_TOKEN@*/ + }) + } +} + + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift new file mode 100644 index 0000000..7f1128a --- /dev/null +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -0,0 +1,10 @@ +import SwiftUI + +@main +struct SwiftBuddiesIOSApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift new file mode 100644 index 0000000..e5eaf6d --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift @@ -0,0 +1,23 @@ + +import Foundation +import GoogleSignIn + +final public class Authenticator { + + private init() { + GIDSignIn.sharedInstance.configuration = .init(clientID: "221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8.apps.googleusercontent.com") + self.googleService = GIDSignIn.sharedInstance + } + public static let shared = Authenticator() + + private let googleService: GIDSignIn + + @MainActor + public func signIn() async throws { + guard let vc = UIApplication.shared.windows.first?.rootViewController else { return } + + let credentials = try await googleService.signIn(withPresenting: vc) + dump(credentials) + } + +} diff --git a/SwiftBuddiesIOS/Targets/FeedModule/Sources/Feed.swift b/SwiftBuddiesIOS/Targets/FeedModule/Sources/Feed.swift new file mode 100644 index 0000000..72200b0 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/FeedModule/Sources/Feed.swift @@ -0,0 +1,9 @@ + +import SwiftUI + +public struct FeedView: View { + + public var body: some View { + Text("Feed") + } +} diff --git a/SwiftBuddiesIOS/Tests/SwiftBuddiesIOSTests.swift b/SwiftBuddiesIOS/Tests/SwiftBuddiesIOSTests.swift new file mode 100644 index 0000000..6b7e4d3 --- /dev/null +++ b/SwiftBuddiesIOS/Tests/SwiftBuddiesIOSTests.swift @@ -0,0 +1,8 @@ +import Foundation +import XCTest + +final class SwiftBuddiesIOSTests: XCTestCase { + func test_twoPlusTwo_isFour() { + XCTAssertEqual(2+2, 4) + } +} \ No newline at end of file diff --git a/Targets/SwiftBuddiesFeed/Sources/FeedView.swift b/Targets/SwiftBuddiesFeed/Sources/FeedView.swift deleted file mode 100644 index eb595be..0000000 --- a/Targets/SwiftBuddiesFeed/Sources/FeedView.swift +++ /dev/null @@ -1,20 +0,0 @@ - -import SwiftUI -import Design -import DefaultNetworkOperationPackage - -public struct FeedView: View { - - public init() { } - - public var body: some View { - VStack { - Text("Feed Module") - Text(ViewEnum.hello.rawValue) - } - } -} - -#Preview { - FeedView() -} diff --git a/Targets/SwiftBuddiesMain/Sources/AppMain.swift b/Targets/SwiftBuddiesMain/Sources/AppMain.swift deleted file mode 100644 index fd92284..0000000 --- a/Targets/SwiftBuddiesMain/Sources/AppMain.swift +++ /dev/null @@ -1,58 +0,0 @@ -import SwiftUI -import Feed -import Map -import About -import Contributors - -enum AppTab: Int, Identifiable { - case feed = 0 - case map - case about - case contributors - case login - - var id: Int { rawValue } -} - -@main -struct AppMain: App { - - @State var selectedTab: AppTab = .feed - - init() { - - } - var body: some Scene { - WindowGroup { - TabView(selection: $selectedTab) { - FeedView() - .tabItem { - Image(systemName: "list.bullet") - Text("Feed") - } - - .tag(AppTab.feed) - MapView() - .tabItem { - Image(systemName: "map") - Text("Map") - } - .tag(AppTab.map) - AboutView() - .tabItem { - Image(systemName: "info.circle") - Text("About") - } - .tag(AppTab.about) - - ContributorsView() - .tabItem { - Image(systemName: "person.3") - Text("Contributors") - } - .tag(AppTab.contributors) - } - } - } -} - diff --git a/Targets/SwiftBuddiesNetwork/Sources/Network.swift b/Targets/SwiftBuddiesNetwork/Sources/Network.swift deleted file mode 100644 index e69de29..0000000 diff --git a/Tuist/Config.swift b/Tuist/Config.swift deleted file mode 100644 index 8c163e9..0000000 --- a/Tuist/Config.swift +++ /dev/null @@ -1,7 +0,0 @@ -import ProjectDescription - -let config = Config( - plugins: [ - .local(path: .relativeToManifest("../../Plugins/SwiftBuddiesIOS")), - ] -) diff --git a/Tuist/Package.resolved b/Tuist/Package.resolved deleted file mode 100644 index f9d8e2b..0000000 --- a/Tuist/Package.resolved +++ /dev/null @@ -1,23 +0,0 @@ -{ - "pins" : [ - { - "identity" : "defaultnetworkoperationpackage", - "kind" : "remoteSourceControl", - "location" : "https://github.com/darkbringer1/DefaultNetworkOperationPackage", - "state" : { - "revision" : "b7e20d27362595726aeea298b6b4bd6f3734f480", - "version" : "1.3.0" - } - }, - { - "identity" : "swiftuix", - "kind" : "remoteSourceControl", - "location" : "https://github.com/SwiftUIX/SwiftUIX.git", - "state" : { - "revision" : "a5a22a1aaca885c229f475af049d75a6d9144de8", - "version" : "0.1.9" - } - } - ], - "version" : 2 -} diff --git a/Tuist/Package.swift b/Tuist/Package.swift index 27e2e44..4a3595c 100644 --- a/Tuist/Package.swift +++ b/Tuist/Package.swift @@ -1,22 +1,22 @@ // swift-tools-version: 5.9 import PackageDescription +#if TUIST + import ProjectDescription -//#if TUIST -//import ProjectDescription -//import ProjectDescriptionHelpers -// -// -//let packageSettings = PackageSettings( -// productTypes: [: .dynamicLibrary], -//) -//#endif -// -//let package = Package( -// name: "PackageName", -// platforms: [.iOS(.v15)], -// dependencies: [ -// .package(url: "https://github.com/darkbringer1/DefaultNetworkOperationPackage", from: "1.0.0"), -// .package(url: "https://github.com/firebase/firebase-ios-sdk.git", from: "10.0.0") -// ] -//) + let packageSettings = PackageSettings( + // Customize the product types for specific package product + // Default is .staticFramework + // productTypes: ["Alamofire": .framework,] + productTypes: [:] + ) +#endif + +let package = Package( + name: "SwiftBuddiesIOS", + dependencies: [ + // Add your own dependencies here: + // .package(url: "https://github.com/Alamofire/Alamofire", from: "5.0.0"), + // You can read more about dependencies here: https://docs.tuist.io/documentation/tuist/dependencies + ] +) diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift deleted file mode 100644 index 1ff96b1..0000000 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ /dev/null @@ -1,73 +0,0 @@ -import ProjectDescription - -/// Project helpers are functions that simplify the way you define your project. -/// Share code to create targets, settings, dependencies, -/// Create your own conventions, e.g: a func that makes sure all shared targets are "static frameworks" -/// See https://docs.tuist.io/guides/helpers/ - -extension Project { - /// Helper function to create the Project for this ExampleApp - public static func app( - name: String, - destionations: Destinations, - targets: [Target], - packages: [Package] - ) -> Project { - - //// targetDependencies.append(contentsOf: additionalTargets.compactMap({ TargetDependency.target(name: $0.name) })) - let appTarget = makeAppTarget(name: name, - destionations: destionations, - dependencies: targets) - - var targets = targets - targets.append(appTarget) - - return Project(name: name, - organizationName: "SwiftBuddies", - packages: packages, - targets: targets - ) - } - - // MARK: - Private - - /// Helper function to create the application target and the unit test target. - private static func makeAppTarget(name: String, destionations: Destinations, dependencies: [Target]) -> Target { - let infoPlist: [String: Plist.Value] = [ - "CFBundleShortVersionString": "1.0", - "CFBundleVersion": "1", - "UIMainStoryboardFile": "", - "UILaunchStoryboardName": "LaunchScreen" - ] - - let mainTarget = Target.target( - name: name, - destinations: destionations, - product: .app, - bundleId: "com.swiftbuddies.\(name.lowercased())", - infoPlist: .extendingDefault(with: infoPlist), - sources: ["Targets/\(name)/Sources/**"], - resources: ["Resources/**"], -// scripts: targetScripts, - dependencies: dependencies.compactMap { TargetDependency.target(name: $0.name) } - ) - -// let testTarget = Target.target( -// name: "\(name)Tests", -// destinations: destionations, -// product: .unitTests, -// bundleId: "com.swiftbuddies.\(name.lowercased())Tests", -// infoPlist: .default, -// sources: ["Targets/\(name)/Tests/**"], -// dependencies: [ -// .target(name: "\(name)") -// ]) - return mainTarget - } - - static let targetScripts = [ - TargetScript.pre(path: "./Scripts/FBCrashlyticsRunScript.sh", - name: "Firebase Crashlytics") - ] - -} diff --git a/graph.png b/graph.png deleted file mode 100644 index 2144f6a54f76a516477482a9425ac16bcdaed6c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42312 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 Date: Wed, 10 Apr 2024 17:57:34 +0200 Subject: [PATCH 016/126] fixed tuist config --- Project.swift | 47 +++++++++++++++--- SwiftBuddiesIOS/Sources/ContentView.swift | 28 ++++++++--- .../AboutModule}/Sources/AboutView.swift | 0 .../Sources/ContributorsView.swift | 0 .../AppIcon.appiconset/1024.png | Bin .../AppIcon.appiconset/Contents.json | 0 .../Resources/Media/LocalMedia.swift | 0 .../Media/LocalMedia.xcassets/Contents.json | 0 .../SwiftBuddiesHeader.imageset/Contents.json | 0 .../SwiftBuddiesHeader.jpeg | Bin .../Sources/Extensions/View+Extensions.swift | 0 .../DismissableMessage.swift | 0 .../HeaderParallaxView.swift | 0 .../DesignModule}/Sources/ViewExtension.swift | 0 .../Targets/MapModule}/Sources/MapView.swift | 0 15 files changed, 62 insertions(+), 13 deletions(-) rename {Targets/SwiftBuddiesAbout => SwiftBuddiesIOS/Targets/AboutModule}/Sources/AboutView.swift (100%) rename {Targets/SwiftBuddiesContributors => SwiftBuddiesIOS/Targets/ContributorsModule}/Sources/ContributorsView.swift (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/1024.png (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Resources/Media/LocalMedia.swift (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Resources/Media/LocalMedia.xcassets/Contents.json (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/Contents.json (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/SwiftBuddiesHeader.jpeg (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Sources/Extensions/View+Extensions.swift (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Sources/ViewComponents/DismissableMessage/DismissableMessage.swift (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Sources/ViewComponents/HeaderParallaxView/HeaderParallaxView.swift (100%) rename {Targets/SwiftBuddiesDesign => SwiftBuddiesIOS/Targets/DesignModule}/Sources/ViewExtension.swift (100%) rename {Targets/SwiftBuddiesMap => SwiftBuddiesIOS/Targets/MapModule}/Sources/MapView.swift (100%) diff --git a/Project.swift b/Project.swift index 4810b99..2aae8f2 100644 --- a/Project.swift +++ b/Project.swift @@ -6,7 +6,7 @@ extension Target { name: String, productName: String, dependencies: [TargetDependency], - resources: ResourceFileElements? = nil + hasResources: Bool = false ) -> Self { target( name: name, @@ -15,17 +15,44 @@ extension Target { productName: productName, bundleId: "com.swiftbuddies.\(productName.lowercased())", sources: ["SwiftBuddiesIOS/Targets/\(name)Module/Sources/**"], - resources: resources, + resources: hasResources ? ["SwiftBuddiesIOS/Targets/\(name)Module/Resources/**"] : [], dependencies: dependencies) } } +let designModule = Target.featureTarget( + name: "Design", + productName: "Design", + dependencies: [], + hasResources: true +) + + let feedModule = Target.featureTarget( name: "Feed", productName: "Feed", - dependencies: [] + dependencies: [.target(designModule)] ) +let aboutModule = Target.featureTarget( + name: "About", + productName: "About", + dependencies: [.target(designModule)] +) + +let contributorsModule = Target.featureTarget( + name: "Contributors", + productName: "Contributors", + dependencies: [.target(designModule)] +) + +let mapModule = Target.featureTarget( + name: "Map", + productName: "Map", + dependencies: [.target(designModule)] +) + + let authModule = Target.featureTarget( name: "Auth", productName: "Auth", @@ -33,7 +60,6 @@ let authModule = Target.featureTarget( ) - let project = Project( name: "SwiftBuddiesIOS", packages: [.remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0"))], @@ -61,11 +87,18 @@ let project = Project( dependencies: [ .package(product: "GoogleSignIn", type: .runtime, condition: .none), .target(authModule), - .target(feedModule) + .target(feedModule), + .target(designModule), + .target(contributorsModule), + .target(mapModule), + .target(aboutModule) ] ), authModule, - feedModule - + feedModule, + designModule, + contributorsModule, + mapModule, + aboutModule ] ) diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift index 5618e67..aa70e89 100644 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ b/SwiftBuddiesIOS/Sources/ContentView.swift @@ -1,17 +1,33 @@ import SwiftUI import Auth +import Map + public struct ContentView: View { public init() {} public var body: some View { - Button(action: { - Task { @MainActor in - let _ = try? await Authenticator.shared.signIn() + TabView { + VStack { + Button(action: { + Task { + try? await Authenticator.shared.signIn() + } + }, label: { + Text("Login") + }) + } + .tabItem { + Image(systemName: "list.bullet") + Text("Feed") } - }, label: { - /*@START_MENU_TOKEN@*/Text("Button")/*@END_MENU_TOKEN@*/ - }) + + MapView() + .tabItem { + Image(systemName: "map") + Text("Map") + } + } } } diff --git a/Targets/SwiftBuddiesAbout/Sources/AboutView.swift b/SwiftBuddiesIOS/Targets/AboutModule/Sources/AboutView.swift similarity index 100% rename from Targets/SwiftBuddiesAbout/Sources/AboutView.swift rename to SwiftBuddiesIOS/Targets/AboutModule/Sources/AboutView.swift diff --git a/Targets/SwiftBuddiesContributors/Sources/ContributorsView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/ContributorsView.swift similarity index 100% rename from Targets/SwiftBuddiesContributors/Sources/ContributorsView.swift rename to SwiftBuddiesIOS/Targets/ContributorsModule/Sources/ContributorsView.swift diff --git a/Targets/SwiftBuddiesDesign/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/1024.png b/SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/1024.png similarity index 100% rename from Targets/SwiftBuddiesDesign/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/1024.png rename to SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/1024.png diff --git a/Targets/SwiftBuddiesDesign/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Targets/SwiftBuddiesDesign/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json rename to SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Targets/SwiftBuddiesDesign/Resources/Media/LocalMedia.swift b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.swift similarity index 100% rename from Targets/SwiftBuddiesDesign/Resources/Media/LocalMedia.swift rename to SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.swift diff --git a/Targets/SwiftBuddiesDesign/Resources/Media/LocalMedia.xcassets/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Contents.json similarity index 100% rename from Targets/SwiftBuddiesDesign/Resources/Media/LocalMedia.xcassets/Contents.json rename to SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Contents.json diff --git a/Targets/SwiftBuddiesDesign/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/Contents.json similarity index 100% rename from Targets/SwiftBuddiesDesign/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/Contents.json rename to SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/Contents.json diff --git a/Targets/SwiftBuddiesDesign/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/SwiftBuddiesHeader.jpeg b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/SwiftBuddiesHeader.jpeg similarity index 100% rename from Targets/SwiftBuddiesDesign/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/SwiftBuddiesHeader.jpeg rename to SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/SwiftBuddiesHeader.imageset/SwiftBuddiesHeader.jpeg diff --git a/Targets/SwiftBuddiesDesign/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift similarity index 100% rename from Targets/SwiftBuddiesDesign/Sources/Extensions/View+Extensions.swift rename to SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift diff --git a/Targets/SwiftBuddiesDesign/Sources/ViewComponents/DismissableMessage/DismissableMessage.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/DismissableMessage/DismissableMessage.swift similarity index 100% rename from Targets/SwiftBuddiesDesign/Sources/ViewComponents/DismissableMessage/DismissableMessage.swift rename to SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/DismissableMessage/DismissableMessage.swift diff --git a/Targets/SwiftBuddiesDesign/Sources/ViewComponents/HeaderParallaxView/HeaderParallaxView.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/HeaderParallaxView/HeaderParallaxView.swift similarity index 100% rename from Targets/SwiftBuddiesDesign/Sources/ViewComponents/HeaderParallaxView/HeaderParallaxView.swift rename to SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/HeaderParallaxView/HeaderParallaxView.swift diff --git a/Targets/SwiftBuddiesDesign/Sources/ViewExtension.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewExtension.swift similarity index 100% rename from Targets/SwiftBuddiesDesign/Sources/ViewExtension.swift rename to SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewExtension.swift diff --git a/Targets/SwiftBuddiesMap/Sources/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift similarity index 100% rename from Targets/SwiftBuddiesMap/Sources/MapView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift From 548af5cc93260215fbd236f842047d79bdc6fc62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Wed, 10 Apr 2024 19:22:24 +0300 Subject: [PATCH 017/126] Remove .package.resolved file to avoid build tools conflicts --- .gitignore | 3 ++- .package.resolved | 42 ------------------------------------------ 2 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 .package.resolved diff --git a/.gitignore b/.gitignore index 24b244f..676c1e1 100644 --- a/.gitignore +++ b/.gitignore @@ -67,4 +67,5 @@ graph.dot Derived/ ### Tuist managed dependencies ### -Tuist/.build \ No newline at end of file +Tuist/.build +.package.resolved diff --git a/.package.resolved b/.package.resolved deleted file mode 100644 index ec526fc..0000000 --- a/.package.resolved +++ /dev/null @@ -1,42 +0,0 @@ -{ - "originHash" : "e11c677f3fdba414eff21261c4b5d041d25f436a83c1faaba2da6b9357e42259", - "pins" : [ - { - "identity" : "appauth-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/openid/AppAuth-iOS.git", - "state" : { - "revision" : "7e2c09cbeb3bb799f26c268dbedb26325ea722a9", - "version" : "1.7.3" - } - }, - { - "identity" : "googlesignin-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleSignIn-iOS.git", - "state" : { - "revision" : "7932d33686c1dc4d7df7a919aae47361d1cdfda4", - "version" : "7.0.0" - } - }, - { - "identity" : "gtm-session-fetcher", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/gtm-session-fetcher.git", - "state" : { - "revision" : "9534039303015a84837090d20fa21cae6e5eadb6", - "version" : "3.3.2" - } - }, - { - "identity" : "gtmappauth", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GTMAppAuth.git", - "state" : { - "revision" : "cee3c709307912d040bd1e06ca919875a92339c6", - "version" : "2.0.0" - } - } - ], - "version" : 3 -} From 41e3e63196e82bf166a5a0f273998a75902101ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukaan=20K=C4=B1l=C4=B1=C3=A7arslan?= <40922278+darkbringer1@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:36:17 +0300 Subject: [PATCH 018/126] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9c8c5a1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 SwiftBuddiesTR + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 1cd6245fd1f52c90fceb52afcc420e24a4280e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukaan=20K=C4=B1l=C4=B1=C3=A7arslan?= <40922278+darkbringer1@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:49:24 +0300 Subject: [PATCH 019/126] Create CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 128 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..cb0b9c2 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +dogukaandev@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. From 536813bbdaa0e70a1c582bc27048513401fae434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Wed, 10 Apr 2024 19:49:44 +0300 Subject: [PATCH 020/126] Re-add readme.md file --- README.md | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..863f977 --- /dev/null +++ b/README.md @@ -0,0 +1,160 @@ + + +[First time here?](#project-details) + +# Buddies Community iOS App + +Welcome to the official iOS app for the Buddies Community! This project is a community-driven app built in SwiftUI & Tuist, it aims to serve the members of our vast community, from newcomers to seasoned professionals, providing networking opportunities, collaboration, and professional development. + +[![Contributors][contributors-shield]][contributors-url] +[![Forks][forks-shield]][forks-url] +[![Stargazers][stars-shield]][stars-url] +[![Issues][issues-shield]][issues-url] +[![MIT License][license-shield]][license-url] + +

+ + Logo + + +

Buddies iOS

+ +

+ Explore the docs » +
+
+ View Demo + · + Report Bug + · + Request Feature +

+
+ +# Table of Contents +1. [Getting Started](#getting-started) +2. [Installation](#installation) +3. [Features](#Features) +4. [Roadmap](#Roadmap) +5. [Contributing](#Contributing) +6. [CommunityLinks](#CommunityLinks) +7. [Contact](#Contact) + + + +### Built With + +* SwiftUI +* Tuist + + +## Getting Started + +### Prerequisites + +* Swift 5.9+ +* Xcode 15+ +* Tuist 4+ + + +### Installation + +1. Clone the repo + `git clone https://github.com/SwiftBuddiesTR/BuddiesIOS.git` +2. Install Tuist + Visit the [Tuist Installation Page](https://docs.tuist.io/documentation/tuist/installation/) +3. Generate your project + `tuist generate` + + +## Features + +Currently, the app contains four main tabs: + +- Feed: An interactive platform where members can share photos, experiences, and messaging. +- Map: Shows location of upcoming meetups and suggests nearby places ideal for work, refreshments, or casual gatherings. +- About: A detailed section providing in-depth insight into our community. +- Contributors: A nod to individuals who've contributed selflessly to the project, serving as a portfolio showcase. + + +## Roadmap + +While the app is in its early stages, future improvements and enhancements are planned. We also encourage community members to propose new features via pull requests. + + +## Contributing + +We appreciate contributions, big or small. Juniors can learn by developing features and seniors can provide feedback and guidance, keeping the development process streamlined. + +1. Fork the project +2. Create your feature branch (`git checkout -b feature/AmazingFeature`) +3. Commit your changes (`git commit -am 'Add some AmazingFeature'`) +4. Push to the branch (`git push origin feature/AmazingFeature`) +5. Open a pull request + + +## Community Links + +* [Telegram](https://t.me/swiftbuddies) +* [LinkedIn Group](https://lnkd.in/dm2N_VQs) +* [Kommunity](https://kommunity.com/swiftbuddies) + + +## Contact +You can contribute to the project by reaching out via our Telegram group, let us know about the issues or your suggestions. + +[![Telegram Badge](https://img.shields.io/badge/Contact-Telegram-blue)](https://t.me/swiftbuddies) + +- First steps taken by + + **Doğukaan Kılıçarslan** + [@dogukaank_](https://twitter.com/dogukaank_) + + **Can Yoldaş** + [@cyns0](https://twitter.com/cyns0) + +Project Link: [https://github.com/SwiftBuddiesTR/BuddiesIOS](https://github.com/SwiftBuddiesTR/BuddiesIOS) + +## License + +This project is licensed under the MIT License - see the [LICENSE](https://github.com/SwiftBuddiesTR/BuddiesIOS/blob/main/LICENSE) file for details. + +## Acknowledgments + +A big thank you to all community members for their continuous support and contributions. Special thanks to: + +* Apple +* Tuist Contributors + +Remember, this is an Open-Source project. We look forward to your contribution, let's come together to make this app a more valuable tool for everyone in our community! + + + +## Project details + +If you're landing here for the first time, welcome to the Buddies Community iOS application project! This app, built with SwiftUI & Tuist, is the result of a collective effort driven by our community, comprising newcomers as well as seasoned professionals in iOS development. + +Buddies Community, being a platform dedicated to iOS development, aims to provide a productive environment fostering networking, collaboration, and knowledge sharing. Here, every member has an opportunity to contribute to the project, learn from the best, and get their hands dirty with real-world project experience. Our aim is to make this experience as enriching as possible, thereby helping members grow professionally and become better, more informed developers. + +It’s a space where you can share new ideas, discuss designs, learn architectural patterns, get feedback, and much more. And all of this around a practical project that continues to evolve, just like the tech industry itself. + +The iOS app offers features such as feed sharing, location suggestions, a comprehensive about section, and a contributors pane acknowledging those who've participated in developing this app. It's not just another pet project, but an application that is enriched with every contribution, making its value significantly higher than a solo endeavor. + +We invite you to explore this repository, install the app, and most importantly, contribute in whatever way you can. If you're skilled in Scala or Tuist, great! If you're not, great! We value all contributions and believe that everyone has something valuable to share. + +So dive in, explore, learn and share. We're excited to have you here and can't wait to see what you'll bring to the table. Welcome aboard! + + + +[contributors-shield]: https://img.shields.io/github/contributors/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=orange +[contributors-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=blue +[forks-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/network/members +[stars-shield]: https://img.shields.io/github/stars/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=green +[stars-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/stargazers +[issues-shield]: https://img.shields.io/github/issues/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=red +[issues-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/issues +[license-shield]: https://img.shields.io/github/license/SwiftBuddiesTR/BuddiesIOS.svg?style=flat-square&color=yellow +[license-url]: https://github.com/SwiftBuddiesTR/BuddiesIOS/blob/main/LICENSE + +[readme-top]: #buddies-community-ios-app From 02cd99835a88fc9d37ab33897596fe1ad677e0e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Wed, 10 Apr 2024 21:32:35 +0300 Subject: [PATCH 021/126] Add app icon --- .../AppIcon.appiconset/Contents.json | 90 +----------------- .../AppIcon.appiconset/appstore.png | Bin 0 -> 246463 bytes 2 files changed, 3 insertions(+), 87 deletions(-) create mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/appstore.png diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json index 9221b9b..44ac9cc 100644 --- a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,93 +1,9 @@ { "images" : [ { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "20x20" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "29x29" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "40x40" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "76x76" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "76x76" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "83.5x83.5" - }, - { - "idiom" : "ios-marketing", - "scale" : "1x", + "filename" : "appstore.png", + "idiom" : "universal", + "platform" : "ios", "size" : "1024x1024" } ], diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/appstore.png b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/appstore.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee88e28d5236bd73ca1ec15fa5561873b07cd04 GIT binary patch literal 246463 zcmb4r1yoe)yZ6j6A|M^oJ%oUCNe+l~Nh947(kV3~-5?+x2Hhx)bc2A>N+Td$()I1} zob$i;yXUU;t#7Sai{4-+7$f-*rENTrIdk5FyUP!lhV6% ztHC)JB}c+_k=R78(Sgoexg-VTo;*YY z4gOz|VCQQZQ#eOGtPV5{-p3BS{IR;5?I;pvY6bCQ z*7I?n7W{7uAr+ZSF~PYSOI36K+x;H^x6m4pugdygzN~~mwCO;lv-;Bu>0xqp2JhrFSKgWCu@+hqSf#9v4G`#`ps>LAvKCfQj~dBp#GaY!K` z2&PbE%)g~Vhx|sE3sQg9A}0DrF#lN-o=2qTGk>7S(srVY3C05HkjY1hsdIe8W{<}B z@h{nH%ON1}37iL_GN^rb!{D}+sr){i|0Oy-6$mj%CsCq8<$pPt6$2cctDNgY{$IcU z&rbh!VI=7BLt%pd98ysYxbp`25f)5c7Q)XkfRT~H@Q+4Oiy$LWi@ytvieW;Q5afcK z1*ETy3 z!e^xZx%97_AtxA}eZYvG>CG6d3g!Rhj8B;1cnAix)s6q`9Q7tQ30kkJtJo+egsCM2 zNO?lMWt;lHDFU7hY+2n3ZD2PZPL9$rql5842lPxq#L3x?P)^13d&em(5k9yg1M(@KC1oKVC>hM!>SZ$wu#>RzNMnKp>wt7B65vXU+bN+=t>nSFjW1f=pMx zn*I3OUQ9!vU2SR~H01NY$>(dPM)vYhMy)u|h0l0XX&yk)n`xd4Qu?XhMfWrQ)Hql9 z!=chX{o*|;0u zCY}8!_OZ`x^R2-OCwq?+;83tiZ+Y$g=FhEnY4z&Rr}zcgcn}(Jff3e|m_H#cmjZBs z!k(vAIe!Vo?iHfpIe`N6!3c}$O5o?0WHxIM402h83oi6l$1!Im8&QdB7xDSJTG}t1 zq~A999e!i8V!CA~{T&}86#(Pqu{|{WTR`gOkn`+FmbJD0f{NzYifplv8EgP&OH-**^z43GA8 zStVV$=o`Y8xco-%xAj}U?^$btvNgriVQp{QI75w(?Ik}B+Hvd;W{jrZkF0B--~C-G zuTCS3gsyM^Jh@;@Y*X2-#>r7ZBre1cAnV+>r?`4X|)emgvu(d9k^bI)V z68CEA9G9>VK?^9%W_xWDdag+psX5znX`DeCkOs`uJ5pXgJ$ZFvt=Hy8R}T2t313 z{W8?SjdoS$AfG`42BA|>?3Xmvu2^IUvVFoVVr`=W>!eycp#6~oJO-7e-lL5;CjN1C zy*NbIu)V(5?RpQ(zS79&@N35R;g&do`chnSuUnH}KTU>ylt##nRW{_2xB9Q(cpI41 zDH5|H?=e7!777>3l6((h*Y$|wtU|IQG;^iz#(rT&mH-~->>)cF^tX@|72(n5JU3Po zx9)V|CjJK?8gVb0!~@}YMYQxj2uY*W5%Jm9thZ?{UTc-x-Evz8I0xl@x(1y3gnyz@ zQW)qC;?Q|b`)?m!B!sXHOQr=sPRTrPTgRjA&S^aniB(avIho)mSu?>bxk;g%H@r+# z(B?5sT!=H7X+V=~amf;qIYbNJZ~w~&P)XxA5MYwBc`E)%!zuXjB!Mo8DX_r1%q$0k zBh+n2ot+r+3X&0tQ=c*^{RI{WL+*U|_T06}SyPVkrgxaSzN7^0DS;F}j>u)Y%5SIZK_(tl`@Vlhx$f`C z+jrbHPhvUa?(XReA-I~)RW`XX?>T>^G<}NEK=ii_bA+`G+(E1wCinhRfZ-6zTkBr$ zq=&M|${u7~n)IB8$;Hd(gPO_*ex~&w6_cxRa`DyX4MxoX+|(K=0A*w zRi;N&I{o9bG=RAcbf)S46>JO5Ag_O_na|BNmMdOfHpPc9fAW~RA}Y=+q^$pO>?i_!B2Ast zJnW46jFQ{+WQRfiDP}?26PELw>B3r{1>MgEBpUA&na-8+#_ejk{oK8wtzL^HV&eSK zA7I@de8DQ66iW2JOO-&+q!B#?Gkty6mA>VwZ>cXe3qc zOs>xJ)u^7CJei}!s~EX=XTJj;><9((@qI*;Piz<8uC8StqQ}2R9zYwfRJ?OrNhRy7 z_&h)Hv+rS~_5Mb$Pcl{=AH?!CU%WS%JiET^PmlZH{PfHWcwT(#GTdwS$PX_^2&OK8Yp%iyQ+jHSpZ`Jj#^(72G7|JG%Qc|0;BQzp(!KgMlkG6IS8GW0#p>Z|w0+=AL4*TWi~{ z79nBC2hGvU;XBQocFB`h0fVIkD+0D;1AOKN_Iwfz{_H@6|9tWJ=Ux2r8nM=&G|7+N zoDYOEcsBIks|8YH@A@k;oG>2d(?&Boe5Jz6`Pm=q&TZ?JC0q)9(;J=^{ubgdKa=jc zHDqJ;#`_w)pY9b+Mje$c3-DY;TB+I`)F&(q)=tS0P_m??fLP?730ZHH1t~X8j2XlI z$8-tm=-PB!lMwUM_~ria zjf9{150B}YZ>2iJ zyA;D$E5y3z+Db`iXXe;gE_Nrg5xt>zYeIZiwq!7b`o+WgviCT?jZLn}9sWn^WP}kS?=1pLr(QkD5 zV%wMg2JE}ryIr&kt`?lc@Ks$sDfz)e1Ksb86Pp2^c_z{R{qzZ~)R~zbC1ZTvR<48v zHfZ(uF-6HYM{l{!zml2COWbMb6B%^z6DcK z`c2Qx$2R$jR27tHQnP8Z^T%LPD2d+l_C$q9Rve&6&s!S!sDll>A>q?<_+^DDKU7hl znZZ8NYqP%ZC8uV(_lxW#CKkMevFHwJ#BC}cQMyT~I_7eElU_cVf1YsOT7Ol*Co9c{ z3Bzt%LKKwa+Hd(!Ppik-U#U!g-|k(@N1vVkE>f{${;8j&ggy}AOxoGcFMWIcTi@@z zk4H?5KUixP!94phbao=&xtxD~!n3rhbx73jV99V|9FRdPZc2O$rVjtf?_ z7&$=|-SCH~{zB>fmloiY7B!d${$-+_=p)$g`Zu}X`nHdslQ-<>aM!(<)Sb_|UXOkB zJQ-}cD*9j;tcWjfg-zIm_T^aO_odkMxAEW?4+Cb$CquW=Ge(y@*L&KdQ%K$9La?;t zcM;M~Q8u!@`)a+a%k6GKWNFztv)wAsPF8ANA^Adx%m?JLZ42Y!c;yB`r=>f+2EM-I zcRma)OP8#&x4yI;&ZV-8=ef9-=%(0wgFH~6%1rGVOw<$>6bk!@#1FMz2VqXRO!M`$ zl$Tt}V!{~sjh>7eD5?$l8m6-Gzz=z0iF#9$kxh+F`wO)WI`rh#tCC@FTyb{)P9FiN zq%@ML3qw`-Bt(7nSvIpdtLv?jo{+%6pJdtOpL4OHb2}QcA!MYh+*0fJAhkn^*0n87 zyi|sqs4Dwe4r#_!!0hAjXe*$UH2?Q7`nV?hRXOt8ZoJWpfunH`RW%q%p6 z6q)PuX5xN)|FLexCuH=FZ{iLwJz7as+B}i9^kdsj`!T+=lZK~;~K;SyR6hGdjK#e`fr)Djd?3Xo1EBpb+7Z!y}85t1~ zz92?TK5rj8ilAjFhUGM^<;ouuJPa#ET2xkqzsva%))DP`tk_{wLA1}t;!LKiNSX`` z#?3nXYP?hYmJfhNl^1fqujN^F%R!e8(Au@xF?O7wN}M(ljGrvxm%|P8R|m+)-iKGY zkq2JC8hNkE>JJ^t>59D_-AJCg-VL{}`VsO)5%gTs9Ptxx`s-}4W1I~Q=3{a=xzL^; z@+~n@k6}@=+d7M>?@LSUOQ2L59mP1w60La6`rSy?D)sAJD>0+Xs#|)=RcKdH!RzUX zv6$1+jb4Mxm##EmSM*hq_!O^q#1E5wUQqn9Hje3lhP+O`jhWGJ=6w{S%Tlm^IG#iZ z!d4iz9ZRxropaPJ`PGg4Ul!K1$_ z+|uYaHY|`oWtOy63w$Voq4YlnY7nANPKJyt?1En6| z##_F6J*52D=_9Ssr&?1t3&wJ%7d;oDFOQj4?;Z(#+%|qoRyjV3RKl)%73`Y$HI;Wf zn~VYpI~Ntsw0L%G{mmdig z%e*qUQWpu}Dg<#vwnL)E(y&5jRIC6?!>vj-54Af`Wn22ulPlho}x#3cU|e+Wba8*52a0Yu90 z@N#6ufJL=)t+K?`WSK-=#h@jlHu!1~t2oWyP{(sCgQBXuN@^8P&t$I?F%pKWMlB*v zlfdPhl?mpaN!jG}WU7iOH%j*L){_d8*)*2oA)QzfPH6t_9!I){kmmO^DP z;<=b&`xSjfVvsuh#tRX1FUs^Z_a0Y_L>b4eM@oNNrFeLnM|QsQl{MeOB@+kgEJ)U| z(Eu{e%6_^~ke|gVqfKJ%z})$*6%fL!lp(5o`VzO{M;2Q(Y#(^(xboLv98483rV0-dr?CV$J~xq&+rftzV6J{iruhx zv$2D%V@FMl%JisuoTC%EcT8t>GC1|4wmh*O;}LMB~itXUO4CuX!suLZ6zz1FQeA-;%Ts3F3PM9q%X~ z2+Xa{A52k9&c1FPEF=7V4y#Is=_SHmAb4fgmR)4tS1HefA4M45<>$HZu&Pfh`DEQ7 z5T!~WXpae1=7Hlr<-C3ECH*CB+iMOtWh6?rKr_TE6@s{;;>U)W^UzUz86t8~`&u(J zl8!TchwxNeLp7Gkw0X0(fe<*L>*Qi-)DS&f2cCNK_?1@ECx6e1wnK zP`a#yL99C@BdBk>=J!^L+UbQ2IR~xJO*Gaco84Mi;}tMiOX>uzx*`gKiwAVo)78Z8 z!A>M~RXGiezwlp0&B|mCn?u*`DWnw>60UO5vsk0wUNM&t#;4~KUKee^ZmV~%IIipW z7b98V420bmZ>+CwPiG^3hZ>33eaVSI<$$-yIbb}MpaTdXHy3C`0ZZi}}(051-s7r?~ zx7d~py|%7q(f)KkMnwgO7+lKDjRJ_^Ur-gN+v8ze03Fhc0pzEoa)2j!!k;bdOVc=r zB-Xtt6V!6RLm^Ta;XeYuaaWd=kt{UdI+m7I*a){_c^|6(F>qXDnEAjzd{f-U#mS(=H_e#N!xU{4KKPa;iBrwp%RI97l}y9f2bE3E%rxA z-!NGT=(0kMrVgs?g_iJ~TEH|-Mwr>k_w+X28{C|@%_rqNs?a+J#HDpZR(%&(lSICa zLxqdoEYSB#IAFCQg_{T$%~St+{d?dY+y@!J7@|@hGBBE=2uhDt+nJ6WnXg1sHPV&S zgzCX$cK=Kb24QfpY1*PU*`H`0j7adfzCHX(bk=QS0;eMk`69Iv$fWG!P=w(eQ>JBU zf8Kna4a)iK!V+M6sbh7eR1J4T9Ssi2L*d%)4nEd@7+$nFm58#{KPO$0 z)NW$GJsdD;`n(<^4XIIpM}Ufm4OLlgJV#!f?KjqxVykCpB0mFo3#$N9>|qWBUSxK3 zg<3ma4sL$)LXZ+Yh<^5b@v*S@qdOUc3Uz_Qgn+q};1?RJVH=2q(3ps~T-IJz)-*(% zgE#`YwDt@?iMGRPYHm@-GKm*k;vHaP{D{{>H&D=lizg^rL7 z{&M@1mA7|yALmRN%=ugG{V`7x0CU!Ra@NcbXnY4>eRpSre{C7F`Dm%P%FElfr?*eX|qwc)MEb4jyHc`s`2?1pVM~a$?Q38ut5z2qisI;dD z`1O@#KStArFKcn|g%vKd0WcZ^1`HbDZtKn;7nl24b@Pcn%5T;b#n@5G8RtO0z6TOe zdPDukQ8>VS8w>H*`xR?Ou zI0Mq1!qceNX~7*Wz~}PKGgzAh3WA0A1BetW`Lk>Q>du|SOzpXyQp@S?%{iB_W=JUJ zyRr9=o(TjLL`WcCur%s%)%`+fWo61ygVanI9-(*i3DB&-6F@U6I6|U8)1=M`v94|* zXP{$B7D)G2mARN3Vsd^wrf>MLl zT|giP>DS&rk#(#*aKTVCt=`dUQs6wREPxAK4f#9)j?KnI*Apm`CCh3C97r|NE1XH53>}($;t*z(u&o_1DRq1<%-Ajrf7hY z*b)#4itXjLWZ0qmL~47TE9+tPhb9qd{epmbYQeyo(CLZ!$XoBhIkNq8(+}T91t{5} z#2zx_xdvL9V&s^52td{)xDZ-D-6vht^0}cHeMC~xfnoVe`@gXRuKGUGN+=?q-fq6;h)vY1szY3Nye@|TQABonjkk%R%WcT)$ zrs$+)bPl2t3}O|tv;}19BjZ2^I9wS~pUE-l{oA8e-Tm{aSW|CL+{UpYoy@<-4W+o? zrZ4D>*>L|XO4@~L@|>onm)<*`T^bLB1!CyIC43ysY`~IF01;OHYOB;o?U*jUbu;iK zXZY>jIqCkdMQ-VY=RId?d8J>~YhM9g&2+mPOM!$O3fsmkKG^}LgG-j7{S zNPrco(*kpd>V`ZNuyg<>$!%;X4J$7C=mUOfPsD9PVRbBD8z>w=Xd>)RHeyl_`X$1z zqIq2Kx2@|1A+YY^Kb_>REcuKh=`zQBHT%Y1dxfxw7$%-;^d8$Z=Bqh7pl6*ZKu;44 zBU?Z%p%;r7e{;XnWb(I4=k4N8;+y?ZdvAy5(3LU1%BhA43I6McLVgbTC^s$C4k#LZ zjUl&Kbh8`< zg*^dFLTOa)uv*FP%&tF54^2{zq za-zGN8(p8p=jvN4?s_z4|IqE48+uly;)5=~pOQrW^N)#5$N~YjCWiI$F+@Nnca(~B z#kg$SlAQR)WZ?ASr-7rPJ~CWY<)zVa*h#EmTSS^Z9YNTdC%c!1^?Aixh3@jd;5#NL zh?@`-Xfx|-?l?I*b-#IYe|ux2OR$wTMzxpeI@U(K<)<6m-|7xhT0d8vwLaaUlI+2` z-Fji8lzAAi@d4B>X4H?QVZZ?T33k|^$4cVe@(KH{q<3X=CPdLIvhL z*kO#`{x8vct*u>{@w-mBqF4HUCcWe#)(y-ke>}yXywnQ)VruhYR8*e9S2*7wl!->pv8XMyCPLF6%>%87J|-U&901LAMQItB3Pv7oTnKz9ItHE zJnm|6g1B12dV)#7aDV1!w|mqjD!e}ca9wtaX@+MS>~?qYn2}8QdTXDONi(H`Ze7_o zm7c3S^@?HA#78sH*$#?;_Pl=@9P{BKfD^w>2K2*< zRL&a|&A4~3R9Sv%K2_cox$IVdHL;!R7r>-t9Hh(|gh57pN5@UZ`vqYoGqC4LD$?3W zs7@AwoW-eUNC{^(q;|ub>SGo3l`I4)193ZmzU%)m@QEs%Ma%qixEURcC-q5W0lz?W zL?PMbgVjk|p4S+Z=sgpA-%^#jcqn37!KVCFvJAwp+XA&a@EXylcbu(PBqx;U_%16h zGA&RcSUxus+NCad1npaoOi(U11mjNy9yJZ#X`Q;4(}@hox$CGBHnO4Kf$($eJ9yzZ zCFWFB>u{!LW->HVUgV7(VQJS+g~qnckt`cDh8brxvc@FOj(jGAQ8!oaN?N}y;)g4m zo~3%07sJW2Nu3hPBTxAO`tH-%w$mf>qi262E&#Z_wCK2>&{j+sPfEcPeh=pc-qF@z zif@s?8v2-CxyL*;x(DcbyDVX`X)@R!51{$)c&x(ZUMqB2R7JNxEMY(V_`;09Y=&Cr zChahJIQ-tG5?_!2nBbw7Aj?C|$q{A+kkwwaz173c91&xXfI`VXvQ=(bn~?QVUC&kq9~Q~4-aoD zTz=u5U(Qof(6Cz6G|c1Ik*fTsJIK_# zBA*+H@w4e9%HTr-bxu}iLYjVbaHqGeA7RDF(6R$}czaqysZ?Av(urc8Jg{>%B~xkm zMWexeT76~?sn4=jCP}V)N;A>7n??`!)|cy$HYji!h<7>=>rDT(rr*3DUrTV^m)w)I z28dDzeZhDf%|^Ra%LmpvmHmY??<@SC`Abo%k?<^e;$06h< zB2}0Q>o60O5RR_M6pN8l%hKiy@vKv7*vU8t9qJz1HeGy#jLqm zIaBb!Z5k^wCtP*XEjMrepyX-;>`R+LeIR|&Pqy@1?qM|yAR^|I(V6-2D2!6ZEUyWm zosGvn^vflcE^Kc&q!usGgu}%ql;Sr&ej|%*5s~khs z_s>@!YT*nH0sShaUm z-)KKtH|i10C~s`08nS%Zr1P=iWe+X9=Czutww-hneF!7l*Y~JNSXodowMC(j72d+H z#J46F@f_!4D1SVA<4L%S>fm^wb{ZgV6B@-03Vj|v1Wwrlh+16qGHFgACKqm8$A&wd zRA*~`PfpfD9Hf$j(xJ}wL}c@Mp2I0{2%DiOf-;5A%Gx?(Z*41Wbl0|@S%(apjhWs! z+^px-{9bwlXU+f9X|^>~Y1Us>ke z^(a$k3n|j0I?z(A@nR!m5efOU z4Rh%)u6?N^qdqls`DkPXKBzw!={x%v`z`|{c}YD>ZAL=l#VuW1|s?T0bQVriK3o5JuF zVEAfzF2*-G@}`2>ZI)uOZteK*Lf^W^hyS8mMuejiro$Fiy)eznyI#rEGTwn89}u!~ z&KMoic=&B5+g$l14=~YhVS^#5BPg_>+5U_P~#eD_S7d05(mw$RF>?iW`yp( ztl<4#CnWH$dqXB}B+MGXg~QN3OW>tbsn*BqO{JpD#C{QMSAsq4vK04n9_1 z0V+s!Y9I(`^$G*sturQg?0k26o9aaD48MngpoZZ=i7P<-o5VCU|HWmw7$wDCzLp-^ zSZd#*Ikh-^GpnZ?RwKbR=`9X)U!&_s@4jwyO6y zC|9Ngk$GU%-6uW|xvJ|Nhf{~KNJv+aQG9C6EJN3azk`%vT@2!sU7d@DK$26(SYMMC zCc-x5OlY&`17n9tb0^8iOAqzE#Q&hd{rUl2axys?gX=`u!&W`ga1K4Y@pzJ^X)D% zW`1^|@7u<&)w$NQvQL`~hnp#=64^Z-5lJQZ7_Z8_g0#b@Bh^h`QgXOUtUkfVUFsXh zjvW~?7p7`w=ldv3jlsaVguX$HO=50Z=!b60g!_T_5xExDt5V`bmiqk%1O3m~q2tAY zY#{(&;A}wL%T!k>YGBx-ti*-jCAS;jgM4SS1L65OQL>4-!YVJB4C%Ud?T2 zxzqq^%f~Q${nX^Vpyb2L<#H~^OTxWP7m=#G222AA%F0RIxUC=0DjSLj0<>w4zNr`^ zR7m~Y1SB%bRd*a3mq@LwTJq5yHnJWPW4Zc}e5`IyhQ7L&P&n|I`#!G4Z3re6FmiEc zMzl9Pf;qq$(li?G!V>6Z$l~4ZGcy~$O!R?bY7v7KB<#9~>Psp}P3GM)2&EoCw8rtP zt59|Zcoi{BJp}r*^L)^Ws<)Tcmyk0~uDjcn5n0Tv{(O5dvZ=g1O(ltit4eha8546n zJ@+ko=S#r$bK4#Pm6+%5BAin1qy5fb)D9WFMXIf|@LG?(nn%-5rjyi_GINR@8d^RZ zqB@C*US9l-ZJd$zgo8kiA$b_~K$(fJALENpN{U}4Z(n6HtkN4&ECS~aHmN^HzdG49 za{j@$`sAF-Q0(!p0ssvIwWs3y_S$%O0*09PuGswLK9L<0Z@)(1lXnASdXey!_M8|} z-PJ?>2!oop{hDDveth50j}^oopR&-@L<8u8dZVL4FX)RARGJw5aN6?K5*)g7LT^YZ0a3=1Bu-@aB}ceBLr zJ)*M_!pZ8GUU%+jV;>s>NH$nNc3aZo4%TI6j#pM1hqGxq*6fojKg~Tu>*0HoiAcZP z;7>Q?yt*{l?Z_@y6=-FOj{F0I60o*_;EyV+tw9C`B+#KBoblZITbFptBe>1jO@rO_ zx5Z?06g$D>Lk~+XXX;=2fR9D8rYE*_P3k;7ic?0dPp|a+$EHU{-i+vuQ)J0K+4X!o zg?J=%#Krio4d4e%i}FSm00Z-@E@JCAT$tbj}&sdppjglr22L-aiB<9#q`?(7%Pia1xZUeCgxE?^0}{pB7FH& zXmVvf7I*vki}oErUSGFcKd_HyvD>703`w?g|G7%dWTr;JT zEvJ{>zkWaZ19f^}yHyYt4{FZas)#evS1Ek8;2Rx$i&T9G~;^B#gt=5tA7LRb zM1Tb}`nE)bnbS9c-n4jE&c@~dDVNhzLPRv`o)vK`ETxm&c2)n2U&FfLlRE`94$j#q zToRy}^*-Er@oRrvs?Ii^*WYl}WWsEv`ym|uy14(Emn3HC*K8>vw8h5}<8DEI{P0VR z@C2rF?jb``VkifFP<+$FUWT14lL&T3(O0=xmU@7`P6wkYmA#kb(+rALdq<(??sY2Bwf zfc~hRcVXEbjvm+`7co`B4=HXoWy{Mxs!&y4Noc3{TbcFA%*_4*9StYTwcRv+N2hN4 z-e6|OL!J{M52gK4g%jvE7*psal0*tO%Znb^Win8MOrR+39b5L#Bh&~zs1ux0&i8bD6OYnB zeFQjV#n%&mL0mG}pR|XE6dU3x>X4ql%g2YwG1#VahA^l<-{b=!vQ<}T z_vV7|%1olX+3sNC0nca+(!;rStkeyd`GF4B^vh#;(;Cd5I=3s;7q_m~$F1eDCATHw z+}Z*D`ZEc-q6cD6vzeE_=Y)5zA1zZ~`+M)D1LUvy;!PPP4oMSeiJx?(Z;4`?d>(-U z1qO^zm{&X~>~7dW@(K$NuQ=K?HNrZGa~@nfR5mccT_R$r?c*|bZ?SXgMNiJ0C($z_ z#~O_GVvzQu*=;QpO<(;%eS^SCxWvJVMewm}m~(jx(NdMj&bF1fR@53UOzeINcm?Qxej3pOVtsF7csbVg<@4Ox z(y@JINg2)-rQdT`kqO1X8|%qkcEGVZ}YXtiVP!Z15BjxUf?Q^lHnJt__ zUoXkaVvl-6f=jrKC%hGSZesMPyvjCu0aO>oP-R0#7=x0zzYqSVtq3l!iqQqeg9xHv zC@>aoxVRnPXPrNolhZzDEx*y7rUPn(!)j~h!>FisCzv+7)81CM@8pSvnina6YCQLB z;&j<5`0CUSwo0^%ZCl-atT6D1Jf=wI6<3VfqKRr|N6_O=`OpqFEqI;Hp<7?TZ|uSb z+mFk*8OET)>x$Fa(A$?^WY-{iJlfd^sG<^J*tX}^!>Y(KswDeminYx^IOP+us z;k{#hwVL516*X8?J{$?MqJkPnLf-%b#x_Dz7hOWV7m(N9DiY6WDXDrcY5fV`dQ;g( zY#8o@9$b(-h8y>FS!veRkCTwTHyLwTfYZ)@Ux@nADDriy=&|pd-+L2sVtt;(-D?uQ zSqE0kpKP5RTJLtGVUhQ~vKnWk_XK8&1Ucd2GG>>tnnr>T&&_qx=!XaK3lBnQnD7e5 zoVP?I0(;BO`UEHe7X9M5J^|ts8#5`m4J+pnKxOA;6SLhR)LWwVVRD}NphB2&ox$}v zdSu)8zG{VT!*_kBmDhR6Ju=Y&W8IR>=z$#N%ZP=>eA?3!&lP}H1duU*6&|&f8}aXH z*I;gh|Aba*giYTEs%R^scz)j3kV&gd1&f|2EjuRL8r^ljyxOYX&X zkbbRaAz03gNNGqh1DrKF&bSpP(Bra9BUswsu}}0K3Q)HPeA2Y+z|>xTu^MW5M^-}q zR84ugH~V{-1ySOFQ6iT`CjUKxcwNqe`w4q&2_~L3fiL7l15O(4UCLT9MFE27>hX}$ zq~#<|N<+_-;P68f`eSX|Ce5>GNEcr99Q!T{^FbEh`hHnr0rCU5-q88`&Ok}q5V`tX z@N`o*q550KP-J-z`qj=(-SSNf4M}#NYh@Hu-?e>Q4 zGADvnqSk`_=5)ttz^{Dt9wIRa$^ndT5v!rWI1ET7%vAL6MQ{-9!X;I0jsW23KwSq+oOiDF)pU;@{5sB*sjKu!`ao6(0+fx351g+I!VUGwZsatX4jga z$Uq(gE+Ve|?Y_iFDP*b?MJsw8;Qmtlk#4|I_bkV$?%?*c7hqf^MD>|u+>~)E6C31I z>6slw>tP49HpAehctRQ@Tu}|%w)kd&AyQ|LKJD7DjXV3AqP5Evd-d8Ok@9TtHArDK z(%OqH9VlcXX(R+&?qj6VX0xonIxG6T(5qQ}G4d_2hWq!ulc&b-sLu7Ty7y1d_Y)~6 z&D5Mof$^5Pm%&!Eg$f?w8_VJu+s@d;wn)ryGE-*sFM)5cL!_sLT)`Eps!Ni?S-lBM z1n?;{H<6`ye56)ngPo3YtE+16Yq0FQ>91oUfsI?hb93W`!E^`sOF&a?iUVMhr98L} zcQ6g#AezPc@2;chf@*%ZJ|w3VI#zw9))?~Gd29;>wrp=rL zL`kbYmhjd`zuC4O>mrL*bgrR8(*ZoQuyT!o(?^t>2P<2XOZmfs z+jcK{aC}OxdAWX)HJ<5i&erS6^4pZ!DAle~?vYn)4mk}i*cjGmcgr3RhCqU4;LrM* zOT1HhylhIISSBO=kaS0G`S(-Pu!ovkMA$AblRriDmP>#Su;R~Ca=1)ciF@V~o;JIi zLE_?KmlhZCO~*h5Xt+(@cPu;5BIy;&B*3+~@rb0vWJ^R{1$mq9ZX@-aG2RDe72{-m zY2b+ly(fU+-`r^pu9;7nprO$!gTgjmCyn}8I+M}*+tJEGz|(pc70<#%r?_gqJAIVu zpIh^*dFhkl7rQ*+15(1Uq96yAh>OSPSi*mW^J?Ju$N2ipgd*f{r?GJj>}z2JnIr{qoby*&zAqIW zoUXPa;NIfsO?=?D*+6>GjmFivd)#5V(Q0+@=|bwT!;-?^r4w*eZ@*)2C0!QBT{~T- zD-=5J@z^-uRrcM4s4nA9Q&;XtxpR8SQ8imF)n0U!JTbsUv=j-6Pk>L$GbC{*v8eMW zcR4V`%3!62cbnGPrd<<;Vv+I)>A%Rj&+{Nd()`h52ChBhCTc zraaE5a0T$XQ|+Cn>HUch25h|AET$%Ia5K;gjO3yQ@6fKr^wy)RFNm2Jj%olBmt_@{gd-RP4~CrpV3>neWz`=K1Rj zYAY(hnb5H1oO>I=emmLX&pn#n9AB|pQTjL%7HR_uxAXWp<1|RbZL!wk8-PI@c;QQi zi*A+}tT;&P-$wttzizl#i*9UBV)o{AY=Ez>L*(h86-NwKrm zGR9h6-pR-zF⪚R87g@%Ok6xVUi?@Vss#jSKhQp2&cG2n3?hub{lrUhq$>(qZreb z8Qv%t`6q!8p9nz=iXi#Ib9^Nxp2YA@`3P&`5wf$xXn7byx=LNgQ1{a`Th*NzBGw!y zYUgRbsZX|SmrV~q-bYZ-(rW_H?7%+h)3&lMG*OByTqf2}6BF$@$95ae4NG24NeH^$ z@tK{%k0wUk@izGnMly_{#CIcwPE*{NHT!g4Jr#sLS-bHX##x>=1T6@ApmQmFgQw|Q ze}iLz2c=##SilxpvlQQd-Rat!Z>E%V+sS|81J)~N1g7X(^x&;~AZ?5+BL-wQete3r zPuk7Tk6eptCc>bmsm|%!ZbV7Ef0uevvL??nSS_t5b=|T1Qhu%A?DTvnUMV@kXoM`$ z+99yT;6;f0M}~|vm+p~LQ|rK??(rxBHzuM$k^6F8+}r@`SHr)Xhak>Ogs{_+KOZ~r zoD=;@SuFOevrO6a2swHWBLSTwNS1+eG{+_3jmTC*vagkcP3s32AIYeAONusLU96gL z^XFltBet5$VGrcl=wY{z!;j}y(pu&7KCLOOgI6gx6BBReSGAf&=Nvz=g4<$s>J0o- zZU;wH97(^=a*o@Iylkd9uH#h8x(Hx8c(VI8s>PSoB7yvwdW*q0w(fu$`suebSc^vh zK35Dd$xR>#Mw4pWdG$C&<5k+D8ip^$esfLR$&b1(1fH1{)=_%#n)eE<{Y7f| zQlR24FbZ1Qopy!M7g^0nvk93ZJ|Kc=OsVSB0!`VfRGeQNlg zEs)`6*VP=1@R=K`XfWn{Z)^Om71B*l+M4siqGc-bBExlk-s_uZa^M+$&!-!O`4>9pqzlYGE z@k;2PuIkNFtr#C+rb;8OCi&5OI|%$PXMMyZ_+QC|h4S!-qX|=u!hXUiY1GRf8EqdF zdw}V(Cf-DrtAI_PoOyF&66YW`cpu0v-+C{B zZWi-W-agtMN;UKww-SG^&p9YhG4Q2zaIcq|`bB-!d+I%kU%fp&FDGasc2Y=X8_!7t zy@yIy8uYFms=GtVVX{lktfe}K-Qu^Fbm8h^vB2!h212ha!&r|WVa`w39$xxP(N>n{ zSNB7SEkY-Xv-Er`9O{0*?3@P4qre%g$M+%^eC>0pxDQNZ>H5f)&drgfKb369qgmsx zvy=9Ul>34PLqq`TyCEkwF!|p($el0>1Lxe$GRC7YQso!f*4rwP`*_HyC;SNxlnfo| zDK?0A@UJWh2}Y|UYPhFry=u$t038K*lDe0pBJ`WV zHT(TIfHh6-c6Si0=QlpxY=@$zeV0qUE)j+tzG5$LW?5g`XH?tnzBzgfFlYG6muJ~x z5w6|$g#r||ZD3#LX2T6cMGtO(;o#_nK*LSnS-KgRWJ=+lV7;@IiNj%tG;3FEX7m%( z{~!P$^N(-wnL7xqe$i%Rb;}Ev&Yr2Mso1dbh9kL3`m0?l437k+Jyg1dqP{+7=GUE} zsP2&%%p!4m_4D2xI~B-|D|6;iSW6brCeM<750kJbhzW0;sbhkunpnu?(G@zadQQ}7n(ri ziU`&Fr{3`0ZYF~`_da!iJ7yrX;k51G@qFY=Y=m|E zGeeVb7!t~l1Uib*p^42nnaD+AX7ZyN>8v0p-iDAsm!e2krinm&M|wD|t{f~Wk+}Ep z0Sg7{Tj~k3e>(|@LAK%{&B(}xX9*+`_Rj?*M^|pjl0qFu<<~0C?oW;??xyz} zUGy^L;P6_Myasy+)*NQ=wcJA`ee*Zk9n9p|uXNi2l4Tn+_%E28eEo0j0#_%;c>fUC zG`ME+k>~d~{*dlcg~7cC$A=ve6X)WRw9sBh<&>|I@`J}KST@$b`eC4k+IsIjX# z{mYZpQ4`I@+S!YvsknO3fZ{aIm}Zxkd4$dAiA2t7^reJ}Sg(5#^64Jwj>~2P= z1R~q>+`oss=_3_=NCb5%rjy7s3ZY+iXQDqnb;cSO=y5!pJ+TbT*tzx2_FKwyy?)_i>K z(beubG2#o6XSR2!Boh6A{Ux1gjEhxXwO8Az+tyQzqobp9y_m_dD^Kw6{I#Khg0Y+p zl*)nsLI-j@6j|S<(D0+h9Sp|?B~a_GWoYZx(0Yo zv^?Me-EFxoAmk<0fu|$zw{n9+VuXeC9Sadx4#Q zLaIL~yQ+J?eg5m1u8>Q&sW(-@sb&Lx<4iNh>Cu&c3Zzhb>E5I=nTMq;bjZre9*jCT zi2pipLP>>|jbO@fXir_Z6Fsj94R+_o*9=DCMQLwOcJ-?7K}((W$)zdC-Fk#G5eNE* z`?|t-f{@x;D=}8t*!OU6a4oAexxbJ*_Z`&D4yG|$GMgISuvRI-#)I%b-9g|^e9VU| zuRuzj%yGdJ;y+CG{cjE}Jwt+!n+fE{!!|$I*sOQ76rUyeAKyG7>rV(cI-0Ib=rjAT z@#b#(q53)Re#Ks&IM97>JuXtlDW~}B&H@)U8DgD@d($Vx20OXk6Emgp7=OF zFz*sZkr`^-D;YtpTg5ndV5JQR(MEvtO>BNz4P35hfT7LE4^N_uECuJK<$g_K*fDih zLI^q9wlp+UjR-YdhU8!jSPDe%n=!oSR#giJcPrffs@Av?S>u@~bxtfN+e=j*2=kOo zXW9@HTirOn?h}O+D0%|hoOGxfsXQ?V0D`FFc0!*DY#NROioC*}B%vR!B!irg8+Y;~ z7pFCvl5KRud8*vNnZ03QFWlAX)$pv{Rv<&14!efT%aKK6iv~*7dyc2m(WtdV z>M2Zgh;4Ydb;adqZZ2+n(**ypEz2YuWubs>GtKF7{tO4pH#QrHoi{#8Viw2nhe z*TbuE`vwX*BY2CfuwsShI3#9V>1B(!ZbfHb=6+laYF@1e@o!~YA=3QTG4WoD+#pdR z1?IT|8cNCQR3MCD$IlbG`aq``v%3ay_(8{x6<2oqJoxAW`g&TMrt-Js=IzayCwFHGAthpKC2YsVtNq_$5dNgy@ z@V6ZbtZZ+cdGAk|qB5k!VG99za1^Nt03pNi=6nRY%DcZjJw5J*reNK3J|}@yL(o}Y z80IxQ?8f*T2N+2^_%w$OXfx#YqiTBtdU-uXJfMn(SViH0zc&*Jft3OlL%%2!`s4*s z2MN92bdmtab8PIs|Nj#IpK;0l2Smy1``9k*M=lu1NKgN{c7a?R>7?TWF>#%0Zi@6N zQ2VXb)ouUDb}fP(N#MvlN3L`Uene#aOrsa3@=xF-4x=&ZIQ*v?eJGh~(E^XI$W5 z9}JNfJW4KisRqxH8{4O*TiY?t2M3-uze`(VDPC_oIDN(1Rz;#boXu69)a_;ex1e_F zn^I=XC<)zrP=1}v##43U$@S7THfogFv5zao7~B2N>)K2HzRJ{Cp&nx5fqZgN*$R9J zX%|Kt+n*!Z;D{q|GD7Eu_WaRJ-u7Nwk*jCBKCvt~P{RU?a$pft2fUJaU+z{uKdw7r z!-p6RVbB_c!=KQ89C?h0qblXrh6eoA)~SEmLdhFHGaQ>FZFBgBPK^bowuec_@4${I z*tCdG-@m(b&+kEDsM6RITj`gdlm0(0L`}^U8uQnW23A_IKpT(MZMC(MFOX6Yw4L($ z#8E!;6Z|_Oq2Y%j@lbk;H)$1r-lxIeb$v}eauT?HarP)@1|?mVmYUz|NK>XR-#hsH1~n8E6y8Li~@WH;#zRe4Qho9|rMOz%-9%<85TZEaZPgSn+?O<$bir z7j&)o{}@Y`=$*T33@!nZh)-STcZ1=V0u748VmzgqR^E+`>-6kD_HK%)ui0IB;cqov zOpcSm5}3c^4=wtG1HjUp973F76VX9;OM9qsOR?mmMH^h_h~a7Tv(mNUbTNojbS5WQ z>I1c|n5p2vj98!_c__rT$cdt_?ykdvIe>?*qc2y@@vb%bh1jeuZoE{GE;4wi7tU{nR8ciV8WWw$5el-!H7Aya24-aGX|H7E~Jdf!`XzBI3dNg_bxMndB|@Xg;SThA!bt98&x0SFF~u1RlhOU{-7TJ73@GN=xzN8K^cp zB$)FIdD0-det2G%?#kzI?LKf#JN-3kobUAj)my+er}?IL@Qag#2i zu0N+n3pzSB53pQrGj_%izoDZ31|dtxcyHYR(IBB;?G5ZuGBz31_2bR|4WFq{L-Fx& z1six?QgrcfM-;&VFd-%!?b7qzT##Wt4qGz8Gax53W*+^aM}jt`(hCHDb$jU+?DFr) z{QK4~2H__7jQSWC+i%{=is8^M$?|4=((>m<)OvN-&D9_-z|(+ZBzOG%HcT{`PPWv+ z-4hEXn>UV;kUyY5eLZ?UH&rNVn~pAPNRxG@k?!~Ld9Chu!Gx3-Wy=p+lG@~C9!@$3 zs@lv74e4#hDWbbCd9qOXl@F>e(dOrl7OEd0De0I68|mq|U)$ks_fH4aK3g(niCXTq zI1uKs05l&969>>`{_3@+9lj_r)+8)#R-9QnZHpRw_k#c*sPDaPWk)N;`j+%R-`ujL zl|~PsE-m3efZPxWaekyF^Fe{w^>=Ud`hHGIc^~QfTyvyVVAo@$13AUJuh;5>yQ+oG zOlbak0*;Ksdg{w77(vMa^U*{EzK|!wr;JkmWB$n$3hz^*hB?B@mUVQH3|CFAoqE;V z9K6|<_G|MeH+@&m1AprZxBi8OYw_zdlA{ET+Df*r7NXO)wCP@(4U4x|weh-noTseq zzH}-|n84zNcKG3Q;7O1vPf?&xq(x&xA6}7S$&VV-9&~{CFrrMz(fi%$OE%nDut&hu zXxftLEJH(v<_{^MF)hpWRmSZ+S=?T4-QyEQMN$6kh2;REKW)HPH@6BVhz=ctAuGy! z1oHjoZqcxt)UX{T5r6J4sce8vk29!+pEf^l4iaFt1Ht(XXQOwpVERHFO)CYU6eBZM zVCg`Gt_1`xK78`W2?W^X2xQ9V&v0&hCDvQWHwH*&|NH)Z`nh_G_hyD2GM($;3(Gp= z*^qiuV_i75G-w)6^5%MuDF+{4m`#VaGP0xHN{{)a@I}Gl3A5+UHIl+HVgV;0~c$pH_hn-rD!Tk!Gygk%j3%)LQ?mIQ>4VTp!@uD3uz70or|ga!TK?Yy$V^fVbUdS=#OMb$0{x zSuG7m#s5*-eHA8dy;VHutvWC>A5VE*ztZc)@^ikkttx*q+h3X7K)2StD2U0JQD=AG z8{i`3^CI+fxga+uMKgOokx^bT+_bjUFUxXC|2*1XpZ@l7;nq4CgM=htc4#+^`^u}G zIe+pnaOGNVGF*oqO}o({aiUjm;peLWWS$~N=$TqKX>>{pAGscxLR6TBzCOQaiv@o= z9xQP-6U)B;OY*XgX|(*R`{M3*S1-DK@AWKd^a&D&wJV)oETXL@VG0zs_Awu&%2@>` zL<;94MFajoLHB=5BJ*kJ5L5Q$k=Q3PmZkwN-Z~b%9}hYFv`y0d5_I_}He_&W0Pslj zl}XCR*bMByfb{4`#D(j6|IaZwM!mppsg~?@e@LOef`ER*W&7`JglN;73~U@w$EmY+ zV3oa2cj!SMd7wBi&&It<^Gj@4aUh(P+%h4bO zh+LbSjiY+u_z6+Y^^lt*8FToLtprTUHT@o`!PIG}yWY5xM4~i)dXBOO?97*-H9sSW zQAlC@oE!-*eBg!WOqEiBQOoZTnvbOWHYq;LJb&9l>YXp8Jiza}6Xs^e);RUY|UEi4$;h2M={TLT5~OQ|$j)n_`f-I(0lD zN=Qg*PW}U4OlB{FhR{|r0@OVh?rMplvrQcou%SD=1wi|;-=A+{@aBH&#e8@3(zx?H zrY&#kXOqdr!y9d#$r(&l%o?yE4@_&5lTEpfrs&F;{{GS|Z?Yp-S87!nRbR+QIOL)$ zs+WzYgNs{N*$ze^K>q;|czAef4g8(*s?zu57Em#u-zb{W42A-!$-Bu4Wai`!w5UV< z4W3z+;1JG{&`b|Kpio<^uS9rSCh;12OV7RCj=kC=R~cInb0#gYPqcbXTFx?ciwSbjfW zmmoc7Z}HAw-O&V9r?gC+Q{~A<2mtbf1Hkq{2$USbI3H1y@M4wl6RL+wkwL$l`rPWH z@0I-%WvUe2Y)c-SZRPDa|Doj@=7O%x9EF3bFw&ey3oc;LvHHTP(ieghTB=+&o$N*p zezBhGKXUu|o*qmr?H`@tWTn7kn{#u?2T>Z3!kdQpgBrrrC8zGg=h?nSZK<7%e0u$( z1f7O9pFX^(xrJoYKrL+@kg5q5|amg4s}q%>Mq z8>i5)$og+43c9_G(7oXV4Bu>RtcPQ&tJk*XBXxK;)QtsFYsyolBD{`eRN(9u;Q5=~ z;l+MSlmDiHLWk?(;|>wUP+jBY2u&?DXX0ip6cNj_uE?qsjfiQ{m2+Qi52kwxlPilK zJqsSC)CXoipMjGJ{y}!rZhkj;jvN&$S+c6OA;l*E$7kjCzVh^V9#T7NQo@XVnqBek z9?;f2^!}?2x*4eZsqgCK6z)59GjWvSM!_ z9dz(BBJ^c4XM0=G(aYMl?I}D}AV#f&g@qC7Q>b=lQY7o+Anb_9E<1s5%9wI@HDKQ6 zbH*&~=q&z&ve@OMXrd@7%d)A(rc*rRq)NFriesV$*SxoI%BKKhtDszR^3hO&)w}Hm zfXT?1H*d)swRDEhoxg%0p&cG3XrEV@*Xdl|+f}Lns}e$Q6427{zeTl6!^u4-kV=|f zz?7?>usw2f43661Fxbg_<~B0A*cSLChDy{fhj!H1UfBKYKko3Xvf~=Zh9nNFm7(B< z8epb1kl5(59(FF_-Q%TBsvRTLbu`&KBqUz0^2Y}tIlD|$u2+!&hZRJ~<0@-bpg zuh$Hn&Cfq)$us(YC{FD9JNP>ruz`!3$G~Q_%&B>aJJC_f#;nanT zm>3^0Xp}O{+VK^*G4)fG3Nop6hlnq5Clz1hrx%PIWuh}I<}?}X9Q3SXo0q4(hdK1+ z%j6wQMBQ5&R{(dG)wdfi-=Z{8qqYJN}{jV>-ba%2FxkD`( z^Vl+xqj0t~=pr+|ow*Tm70Xtx=7v+`^P55b%h1&tF}OO`T@nP|SRt zgh4j4_JPFp^qdzD6Q> z^`&JwZ!SKGa@-Sev zqoHYKWehC6s3Ho7&;JeS7rZZ~@U(}70C_2njIEzu4xtho^=mXn-~_{D>eP3%Ad9oR zs3>$xKvKXd^5Bowyv5>$o-{LL#R6C+!t)DNNaqdvPQ#f%_7|2_WB8-k(uZTFh#i0u ztHyI!WJZ|cNKkVVzT%aj|4I!*8Np9rAkuD5@wk>PGEBX8sb~fXY~ucb{rDIg$Z(4K zL>}7-5!>}A&86^N`cru{U3ml_hz0G^*5B8}g;hkp*AK#fWLWH!U50e0Rn6<}tntD~ z*4^?w#{`E91fs+yHyQ%f5tuNFmDpN|g)F|{SwxmEg~Kh7G4jA;n3&YjfB)iyevti? zj|tSY5X!6OZw1iuz_~*OLlWD z48#1TF6}Jf$JzxlW1kC^Lt|#e3327Mox%<4ymgAl!09IpK#p@BLu`u4%!xt{IlSLh z`}EVqAJqwyRd%j`L)y~2zmA5VMdtHOQk8KkR-qNAEeRm&2iN+^$P_Lc8V4XmK77#)+-X_S17txQd zo>_V1)l`%j7c6Mm!^K+E(+T6puN`Xfn3~t#h+$Qo;)C%1Q{m|2lJ`k`bX|CG0TNLv z4tDtdnM;@13JSikFe^@2fm%RvNC;1%AlWfjmRVqy6x;`LhF1l>P?qW{OgP%YiTEkM zQSD=h7w0^(aj=qr5y4RT-3ONd^%) zVq1|0UqeOOqWGn0EHZNFOF4~JQdaO%yx|b^8CvCPE(fq?7AG8;Xs3$9LDPU_H-kaQ zglln)_#ME4PRGmZP}cqx?=Rl}9;`0-a< zWHWBmMIcYy_WtX;y^!0?$UM7W>6B36<3+!En7K20$>3XAiQOUOiOhabv+nw`rMI=i zl>;K*zp}btG@4M55bT!iht^F=3G|?m#>T*nL?h|HAeOLtuZd}N2=2e?cA>sJ#Dn50 z3~7X%VdJps>=2H;C1-gvQ)llfD<3XzL6*Kyt#p8ga|}>w=Pg!rgGvK}FVYUx=;;3F zSs^p4aKTRugvg6lAt$J|OCz?{t7O8#+9;HLH7{PZ*xQJY{mqAIJl5;ZTXsoJ897WI zgSC95g~mwcv%P%k=!pKQXRaw(IU(5W7yOuQI>#vtvN&ESXaNX^5Fw$Q|H>cH9jP}s zhQDoxy@J*0WmzVY+Rv$};{3vxRE~VixvCm+S#OJLV+GpD4F!W?AJdP=`+8dI5{B+G zvv^T*ibHe5MxHV{B4PlnaUc4fL@xH%8GVtoui(Q1_XG3D@4=piV`Yg28eUEU>z`^n zb;zVg?8{#GHcmzIOxZgYLg2uF{dzc?oMO1BxhdC3NC+uA`C%2b;CnIC>k;3iu}zLd z-!h4PiPg*aB_aOb3o#EbsvbV&81?36OG|5ufwG~pJu~R{ew;o!A1#lW7KxzfYo;kh z>49bw38R!jG-7^)Uy}iem%}G%jRh;KoV(4CVb`Cr>P(}Y>dL!;E;;&kgVmplSzrO% z{CeOJWKd877Je|AQGQxtnm^8s!%UKBEQWd!$!OAN17zr*=%|x-25{{Ys*3X$5}GJH zXx}TXd`yIK(=@?QRoq!!ik^5xPI7V1ODL!$=aHB&wql=DbS<`oFWljk4RZdbwM5hx zv!32YLkF2?VzTzB2qScrbakT;Nd2v6AMJCny83xAfyJhxe7Htc9w0tBeyvHHekVO+ zJ;z>}YvsdQxML%1X$r-lAm5+#tmW!I5dkY1NVdAl-XQYH>EPfl(Cem=*%l?#Cx~kA z0&O3Z9tToWWQ=WTE$ryT`&(&!V`TRAJdNpJYc|j^mOA$mmKdnSJ`xf}LPd-2c4Eeh z1LRZ8>52M~92a==bTWfna(3Cggsl?=;zV#{s?ucd z^nwRCyuY|<{fhVFk+BN+w$?$(1)#$Lij8`iGd6}JTN@7yO}nkAUsbvv_E#M-!dK9 zE}>L&b~Vy-`M$EWk{_7{jJ1nYs198w>7qff==))rtRM*pc^ikbY9yf}LB2~&w0|f= zOUq8{qf9f|B`B>sS;e%VTezFck+kt2b-NmVouH-u;UPsqKXi>cT?lJ$0r-a6#BAZ8 zL@V^>sBKBTFenm_g*y-oRXRFC%E)uu#Ef<)&jrcHBVXXeNe1o@w$N(MCqJOvi*~F8 zw@#_7RvuMj)^z>QG1b5SvL4J|acy$`ZN(%0l00>K(ww4KNS8xUfBJ3%TURD{6r%H8 zD@6d>?c1SoPN5tMBNF)6AnIkbT=CppB1UouyR;m!trgTvBnPF<`RJOoOAC5+$v$dC zd|i3)A8>))$OwxnOq|SUU*;3iFfn4tQ>6rdnrr<-@0U<|gEV4~vWQ23*nE-4B$07A zs9v`eb8teK;O(f(Z$YlCv{v5QB>m@yJPn`>v~GNf)w?I~NUoVdqD$shuZ;hS6Yzy* z{Q0Adt(46F(Mtva7E{unZtODv+NU}e>AMvQ zh$7^XX>Nmme$c9l-smkU!2<7-4rSE@Fgn^mm4BKQMYv~bHM7czS~CgitpOBwv16#@ z8?DQhV(wC~m*cbjajXjoSm;x?gzfn>ccZ6H?p+H|oS?rQ9XGZw4&Hj|L9>c#+{tww zL&C9Pywbt4w0|s$2IJ;ou>-LQ9DR);91F>q*%?xfE^kNf;?{w*fJyLTdb1A$0c0fW z%ib4DCq+}=)|RKd5Lga|tghB_DZn*YT`o+8f?~HSbLJ^sOo%%0^jP!Ro*541h{u?D5|OVK8n1)W7dqp^JHNm}3;u1;_W0K7GOic;OD1jlb4n;R=-S)Lzrg(2P!dT{yPf;(S*bnEp`=iaG4X!;11Fke z#?plYT!QLHs|fRPQ-#=aWSvT}XFr_@uj(tSl~*mB_!u7RTUVt9p5vc-vF7_hKV-a-D> z@*c*WHxe}Vyo&6`C*!KrKWzt3l9Ls>(P)J&+?3{i_9m$wL<5eyO1nkNhpL94=w)R4 zzmlmYV9?ChL5_P|OhB(~Ek$dBn`!of3H_E#@+$rK&tZ38`px(g(%5J;NgIg} z2%7l>xu;NkV3XvGbhu=Z!X)%?5JUj_;WgjFK5~u(xWe(p*!SIEb$h~ENGQS$Y{kgu zIr?D!+u7L+42l-`l~{n2M0YZljiv1S@|}xkXx?b)BF~v&7C*`h{x)q5BTnFjH#w0v z>p7r#)p%HvN?|u~!pi)))!CWFL9kioNayt*cM1$+ztjPzGBSfQCBt`L#y{PCZ*DgfQw$FO5LBCJMfU zizJL1ZZm5iNhvpOtjXR5fTwqE!}J0miE~hNDg~ax&HNZ}6C$g^?Wx294(o7Z?+B@9 z>G1&pEQ!Ete2ZgQx3uZC)y=@><>u$B2&;>qHi0px?@5!j^L6q$l6=9Ex;Y5`cF|xc zoB0TtCbT1s${_7( z;~C_3@ii`=6y!|$4Lg_-iXjta6$lJ&Z4T0ZY&>K~qPK%>;SX;IkzY*+V_~l`c~(zN zQilV-yMWVy?cqDYB=z}*r&h<9a(Re0-4SczN^F)CP~`}Xr3IY+29cKjJDP4JdPtFF z0j)f_pjxcB)Z)PnT&-9y8!NQC>OKK08aak?urU%yji|6m%YQE>0vl23{IkwzDUM^M z#P!9vWQ~3#{SG!n&v&g-?axYF#zd~{hlS~@%dqtjpx1;wVf(}?gsZHuzFv>8!g>+Z z+S#2tE0qexC&RoITWKvUDC-?|kka9?BEMu9>-Uh3SQxQr%}uF2|C4}xd8wWq4;{f&$-Hw%l!lb1F%7YuD8?a0zlSXjqJgLaol zvHZ&_X;8}4*g?tRQ#YLO3&ggVKQH}R=3zyt>hgMsVx@Imx4!Y0q#P@#yZfKb7kHGd z{HeSUm}+ePkJ!oZt3`4B%V&l5!rB$AW^-O{y!ThVLG}hLmV7Otwda(HP>@su( zbtnr!3fSic!Te#Zh3(rW&@QB8-8U}yQCtZA7%oAI@iSd2Nkw8NP3WlPwi!;?HZDMy zWk?e3lyYmAkMn zQR*{hBVi%OrfV48o7uF{z^YlbGJ{d{oB5i$^zR>ibpS5Thk@Ga-e4rW4X^$es57%) z&y5W#VufGg35ddQZtAg#@M5mw2!~~uR0>Z_W~pyq!`|O6xB)}ygHCIYTa9#HGwkAq z@-E*$e)!@i6A(N%wCJNRtIL+VE*++rO9nu`5;Sb6q;n2G;035RakK)R0h2CP%|=B zhvm}*1qmTyuBxt>+P0ltG*o2&eiN!1d11sGBQFc$bqXFowuNUGn4<@GM^lx%oHdz4+Y^U z?0@8!2-x_c@>9zNO}h~&^!E5=`@Wl0Bc-ySN3Fdmuoy0htu^mnEm3Vzwa}=y@ciCU z=BIJ7*)NW~O1y~r`8EbJ0zrJ%$e*c7WCxK`7Jdo{dECZw^#1B@&+EqoYgz^Maba&J9UmsW1x4AD#O)1I<#mfw@;oqO&!6~i_#A2uAk`b!_)}SJ# zf;m^22{_!L+VV@kU8N8VR>GhZ7SsSMb`2lxn&!vP?DyooK@a*06TK=C2$C^&bfbE|g4y}7aeNwF3t zq+VS`#6E95HRXf7lW`_K@&vKYO^}obc^b^hsw~_```1N2;ASJ?=(NF z&6R|l51-Q_#)Kl_uAm4#H4uq-C9V{Fg#e0V^sjjq2TM z`Lf*0$__{E-i(BOF=#Xx>R>e8e&G|ceg zB48vBCfPhi_WLg^xT7$47Em(n;gFb#j0ir1l=Q&<5@xVUyPRZ%NV3SdShHBuj^L_A zUR(z0hv^jS;Iy%@xcHY?LjK6uSmcw!#a>BCNitSejPddDnO?VUjyVU%r@MOUqQQJ= zOs^RjZ3CS+MQbZ1=Z1*-N6$_gesE_Svh$YDiQdHs2-OO9VIEq)mb%t~0);{l<=ip*%cTNFZCwxxl5r zn}QXq9mM$$gPv);IR7q^r;XdRaj`_Nd3DkH; z*eXqGwUVyxT$CfDM&jl?B}2nJrT!|+;4|9MIK0MVbi>M=Hn&-C_)@7^J5nN_S!cV| zVHbdgi5VQl&;h$xB0soPuDb50E>`NoG~R|`^qkLiPh}qY=86|}e}`FvjK${SB3%q+mJ+8>4$pR+lS3E`jaSEKLSG|A6awCL5wWps?6YJ;W0Rh|>|K;n zo85LL|8msd#%e@`BqKEacGG5CCnILo#AI@PBIV#iY&|h&kr47$inoUt^L+%l`40eh zd!0@+$x3~~7huYpb`Cn9_FlT*03qnwl1n?agc67;Btl_ymBaAG+95w8ZrrVI#ikHyubNxD0*Z*3?{z%7VOVa)(d1)e6Z!ew9cO*JoSG1S zZSgBvv6I&AKj7eikkTzF&a&?B_cOZayV!ha_k-?92@J2}Bk6h}!S@Swa_|6F>CnH$ zfaSxlrxLbzy&FZld#0T2@&*`=*G2#we{N;sIcf$!K~U2;?6Rd0sUweIF(|hjs^QL* zY@5ds(@#Jfx^O<2I2&0aok{()ZlWL)d|3a&VL9@Md2n}#Skb|v;W|DotB=cQhqr;R z1g}UCxjrA(a#ybMcI9AH6q_*xlNCg>@;p`tlx>h z!BBiZH1;bxF=*N%9NJe;C(JF5aImDq6Tg_HEGeuu8S{L-)#|jBKn10AzFOWKlXB!B z|HeZrBO?-3QaeddwPxI&{1>EEEhf=G)Z1fWLt|9;H(f1TDL`aYcOamf@o?&lf=cLE zi;vd_UL^=A5N`MDeb}lzcz?sYFRPgC8+-StX9jg3RtnrUq0#}S`g zBgmHmJt&BohZJ$OB+e*QQ2f}E@U$C)&Cl;gfN_=uX`T5$ZF;>1D6vnf0QpxtKXIdW zGJh@LQi`58Goe;HdLpH~v5&ITask>Y3L((=UFQP5GcXET<;T*ur&L2(J^qPsG@%{Z zn33}L18YfukElx$*4!V2Z2ho5jU#(+XC_QE3>nE7&fn$v+)cfmD42096)cIKJ8B3~ z{%r>RT5h(fRpL@H_GV>qSPdW*+K}$n)6?QJ$K1~1#2Y_^vY!{jvGm)2f(T&!ubS6W z@`VDPyqezQa$cggylyi22cDm>*Yr=*kUdPFRq^n?M(j*yMS_uvEKE@a$)^FOO;-fX z9o^R9NS9`p=iy7zi;9XMkylz;pfkCs6H#FHaK0E3)w`QqA`YEDOtmx0KzZW6?9Kl-5yg2tzN$LX5-1OhBfRflc9Y&-J^ZlW zK}ugEntxliO1b)ct-_H)K{1m5g=YBDo+_lZEtY~C5nm5V zX*@qTAun<2GuDzv^t}aHA^p<$A@{Un=Ai6Rng)Bmfm_<6Y~MS;9)(TZ?nB!XadOqp z9FLmd$orR4`{z%{UdeITW)ijXfygd=K7JR7GViS33Q#BEb7r)Jw`&1z+&=~p4<9n; zeCRak)5vHmA`Xk89jg$TLZkcMmvL$LA|{lxSkIMUL2h%9de=nQb)?QDCQ#+spw1A; z`T>LYBKW6}IkH20S_Q6b%YG2a{V+i?J}HTO0fMgy>l9BWl)V<;zMvb!4vcd9#S%$+ zSi^WusYF5-mO6?1qQn%}+Ma!AC(EE`s8!l)+Hz=^T9A;DPH}ViIYZ3h&nZY`@b~iC zV=I39C;mOzw#ZSg;N=Sho4WIML)x?!_fI~;T&=N{BE#30;rnsV_yHjC-?N+9euvq+ z*ucOacbz?)*KU| z(&N{J2p<#rtE`9N@5#`naezp*L}0%^ML7-l9EiYV2li$`bZ&1A5A$UsNgsiu*z)Hv zqi?`BefI$6&n>if!8_j~l)S|=Eo~ti8+tzwCfsH@rNcd5Ze8xJgsRA%+)ty%1gAM(KkoE1y)M z6HbYWjSohBn7B5F)K7%`ZxbLz(5%3ZpK?~Vj`prq+!Jkq3Iqfp1&qW8nX#>j^{be zoL`7k-U(&SaiRiHm%gr}5Wy}vW$)@}RC#`7hPGO$_`aP?D6)puumru8mf~`3X5c$_ zdbEdlXqq4o&{D(0u%y29n{1D6P&XAG1yv>!DSzwf)*9;~+4))jR1+KMZ5q zwUmsGW#EbvFET5&x%uFO!0Y;~-Z4dWRz>x&jzfA^F<+=nI|fG@?)hlw1}sq-Tp{u* z#dKyOOqo>XbIv0Zy2=#^$nJDCI!~f0Res=qIXxU(vSiD%0vZ_^$&tsaK%%3gul+ij zg}x@|$@!ZpS>$o9@=NpEhy69RuU{V2FOAHk5@Ct*I6?O&0kuPS_H;Bf+`w;?aiazM z*vS8@1u!d=BvCmjBi{?N0px5*INARlsdjIz!rv-FAkG5h=v>>Lr>~GLzP{}E5oPiL zQNA8FsATaCkI1*8Z6T6@u~b8B`Ib_msZ@PZ(4^zP18PI1>sHi8TvmZJf zJvDXTL7ZUh-K-#yXLnDn>~Jp%Fo2Z+NX5f@GpXlw(|;r5tX;*V`T)b?>3spatL&FK z9t|4e0=dmYkYfj?nfnWJtS0%d%Eaz|5OmH-Z@>(|5x<=kHCwV~#N!c#3C`w*L@>|G zSp+p&nSKI{{ToEUAfG8a!3RHfWZmzAOW8MB``MCeC9CEt=k(gUR}h~1Rh)nnkdMa$ z{gQDkxq8qF3-+YoUdfeg4JOw$P#pvAg30gnm!zv}>Ob1Jl zvX4L>e&@pkU%*lhf64XnUB7=1s}3gwZth#aKBBee^S;Qhbk~Q8iVZTr`=c8fTpM36(oUj|d)M-$2{ z*xpkhO*`@S@Zjl;{c%_iPCXnDJ-BliE<-~!_6!Ry=oPHtU_S0A?L!h&F`&8;L_c!U zeCh3vj+pNu_zGK4P;lM3^NyTq;LE)TZHTEm&llR49_ybmW6Rgm344{4T$s8Bn0mhX zhd;OVlVDAXoQVUvGBqpAT{M0tvi^p@XWDXLfU#%b@-?xcZ`~w{9>8-<@831V)y40| z0me;VC`4HSB?DJP!dw85FZ|IBpo@I-k7V3li@eVKFODG0R3AMBdBW4@QEGJ2!1~8P z@v-ReYn^;Dk&G2x4;`u$yX{C9^<|~9r0B6-CrWtn$7C6?FJJb0y6`~;wpdNH#Y~|0 zg9p^YdnSln?_0Q(?>fh<(Efi9987ZYF%iBo3`r9C3{}7=c?MeMNczJG@n|V!;wkJ? z;kE3#TjQBXjvG1cn`sZ;3%lDolK5t%_pil$tfd`%5$c=|7B{FGxeQJG4JeJv{{9hO z%sDc($i^=7l`xZ!5asJ}{e+MRLLc5K%nCnPq)~UgNTqmC!?2>1 zq2N;>Js!B7#F120Ce`J)%@-X7OSHRu`@&tx`>XLlF)VI(FI(L5-&uf)JZVx75m`d` zGA@$s40cpD2e$r7^6?r5T#zn7^vkHla`PY_%v(a|4iI%z{(K@8`kC>59YA@hyyTE zeS!dSAD>TR?6zA?UzdOVL*LRyK0h}ucoo~-s5iMDXc`YkxK*5|Q!pV9`OLN542)rS zY2a={E#5J2-un;ZI6Q=tg5$X7Ci;(+c_L$aZX$k)JGv)qhiq?Y!NQGy_W?i42kTxtr(rjNBbXfHgS05(oPK8cP}geX zuk&D{d1di{D2P>CI#?{?2v&jlS)RmFA)MnO%ies{h+l5_~ksIld1braO*cZcHWjH&*{oyAGb z^0qit|LpOf98DDT`$${?FmR^`6Ssf)k9Yp443!whyZcf3HVBWI%6~ri%FJvx7vV(a zC@@)ugzy5!i7J%@9>!nSd_ZxupMQkFoYnXCfwIf*nVKz>Sokyb#@lgY|8B8#x2DUc z1gz4Gfjb7C)@$2OuV!Aa-(bk)ucsDAXF(`);1vWRJ>Om6fc0kdj(4D64iPu6hym}z z!_;H5sp`0W>wUz^ec*eDUfcbMJ1{ViMf)fKX^Xv`cAKN)8N=nbY;{3(!;>uI2=)Bi zL+b6fN(9=T(eva5PFgnhRqB!rVc$zZ1vKZc?bwVK4(Y|8*fp%}0xYtSOzH6i-=dzd zri6`}P$854>W;hUf``e~^qWM7_JvPrP@K#-^|BSo2i4$)6)1@8`yp?bm z448`m5`E3MeL*M!;i>wb(kxu26AE zJPqUw6Mtei8eEKTGpD(!UnYzads<6 zVS1BqyZqkJ$O&W=3)4Uxv%DAf%ZcJhWFe=8`4g`zSth|)`l0i?gbU?#&gh>ytSM=U z5Yh3}p-|i~>PpfLFc-Z5RQ&`Bl`^|WQ+ZSk4aZ|_nn*}{fyR^i6{okCI~r>0;8@+S zus)sz3AuVpQ;{8{Y<=odeVpl|Dz>y_)XJ(0y2NXqBJ@l(rE{`KD1FKD_@)XvgeWnb z3<;iFM3-xNG1B_aa|??anlxbHmyb0QH&YV6q`71#i-gg0L>C>8g+<>$6|nDh z5N}bpl&i(;^s5eS!ErSz6Ai6O$4};=FgBUbtF$jT^qjL*z*f+bu9r%o^oGT*54sb| z<)iUhvwMnYU^}ZE_!fbpL_a<`Il^<@8$m!opezcMgo;ZY^ddgt-*H&2mx?~BY5U&T zbr(sj)Z&{%HWIc_-tJUa*Zs}ki^hOe9R{IkqeW<7-?~=c~hpb3- zo&9lN?=M=vb~h~3;OkM7BMw_zSqu(#a_;|7zByuqBSOq&naZY^D@#DL1C7W0ym-OP zgF_8jySno@gB3~WT+}Qg_v^%6*2URx4RBP7N%k+O7$T(R*u zLXuXV#K&qGDwpXb2JGJ4IxD;EM zOw{(whBSpnlOFumz-vO5YI#E^fy5=UgDcqKGhJfHQt<3K=d;N;DyyQRWkEcX4t1JX z4hIyw=5U1ec4Xs#vfkbr%<%3z*jA<%=f*D2{OX6Ingr26)WHcCMwk>4$^;xA|70iS z>>&K|_<_{mxb`iMrDRgNAiD^@0RvsBws_gz1OF!bM_P=wr9#i*IVa%(<=>o;D0}VJ zQ0S{cY0OLPd^4xLlOOltyFW4HA5KJQD5a24dJ@X7L?F7a8&#zX-f5!wpp-y+!&OR# z0Se(c4Hu2T(MzMl@74T$l?&i9Z0%yu9csiYrzizjVJX-$;xdX5_h2{e{j2mTxJ+NOK8iR! z;-f=4Q{^i~ktW{z7(YSlxh)2+UODG$+Xs}5b}F2LniUgGKy+Ak0OtoiB^&MHKf1_! zD%%`sE(0s)*;$$CducntGzd-xA^F_0`t!3Lv3nfXHZzv29Ps_8DK{#D+&Jd&W!Dly}mqdA>gYpm$J zr*s@jZf@-NYi>9JH`g=YEx*nU*MdG?p@S=0Tn&^lK8P4X$1To2ewIN9MuoqA6f^%W z050Q$wViFGvLek&;m`Uq5HA^AvVuBma!N+q(S+g&#`J|6vCJB+Py|5DVK|*DI9rX` zzhI1eXA{lKKG%mzy?K8!r9k_%IL2@juKIvf>){FWfuB=e zHL$AaEoG6gRoEVRkG_vaBOgmOkfO}qd1NaRs6=)8SKhE)w_teXpLqvTfU$x(xbe|q zKZo{b(tduz@<=(%pggrspp&#)IW>P?+=yYPuC|;E<8(0u1DzsBt!hQUr+p3C+Zh;*5ut}8z*8ZH+G zT_L}{ckE0^z^^Oh%HN!S>cnlAZ2AVj zB9@V6$KmM`9ivK_&Bf2h#*hsB__+U}sHpeNem%VT8@lz4&+i(_G*3)Q1NfG?sKFdc zC{c&)Fg|LmMA%eGah5}KdT9Vf#Sk5e5D7@2v7wL~?w!L*q{EL$qHLGSCE=ooqz5V7 zt{lN@+HW$6Z@wrlSjPaRrQ*|j(^ZG$m!12sPw zOaokkzdnxmy+m)JVZh4C$#HsLnx`nxcgVtR)^s1Wt0#_IN_u(mJ2dU$m$jaK`1nz( z%MM{yi)TeBm8KJ6`*)Aojo(#b#nIDKy570Z5LK(kIpcj z)lOL8OY4s$N>7^cx#G*ENaEFcXOwU6-%AqMK@t|f=6REXK7E!bNpzEOz&Fg|l0pRe zklu7Q1~~z+{lY#kOx8bs$ubeWah$Fr6iB1JMUHrpvB#~&#{{M?p~mXP7XDW1X4Bo# zamW?@Sn?nqgWk`9OVNAfd$(gQLy#zV7WGLm|5c<7q7{<8Yq8T`<~;Zf(dueXc^4Yt zH2HA=45Fa!R0lDlLGlhN65J`!ZN(b)h~dS3$Sw;N23i^dF%Ag~;nJzXZzQ|Rt90pP zAfx#mFg{L1uZ!-1zotF1wY0V_MEdxBj&QHVeJsViYtpcie%7V2mC1GH)tUzw&VzXk0u>3SynBN*_6LQMg!mafw-u_?5=#MdGsh{?N_>3cMVm?-hPLly!k<#h^ ztf{de8nJ7s$Eq2Gy$IX)n~r^SlduTUtCb)cfm)OUW8-(J#*>HV-PcTwA6!{+APFrO z9ICGcA&U0e?@t&1z(9?Alj}1ub&{xGtOu{(Y^-KG8VI~2|0Ay?pp!n*U!}(u0T0o^ zf#bKCC?jOpX9AE5?sWDDdkbo||844Zz+>tjYJtrKZg_An;%d7wb%hZ(NlD~>kFX^+ zuihs!=vKjNBf2@gXu94Sx0s~ z2uGKuRK4uSQAczA9D)~A*;OiJc@W6dkKoX2Yq#qaSE_RJ)J(yM43L4sSQLVl(_G@R4h}ZHt?5b87I(cG`$}xhmx@_3 zv-LovUM0+nSnsNsCm`i`)pycYio_^Z<{$52V)i zNwZZ5n zvu-~7CXK-6zUEw`{S}`EZ-Yc}!thw+o-Qo!8_R{&DVM2+0$2DC2I51l_^*TlqydQn_@4Xwxs-BIk1gM(KJQ@NVL@Gt z@Zpd-8@Sz>x9dXDKB2SLonNz0`8W`{*yUq|ev}_OlIPKpQ#u*HLZ(cE=qzd7hVpYs zc|b?qS2+q~EFgDc7O}q%=yo@Lca^%{LJ=X2OXl6#7|GjrbP=lSlYqbMS8WzJ*>3?T zwZwSrWbeRt1bU?7As0|a$0L}JRO%JI@>9={%fqg z0+wl?X=ySGbiYd{T7!dJsi5DIsXZzoXc_V~>h>`=U#H2RVc9oU4Gsdjqh%*V1h3vx z;E+X%j;F^yL|%Nm%5k$!FmsJ9`_DzL?HhfO40VHXr{&Dsv|2v@_z_C|wwGl{`!Rgy zw3T#~(}6Yb8rwB&5=S*qpn{T%KB)5$@qG2|2ZOTd>1q?d&vlVe6!@|bYJSx#hAdeQ z6k)PCuzl^b4?~*l3jVn#eb8-|qc9TA%|v#Tk*Y$#ZZ2?CmY@arKS{xX8rtY(&+yRW}{6Xn4Bs z+>WiBs~&P4xCw5-o_B_RN&=1*v=6_n+O_ig|Ct1x1LHyS1<)(A9OJX)-3SA*Irvax zMZpN!I{9vI=%t{$CQ+)^J!|&S$BlN~iSW%0kqSi9MEv&mU&C@yRy9~=Ss!>Wc`w8Vy*1{2mVr6>#I% z9RtfyH=~gK8HSKB^S}YZ>|hKa81odun2_Fqw@=Rf@g#!62 zcF%HR7mZ1xuneFV|3!x%v|9gRVmYBNI9evIJ3=16+q^&y2nKEHcD}TDLWgk99X8a^3M_W8AJ$6lFQ7Hx|h=k zx?M>{m|UTS0+!>iX#SBWcTXB_-o&{3OFz*2q1bPj)i}} z?nSd6@MPbi1hGBI8F z;sawChhRorx&HVx%>03TbsXodBE*yv$P}{mtlVO`)?&*FP={Z_g_A2sfuT8$TGSsC zAwfW^SOfk0_DwC)%f!isp91qhRh^F7%7Sh4sYYZ`obT+2zS@%Y1t@O zxNjJ|1KBh;J74YD-`8Ff*8Xih$3~g7M-lHQb4Czz@FTs|cjkKfR`gYfdV&>;i01Gl z_o3pygYfdLczF)+qp>?a>7y&1HPzvtV9>8 zfqteNH%jlDO)B9!TZ%LxpoBvgqp@RaI;WiNuG>{3)J!s*Jt6U^V12S-;F*D&$qzt1e3RFaAU^#rpXl+>L<>JWoYM>QFgT|1H zJS~rI<+*-N>aUvBFlTBq=NcgFz_gh8L-voG~yTy4sh!c7LB&D*oRrcnDz6Z`4f&Jf)?b=U2Wr34Hk^{qGhZ z&7skFB4+WF+#G5@x`A`$6s5|VLer#N?hsbpWPU94@wt$=0JXMuz)JssBhJLPWFgBG zUO~i z8Y`eRCWnLw)H4O@T=>q?WAEtqp?!an;zXM=^~So+1H}&{E@HITDr<6f3W4Crxv7njImqt6 zJSY_ESkw&dNdC!{MxFHUGJG-nYSW_H*u#|ilqfqwUix?SC;Z))zb*59gRo#pDF|x7 zqq>$>xW&lN>Nj{~6iC%pGhhSfWG~HsniU_Ku}E1zNvI9$;4)klQrPwl>HZ(D0V&cvxG7)na*_I@nFg70=v)1_I=yD0}`qG%`@(Mdi#+ zB$2w)PGdEtX|DdX#_}EI-trwn#9@_E8PgfG(C~Nyu zE$g#7PTTm`wWUEMu`=Kk5ivT*=dn*^cPxn6pBfiFf~M0FZx<$_v51K-F2%z9TvWA| z;*3lre7c{Wv6gtghCxZnuf%)9?@b;FW5Cf$si%)dZ83{s0U1<*9%V+Bc|Wy$v#6$t zQl~U>Yc~ZS0k{Gx4{~+Hp3nxZsrbjob2BHE$6IFT)5G?IjtaPs}Jt zRl$=YEaCQlEqS)x1fN|VamxmWol15`roOt5ajZZ`K!o@l`sSf6|AGtxjWWSQK3W`^ zTa5HCY3c1ks4#SO0jE;!qIYSj&}h~7)eu@}K$g}5u%N?^|MbcB`)!n4&vhp;A6xjr z)M8a8liKBYg518!{okezF3^HZ=QD;)vdMcD>C%^I(`jQF14zlz^762UG#j%g=A-0r zhJKPH_y(a;q#|0b#h41H{rwxArQxg_I-$%;2bucQW(=L5%vb`~Nk?1#R_GjCB0_ZL zuOBZBj*?7sYcf=@9dqdUlR$HE@jWbWv|4}v6a5Z0Dv+uW zl1AkE|GfaA9jGCtV`>7)3($R85>iLPhL6wl+g7>zz@8|8%|HlnMPJDZr^*zCYBTN z8#CT%su+nUJIf)B_D;6rvIsuQt8*Et=t?V@y}{Zfaj@}aa0*6r$)tax+`Z<6vD}@)7!0iD( z9~Q1P?SKxOvi;-B&1;i9kVA7xkS_of2V$4yG-MY$SVR=j*X#zY<#fa>H`j38^kMiy*1^Nn}?;Y-cbaB+3dBm#Weh*+F1)XLg zO=XMaI6_YbXbb#LFb_u~p`}ve;HQ5g&-4ux--dVyF-@#MAsOyzM#|T}DrABRT6@1l zt#-ZvLIU9BoJlxIo_}&h3>*n+FuZyLg-ZNjcpkG>WMHgIW`M6;o5g#-YxaZW`F& zM+>i#?Ja;pRb;r|b%YUL8)Rj22-X}H^~U3LYhu=Ur!QTVi8_~3W()!mll+OL1R}xIf!ZmL%$Y zR*x_`U5ZAlyE$e`!RhR22JCF?6N8NV!t!M{BZqKwN;33Q+bW*!p^h-qzWy<5>Yy(i z{0h%@U;Ou-bZveu1usq-x4!eFXP1-5D*#}=1g|}_Ldjc8F_fu{5iFXcnhsL==VRYi*i>m&pc5*gyj{eQdb(I*a{k z;Bq;oF_sJm8|Pfdg#2f$>@DBc=$X0d|&i!i3#!GOOI`Q581TEwZBF&Zk5gn zp}ophHbH@zpC4y4E8my6!&1*v#GErbUz$WS2FaF9;-YB=aiU~qgE2I%EyM$qv61p1-e!*lT?;UzRM||UC;F~Q0-S8|@sLPSIq0rFKoWG5y$02d4hMWwuEL`yHeU=$^ z+L$M^KFwuT&$3eV+TCh(!ZAeVWMxF`$l^nKZ(%w3^I;2)znAS%4C++s#Xfuw7VbDH zrzvQ3d~)FRbVo|l>X>@ki(qY_K-RI>($7wcOfFQGu96-LptRb_KDzx-ZN;(9?}jVa zLgtY)yrcTga5Wxt?cv+bbXu;4omJ2BQ!kgwOb;~p? z5y85C+H&?`)p>wSR?(d_3!z%Nm+rs&w~3WwE!y@24-c<#FU?j(Lj$*p75Ii-J-~=( zlPDf`$4(rARQ>VkXXyN+8~9vFb~bq!q5i#iDi_>x!F#bxo)IYuu__RJGc>J@Odx9z z%js(Goa0UH*ec zMvv1YSKE%YxlflV4W)GVHxGw!ggvy5e0jGCTx6if_4k7$H!%eV$ZMnCz{~j!q_sCj zLXr|g=`^CEGXx!i9FdOeZMm|d(I~wkjP);q*-PwNJ|)+0^AO?7Dhih?x2#oHPJaK` zpI$x?22JVND?6OD{naX_%rEEV7EcPS)Z6z!{aaOz8y}?q6$a8szS;4bvLg?Mfridg z-r3>@ygXl}@VOtU6pHC{K$TNeFerZtF;gi5iZ6&*v@2kdVBu|;Au|EmV2w~Zjq*GFn#h@GQ!;iY^(N z&lE=xtp<4sv*&+R;s?Ta$}lcdy^%Uc+V!I`;u0ka2*41Su_YyANzxv|!)xTvR%@D9mF^nH z4xM*A9+h5P3{ce60^0T8NE{i`D;V#x+Y_(b{4BJn15(JMDPyAw5K#|iK79j*yZAh6 z&MJJmFmeo>$P%lIy9r7D+WqjVFf8bPgeLyj{Zqot6dtO&maY&gRWqxhqLq!CAmHeY z@p>}`Kl|-F2pe+=FEA$65Ng2!a5O1>=nt-*7nvsjvO zjyX=|rNAjNQ;J18JYvVQ=J!^2EiTi>hIlF||K)~%Sn0H=)N9j)azY?CIsA+l9WV{P zH=Scv$mX->T>EPKUk6M@*$D^w)UmUd?kJ6?S%EZJ0#tBL8RkRbQWWg?2p9}|f%)>EVe%2~ z$2}H7Q0ehOFSOw|HWJYUCL^&SFZ#q#&j<=e4?*;Vq?UQ3-Gt)mu7qpb-;sCxtBb6v zRwAdz57Krvetx7Mboeo7Bt(qbzZSii;~uXz;fy46cuv0}*gjv;b*aMyqrv-K>?U_3 zO-^`9Ju6UdD#0Fz&|9saG;EAt3m<&OKVSvA*2-TJo%IrM7T^7k%l0@34^+M6?U zC{R-SPuY~^K6)6KNA#6+<>)93Cns*{J0YOe8xhV4wUR|T=V3$2v>VUh8AyTlp7qMp z(JaB1v$%fkUO}|=Rt+_hWrf7=Us+gKQZL@1$b!qvq^Mt%g2M_-hzehZ ztpq45<{xNNIzf+ttgzl{f_&9$Cw8$T@D1v}=kE|te6>e#7)I{nsgV)L1VZ$Ot09&wxN9nW`1c<2UAa=z2>lx*pDH#fjWkC4G%1PvLK~pXQXY)w4%WJol3vo(T zk3Gb}JmE{U}U15vfE?y=Xy(}tR zfT$U>!>B?;xSELh@>iru3qG@Mne6;RSe~~D?J_iKgR&ZyO;^&Kq?~-a%LiBvJdPayvCId6-g`4B63j6RZ3(C%#Rs`cu z&n%>LJ4U(Z_s@cDbK>G&Rh$%e1bcsq5O<$^n-j3aupaxNu?+QR*>Cpwzg?ox3ujBn zV=Nnc4LasyEaD!ymzp$mLrFxUF&}^@oaXV_GW`J!?vsmTyJ4s{-O<9$7KRH8S3=Kn z97Qtb+esx-cV2jt8&E9(H}SdXWgZ_&y#{`eFw;){rAW2BgjKb~$smCAFPY7RSWY8c zjW-BN2!4IXX$;#4W4tGmZ88$ctP0A>Mx182>q2_)vXh`1q+!wS$tI78c?-)93{&GE zdP9|nn0|A#Qs}$ukGVXOmh$d2KX=?{&qNAU9THVW4&|aE4+B#{ol&EzWMbdGP`>Cd zZ(D&u9TJdfpTUE`r;~=%p32fvmdz1xmVo%^RteA#S9~5PKh4F*{q@TfYEuH${0y8_ zx3x7#Gtm*!zGUtkM$^jHEGTaJ)X}C(k)+;O#()gh<{eAJ@u4)jC)A7aTk&TG!2Pc5 zLCru@Go*B(OopUD0kP-y^GFEX{wV&hkD>X0hvl)#RBJTk1hPd%+WMv5Hl)Qkf!>k> z9FR7s6GgjR{L{;)BDdvSRm7*((!e*!OqIjPP`^A6y{|&oIvL~CZ@smpFu3f%$Ul2p zXMY!_&@HN=&LC9B@zkKc;vvJrVrPU-Xm^!1o6^DX(${>xFx&Wda%%e zyKSQQHfOop>~D#tyY&Xvr>B-#Up)6dAy7NR%U$uB+p_Q_y?J7ZOu@i zsCsP3QZm4gbUmF1rD+Q5!%_xRcbR>2Y(AtvUTay{K?hD@jWzM?`25bh5E}n}m;c); z+`9-12895D`wNvuad<3Ro9A0SIYtmQftTeJ<4)c?DJ3tFj%jh=kng^S++E2zl&02}_QW|CLr}IEZoPYRvsAF5$!(#omUA)CErzhh21d)W15>-dp`s z>nwK0Vc>hh7cb9Kg^!0f$F#@M{*ku8?EL(8{fa|R1Vz9>U8`{gl9*YJ-(Pu-wpri% zXdxuna4vA-opLb%#g)CT6C(Q;o>@Y`Ppj~qy>9;1$6cgjYrbJic+K61m1}iI_UP!-%zBMB0jiDUcXeXLbT`JzPq}MvtXZe3!%qnH1_4;m00*x}kC3D631XtRE5^%>Wxk>Sco(cK zi3t4kzF_%jnVoEuy{e*MQgmEl;(I8T-ho>5q-10ww8Od@bCpd)1K*xDocr*!5g9tg z@RRS$#f&i#O28@Ym(zFK!5j<5z6K#sOoI=H(HMH@cE7Wl zdcS^<@ZnS4^x4+_na7#EJ}y`C?RTd+7;< z%+RDT??3tkg+y=A`f6r~`D_*e*WK?h5G$a2e-gt~HX5%_y*mFUC2(*axY-H9M_X-n zFCEAavSLRkpQ5_$YB_6<{?A~}%Wg_P2*;qyZq3CQ)Jci8dFJo!E#P~$P^P<6jh*B7 zmAC-6Y0b+5{x@xC&Vo(PO5cr_wJ(g|s0Y45!9feh=XkwH<)5*=*S(w=F@3LZOD*V} zOi|^&^b>YUo!!zpE_&Ro0u17Luvj#dh>t8OK#egh9+v+Ho)iEl2V(v+!!^FD>hBtz zU6$~RuWkLjzwF|q$V`t%TinE1mz(=s`O#_fewHsgPJpInOqj_a&m`Y5EdQ|srdY1S zhRf1J{i4$aHo4+@Oulx7cjq!7UB>QYRz zWZYmR^yqBWlTLQ`gYT3NT4e&nQK-(0Pt^_hIes%m)~68TbC;l-~=DGxzYX1 zRB~VVeRE0Gw^=5P_6I;v#EtDV*yJzEX_?1wG)l+n)fHl;ZHn`= zy>BrigvqUNEz{FEJO?J8at$Vgz8K)^$;}Az%t=vp>7SGULF3cKJyXm^E!@JWr6-cq zZWS`WK@kplRF5P);}-y1G{1em4Gi2bM|nH7lAaV`jEk@=Y%5sO&kDlnzEBLH8E*@V z!;17KMGO{-4Bw1!64;_ zaOKOGJ$)k^#mecpGv7%9J-@tMJnUziEmoPZa-Bja@bV98xA71n`>-X-2j;(-|9 zB6>mgeCg&h4ER9X+dO(%kX8~*ywT=~V@rIjj8>+UO%|D6-JKX?GsVYD z=#iYBNonIMkUCTOtrTIWs#t}AS3?c#U}nq?$Qn%<5G8Z*d82szE)aL*?4;jn7&b^! zfpq9aHyH?-inS(-L()HDenk_vs!n~v*uF7%inpo}&tZn&h_>sWJYy+gQ(MExvPR1N{w4OS{Hdn^@XvD+__&(i; z(}}7VKgM5D*J}ksc$&Nq+Wqjpc~f3iYL;$QEn$+8#$YVhighd!TFah)q7&WEUdhS; zx%}Diee)N-x}GsK0Zr=gBVrN~epMEI!R?8_&=v!jC@>4oTa=C+~fEd2|W^MJjkS{OcI0 zrvuEzUU<*}{oh(aI~C2Ch>HE5$%b4xMrMgwP*OL1<5b8{DNKC6JY{EoFKnY5l25*> z3npX`D&{WZWKPit%6TXNf6%x%Vn4w4NSw8T)ILJ}T1$p4QaVT>R($emd(&&VtKP4f=KVdTc~?k{1$h zPj`+rX*)YO*s#@Az@+2Pl+9ErlvyE>Af{Y_hyd!2CH7mO!Ot|6NU;pk(_j}9FBVIN z;e;1UUqtGU*l<(+K?s(U>qJY=2zk6_OhZwFf`^J?b|dV4E|&9vD)T>_I)D5su)lM`EaM+vPE?10(dVkRaPpZ z8n-+{mTi7r0iKtHc)+HT;Trd7Y#s(|Z{X_!lEUgAGH=>f?f4FZaHxPLe;8Kc(X=S; zteH)2tzJwm^s5Q!^wL^bE#9QsbaS|F(Qhm7?{=)l{Deat6(21kMg6DlHRmZzWOM`< z0m@Yy=svZ#tq2O!?cPX3GY~Eu2ued=KwH*oWVnxtzeNfmz@=Bep9wCtaaTL%7{kyQ09V4T%-JjDV%Y zAwL8Jyj*tpo&%0y6@oyV^6213m97np4bLxe6`IU7Hn0k;D)j$)S+omwKTlpwBrW<< zp%I6WD@E3dm~)?e#*oC!nX~5PDHfogEoT#=lF6>xBIB2Z0~%on>dMsf;-W{SBG5rE z+GSmTW@|LJ3L9i|uHR?c%~LwG?1jUbY%Ch@WGX zq2@Sh$&=-^jr6-Cci|u192iQaP8LJn!Pw?WB?0ETq@$74^Bqe0rprK$N7lgS7WN)= zPG>Pk4a7}KF*;GU_G97@2WKiyq17}XuYEyR4gwQAhU{M8b>JHtUh!hwzz%#FP(ekNngi*Qi zwKhYzNLHaBV=cIf|pTKEZgT~B-PuXY6s$|u7a2&ElD(wqz z;Whg=gFNGrTTr7S-BLed%FzVKmmu^oqARCMN;fbRc$0a6Og!IN1| z{0W%k!4C$4d0)H;?br#fxj~?VRXJ8I!3m|cY7&Z5(cW=-_WoL?!Yx*Dv5<34JBrDO z@*iNZ*R4R(${H>p=D@POd*O66+q%Q#<#(lJo?0GtDe79HiTV0%uooVVySK%n4>{&m znmW?Odi8+;(YU`|(#vdt+*~NbLG$5H!14Xf!q{BS9CYn=1bsq6%G7T-<#0d zQzieUzf&Ai{<*>Qe6vedS=s6fpe6+q&C{Q!0La04J?tiwM_1P=%IsJqJQ9Jo?MjWzL*R868Rpo?z%|`EmH@Eh1xQM5)?uWI1NeW$v zQRPEL0kI|MML4>!ztgGxhAi=O4oOk`OV1zOx8_nJyl%L~a+QI(u-8+D9L3{JOK?>b z_vQU*l;A$MhqM(SSlB2IX-ld0f3FZg|4AGWeB&?UyH@x*5V%ZFMNbI( zm|88XP4Ao0beu17c`X#-82k9mT|bFSLA2A~^~)<_Ti|tmkBuFk5`%v0q-?h*zlV!= zygd+>Sq-Clk}Jgu=EWHIH}t~4FOzW+q20I3%g{S8Ff@}8L{jf(Pp$FUOV-aI)%{NN zeseoFJ@f7$A{(AT-j=zn=buyA|_AJ%t z>WVSt2lds#A%GY~y{`|ZyrA@ z?qeNSjRj9=e24*b894&WRrRmGf4A4?{#Bnm!yTZ)tEB#OS%L-SO2gb@oK7%)%mR)LcFZhYB|Q;jfds~!U>_J`PJoX@j8_NS3>npQykp)WWamheHwJMab%^4~=U~X{Z&KKtH*7>s*F6Pz@VU>PXYfgq z03-hSPdI4v3{7*3d2xNXw74CW*OZR21^KPh!PETvSY-n&y!UBP`y@7D%WXj3^UQR4XxSPga)9^KFNW~9Ro6I`6xhn5&}O{eRK+ZEd{ebZwwqXi|s)=_byvkK2PAuSUvwmp>2v53ayJXX5lD)29+6La6o zKn8}2E>%=BA?jqPj98H#Ub&!0Hv`O5Zmu{+OHY^F=<284Lw*#Q1{$I>Vnpu&`M-I&m!|}c4V4Oe&YqPDyg`` zd?F44lt^58-OHcEMeUF^egkl@jYNnlRYtOi=V6(?=da^yoN3Tost*fBWEWnmS@~|$iP!(K+H8ME68}9(^E5M1PvPgCqi2qu7opb8aa2iH&>wGAeD~M4 z;n8jp+wabsYQ%0n{zFCfWtKSrYy=>K0V>r3TPeY4v%^?kb=>mK+@qmM`Hks$Zk*k{B?TUKB-l7CvvN|L0)_pOYot=>pRrFz)JJea7a8R6X zC!jeNoW`Aiev^xo9zH}Gu0_4mQ)JuOG1Ey4JD#-gpTUuBQ4Ew%}?CFJawj2Q1^^2$?$d(J6X=);@ zHD$Z~RUla~C3^+Bqxy_fu>PekSHc*;cRP#umXKsFm9*_`AHlq9m} z�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�dV{dI2XT!gcD(QR=AAFFcMn1 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 M%SaRRhePE50Xzs?wEzGB literal 0 HcmV?d00001 From b502e27ade2faed1362cbfcd060c8661ffba4bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Wed, 10 Apr 2024 21:33:42 +0300 Subject: [PATCH 022/126] Remove redundant app icon --- .../AppIcon.appiconset/1024.png | Bin 255985 -> 0 bytes .../AppIcon.appiconset/Contents.json | 14 -------------- 2 files changed, 14 deletions(-) delete mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/1024.png delete mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/1024.png b/SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/1024.png deleted file mode 100644 index de22cf6f070d1e783b9dfe34ffa66165e6fc0ef2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255985 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 z 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�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%0DXi*p^5?eo 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 DGdInc diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index cff1680..0000000 --- a/SwiftBuddiesIOS/Targets/DesignModule/Resources/AppIcon/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "images" : [ - { - "filename" : "1024.png", - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} From c0eac3e4c79bb39261a94c09652616a1d4eb0d77 Mon Sep 17 00:00:00 2001 From: Halit Seyfullah Baskurt Date: Tue, 16 Apr 2024 20:27:11 +0300 Subject: [PATCH 023/126] Onboarding feature developed. --- Project.swift | 12 ++- .../Resources/Localizable.xcstrings | 81 ++++++++++++++++++ SwiftBuddiesIOS/Sources/ContentView.swift | 52 +++++++++-- .../Sources/Managers/LocalData.swift | 15 ++++ .../Contents.json | 20 +++++ .../Contents.json | 21 +++++ .../OnboardingBuddiesImage.png | Bin 0 -> 179540 bytes .../Contents.json | 21 +++++ .../onboardingWelcomeImage.png | Bin 0 -> 92078 bytes .../Sources/Extensions/View+Extensions.swift | 7 ++ .../CustomViews/BuddiesActionButton.swift | 46 ++++++++++ .../ViewComponents/Shapes/HalfCapsule.swift | 26 ++++++ .../ViewComponents/Shapes/RoundedCorner.swift | 28 ++++++ .../Models/OnboardingItemModel.swift | 32 +++++++ .../OnbordingScreen/OnboardingBuilder.swift | 15 ++++ .../OnbordingScreen/OnboardingCell.swift | 39 +++++++++ .../OnbordingScreen/OnboardingView.swift | 64 ++++++++++++++ 17 files changed, 470 insertions(+), 9 deletions(-) create mode 100644 SwiftBuddiesIOS/Resources/Localizable.xcstrings create mode 100644 SwiftBuddiesIOS/Sources/Managers/LocalData.swift create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBackround.colorset/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBuddiesImage.imageset/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBuddiesImage.imageset/OnboardingBuddiesImage.png create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingWelcomeImage.imageset/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingWelcomeImage.imageset/onboardingWelcomeImage.png create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/HalfCapsule.swift create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/RoundedCorner.swift create mode 100644 SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/Models/OnboardingItemModel.swift create mode 100644 SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift create mode 100644 SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingCell.swift create mode 100644 SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift diff --git a/Project.swift b/Project.swift index 2aae8f2..3c018a0 100644 --- a/Project.swift +++ b/Project.swift @@ -59,6 +59,12 @@ let authModule = Target.featureTarget( dependencies: [.package(product: "GoogleSignIn", type: .runtime, condition: .none)] ) +let onboardingModule = Target.featureTarget( + name: "Onboarding", + productName: "Onboarding", + dependencies: [.target(designModule)] +) + let project = Project( name: "SwiftBuddiesIOS", @@ -91,7 +97,8 @@ let project = Project( .target(designModule), .target(contributorsModule), .target(mapModule), - .target(aboutModule) + .target(aboutModule), + .target(onboardingModule) ] ), authModule, @@ -99,6 +106,7 @@ let project = Project( designModule, contributorsModule, mapModule, - aboutModule + aboutModule, + onboardingModule ] ) diff --git a/SwiftBuddiesIOS/Resources/Localizable.xcstrings b/SwiftBuddiesIOS/Resources/Localizable.xcstrings new file mode 100644 index 0000000..32b76c2 --- /dev/null +++ b/SwiftBuddiesIOS/Resources/Localizable.xcstrings @@ -0,0 +1,81 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "Feed" : { + + }, + "Login" : { + + }, + "Map" : { + + }, + "onboarding.ButtonTitle" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Next" + } + } + } + }, + "onboarding.StartButtonTitle" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start" + } + } + } + }, + "onboardingItem.FirstDescription" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buddies Community, being a platform dedicated to iOS development, aims to provide a productive environment fostering networking, collaboration, and knowledge sharing. " + } + } + } + }, + "onboardingItem.FirstTitle" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Welcome!" + } + } + } + }, + "onboardingItem.SecondDescription" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dive in, explore, learn and share. We're excited to have you here and can't wait to see what you'll bring to the table. " + } + } + } + }, + "onboardingItem.SecondTitle" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "BuddiesIOS" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift index aa70e89..c3a30f3 100644 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ b/SwiftBuddiesIOS/Sources/ContentView.swift @@ -1,12 +1,53 @@ import SwiftUI import Auth import Map - +import Onboarding +import Design public struct ContentView: View { - public init() {} + @State var isOnboardingSeen: Bool + + public init() { + isOnboardingSeen = LocalData.manager.isOnboardingScreenViewed + } public var body: some View { + SuitableRootView() + } + + + @ViewBuilder + private func SuitableRootView() -> some View { + if isOnboardingSeen { + TabFlow() + } else { + OnboardingBuilder.build(items:prepareOnboardingItems(), + didSeenOnboarding: onboardingSeenAction) + } + } + + private func prepareOnboardingItems() -> [OnboardingItemModel] { + [.init(id: 0, + title: "onboardingItem.FirstTitle", + description: "onboardingItem.FirstDescription", + image: DesignAsset.onboardingWelcomeImage.swiftUIImage), + .init(id: 1, + title: "onboardingItem.SecondTitle", + description: "onboardingItem.SecondDescription", + image: DesignAsset.onboardingBuddiesImage.swiftUIImage) + ] + } + + private func onboardingSeenAction() { + withAnimation(.easeInOut) { isOnboardingSeen = true } + LocalData.manager.isOnboardingScreenViewed = isOnboardingSeen + + } + +} + +struct TabFlow: View { + var body: some View { TabView { VStack { Button(action: { @@ -31,9 +72,6 @@ public struct ContentView: View { } } - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } +#Preview { + ContentView() } diff --git a/SwiftBuddiesIOS/Sources/Managers/LocalData.swift b/SwiftBuddiesIOS/Sources/Managers/LocalData.swift new file mode 100644 index 0000000..d560e8d --- /dev/null +++ b/SwiftBuddiesIOS/Sources/Managers/LocalData.swift @@ -0,0 +1,15 @@ +// +// LocalData.swift +// SwiftBuddiesIOS +// +// Created by Halit Baskurt on 16.04.2024. +// + +import SwiftUI + +final class LocalData { + private init() {} + static let manager : LocalData = LocalData() + + @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBackround.colorset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBackround.colorset/Contents.json new file mode 100644 index 0000000..4c12d57 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBackround.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.945", + "green" : "0.945", + "red" : "0.961" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBuddiesImage.imageset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBuddiesImage.imageset/Contents.json new file mode 100644 index 0000000..6f68728 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBuddiesImage.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "OnboardingBuddiesImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBuddiesImage.imageset/OnboardingBuddiesImage.png b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingBuddiesImage.imageset/OnboardingBuddiesImage.png new file mode 100644 index 0000000000000000000000000000000000000000..ba8126c1526a6cb3ef8419c401f75e34e8870a7a GIT binary patch literal 179540 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�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 bcmYk0e#K}CL+DvSd=7bO6{!XZ)3E;s8;n)+ literal 0 HcmV?d00001 diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingWelcomeImage.imageset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingWelcomeImage.imageset/Contents.json new file mode 100644 index 0000000..35ff802 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingWelcomeImage.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "onboardingWelcomeImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingWelcomeImage.imageset/onboardingWelcomeImage.png b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/OnboardingWelcomeImage.imageset/onboardingWelcomeImage.png new file mode 100644 index 0000000000000000000000000000000000000000..344a75f57ec7246ba773a30f7001c699f290b750 GIT binary patch literal 92078 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 VZS#-S&#V9d002ovPDHLkV1l9xSU3Ox literal 0 HcmV?d00001 diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index af68526..f382814 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -45,4 +45,11 @@ public extension View { } } } + + func fillView(_ color: Color) -> some View { + self + .padding(.horizontal,15) + .padding(.vertical,10) + .background { color } + } } diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift new file mode 100644 index 0000000..5cb2444 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift @@ -0,0 +1,46 @@ +// +// BuddiesActionButton.swift +// Design +// +// Created by Halit Baskurt on 16.04.2024. +// + +import SwiftUI + +public struct BuddiesActionButton: View { + + public init(title: LocalizedStringKey, bgColor: Color = .orange, iconName: String = "", clickAction: @escaping () -> Void) { + self.title = title + self.bgColor = bgColor + self.iconName = iconName + self.clickAction = clickAction + } + + public let title: LocalizedStringKey + public let bgColor: Color + public var iconName: String = "" + public let clickAction: () -> Void + + public var body: some View { + HStack { + Button(action: { clickAction() }) { + HStack { + if !iconName.isEmpty { + Image(systemName: "person") + .resizable() + .frame(width: 40,height: 40) + .foregroundStyle(.white) + } else { EmptyView() } + } + Text(title) + .font(.body.bold()) + .foregroundStyle(.white) + .frame(height: 40) + .frame(maxWidth: .infinity, alignment: .center) + } + .fillView(bgColor) + .cornerRadius(10, corners: .allCorners) + } + .frame(maxWidth: .infinity) + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/HalfCapsule.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/HalfCapsule.swift new file mode 100644 index 0000000..d2fe9a1 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/HalfCapsule.swift @@ -0,0 +1,26 @@ +// +// HalfCapsule.swift +// Design +// +// Created by Halit Baskurt on 16.04.2024. +// + +import SwiftUI + +public struct HalfCapsule: Shape { + public init() { } + + public func path(in rect: CGRect) -> Path { + Path { path in + path.move(to: .init(x: rect.minX, y: rect.minY)) + path.addLine(to: .init(x: rect.maxX, y: rect.minY)) + path.addLine(to: .init(x: rect.maxX, y: rect.midY)) + path.addArc(center: .init(x: rect.midX, y: rect.midY), + radius: rect.height/2, + startAngle: .degrees(0), + endAngle: .degrees(180), + clockwise: false) + path.addLine(to: .init(x: rect.minX, y: rect.midY)) + } + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/RoundedCorner.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/RoundedCorner.swift new file mode 100644 index 0000000..dafc063 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/RoundedCorner.swift @@ -0,0 +1,28 @@ +// +// RoundedCorner.swift +// Design +// +// Created by Halit Baskurt on 16.04.2024. +// + +import SwiftUI + +public struct RoundedCorner: Shape { + public init(radius: CGFloat, corners: UIRectCorner) { + self.radius = radius + self.corners = corners + } + public var radius: CGFloat = .infinity + public var corners: UIRectCorner = [.allCorners] + + public func path(in rect: CGRect) -> Path { + let path = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) + return Path(path.cgPath) + } +} + +public extension View { + func cornerRadius(_ radius: CGFloat, corners: UIRectCorner) -> some View { + clipShape( RoundedCorner(radius: radius, corners: corners) ) + } +} diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/Models/OnboardingItemModel.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/Models/OnboardingItemModel.swift new file mode 100644 index 0000000..8dba41c --- /dev/null +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/Models/OnboardingItemModel.swift @@ -0,0 +1,32 @@ +// +// OnboardingItemModel.swift +// Onboarding +// +// Created by Halit Baskurt on 16.04.2024. +// + +import SwiftUI + + +public struct OnboardingItemModel: Identifiable, Hashable { + + public init(id: Int, + title: LocalizedStringKey, + description: LocalizedStringKey, + image: Image) { + self.id = id + self.title = title + self.description = description + self.image = image + } + + + public var id: Int + public var title: LocalizedStringKey + public var description: LocalizedStringKey + public var image: Image + + public func hash(into hasher: inout Hasher) { + hasher.combine(id.hashValue) + } +} diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift new file mode 100644 index 0000000..b561388 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift @@ -0,0 +1,15 @@ +// +// OnboardingBuilder.swift +// Onboarding +// +// Created by Halit Baskurt on 16.04.2024. +// + +import Design + + +public struct OnboardingBuilder { + public static func build(items: [OnboardingItemModel], didSeenOnboarding: OnboardingView.OnboardingDidSeenCompletion = nil) -> OnboardingView { + .init(items: items, didSeenCompletion: didSeenOnboarding) + } +} diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingCell.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingCell.swift new file mode 100644 index 0000000..93f2297 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingCell.swift @@ -0,0 +1,39 @@ +// +// OnboardingCell.swift +// Onboarding +// +// Created by Halit Baskurt on 16.04.2024. +// + +import SwiftUI +import Design + +struct OnboardingCell: View { + + let model: OnboardingItemModel + + var body: some View { + VStack { + ZStack { + HalfCapsule() + .foregroundStyle(.white) + .rotationEffect(.degrees(180)) + .aspectRatio(contentMode: .fit) + .frame(height: 300) + model.image + .resizable() + .padding(.horizontal) + .aspectRatio(contentMode: .fit) + } + Text(model.title) + .font(.system(size: 30,weight: .bold)) + .multilineTextAlignment(.center) + .padding(.bottom,10) + Text(model.description) + .multilineTextAlignment(.center) + Spacer() + } + .frame(maxWidth: .infinity,maxHeight: .infinity) + .ignoresSafeArea(edges: .bottom) + } +} diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift new file mode 100644 index 0000000..1a32f49 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift @@ -0,0 +1,64 @@ +// +// OnboardingView.swift +// Onboarding +// +// Created by Halit Baskurt on 16.04.2024. +// + +import SwiftUI +import Design + +public struct OnboardingView: View { + public typealias OnboardingDidSeenCompletion = (() -> Void)? + + init(items onboardingData:[OnboardingItemModel], didSeenCompletion: OnboardingDidSeenCompletion) { + self.onboardingData = onboardingData + self.didSeenCompletion = didSeenCompletion + } + + @State private var currentOnboardingItem: Int = 0 + + private var onboardingData: [OnboardingItemModel] + + var didSeenCompletion: OnboardingDidSeenCompletion + + public var body: some View { + ZStack { + DesignAsset.onboardingBackround.swiftUIColor + .ignoresSafeArea() + VStack { + TabView(selection: $currentOnboardingItem) { + ForEach(0.. Date: Tue, 16 Apr 2024 22:00:46 +0300 Subject: [PATCH 024/126] Add Pull Request Template --- PULL_REQUEST_TEMPLATE.md | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 PULL_REQUEST_TEMPLATE.md diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..642d2d8 --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,41 @@ +### Issue Link :link: + + +### Goals :soccer: + + + +### Implementation Details :construction: + + + +### Testing Details :mag: + + +### Screenshots/Gifs :camera: + +How to add gif/screenshots: +1. Drag and drop the gif/screenshot here, let it upload. +2. Copy the link and paste it like below -> +``` + +``` +3. add the appropriate file extension after it "*.gif" or "*.jpg" +- Important: Be careful not to exceed 150 points width that is specified. It makes it harder chech overall ui elements if width is wider than 150 points. + +Example usage: + + + +## PR Type +What kind of change does this PR introduce? + + + +- [ ] Bugfix +- [x] Feature +- [ ] Code style update (formatting, renaming) +- [ ] Refactoring (no functional changes, no api changes) +- [ ] Build related changes +- [ ] Documentation content changes +- [x] Other... Please describe: From dea0c8c81e9198a111fcd677d1300e45c59660b5 Mon Sep 17 00:00:00 2001 From: Halit Seyfullah Baskurt Date: Tue, 16 Apr 2024 22:49:35 +0300 Subject: [PATCH 025/126] Custom corner radius shape deleted. --- .../CustomViews/BuddiesActionButton.swift | 9 +++++- .../ViewComponents/Shapes/RoundedCorner.swift | 28 ------------------- 2 files changed, 8 insertions(+), 29 deletions(-) delete mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/RoundedCorner.swift diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift index 5cb2444..4efbb05 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift @@ -39,7 +39,14 @@ public struct BuddiesActionButton: View { .frame(maxWidth: .infinity, alignment: .center) } .fillView(bgColor) - .cornerRadius(10, corners: .allCorners) + .clipShape( + .rect( + topLeadingRadius: 10, + bottomLeadingRadius: 10, + bottomTrailingRadius: 10, + topTrailingRadius: 10 + ) + ) } .frame(maxWidth: .infinity) } diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/RoundedCorner.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/RoundedCorner.swift deleted file mode 100644 index dafc063..0000000 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/Shapes/RoundedCorner.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// RoundedCorner.swift -// Design -// -// Created by Halit Baskurt on 16.04.2024. -// - -import SwiftUI - -public struct RoundedCorner: Shape { - public init(radius: CGFloat, corners: UIRectCorner) { - self.radius = radius - self.corners = corners - } - public var radius: CGFloat = .infinity - public var corners: UIRectCorner = [.allCorners] - - public func path(in rect: CGRect) -> Path { - let path = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) - return Path(path.cgPath) - } -} - -public extension View { - func cornerRadius(_ radius: CGFloat, corners: UIRectCorner) -> some View { - clipShape( RoundedCorner(radius: radius, corners: corners) ) - } -} From 6cf6d5c315d46a06f8d3b77c2344cc7c4b22f581 Mon Sep 17 00:00:00 2001 From: Halit Seyfullah Baskurt Date: Tue, 16 Apr 2024 23:12:50 +0300 Subject: [PATCH 026/126] Some logics for OnboardingView in main target are moved module itself. LocalDataManager deleted. IsSeenOnboarding is handled by @AppStorage() Remove unnecessary lines. --- SwiftBuddiesIOS/Sources/ContentView.swift | 31 +++---------------- .../Sources/Managers/LocalData.swift | 15 --------- .../OnbordingScreen/OnboardingBuilder.swift | 17 ++++++++-- .../OnbordingScreen/OnboardingView.swift | 11 +++---- 4 files changed, 23 insertions(+), 51 deletions(-) delete mode 100644 SwiftBuddiesIOS/Sources/Managers/LocalData.swift diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift index c3a30f3..917b901 100644 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ b/SwiftBuddiesIOS/Sources/ContentView.swift @@ -5,45 +5,22 @@ import Onboarding import Design public struct ContentView: View { - @State var isOnboardingSeen: Bool + @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false - public init() { - isOnboardingSeen = LocalData.manager.isOnboardingScreenViewed - } + public init() { } public var body: some View { SuitableRootView() } - @ViewBuilder private func SuitableRootView() -> some View { - if isOnboardingSeen { + if isOnboardingScreenViewed { TabFlow() } else { - OnboardingBuilder.build(items:prepareOnboardingItems(), - didSeenOnboarding: onboardingSeenAction) + OnboardingBuilder.build() } } - - private func prepareOnboardingItems() -> [OnboardingItemModel] { - [.init(id: 0, - title: "onboardingItem.FirstTitle", - description: "onboardingItem.FirstDescription", - image: DesignAsset.onboardingWelcomeImage.swiftUIImage), - .init(id: 1, - title: "onboardingItem.SecondTitle", - description: "onboardingItem.SecondDescription", - image: DesignAsset.onboardingBuddiesImage.swiftUIImage) - ] - } - - private func onboardingSeenAction() { - withAnimation(.easeInOut) { isOnboardingSeen = true } - LocalData.manager.isOnboardingScreenViewed = isOnboardingSeen - - } - } struct TabFlow: View { diff --git a/SwiftBuddiesIOS/Sources/Managers/LocalData.swift b/SwiftBuddiesIOS/Sources/Managers/LocalData.swift deleted file mode 100644 index d560e8d..0000000 --- a/SwiftBuddiesIOS/Sources/Managers/LocalData.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// LocalData.swift -// SwiftBuddiesIOS -// -// Created by Halit Baskurt on 16.04.2024. -// - -import SwiftUI - -final class LocalData { - private init() {} - static let manager : LocalData = LocalData() - - @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false -} diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift index b561388..8306051 100644 --- a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift @@ -7,9 +7,20 @@ import Design - public struct OnboardingBuilder { - public static func build(items: [OnboardingItemModel], didSeenOnboarding: OnboardingView.OnboardingDidSeenCompletion = nil) -> OnboardingView { - .init(items: items, didSeenCompletion: didSeenOnboarding) + public static func build() -> OnboardingView { + + var onboardingItems: [OnboardingItemModel] = [ + .init(id: 0, + title: "onboardingItem.FirstTitle", + description: "onboardingItem.FirstDescription", + image: DesignAsset.onboardingWelcomeImage.swiftUIImage), + .init(id: 1, + title: "onboardingItem.SecondTitle", + description: "onboardingItem.SecondDescription", + image: DesignAsset.onboardingBuddiesImage.swiftUIImage) + ] + + return OnboardingView(items: onboardingItems) } } diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift index 1a32f49..a672d79 100644 --- a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift @@ -9,18 +9,16 @@ import SwiftUI import Design public struct OnboardingView: View { - public typealias OnboardingDidSeenCompletion = (() -> Void)? + @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false - init(items onboardingData:[OnboardingItemModel], didSeenCompletion: OnboardingDidSeenCompletion) { + init(items onboardingData:[OnboardingItemModel]) { self.onboardingData = onboardingData - self.didSeenCompletion = didSeenCompletion } @State private var currentOnboardingItem: Int = 0 private var onboardingData: [OnboardingItemModel] - - var didSeenCompletion: OnboardingDidSeenCompletion + public var body: some View { ZStack { @@ -41,7 +39,8 @@ public struct OnboardingView: View { let buttonTitle: LocalizedStringKey = isLastItem ? "onboarding.StartButtonTitle": "onboarding.ButtonTitle" BuddiesActionButton(title: buttonTitle) { if isLastItem { - didSeenCompletion?() + withAnimation(.easeInOut) { isOnboardingScreenViewed = true } + } else { withAnimation { currentOnboardingItem += 1 } } From a19364448bbb5da362695bebe204c9f183b4006b Mon Sep 17 00:00:00 2001 From: Halit Seyfullah Baskurt Date: Tue, 16 Apr 2024 23:13:54 +0300 Subject: [PATCH 027/126] Remove unnecessary default values. --- .../ViewComponents/CustomViews/BuddiesActionButton.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift index 4efbb05..25353b4 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift @@ -18,7 +18,7 @@ public struct BuddiesActionButton: View { public let title: LocalizedStringKey public let bgColor: Color - public var iconName: String = "" + public var iconName: String public let clickAction: () -> Void public var body: some View { From f4cd43aa80af77c46aa7f01d65d5f322dc801bdd Mon Sep 17 00:00:00 2001 From: Halit Seyfullah Baskurt Date: Tue, 16 Apr 2024 23:31:09 +0300 Subject: [PATCH 028/126] Default func parameters updated. --- .../DesignModule/Sources/Extensions/View+Extensions.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index f382814..194bb22 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -46,10 +46,10 @@ public extension View { } } - func fillView(_ color: Color) -> some View { + func fillView(_ color: Color, horizontolPadding: CGFloat = 15, verticalPadding: CGFloat = 10) -> some View { self - .padding(.horizontal,15) - .padding(.vertical,10) + .padding(.horizontal,horizontolPadding) + .padding(.vertical,verticalPadding) .background { color } } } From 71bd8505453635d73eed7dffd4dc0080a3fecf78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Tue, 16 Apr 2024 23:33:06 +0300 Subject: [PATCH 029/126] Update app tab view --- SwiftBuddiesIOS/Sources/ContentView.swift | 49 ++++++++++++++++------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift index aa70e89..218c075 100644 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ b/SwiftBuddiesIOS/Sources/ContentView.swift @@ -1,32 +1,51 @@ import SwiftUI import Auth import Map +import Feed +import About +import Contributors +enum AppTab: Int, Identifiable { + case feed = 0 + case map + case about + case contributors +// case login + + var id: Int { rawValue } +} public struct ContentView: View { + @State var selectedTab: AppTab = .feed + public init() {} public var body: some View { - TabView { - VStack { - Button(action: { - Task { - try? await Authenticator.shared.signIn() - } - }, label: { - Text("Login") - }) - } - .tabItem { - Image(systemName: "list.bullet") - Text("Feed") - } - + TabView(selection: $selectedTab) { + FeedView() + .tabItem { + Image(systemName: "list.bullet") + Text("Feed") + } + .tag(AppTab.feed) MapView() .tabItem { Image(systemName: "map") Text("Map") } + .tag(AppTab.map) + AboutView() + .tabItem { + Image(systemName: "info.circle") + Text("About") + } + .tag(AppTab.about) + ContributorsView() + .tabItem { + Image(systemName: "person.3") + Text("Contributors") + } + .tag(AppTab.contributors) } } } From 616b5a18c54b0962ec940f63ef4163fcc8db6234 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Fri, 19 Apr 2024 22:58:20 +0300 Subject: [PATCH 030/126] Add GoogleService-Info.plist and assets --- .../Resources/GoogleService-Info.plist | 34 ++++++++++++++++++ .../LocalMedia.xcassets/Login/Contents.json | 6 ++++ .../LoginStrokeColor.colorset/Contents.json | 20 +++++++++++ .../SwiftBuddiesImage.imageset/Contents.json | 12 +++++++ .../swiftBuddiesImage.pdf | Bin 0 -> 94640 bytes .../Onboarding/Contents.json | 6 ++++ .../Contents.json | 0 .../Contents.json | 0 .../OnboardingBuddiesImage.png | Bin .../Contents.json | 0 .../onboardingWelcomeImage.png | Bin 11 files changed, 78 insertions(+) create mode 100644 SwiftBuddiesIOS/Resources/GoogleService-Info.plist create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/LoginStrokeColor.colorset/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/swiftBuddiesImage.pdf create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Onboarding/Contents.json rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingBackround.colorset/Contents.json (100%) rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingBuddiesImage.imageset/Contents.json (100%) rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingBuddiesImage.imageset/OnboardingBuddiesImage.png (100%) rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingWelcomeImage.imageset/Contents.json (100%) rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingWelcomeImage.imageset/onboardingWelcomeImage.png (100%) diff --git a/SwiftBuddiesIOS/Resources/GoogleService-Info.plist b/SwiftBuddiesIOS/Resources/GoogleService-Info.plist new file mode 100644 index 0000000..1f956a6 --- /dev/null +++ b/SwiftBuddiesIOS/Resources/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr + API_KEY + AIzaSyAUZb6hIeGqfUZ21fpMnFjOpZXv9BUUtKg + GCM_SENDER_ID + 1015261010783 + PLIST_VERSION + 1 + BUNDLE_ID + io.tuist.SwiftBuddiesIOS + PROJECT_ID + swiftbuddies-717e1 + STORAGE_BUCKET + swiftbuddies-717e1.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:1015261010783:ios:470fb09b3e679ad779b4ea + + \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/LoginStrokeColor.colorset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/LoginStrokeColor.colorset/Contents.json new file mode 100644 index 0000000..de07e03 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/LoginStrokeColor.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x29", + "green" : "0x9A", + "red" : "0xE8" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/Contents.json new file mode 100644 index 0000000..e45e809 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "swiftBuddiesImage.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/swiftBuddiesImage.pdf b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/swiftBuddiesImage.pdf new file mode 100644 index 0000000000000000000000000000000000000000..96327cb4439500ecb8f91ba7468dfd3061725dbb GIT binary patch literal 94640 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

wRp+>UtDPma9U`-3*Li4VOhO>+1-bQNdAFpa#9 zoq-p4EaNCO+O2Rm=ln`EOay9$1|wKO)HK<2Sgii$EapLMM~#T4q@yC9UuR^~d=ZtE z%CtGt$UhdU6pR7iB*g$%mamc4TCMdXA;FTt@6Lg>;pN_snG#eWA#-`NTgLfhR%$;f{X7mos$tfbW0;9NkV9${>O8i$pL~ zNk2KgU{n+?Grg6kp!zns9j`!spVvJ48yP&~LdDK--vX z7bmRuaj|4Ch34XjG}5UCGZEvn=fhD0q+tkylr$sb_^b)%q4?jiq->E@hKEEoLOQL` z6e>)@EXPjoE4^q};oD6c0n;%t@V=gCg9R!9>~@sx!V&l1|94=i^b~yA?uaQ|jDNe= z!^Q_XF>&!8Kq~Q-dA+77geOo_tGyw}SgD1P7HtSPnIbJ};ZT9nglBZFFq6MYkdpWz ziF@mDloFV^Z23tPcozYixD*6{kU|2^|a`voqgFL5%-U2p}(vYUq-Dk1e*lA`>w zW>asA*_ebw0&LvxAGf{&_KfHv)ay`qyQJChI7@wWr+ zdb;yKk&*O49Vp{vPar{}dkjwF5LPoJkJ!N8mSHgS9NI23xi57ZpUay9X}9*rbJ?k5 zyczS39EU`)hft25cfT}&QKw#k0tttzCL^8=`yEd-YM#5p%VO2JAVE_#&^3? zYdQIrpx~>Hd`2L>e~RlG2IZ$-uwU`}_iwxQSKSO1ts4)xGdn^CQZFBXi|*Q7HGUn2 za(ruRE7V7xQJvMhvE@gLmNI<@#3uGsp?@J57o$wYyVI!{mNcaUF}IbaW2qJgbBp|8 zgQjOTLuq93sq-nqe2Ly}5K_)&r_raYN-+Xb2BwH8n9ZW6RSPQtTkj$jFLxb(BM;nr zGp)KF&owrE2|fR}CSWfZQWeVDXu?@5Eo0&|n#BdNip5xLL3#x*zF1n-DC*R?Olj{| z)pAYlOZ)+=s>JgP8uU%ubC!?DY;Z@_Xh}zP!*9EZo19@OKgl*&FWb(%`n1~a^*Mt- zgz7BvY_okY$7K5UYv$v!{qi?z?OiYvkaAE9FR!DFY@dS}ja5z|UaY~?PNjykU?+g+ zBr9g2q~_%t#p9XYujhj6G)U=OfZ7O2`DL7geX94bQ$-S6yOcOs>o=FNwEB-JVxWn( z%UBuDZ14=`>iu1=U0gnt&5+l%v{CexLr&Kr`5|E{mn)Xb=XtDDp#KPkjJg{N4*jyI*JCMXheWXF`DbyjzM}I^{ah! zoR%(ONrCg1`QWlel2onmzq#ZP6qN(b3yE)W?Jva@=wWxm{glp4NR8POp<}g>So|Bj zJaoJao)BCH1fyyfkbYYRu9-IZjvHa$DWZ7-9u`=@;Q5uKsUn%1q%L<8dZTO2DP|27 zSOd*1q$HHJ+M$#5KG*$fqa=NzmU=zGnG=&mapy!cq(u2(3m+AKiNb9X`=C)Xxd<``bONPNtv6=xxVI{auJ5eC-eS){36St%BL z{a=FdK2Q$yP+bHF#T3AcuL%VD@`0yR4kS*`m-5!mFkNlU&xw#tv?;cVZI#K3)C&uh3?DtEx)xfzV zNRkGr1b#X2`;WhF_Cn=SW$d!zhU5oh(|QGefX>5oo2scNy*3>kviH;)!`}!po4IiC z$37U#kn-%xVE>6JP7AsRf0ZJ7pcruGhk(8@huk%V%)9>`^7G2&$Fi>x`4&8KM{B8q z_&*a^om@_3dgY}qk+4`eag?lbhFx14i}YlH2iA6!i?Q&J!Q|Kxu?0EE@G zNQEqxR->$mGq(Ft1fDh&k2!nrN82$347REl}jGG{-lBqKi1=dq%Tu%>EX#dyCSqR%_eA08vG}4dvK?ItG$__H@ z-${&X{e450(t*#YPK#ks$zZ&AToet+*0}Ff160ejok0D>Bidh|w^ssNXg)Q$^eu2{ zq&om5VaXUC&_dx;Df7CQ_!}9uW2jq~n6l*0{PY|DbLt$ZBVqwBm&q^-B7<&~Hl_i3 z4W10G3H(kG5_!D3K{m&B=c8TZ4(28BvG(-(@2N z)yY3pmsRDlpSnS?hc3g?7USz4E4+Si`O^mxjm4NPpnC-`Gg)Y6d-d--sQ00VhRNFt zq=Y>@1XsYu`P#U`hIH%G4J z0=!4xEkj;LoFrEG$i*4b1nje9RU}kgm|P0F52v#z7ow;SiEu-}oq61~Y`k<7uK1XO zzZ&q-IZ0QmtC-yk(|{~c{9RU4tf*+NQ*whChjz*yw+$wU43iN$7$VkCn3KK4{&~KA zrz%O6brq6+?su^7=4nIysVemw$|l;$io@CTSQK}OZ(k8Lc+IEtHIx_#SFB=(r#T#I zR-!+%?bE;SrbYjtr^?s2oK8j&i+QFG(A^OA^fY&12&6JBhM`Itmq~hleWTm>7W3^| zS;I>AKedlIGC|L~*Ue`7$Nq2l*R%_s2W~iClbHH_dlvuwfSv`jgz*hj;L`dV_AdK1 zLRXMrE-EBH9d)tJ|13stVKuU623?wldZ@p6;?bJ+Vv4`%J6Z|5ZDuuI66esy%AXu` zc3pe1`9k^8z-l4%wmbeLp-94fwOv4=>b^*+{H-MA<+{aq>NR%FO;%^T*-wEnmg;v3 z?n>DA91_E-v5}lZM_z)_47i2ro}ZdY$YH%J`rA1OW^-mR@2aPss*l)iu6Di!R}hIc zRiOr__*aNllz(KHEw5B+xdAnKNpAtUFB>tBEjiHJ+10}4DAwFL$%vSULs)5O)|vEi z-q!1L`E(gHZ2P*#GtlM4F4OW4lUKDm(C-2)eR=XU9~6PC2o>*7#jUQuzrxhHdS=FtOJf)YR^i zPCU{NvMgl6oK}n&Cq7YUYtOU5p_bkuaBX%^@rEG0`D%=3S|(itV#H@g?LhiVV~8q$ zs`V)rwx7*^tA6?<9UjaJWyDr3u1IIETb^Qbu$w*$T)iEu-@$j*xhfM|$TmW61ht^E zmC9Zb93}Rh$4ttLJFMBH!RL-8>Fzc@&tFo@$Wr>My;O^;-=6uZX|;o?FKv_wU|>rQ zx}|k9w0D0p&g0Jq%nKMXQ4WYlrCcZmWT2uQ7pVL;Tr%*Dd~)^E722v;unK0@d|hwb zkpfB;pgyq?ZW-ep!C>T#wCvHz>AkR8|314jKByudg7~nHI?3&43*UPS$`?q4j4#pW zF!);0>G&0^2>ZNoe(JA=C$xz8nsx#E|FQmTK-X)2g=w7Q{r9bEHoI8gXJjPx?#sq+ z52J!@t{)f5?yUw^~9i8On`VVi#A;E$qQ69UlXU4HTO(h(5pOV@!9ab3!t zO_LK>%mAeC&8dU$KSoQ6w;AJXRzVZY|FWj;*+yNdoB4&z@^Me(#w|wv(W=x7}8Wsga074!}GailiML_>FN=<&Y}&x5qTDKWt;yOCWjv zD?V>T)i|;=OMUS~GZSGAT2?1vRFnpg8QSgPd$dL|9oeN*QVUh2udp=tBd?BXp8lGk z9{37avQY&SKUO(#gR{S+*}pK7fWvKv1HvF}_AL56mIFfy$y>I(nBs0w_tJ}scf~64x>6_8kVQN~OyiAoP9hA0BzU70()8~>t}Mw+i(`x^ zk(r<=-NAoV&jgz63COGa&8mDg)#?km?EI6U1vVqSUHj8?>>^t|K_i1ii|1_<&)+aE zAsfu57P?g<0UCU{7KCY$$NFTW!uGG682a5j$(St4E_TNR@FxT2S-ogM{bQ5@Hn#QA zLQu-{*s_~f>Yq$~mg-^4G~Qh6jY@cSG4b0Wi@fR;xLNWu&62e)A$)#lix_+Dp6UOS z(~Et8>)nu>BVM~3W%wiP&oTm^)lh>ZH_w_dE19SgJKZ5%v$T$P*)-?!Fo z)>4vS$IWmxQ5&1XryIxsdSymdGD69f zARAz^;FEU|H(HW2P1grAU5cDLq*GSIuO%<>0&24s&-h(@4~e4QSAX zJxPcNRipCZM>m{r*OmexZEO=3=N#a>gQBRS|7kTl(k=KN|68t9_RP#bW)(F_^>Lf8 zXX$d=Cm(x#CnV<IpwBW$elmpH#}+@i_x?#H5GtHBzgy2;sbN+a5lV}Q!wT07zvENaE_kxIw?=HoIO2VZ z!A%(Q&uJT!FCfG$jD#ilr72-0w$I_t+ODOe8nrjYkIq0Nx-`$d39p>B~^yMOG_kbIyg zFq?jB)SFU+KmOW-gBe|9i`?#oqGz^&!oY_Fi`ZYXe|?pRpR|c~)(NxYS|1 z>PoN#!(};xT1GjyxBBaR%6pX6xln7f-)q#T-CF)-zMc2C0Fe#rM!fmk*}TcSmf5+T zaPF6@!1Z*}+u47EC>73<^wZTcS{#ffYecGkOHzaylI+obQ7tnPp06EA=OZ&j4tfsf zqb77KK^8Os0w%ZjTw4bpYUjR?&z)cARWAo=`yBIcpm0^{3@v>Dt4TQYs=~h!MJ*B; zuGIUreNE*@HKS#eUrk>684#5Efu1u*yG();0_sAcwj8>jxR zgTG$CDOZm*TVzsLINs6B-&^rbDfrFQR5)7bYn88t41J*cP^mSp14*A%FYARcjm)S3 zP*4t4ryfgfZ!!APkz@7?xhvO?502d{PmtgCUn&vFftKfNPx4WdWU)r+pg8n+-W%m=D5>wOV(Psjdo9ApPCe?Lq|X<( zF0988k^&&)$%T~L#G>{y4bmIE>TBBmbl<`4O593aBFyDJs`Z`TKVjn}B zy7H%!zy$B6g7s`X-Y>z~Z>>p}uFE3pKpGIeK>XlEq}F|=h`f5Biy$xh23Kf;@XX{d zmj^LCNm-l`%a`|fhf`uw7~-Jcxe4s)$;yU@?cxIRwM0s=Cx(Q0NC?O>t(q`| zgY^y75_Pl)|F?PGcYiBtOHw8}Uc-|RqK@sYimu~j-;1UrGR0=UY@V%?5UIcStEc!_ zQC|{rYrn_qLrfJpLlD=7z1hgZ&__!FhD)UU;q;Eovx9qc0vhExG{ar_7kHq(GY^WQ z3@+9L4rYW%XQBarvtd)!LjFy|{icB@FJ^CeW6oXea0F1(P2G}cp<|WHyhK&(a<68z zg+SsDZpwkvY$q#WRgws(TCo9ky2;Diy6+z*?&ZPqB>bd95z_4qd_u9F#PuKuQCVDA z#_hQDs)eT~J})f_Bu$AX^n-d%Ls88o&!GkJb6gQa`(RA?X#e>)pG88yxf&yM=pvR^ zTWI9LC5jT0mZ&yF*;t#}-{$v262UQr3kAHKfleJRxX0OUC`tjxXc=DQVtok9yeXf# zhi<2wf6}poW|AzW;xDH+)YM)()RV(%?i6g7gSCogw*!>~wy#lKWxhQ&!!@b%Xc^sY zf26#9TwoucyQNh>PXCrIx>M`mSi6qfHIYkB6}CmHGwCyopMXgax1z-cLoHDKF82&V z-&JXaG%no7Mv?A-smM=aiLNAx=QZZkpvq@~fIdnxpz8$|g8AuzLy^U#Wckllm~6== z<JVKw|x*gp(@pYguD?->FpT&8{qVZ8>42QD2P8{vb9L?@VO0cSo*$-gA{r za=f0_^RxWkUELV4k7W%;asJ(e0+NEpH?E%9wrr&{NLrUzr9kS!dpCN*8adAvC%$5g z!;dutB2&`9&|yM*i;9iyd?^`H~xc@=~l#r z$JzXX4qmp_&a2hRBMq&`kb3YAyRnNs)t;Q9RU544vCt$1j{)t#uj_j=vR0G*_GXk& zq|hwQC%n}|Ma%u)qba``{zdLC^k13Z%e17*GbD6rjpL?UN`4?4D0o*$<~^79MmusV zYg5$rEVbPWSFi02enuTKRU^xyLi!IxwzIfkJ!=l?oy>_3enFM^Hyyl%BfMVlM_O+b z@WTP5OxAEDj4^EwKny}oi>%Rseh}Ymsx%d6(cX~oUhbDv1O_3TC&b&Uba?)ImZ$ge zmTDt-(qV~6TEh9fd~Fm3|Cysi88}O~e`EBeigN${P^&^QRP|q}NWkCNrOPUXXVUc6 zH^Rpen7YYgTb?9a7sKjV$jd}*A}eSds{M_ZUl!5MqtaU@GE78A*vVn>m?YphYrwVz z2Z0vY)@G(}4gg#eFQ9*E|6-wt^l6jqoA!2?^)ZKF(4y@9NlFr*$)(Mi(k$=IbOpW= z{ab?~XC(B8{s+DNG><&&XT5l2+u8B!ZIedil_OQ6E{T0GDp+orX)>-#jFj#~WRla` zJ)oRqg9iQj!D~@pMjNu2I>I9@+Iuq~XWCsVU|wCklB)dyC>%)rj7b2jek>fEUMnss z2?*Xud^tQqDPuZ*FVQZxGC4R4xSRXZIi9`TAt?jYlAy#H~g!lFTygtJXJ1n z7zA_tnup$6RhnXRq)f;q9%y1nf?l;E~h9aLv?epBH%2-;zMUWj^f0rYTGsl1S9j*J^ z5OO@dbrf00nyX)Ch2M^wj;YnQwDC@R(?F((TJXc~`e={=M2))$h1~Gdo8H`-%5wEt zcj?#7V~D@0*K75^ZRVzC!rxsK(TqN#_oHRRzUUE1O$AuIZ(%0)iYx4>qSVG!z5 z5oxZNecAZX6rV10*o8;At;xuKQk4jP4a;+g<0kJ~%v~6ZGm6U0QzkYT(Bs^5@!$OcZagwa)wA`jUWqF2d0T5b>x$Dh8l0DJ($~%Ue1t7LnZcg8u2nowM-P zG)OzQWtQwkc(XR>C$m@e)%ET|I&t<&0@o)-TvSLv>6IUoQwBsmPb|V7M@BZ&yf85_ zVR&N~sU1OPTQM@Ju)Yj8a-iGMD&|a&K6Kr&$wFSHcaCu+Xxnpj17LX2ixVO(%7>~g zn(O=CDbs!rQM*o#Lt0u4r`w8QH&HQmvcf>9mRReI#>oYAJgy}V&tGGbZ6(`7KVzOu z(Q6dT*PTA>Ylyo)+P4rU50Osh!tCtt^3Pz!Ehbm3@;4rhWgo?SA|qQldt|^GSs?=! zD98V}lGA1PCNGmb2%(r2G|AmvJRE3PX_V=bj2>T7B7O2cty|N{QC0VtD*Jv-%joN4 zg`14F*H$<7T+)Q!`1+wYzYLKQ8+~L@9ETTIi$VK~A~v>o$&wIoSt`?}g@*zu{#v}W z>l-iD{)MI=aEGDIR6P~L)5DFF-bz(PddQEgaS#aj=UeFoKmE#6P8m<#mfkp)Wy=RYPvMc@Y4FsS0Bbhb3s z+Zm6-eWRRroBh5)SS(Lfx}&27CN;CxbE1rt@*(frj;7-R@0Z44ZYB{~Z$aOIE;~D$ zIHe9~GV!3^x^KWl<&w(?4P?aDD)^Iy+!d+Y0wcoF1N0?QxoskMs2I=%E~DqIB%MfE z_1L|a@Tj^O$Gl3n*Ak}ztAX=-3l21S5C7sIU(uJ{2x_5{2_SW=f~9=0hUT#vCt)2- z8{KB3K4Ji;#MszqG#&RV85xdWBO+$BEp6*W`WlRbpxwg0Lm6Dp1H93Jc=Cj|aUP&k z0GUWJr;GuiMjR^9DpIl)OlYZmFJ+VJc_xaN*~stuHbIzY;<`u}eAu#A z?$l{gf+JS{WmTsEQ^a_K!A?iH#Gsb<+#ojA_6BA(mn)7H4QO zssin}S}2Sv+MYJ+I~^;+24%3OBz%z+I+X-c4xrK`O>4nW+fylzrW?A2yW!4tSxveq zI7T?&%0})g=W)Ol;phjWb4p4|=%FUVi9mx*(kX+*>xMWm5Nr8N_ubq$0*Sk3Hh5 z*+NaCeb`-<+W9SM!%C(k!y-7oB%odtsU3j2+j?*1fBhYZfKDpz)VtB_I&`Xl9{xrU zTBP*r9dMPY!p9)R_zR*j*yZ9Eo4zzwU=kMB-tuf8548nHYX5(2R>!h9*tF|V@4XsN z$R@aV<9&&GEDlB|4UiQ!yFo($TR;J65so3C)-VCi1AYuZut!GJdgK!W_sIs1oFcO!Juu_y?&q6Z0ySU$B2JCfNxGcc4c z)}IA!5k-s*_x|D(irUy~wJ`5_Wj`caMPb)(bXAzEQv7d(9qcR(R^(BXze6oxnhjaK zgx>!4$4}y)zXu(PwpxsX_NA;NQ0ZLPA!^D-NDK()kH>K?_&Hz%T12i z%>OuK$|yAeWQBg2!;aJDpHSZ|K9OJEC*{jpeohUSWWqL+H&vz3WIW!`kDthu%0;5< zgbHwgBTb}Sy2d<8xA{mc8%p}psr_Q4eyXp-7N~yq9?yG2SnnTx+M3itb5;Uq5TN}^ z#ytdO5_q{^WP+jejwa!v4JTLP$=+tm=vzBE>BHi~gMib*A}i5v0L|D3o{wk!5K-h) zK=a9M&Y7#p|I!-$8}>Kl%kli}nW-9m!a8+pMiBsE=GCW_@45J1WX#fBWUjVCFiB`m zx~|c~#J6&wvrR!Q1SpK~RlD+*$9KSgV3}^(^nFqt3Kif3tfNe2#$9_XDJb&4=r+Nt zA#xp^D#1;_ygc7@Oa#Bp0-iKYy-yg}7vaTGOvK~+ZDUT9B@S5nLL7yP_XbCnW7|Xu zMJrF$IszQ7NCfjuT-_`Ci!Qm`GYFvO>&0h;c43ska*jV)5!Ci1Io?r5pM_*k*xkNy zqE)u6bx29}JVgYx`)R2fVh*~#`@cL43FuT4TwA40#$X@GX({x!@vloy5eRjK+9kSl z#OM>m-%0{}mgVrt*fWPik57eBD|NExU_<#0;DXzFP*mm$1ISUv@HaSkS(Fo?ck z)<@tg|MFOg-uH%P8RTo`8xGG>^MqpMj@0N+V**$7o{MeIg6KClbkhy1tIPjs{P2JD zwxRNG(^~!zI}g_I;UQgubr1sIfu5mBGo^qxJ>qtsR4ECuFhiI$hIMP^Cl*X{mZu0n z9k@q^A(saqa^6j_a3RT{9GLSU zW_a64o2lz3($j*m#V%AXWv3 zgxt@eo#V1#M>_vP1sY?8y@n!r+$>TNJv=$uD3iD7%~StIIrK3=Yb-FHwXsNI`T20! zc$3|e6DzNs7a$&uzSPFUHODC9mlw8=r&NxrxbH7)(kz#xgslHGduYt?&$LtHQ!Vo8N`>xnHE z2rWG>9$!h-mi=%uGJn@|DRMDnk_l0N&Atz6o6}l5j=U+n1MyGuzoBzz!-d%~(T)=I zzz>7njUVPpC(S_Cr9H-}EAd=2`OCyTft2l@;$&cV|6!q3E_@+2f*$T+p|}n)M;0i* zLi29?+boa+fw-qwUO;1c8mIRh5p1YrFUR>-P-+Cg>wj;6%Ra@(yscPbN+}aiUxfQ? zyE*h?VQ?|)LB!;p<1}%!^FGh_>1ZXeah!TFxqN zW+_JP1nCww@&12QPA`s|xV3I6bMEVu#TZsKQ;u*G48R%>00{J{v9DCib?XvmN{g!#*1KHXuH%l>FmiVjfF*ER&WNih2eKOVW&IT;)=Byj{kIJu*OYmgPmtj~ zeR&p%7w7&3F>SR20K^9oZvSd~cg)u)GG4FEbNrTnrWV-lL@nT}Rt9->8rN%&D11Xncym)T*pL{;z50@S|$B#Ip3m>QLEF8f(Wh!TbwT z6zz7oM~7`faCvR&jj4hoKLP<};3PE>AO96_mAErh>qaw!?dS(a30CZeYrf&3K@ui9 zdI2K+PGIgW!Lxw?(bH5e#rY$srfvq0oCNM98r)Zxv|d1DQN(wd>%X?*c>d9c?ZMrJ z>L#;lszPQh2)^pu!OAbfB~G6kL`26-7~_j|ms;bThrGak?4DI!WJy+*$Y0g)0pA2C zgaPP>jgvZ=UVHH*^MhRVflrKAbKam!tnC3xHruNc}HVumm6( zQHZA*C-t>3Ctg|m{jpDWW_&1=(^xRgOEhNCY5PI5$>n>iQD7kn%PT{Oqvt?l2!w)~ zeC?rMYrOmqv(69jbjcuCwP2-HSrgsCYb$0ub{^slWS6nBNji?<3Jc9?vIi zRw$<^HJ{pe>NEkh6l?_g)&If=p45eS$v$obxj1?8%C|CnbYy&lKq$9aOWu!Y6+E-$ zF+QA6IG-5ckhLZdIbuS1B$leG)C{Lp&u7Yo4!Q8fHc)ie57%lTVo|pOOHGJ;=o!?w z`tPf-366b&aP@d)8E!P|uwx~9AZ$7@Y>`Cl2LoI6WqSq2ey%zJIMW15vYKn4u^zMM zD0M71lN=e)Di8rIGQ6u&bq5}Zq|s={89E*>-GPnYa?7Of7dJ#$+`Ra|EeGntH}7$D z>IWKEtCxBXF|TB(z@PYSlUaJVp)cOikHVnJv*U{#iIa3rvLgdQaX~IDYFQI&jDkb! z^66qVooeHdizU|I9s;ailw{1KiB=2f?j?)xKiX6CI!Bxjcq%dI#avSb%UNOGMB)cH z*^pz$`CkjGzV?<|KZGdd{{B%SOv{oPMGxoU(x(fDL=TLla6GatD3W(wNEc09OZfUe z$k3tLmjuXOAJ+q!{A`U`N)WP9yA1iivQS3K11ib6n2qj1dEJP-l`FB&F-1A|MTcJHlY)W*SUH`@f13+@ zzYk)c`;x&^yACsU7jtFfLqYh=mYpRAOmxFXoWqJm7m8pxe2EjbvgG732_kX}_+3OZ z867Tp>E8k5WG5Ai!P;;{{@}_Ej*hmSv_Fg&#&5OE>UUN`pJ|mDm@rNzBkJnf2)fOr za*9aZ;oqay;T^sL?{Le2Z$GgQ3F9i-#|WBee=0Q>15O+w%HWxaCPR~0+Vb9EmlO_3yZwHjfrEjjNU5m1R7%J2 zG$;P=TCEJhV1@z-n=zuhJsQQildO@;AfGX}f`S+${j9*eLakWgO#aftsE)s-h@ief z-J3eZ>*ExWW^h;O=;$CC$QP19+W4*S^EeQn%sd9U5Z-H)6F1wHRYGUtEr$Fy_2l5E zUpf?J70aOwz(B){%G4&5UA{PU*2QG2IeqN>LRC;f!Fy$?j-+y;EH~2P14?F}Zr622&3__Wn+KzdieW?B#x1x=5i@fZDbf$< z8==ur_tGkgVP7WV$UjBb*sQkWGHPcz(MgLJjdyr(^}Uw_H_D`heti#?1{!_$eose% zSXkb86Wup(*Gz+vlK4Yg)q0>Ogy)~QQDcLHOQvAit>zAvF6Q}<9-=zLdW8++mdOwv zkuhK@2@NaPc`Q*J<(~2ACCV~>gRBCCSvPV10KU$J)evInIiiB8&@2n4!Va>p$VN^e zA{=cas|&3^cYc4MoPxH?l!eSX#_LRMhv*9Yp2j=h=4-oZLK96Q_(oY=_X6JR-T$Iw zU?>s3Lj9v1Fri+F{wL{1t4V2tt653-2AM#i-jd+)u-k1abP(aqdUJGCK3z@*3|XTs zoo}@0tMgy<_)FCbgP0_&IZ84`$89AFZkHahr$Cc3_duN;zNO7xmrYWqYp89lUhH0O zD#tYDYF!umD5s3>=AE%Z_)E=Kb_-0aTYqV(i*t;ix7Fs8`Or^0g--4$SQ$V~U&M3c zmAxKv9c4{`s$+z=&M1_qo~<5Uy;3*ZLzxndFBnq{e4On_Ie$&8cTQ7a122GVWL9r* zd+i3$#?n4c0%s`>j%|X8`o4J$-mkjgd2P)e5D!NeWxLBgrOUGbuqHnZo zQ8j`*ALHAw>w@jTXgOHSdL69$h#R3GGS?N^S-`zpq075>oYK3Rn2;6)%d!)CCD==2 zeTWQm$WNDrzrcN4yX?eZMfCTLA4y*PerL*)PL^4m|DsI?iC%5-oWr(7 z(E)g3$7(Z)-IkHu^_!_2dol6}6rSt_`<)45UAl8t-6f*=wMf|{%pljVfSn7Kb3h^{ zb1Z@q5b@97=cyj#e2xp{PiPA^-daGzSL<~JAP(_eBf##!!%`X!LeI2QZGxcn2ZMxQ zVkWPjcF!#+sDs5?jacwA+;#{!I)x_+4O8fV0Pg^}it>vU4@Y~G)L*-NU+-nA`3|lZ zrbLG-sa1X+Y(-0_#U1R7P6iIsIoO7@>uDAPfUn-DX`H8J!Ap;2)jRiVSl!KM?I3V# zYbz9oA%_4y6u?nOqzk05WO?xxN?`Lizrr%kCz^O6Ec-4VMA6H z&Ql{U)MNgyX-afkpZ?-ESJm(|Aj66iZ=eA8#DfL3p@-I2w||bDSRcV9?<020WVq>m zetMXQlI{k|?h)2nG)w8Mc$-CEeir0Y1(zqaQ-1Zf3uUGp1q`B1vum9rU3;*XXq zv3xzjG!6XxRBRgv$~VXO8Dex;cV?TMsMepCz-K3o+J=J(p@7f3ajyD~#3KFy44!&F*Y?54o;=*NplXbZ zt#ngG@%t9jbQ!Zze96M-c-q`!oDZfV+n9ucgQTmizj0shEDbe7mU?N07a>ISafZ!_-l?c?r_b zG>{caB;}Lb{v<}^++=SAMsKkG9EGa?q!tspwmV$`<_)W(vWy9*$ETKx=IIuYZOZvb zpoJ?%V z3s}4HdqK&XX(~teoAo4(k;ZwZqV)7wM%TTv!D7@Dpt=D?IHbuU%iXm|$z}S+(Q#kClfi<2g@I9K<_dqMtpixCZ zf4CoWA6cQhS_V-F?VBD+5;{O-QH5TZTlbI3N@wVVvJMz9k;vo)oc7RzZ?jE5&^ek^XNQ1#6o9EP6Jp9Zx~3^YZ*fW9rss+I+ZnPcV_sBF{Dxrg z2y5macYfOB5R@RurF(fJ)VRplT=fJ;3aw67N^Dm*$_2jzY_3M9j`wnq$9GQ!r3(B_#y<4^zWRK-g6u?kbwWc9 zI(ad;vsR!FADoYGB;JwrxXLg~8CmMt;KWD&H)ly%^7ES2Mw-QPykC%={Gbe!za4`Q zC3_K5A|$)|?54YnXQ)ZI&I##TYZ(2xIAXn3CiIuQvG`kx^=>X;yxqMC47+)%lX877 z!kF}$*ETnx#DyF>zu*6?lKF9Rf8pN%R_c2#a{&`xaNxkDtwM-kC(`tfW%iwo)Yt?9 zfN@f?+7Ibj15?(&V6s+gQO8>8HjVb@@dSJjPDgVY5vdN+;Sj->M~6!*@3U?c<~6?! z^O;hD96GU)j3<1`-Z>$a>!hX+fJ=a5t_Gqs1?`}hs8jYU561d5el(nr7?opW3^Fo< z5_QH}>pDB1r_dU*Zz1u4$|QUsc=h27XLVsq13aC?lzP18ZUAhf2Y;4+l|%QPMyLaf zJi?<4b=}W7L71 zY;pc(OMdLKk^QB*4JFPKevCrlwxK&M4$#D|Ry{c?{3Ito9x(4T8?RkoOXmTl8p?mtGn6Kv=Yz%-W$M~4qCy-lC zT#6h{13vxY1=Zd~h2wF5(C2Mqu!k#|iz)Ea1-kg!9b0KWNedT`BTc&qr4_u_n%Lk| zwqd2F$K8#Gq$?iTymG6_v;i(Zvg(4%jjwS+szj|ezu|}wg9z6 z^tEEKo(uo1V0AOcVloCZ*fQQZUH`o|(+UiJU&qJ8$t_c5l?G>8X{_nVx;cCFY92Au zgN1lKjQonb>r|wo#vbF>D))t-eo@U@3%}37#|_&qsc4V2@Zk6e(I{I2zd4h;*H_9s ziwi)bv-3)ggy`fN{!`>I%J~mWUbS0YS(`bT{eyyXf4M?y1@X8j-JkN0#t(&z^N2JI zLSZYp%4qho1YQ{KPgeVbja~@034=o=3^V`xi3G^g_}$K-&Ji^ljL^-O5-<5P4W)sSvadvee%?LD=UVG!LX)106^|2&R8J@l0Gsn^+j|xZl9m=2TFZ1U0R5S4 z>77hLUMXkO8XRQLqKvU05>N#DuN(D?)?%9)?0~HFI9)R_uW|cVt(bRKa5>)xyW9w! zzpAQgZ#;Cn3xP}==8XU0uqK!mJK3rN1l9?~@RQOQFY0tAcNECCK7x?oG1sG+K6^inYMLol%x&qxCDR_ zDaL$is*?KxSXs!&uQquVg}xOBME#ps13$??`g^q%PQL~I(v~(u`uI0xTIH&np(ffI zX#FJRq)rS=Dkm>JWE(;3p+#xHe2BDdo)J2^xn($8vg;=arbPh5!n3#|=rBOBx*8xD zs=tWDa$;?@L!2k(X`{J4x)sk&wJ6=3rEx*}N=f$DOR6A$i$wlTA zrvDi=EA+JxFp@g<(nvr5Q(JnizsuXPyl5-=f_so*?cmv1A@svRf4|XU{QuZ{%f2kP zuU%L=m6j5aE@>15>FyAuQ%UJ=kS^(NE?S9&fOL0DOLsRHoqJyEf8YDw&nI|Z?EQ|# zkL5hidCocF7{@qOiprS#Ngu9*ncSc0A<<^UB9I z3}N{UVz(yaJDG3&E~i)1>L${Y`PdK>y9vZ?mE@LM8|rdityvIoGU4tD-+-}D1^`Pt znysQ|MOXOK>= z7to5mulNZWbip@>Hvk|!kjl~!WKFTLv31L z#|sN}YtyHfeN+qt2Y`#(T3_V@j>ezjNvyPosG4bNo4~xtaG=^`0eyW?<8-^sWMvthQl~RLPe6W( zL$>n)uPBZ>4k_t;o&9HBIueMBcnJ^xq_#lub5&GXZ`awjX)zrQDLhr7pxs*l^4tI2 zI|r;=5Ss$SY`Aom1jd^l?F0VjwXIBFf4_(@8Zp)F7`yy$(#_WFtbd+f?~SJe2RR{5 zU#A2q&rEiN*T^nCNHk9L>^)DtVI_p%)Zh>hOy!6m=(5g10L>mmr1LN{^5_%70YqikhqoI& z@A5if!71w4bED3QSx6))R)WADz39y=2`F%C{)6X~5SX^8j zXmF!FQKEsNFj5o@1g@hQ5vPigHFO2qXHXp3Pg@j1-x{1OfIJRwnRvvG8(v?!9#B&$ z7twle#15f~1xgbTVFPi*&+pQG!BCsMshY~990tIj#a;Z_k9PEoVnN@nhAXWd;W-mT zrufwY*X_kp@O!r1{BFg=nI@S;)ceMSf2T^XjvqKz`8;?y`NhS!Tr(i^$3C`v<`L~z znAxpTNoIW>7T#?^t4+hr#Bk^m=6L~7zxCqSea$_LX(;xg!9Wd_=%l%AUpxQGuh*}xqrbvbRgmY6UZ44 zs|21tFfKg^Xw9=Wli+6hO~_VDn`4*8Gji{r6YGZka_BcM!%q)v=+a~n+ypVFx%lR5 z&!^Q8ifaBVed&j@0#J&Ky|jZuE9^*R78^X2(`)&s%XM0~N9qPj@KkQA`1i=C*LBe3 zg`ye$AsTb`10R0bc}DO0$}$KHC|LQYJ0Oe^(~%0+vM1XA{kr?Zk9Xnjji1I&w+?Hs z+cM;J!yKT)Nmk$hzFf$YJPB^L>W3GeB;|Im~G^@n@)Hbq9cE!IYh%+l&46 zv~jq;9KbW>huSxnsiNXWV;zSgUO(QFXtwD0fn#90bK8vYJLq(WHXI4>7|_&ulXDz6 zxoA^BLnyu^Pi)UIzn`*$<7lZnY+*?*+ZiTaSKa`TwE#!LHIIaJA(tabJu3Ar<**I; zOumZ|{^PF10xaNsByO+lXBxQfYIz@ieX2b}#XaTU2V9|sNwuR&sZ)?(@m&~Q9JRB4 zv%TtDt|1W!a9#4bv-TpjG~FF9;8o<1K7$nWabLBZJ5=3I5>FO5-t5s1uL*j$Z!}bG z+p7;KtZ#6GO|R~h!U;Ezz1W`-0&{QcTAU>3Emx`MrbBn9zVtfk%H^Tgewe@9_9PLU zELMHCJi?gbGBr@LO2WSgx+osmZd^m8m!K!(j@8$`h4WQ}nsF8r#(zM>+ zKn;uSLUV!%kUR~5G0kUC<4}s)Nx3$h0O_!;vIxRx>PtBgy9?Ggvp%x$O`or`Cy%vm zMm4$~mwzmJ(LzD+%Vv@9Rjwh8`&b-jXDv<054iWs{!Q~XUT%q2A-x+xi zcUM|4=Z81ID#1hoooe%M7>d0MT8;OB(?fr5(O@mjPs5_7T`M^MqV~OhMCnvbQc_Yo z{vi15N0S%a{MCv#a5F8>PCmC<&;Pzon(P51U+vsF`dsU2W>NK0ds}V+^Ps`WmSLv$ zYeE>F{jLA76c^$8Tta&NdwS($>A@}Xv}g~xt&Hw$#;9+zmW4!@|O zyR`WQs7v`AlLlAMBQoYHZu&-Q02`uG)Z(!08)MRdNeASj@$-(Yz<#4!Bu zEt~wlkA@z*4z_{~ zd0H*@6jA^TuTbeh88hYNx$6?GjPAMX0O`LdlOgH00Qd^h2slbq(#f(;f3$;+E$+7hHpG#_WE4YCg@kWl$U`20!bXpZf8Irs zX~(s+7qAedI3NGXMQ9OA^b^DFX$z9$2oG~QPqG5W@gO2uS>q%WSVpPHzXt7d>Zyqi z0R?XUEtmQIge9>gVqA(0xRiX zzIxj#3Qumg+K-2z-^ryyC)d84^O_!!^x6nljkpnr9gH~kqHnAMwF8CpcipulnxGDC z&;AJW6K@#_){~{_4~0U_9q_E;4|7#AVCKwQWFK^D*w+jUW6itdu*ROjO}(b%=f4A^ zFj)a^S+1Z;|uiChw;0+L7R)my;<`!P^i*ty$+imL|OU`g4z9Siz;`! zd26w`Ly|di$LkRN9lL{q7t(j5E#te!_WO>CtqZ#+5oF3l*&V$&W|w&^MVDW*{uD9V zAR5ly13H6XYu?h=*cxQ+pAJ%GXBPwe)+`N%pjVU}C?>RYu8gH!a0`%H2^{Eayyc5qREAOQCF z9rE~od_uw*pscK$8(2(n@6pkWyiqB#ad&lhMx`dB3FecvY&<(#i(msR3LufdVHKv4 zO2}f8DHzb;FS~U(hqV2|jNM$%WskdDt6qeqSgy(UXd%Fy#tqD@A0@SIQmJ<^(ftuv z90R(q3eUeDjeHJ}fwHkRIRlh;Wh#cqgCRaF26!zojePO6-9$5A)xy z43?2MV^o08#~aXY^^2bdo-iaWKX-7`) z!SdvPH`G}`s0oI-X@Y<%10$&3sXv;BV2QaK1LdoN>@c8OD%kkUS7J;d<2-%=Nx5bP&e2Ueb4Y4TcG9dgHuD@kHl7)joLT#z=0e;mLxX;u4^2v(?wv2d2O( zySeeQT8jqaY~UT(2<@1Rs_wkagonXHit(IYSBtL2mEsw!GXhmxMpn2ML4UhGyCWke zkS_dY72?2oi<}FjSEt*FyWI2Xzf0;4I#5p`{HSXTu|a`DV+?OM42_QN71s(vC$Ret zG=XBL2ERA_^cj)c^B^oc1AV}%hM%aM@rN!C=j~e(jBd_0!D5dK^(YAOZXoIv=0=(eEG{DO~6GLL>!ouyu|ncjZ$O&0@{GE72sS9TKxC?CzM&^#*jo> zBJQ5Mf^I}+Z8#ctVFHI5%+pNR5Ge@>fy=+2fnn}dSMtvQUHvWfRe}>2q6&E^+Z2Bz z2gR9FhPPm%dVTWX(x@c6=4(?TRI%Mw+J7gy1^foEz#nq})4k?{Gm97GwxujLN78g# zqxpfyrZI?Z^hUdSCzHp(b~filxeu-yz@<6%%5MR)Ui_DA?rD4o+5XlF+sQ4>rUK>mNW3Q8>Y<5SQ&`JZ{gT3>`5n$TkZEdX)PY6%P4ZyQ9~YwmF6%k&Y7`6io!k)YSqvcU z)Kf>jgywlgodyp>V)y)~V*tgcOg#AnZc3CR)sI;Z?lEr1nV{e^F1}}R5+aVvPw!#* ziQ1!XuG+fQ)Zb&xX-)Gbmk$@roZmJ4Za3wG0JHJPdkApfXEjoOCYPQHJsd>fVU*r3 zJMFjJ9f@JY#(;R3vXox3e9=!ts_AMtE!uqGkJ%CYBvD52nS|Ue9bIqZ*TLsrj)l-#RjYBd0Ne^j zl#f_sBH!DY;xAvnW@1dhSR`ojb-mWszX=N~R%wFi%=iWN1@6yD=$MwCR!PN@B<{== z&3Bz!o`H7yjF_uf%T*(Ry-#i|zdnIBQV>>kx=KGx-OrHTc+TXNA(H~lT*|ZLnFQDqw{>6jK=1*gHPC~(W96R&`h*3?^Ur{c zPGn>2Dd+-pOl^>6ky+*)eI>GvsfdXz2IH)ii~llghZkpl2^dHGV?-uh^MKZfsD@nf z>B3y`>Zi&&?<~2zd`e(^)JKY;mW&z_jb_gCH0t5KMh84PYd&8%IJ8*OIi@ zO0U1-!dP!?M1Rn^pxMhRwxA5o@qQV!MV&~#|iXgua!J;Tv&V`>#H*C3VxXM#Qv-=)6iD8NX&(u~vsG7M`ac5%b*H67(ZOsj8v>%=jwhoR;MxSd7k z)|WtLR0y!+<*Y3YU2ZS6ah@|Lh-~M-1K{1-wq$ez0dh_8E$AIwcB!D4DY5`J_xB46 z*Qn8$fxMe5-}k>6c&vY-y=2uTB4<6>jl&YWeundba_W~0FHnPlXA-L=9$$F0x zmmIIDi)K|Ly^$F4XJ+AWM@xMW!r@n~$gFv+@4D*a25Y zC-C>Yi2OM)mne=GSZ{w!HroW*)C{_o5sU#}22$#pa*`#8!z`$`gXW3`prA&wDXY#x z`l-^%97bQg`jh~4nmBm$fhd+2Iz{g&V*VPS$OF)q6ZdReN5i*3Pa%I3P+0;}p<&JG z;BwNw2$0jozX;F=!Wg>_^e!?W#g&SuQxLs}D|v*WB%>Z{8MC^25R=2sq%v_~lh8%a zXK#@+RZb~oKw+20Ei3{In128~z%c}d&UlPuh@_0X+Fo}>;DSH2&qZ!cBe?e1#Y`(f zHvc9$nT(WctS!_PREZ2=eH_bf06uYaa5!O9;?*l(!ev>vis8OUQ^=hm0S&47w`IAs zvDJ9+K60+LA%-=wx@Vvy^WX;$G}HFM=--01GNSZqK&J1ap<&mIyd>Byw9S_2kti|z zZt%e-9dEP24&FNadIU_wjg9~O>`EMnE2<#VHp6fvOoq6+vvVy(wP4?J-2jq+fjP#{y6AwYa95E;eiWjcJ5~tJRfmJ=2t&ntih4qdn_$TFWly%?xjg@S9qV z*!r>8ljjo=zi;p|d#`diu+>ii>xoE^<`i%!v6YDxNxmnp=g+EWZBn6Nq_*W}UUznd z^(~FL`OD@{><}lc9_x96A%mYHlxAJu5^|uaF!t#7Hq36F9+NEXML9+7fim(xT|WL3 z-{YgWl+>hQ1yEj^)63l|9A%E%p+wVtQW*7d>OlOp^kRTzw`cNh)gLYf$yWCW3q~PregAahmWisNk@ z>wi_a>%YDb{^G3`0TUpUxn8KWfGe7=@vjaTIj8PLPgtu~`Q;k*^OIr~9%C39B+Qjo zWAF>e`$!7TfG{ggJht^JAWLcr&BUDq#iq;r&|gPs20B4=RfW7tr&G2hVsmCH%erL? zJ<-D3%wHgDVvzU4iuqd=39n@q3G`XGWE%ikxF01Nm_U+l_pMOx8+^w}>CV2p7+Tf0 zJ6RgpC$T{H3Civ0{G58Vs@QcXCBQG7!{SLq?T1|Kry$PH^uIU-8Qz7zif=~n4l@40 z>C3^C*ai4VvNrt^p1MX0?%4UVj(pG}rDn352c|5$M zX7_Ci||UfLttZ ztrM~qqksc>wS(yN(6pyV>^SzBp=S%K+ERD(IGgHHglB{{Msaj;GM}Vf^kj4E&dZa8 zzvC&OAk=IwbB`X@0Hp0_5*@FN!&uv2B?OK_9;IfBisN3q5-s4vlkt>>pXrHd!~U_q zt?s+ng7FY+EPY2(mt6IUnvSxe*WEbVdx|?h2NqtKIaP3dKiUGn9fa)FH;tl}? zV^|@hQWzKHtO925s7sA^tb#D<-p6v_KyYIk)32Ji>UWJi} zJfGsZ%%VT9d(9u%Z?!IS`rHKa*G~l=|R-k$$piiij2x5K@2bbEy1tPe%)^VQF@Ko=Jb&K5%OGF(qzPKWH(#vau zB1#9YsLe`)8>jEF2M|G>CT>mdZT@`gQ+zrh6@&J3@XCXvmB{dRR|5K%hvhUIy!3Aq zMW^j;l-dSX<}?u;7EXslWK1~Kn=*e}8bl9mO1yzuMjU6nmj$)oshGRywl;|W#545V zuhT16s6npg-FG>`in49Sc6z+4AAWUK3Je0xrQfed(jKd5k3K>vo`Cq170`fl~#veCLafp%$svmCk2azu&JP%6(iwyBSe0o^wA+8MGtl6%93HUkn^EV1m)rQ)D60 z1e`}f92utcX~M3|OUK!nVOiobg7bAq7qTYn8`bfW)ZhWc{qyJCw@~Stp;%Uz65Fwd zK=n{Jc@&?>@zh>)!*pvb1NeuX8`?^hvq|Pp%pFWU8v# z+sYM%62HYlZQ72Nt1Zch8n2#t5YfiEphKMGMbERmQRPr6#Zh<*mVPwPN4`h>NmHk# zEM$THV;Yi@iWz1!uIMDKneaua4&~1o9v;>PQ!`s&b-FR-ziJF%+fm23rRSb%99Z~V zO2i){-;l&6ZnW2{9(CsA=cbraj20<}`Gif2?JZGy)7=u&a{N8CruB}t1hnm~%?x4K z=FCaV|1@PFSg4(TUne~B8LfJ6wzR8~wz*LE?@lGiE`zz};C0ab%7u?mF6e;HEqm|(% zH{CQrJfYy3V*{1mSxNG+<_@$Lc5T?fAg(D`+mxd_CK{bnOv8+{wE81$e%!KB>03r; zSS?B(ti~MKzZCXDS2Ww;H@p$SRy~-VUGowY5GCluq?NxVRXG29GNp``G@D zlt`6tQgVU=bODW+#N&m@uWJUSRzJN4n|oxYf`%sgs5sePddH*lYwU?(NDNBjbKU}C zj-u~$;&g%75L3FN#b`wxQBwLMJs@JMCG%oS|0hv;;M`k=%SHQ`cM2ou|=TNm7{Pb4P-S%~otV=5EDRyDxk;x$*J(W8p zjrmx6f~PPY^GJ$(F=36Id1DDzN&}u~D4z_!m)cxDSven`pI-NpRu!E3R~6SKMd=v4 zqMIf%L0(tNTdJUT8X4M>V=hi-`ao=gI3RfpzUd!1x#F`%L4P3h1hHfZw~*X;6BzS{ zK_LI=7#wGE8KalkAA)`qB$n_~1{R~!90G$3@lE;z8a}9gb(p)>UW&$6VvCCQ6s;}c zm7|uW*F9n1(gvm4ZxH=R`c!xX_5}A+=6h!M@yB5x$y&+|%8JM`A5|J(Zjy5bE<_5R zxzx#=nyHC^b6u>hoeEw?x=qVv&uO#n%XvR8AJx~lRLrB9#E#01rkhm6qBh359T)qe z&}o?ruO58A=LD^@ao^|u^LU8ZG>15j(6X#pDj%nppt;**zQAW_-s8O5I)HxKL37mM)A_ z%EMe{0-P2==hm1Im2E1u7v_@^v_{iY@A zs&`E^vW(!bWlI_qnjS%G>c9W>cCab)KR;dkU;WdMt_0R#i)KtN3f3iJ?=!mPRaUy( z_+$1j=Z+|BmXbpEWsQ-eB;&`9zJKB^t{{;Vg-)DbK5RT1s@Pk7Ja$PwmFld%Tg+~j z2$XFm^JV^v`#1$Je;oD?ZTcJm$}uZjyt%DR>`^#8B)RH1g4az*r^2^zN&i0ic)h-{ zo6+?pse&-|laPeZH{PuCyR$g{2C@F!0W2)V-J^0O=Z6Z2BKrCGCi?Vp`IHpBE7y?Q zAF|fsYkK)cA-005MxufN@bQob5=OQNj_0ll_$tU5`fBm7{U?rw_-%wTjI{1j`*6Cd z&zD1kW616K7HV|abRpA+zUz2Pm4{JcG6viu6uO3u!O?C#CW~iWvbV(#D^6a8Zm;M* zZeb_j8#=#W0UI z3>Ln{wd_m?AF$u?27R4R_Fr4F&(IEw6Vx{3S)tBqtBdA@chcwo^cn#*Vnx5&G+KfK ziG9Q!cZ#vpeJZ3_+xV5~7s4Z%j(zpevEPpHYwjH;gA&Bc&aW~9fb;ZudCu65ok&@ID{?DVO{sV{L5gDRXKknP1oq&!O!;A;s zfn){;2mH$y$Rr8pWAH`KDNX~eHQo%M{xSLRJzDNX2UQ)RHUDR2c{saugek^1M`t;f z?}a^Ix>PQ_@p(h&*8Z?QsW&7=)=Ri9mSv|e5D31?GWaS|+s1QnHK?C9Lr|bf6(S5u z*MjNx5p@><(SzTh<2GG{h3+?`w2KSp2>0XMUp@r>lQ6&lb@`D~7{n&q+R?sQUHXLF z{($?j?12J*(~1Uv7(8`;Lg8Yzc<6lP_6&6q?kC)zAiF!o%=bSJh`*_ z+C*(Nq(9S3t1Gk-;iyBu=8z~luElUZJ@AZH+i+CO==eHO6}FOr!7sIe%$eNT2(1^x zU@672Gy7p36?GpscIh)0=&zZv*_HLUbaQaN9Jsme6?d3}X*B z2lgUjOE%KSyALH4u^ZWoq1p_I5?hCAI2B4ZeG%4D_)KSd$D>^YYl9H@467*G3$b-paIVm5Cbwmo1jUhLf`x_eUAIj7K@S1EwAg&Ew`9BBFmsj!<` z8K+{;N8<%w!A%1D5g-!1X_GTWzwaoh}Qswc8X=~pcu$gXw zEpOmC*nIJ5y=O9oJS7X8$Xqqy&z2yfhbZHAnELE2Zsgr+=3(xc_LtA_q2=}?ZMYQ6 z|5)9U(>@S9uWQ55?wePTdkQjM$`~gr$$<_C;$I>^Rz9{`OM$D05MRqbl(HnkfmBVA z5{}-y&dWF2{HLIm?y}J>dK}d@0eVP+ z{}7&y+KO>3JCDwKbf>z$>TcTU(+V|iiTAa^6Wo-zi+#_qMb;VF!m!&2*FVo8pC_MF zZS#oJyMja`#84z|wk7p`}y;$Onk87W7qhJnCpbH>Msm5+lhg)>{M zGEU)W=j=8~-Aq5KF=ccsdp=Uhz0*RBgRS9AF(-lIFZ6_wjjB?L(f03ihOOjljTOf% z!=-X2+QI!84YvoCUEb6n&PNh)cYe{bC*;j$L+yL?@S6f~-Sz}+UEP;uo{?F}n&C66 ztRM8MEMQ!MO51-u1kcmCrIRuFsZnwwDWAj36+H4vJu%|tnq#@{kfzVl$6;~Z{F{oH zybK@lui&k)h)e|!9!pX5g5w$1k$jICg|`kR(1M%DCW0A`(XK=b_q*>oi_cuvGrln# zBS8nSl!w^B5mdf%Z@e-?d{y)b5*gj_Ciw(Mi8qQ(f>@R|$(=vZ;0x+b*N4@nCPEXh z$>01hC{80WOuS~2Lxh{Hkj=HvanbQ3-tU*e7m+=w;DeKUs-@&{JNf(or4W*0z-h}S z%f4}#q_CXVM4zF71&M4$R$sD7aS)56ws5;=AAV94jy3b^Kae8JM3q5^-lkts{cH^s&1qq1ram{-ynq zaZ9SN3xePpT5Iq-S?@&HOFLbFm;Po1Z{mf|C4C)AZ#RQ$a&LD=c8x8#gS5ZJaTM3R zyGyK^eB*y-i)FIX8nI^L`wrNBl{Wsuq1^v0-qEC|`Dv)>!4#3Ehe_x|=nLZP3q(H0 z1f17=h+YeLJMzksXmUgIwGT(&t)udwr?7oz5&rLeKi>bsE}s)wQMhC?pPu0B@mA0| zB5GYuZb`H(l(w8+%9-I)>BvtMl^lj3W*Pw#1y&u_$KRS9wbAhU_N%qXvbVI*O9-OG zl70tYDgwiL#n8O1q_A-*2wZmLz(+C{v{gC^-D_IWShDHc37IAJ`Yh3%?dh8kruq%| z^|N$e50+aoCEf?EW!8Gyqs>j;7R2sw9Oye%6m5MG*uK*#ZGFwjYm9Ckk~o&R~*)!ULryFj^HJ_V!pLr!26iwq_qCm z8LLx>KFd0}4w(G;KQG!aI8A_VA z2&nC!>7P`al7FTGJBZ0eE)KV|+s*Jh6Yr!};v%c(*?iO~!xq@U2*_R2BKslS@v&Zq z)rWuIHeH0?&)BB~>?&9+Gub6ql8smK&1m|T`0wqrhaB#%EBc-RbFUk!F;<0Da1KmIPJeZi1Lx7QqT{1O})sEfLm zvA$Wx15vm;Aq2Nb!hH(`4BI_ z+wJp3F^ri1OO<9;`cDjf-PzRK>6t$!~IUY9<5zI$c#K?HG?_wd>|5`mq~ zm&J z=p!%dm~!eBR$X^O{@D{`{voklh3~eAtz7-mnOvN!AOab zs!Z=DQ@wZR;FYg^V`85%#KiET_rjHHvD9Rk{@RgkB?~DW4faOP^AxDeVcrEcYe?Lkm+%mz!^52!^*DkzdF3v8t`W$0tsKyom3elMU`VdzgDk^`HY9$A{ISL6Ow- zZWfh$cNKQ5Xs{;uqSsL4dK2#!kPy~%(z2$#%t-(8VXQmZ5bOZMLf zKY-RYB>uQhsF@^}rq_M*nGa#z&m1)%h48Vv`@v&-3Snmbr-xMLcYbA+~vc^{6luz{y^{AKr6%mi(7AoPsQ$2 zDA)1Ej4mJXlUWFT)$#W)TTg3w#FPAm&c(+rPFe<=ni;f5=Jk*+KSc8lF|1;2O;P0X z`Le9a8ZGI^0e@DU*tF{vi9OCfpZR=SR*=uru=ZM|R5==p+ellmo*I3D>S%k7En>|l{qh1n=;hz% z;Dtj|o5vKF9_c$|A>i_YqXfcosdx}hi=J~4 zCkAInGfbg*v3f&&z8noCvCXdOEr!G7`%y9_)!upIPk z>E1Ej`|LpS?y*1RKvYwv>!t(8jS}2J8gf>sgjW|{lCwcW#0@p{G94#|=;!^3p&uYa72DLoVp4n#w)bq` z8%_4Hewbmsks(^i9o{#B6TZtXEZVatF?pQ0dx6Zy-cYS$*<<|Ikz4{}QU^-1-QR0l zrIeSgk(~apP+;rO&%M!g^IxwD@(F&BN9EDmNfDTM5mKD`w~jHeXu(1+;PW9U(7@J+ zT7k0njEHFL1E>>sFZO~{v4FMj_Qj8Ip1=xSky&ptQ!dn$m(!PkOJ2o)oX0CBG(m(J zq@j5@sLSy{EbNHp96?>GRY4p%pC!Yv{*y8D1c!~?wg?6+3{ z_iW0E5VuwzM)jfytU2XG9(!mze+q>Tz$Kh&ptTBv$OI%(gSQp`l}J6gH_qG;E6v}$ z{7LyB=+%XR+k%ib{sa!xK*be#V_S2-krX~uX2{mf8!w*PEVeP_b+eM9aT^GN5S~81V+`F}DiNN2m5KyE-2nRBkB()C;DXOON5t|1Nf*s4UT zGQzT4LRa#!0QdIlYXW?z1lv6OOaBGZ?!d75fzTB+;1Oa!uM35*4YD98btVnkjRU{> zw2C%lx3+HlWl2Bbb^m;GHno==!+P>k1&$pwJ*fF>%3NOH@(O6@N@cZ4I%_5YC0)^)r$KC!(X(P)A zbx>Zy=qp!IO(_iO#BRqco--K)2c_Ho4Iaf+IXEs1T5kZnu;MFVr1e1Ir5g#meVFe2 zg*qxr|GKOc11gqYl;#zm+D6;s<{AJ`oaqb0;X^e_T7<?1RK*@4tR}t&Y)i}(K0o|E^5PFZ5#~$tm;jB8Eq%@`2Nr*Quc}9NdRgz z5vKvrOWmYFhFvmo;qUO74)j#0Z4DP1SG~=a+Sl;1=xw}auLW5pj{`9NJD$J73{PCy z;I|7P=L!MGNLTBq<56=h&2pv51%KiUgk&mzz0sBrs_(v6k#}N+-%os18RrM!Q;wuB z%PB@zWqov4Jl8GJwopXL0dCbA{CrJQzVzfyGVskrF-^^FyX+<}oSzULCVMHuc)o%& z&U79H9cLX39;?H%>~lk{xzC>PAT|>+9r5V(F%Q0Kl(5OTY?>@Dj{Wy+5U|&O{zPrd-Furkh1`Yi#WFj_sq5r`iXYH#9jS{=9Mk2tySof#yq4OU+ z>>Ka&&{$DqJ$galx`((k!2d0p+0V#>LT$T(*5{k*DsSbhshgiLz>&_DFmf;~yEyc? zv9IU!Jree%A94XLEDeC@W?nw6@wN~-hgEjz6nC$!SGkQetuq`DDvIb>E>M9xVa{Wl zjBfN(*)S~nr?fvvS|(|QyIX_@)09*)TYmr>(R1eVYW&7J^f;uSOgA|GI%h%iozHf8 zl&S?d{RCsY`zrF0In40{>kCE7$wbzTbg!cfUVC?=c#lndF4O;qA~gUjJi*;l#b3bI z^*tsrRxTeLN#PYMgME;nIe_x>SmBtUNDY`pcBDA}c^^wwTf!5((ZPt5{0@_r7?9%u z_^}e49@Pdy#DOq2tdJyF=!LpT7=QFBLFotOdmJAUxxV_T>2~_~4?Wo+*#)H7?waU_`9zC3bI2ep-YN=6l^}J4e#iwR% zgMXnWbOM}baVW;uOHHpogfP_Z%*ROkR>?~_A9g#2+#3OW2d4ymh-TD_c|)1-s_soP zfHUj9;^e~{P;=fmPtjU&`v<`c@~n7F~E2P8B~v-sJ0G&s2(+qnDAPpoW5qlExFUa zd~*MeYd`CtfB~D4JMe(Sr&u;5w;LE92+N~I;%dbv){>iB`PGT8;ZHkXo-+OmLL1S$ zI=Xp>9nHhxQ#L>srlKpIB(No((E4{nhd^FzBLyv(^q}^({9d9*4{7^ zRAz!YitY8IP5lHYhLfIeXKBnZfi0|lBh8O9i03gdp9^3BkdNYsQ|bQB1 zJwmR*;M&J6CyA!U%vT0chKMDx>(=edwQke$HCneh<}A2_mv19r<+` z@nK9SOH`{xSfgcKvk>5vU4$jzVt5?qosHUv6T?Bo+Ilx%Ki$9VBD9gE2hOHz=|kK( zzVaT(Lb&Zn!2O-QE~7Tfh3>&6@9K)Q5Ikf{ot3dd-G{yd7_ZXiww-rdMm$EWb0{QJ zr%Vr$Y2ktx z`A8WInU+X|vEPI&PUKN~m^njRbMley)!NOAsZ)2Fcc=hp;bmtmj6Psr=- z(O<~F~{-m0lb4Z5QT0sisnW|n?#cR>8a+)}OP#mNs zEYLogEWpF7E%S76@pwR6{}Ws?{fggm{3nqJ!&D3sngXCG3FeNS8mSRZE2W+F>^aLR zWx4QXA_W#>au2>W8}Xx`X{~q4?R|J)k=9##HsF3`{7eI^G_*9zea=ima zdEDSq!fllHf3SFJH%tDa9-$<%p0CZrohAdwEQoRc6!V_{lV{E+aj^R77ldlrMTd0j#@N*@rHgLjgsahP%>Anu-zC)R?ukJ-@Vw_Ada!Yp$eWd8}Y7j z*Qq6T{8L@r@|>73;?y4-5MR(f?~x|}PVV~f)V>+{aD7MjNf%G~>;X{WzBitjzB4nE zl$RH0hO`?3?E^q8VWOl%Tjb<3BdMke@pbM_1FRhKq2}Q8$QaU$x2Z*Bg11L=&p{gt zD_OkXv}nK}1KlAY@e~OdOave=>pygPjf=Jmp(F`ZHp6rXdov608xu>-Gi(&@O*i=QP_>bNa1w)#<3k zi}t3CG9zlq@#V_o3L>Dat1OfOau2tt?yHZkOktoY!NdOM2O#p8zIy-rVSMxJJAPGJ zDi+1$ea$SR-TnzMLb|!tW_=wasTy#n0V&$+DFHo(3%0Ku#>S#~b<>%$wqX9UtI3eJ z&2BhoT~he#YX>xjLGxcr_mor&go1}CIg^j9*=#vvpGTn5&f=~bvv5aERO~Zg!J$&7 z1(xuu5A{_?0`_#IZle)USAj-nw{6@Le>`DLsomJ77#`Gdy}SpU>60L@YM+TVi9x>n z(Jn%X68VOr*}QsBOv*s>RP*xG+;8|$sPwMqs22Mdnd!!_JYKENo(nAqPzOa=?>yIN zpKa`>B~E;&J;T-99@q9b7RAHo?V~5FzxN%#62bn3`dWcW5ci#o>eF>G#WYSg;PX_! z*fLtVXvtJ{)?yJX7)~GtElN-3TWjrdzrY-EAJ5@iaFK{>Xzyyt8jUXxlmy(|rYkdO z>6Jd;dh`|yhE!~3zDnrHpz13;y83K~@Y{-`N@}JTFX=A5S`t-dCBmc5 z8+J4nt9G#aZ=4sO4oAj&?TNw8V>@Hx;c?m<_g#z2Uxd_$FkP(#QI^^b0kQVPoukb1 zC${keARtGXavPP35A+0VBEh*ubBP)4tqYNMeQ`Xpu^2#CkT7uQd-uvoki-56pA66+ zDZAKu3@Bt$+dj&gV0&Y9Il=Lfg5L&8x7qF*9d%y<6}>i9* zBkO^l|4?yV4BF6N*l%guy7+CZ8+#38882r4>|6thV0BsWuQ14EcrNlI8-rgRQCz_nbI8e8dlI z0Hq~8W%~nN*M28Y0ry{V3SrnI3}fSUPG*j;#Ow6J{)B{vk}}~~t$^Dta!no>aBPUy zqvDr6MGHHkknFv>9oSM3b@2H&{fT9rt%35rv??wu;Q4{;kbaut?22`ip!yI-v32bp zg#oTSDy0W#I9=y2P%~?Y|6lE0i&Ilq8ef6gCAS@nfD*dYULd^OO70~IB=QasBSL`) z#;SlR1QJ#fLZZd`pbBVs2vJ1QF(SAO6)g7UqHz&ziD0#2EtJ|#Kq8E@;_~P&2&|Aj z=LRCE`ycF`B=gO`&BWhFSI~{-yH)DIIopo?s z!h46f@}6}NY0lmQ0=QKW1dNP2Cq`YCiWxoMK=tq?J-|FE;{4=(4{%ErQ>wrJ@Z%_^ z51~!{MHOXx#CS2VZi{_r^ORYIQgpf?`cr-b$#5sN)?VHZ+fB74mGu9o%Dem1;ZwV= zrxd|CB2_O%|8(wn!$b9$e*7rRKic4v*sO0LYB5z~*P|-=iN)33S2&Og&g`8OAARy6 ze)sKDFw+7@k+CiAdU+9l`R%_DCM#9Nx|pdUl64(JZJZVGqTlw7f{JRRbM+07v~^>k zr2L3(kO!M#JR-iQ-S`eBA1`bJN1{Nz$wcHtkO&u;Xl~ z85YDw>JGJ0E7k5XyfE!%?~o4$9lQpoPr5i+wUC{h{N%OQ?&hZbHW}}Hc&YL6G&!_l zES3tq*e>Ip2@K@$Yt|n9_3GC*$Ev<_Y}rC#2U%rKG{)6Th8QZIvY7GfCl40VeGN0% z&eFicJ;S7LZ$7Su)sWrnKc3hVd@ZiELywfNXk}#&JfQcR8qR&oEi0yB1D724Y98cY z$bC*aIIQiWl{vJRT7&%o{59F;Zi!oaTs`kWQ=g+sLE9H!Dt`WUP-gvp%5tZJj6~cs zTD!mOzW-=zrejP1)pN-@xaP=i9{AJm6XY01^;9b=!7-mH#rZWJDrNARY*Hql-!cAk zZ9_$2{?VZ(GNg#d}_B@2yW?CotZ#84;;{Jp&h8AxVYL?_L5U<_Yd}8i}%T^yW-VfX`pq? zXdVf?U>Mc0ZFwAr3#wALdXBcKrhY=-DsFmj_x+&|d2jQ>gypvoTsstRu zu2K}|eRW!eEqq$m=U$W9iywj^3&=~j?OG?nw$9vfA$U~%WX3WAtqr(UH?-Yom>F`9 z8fkn;ECk!4@TZO4&)#hftM{{V-Y zomVPMYSsr|5CxHI9dQzPD1ggCyHo`tM{r+^xKM0fSZ$GB zAF~XlW+4_C2M*?qvyg>%3*{Y)Ml1$9Uix_xw%CIh5g<~KG@H%#1#dQ;{W5Kf_5U99 z$5D_sZ8MH?Wk@{m6py^2JCHwfcl=mP3)L(O3i}Z*mCBR~bZZjmA-HG>yR$_oEl!vr znge1)X%ZnvmWytELxu~BS}4zZbf6iruOsW(~K~&iFc`#0x127cu zKtK!T287IIz=StQ(m=W>tb&iu$BB^b1h)8VH7EeGz!Q!was{hYSR%fxK0>Gz?vQ0H zw$05Er6U-Md^K;?@eHU^Sk2(jr*HvTH)kH2Eb zru+MY^|r{6fnl#|F)%;S_r+R%*lUJ<0WXtK<_IM_L^%kgcRd%7>#dMwiF{CRNt%zD pVj5p21N=hzh Date: Fri, 19 Apr 2024 22:59:19 +0300 Subject: [PATCH 044/126] Add login module and change dependencies --- Project.swift | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/Project.swift b/Project.swift index 46d9ef7..15c8a70 100644 --- a/Project.swift +++ b/Project.swift @@ -61,7 +61,10 @@ let mapModule = Target.featureTarget( let authModule = Target.featureTarget( name: "Auth", productName: "Auth", - dependencies: [.package(product: "GoogleSignIn", type: .runtime, condition: .none)] + dependencies: [ + .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none) + ] ) let onboardingModule = Target.featureTarget( @@ -115,11 +118,24 @@ let localicationCodegen = Target.target( // mergedBinaryType: .automatic, // mergeable: false //) +let loginModule = Target.featureTarget( + name: "Login", + productName: "Login", + dependencies: [ + .target(designModule), + .target(authModule), + .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "GoogleSignInSwift", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none) + ] +) + let project = Project( name: "SwiftBuddiesIOS", packages: [ .remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0")), + .remote(url: "https://github.com/firebase/firebase-ios-sdk.git", requirement: .exact("10.24.0")), .remote(url: "https://github.com/apple/swift-argument-parser.git", requirement: .exact("1.3.0")) ], targets: [ @@ -134,10 +150,10 @@ let project = Project( "CFBundleVersion": "1", "UIMainStoryboardFile": "", "UILaunchStoryboardName": "LaunchScreen", - "CLIENT_ID": "221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8.apps.googleusercontent.com", - "REVERSED_CLIENT_ID": "com.googleusercontent.apps.221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8", + "CLIENT_ID": "1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr.apps.googleusercontent.com", + "REVERSED_CLIENT_ID": "com.googleusercontent.apps.1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr", "CFBundleURLTypes": [ - ["CFBundleURLSchemes": ["com.googleusercontent.apps.221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8"]] + ["CFBundleURLSchemes": ["com.googleusercontent.apps.1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr"]] ] ] ), @@ -145,6 +161,7 @@ let project = Project( resources: ["SwiftBuddiesIOS/Resources/**"], dependencies: [ .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none), .target(authModule), .target(feedModule), .target(designModule), @@ -152,9 +169,10 @@ let project = Project( .target(mapModule), .target(aboutModule), .target(onboardingModule), - .target(localizationModule) + .target(loginModule), // .target(scriptsModule), // .target(localicationCodegen) + .target(localizationModule) ] ), authModule, @@ -164,6 +182,7 @@ let project = Project( mapModule, aboutModule, onboardingModule, + loginModule, // scriptsModule, localizationModule, localicationCodegen From 9777042f0167ad240858fa45fd5a3b4867684de7 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Fri, 19 Apr 2024 23:00:58 +0300 Subject: [PATCH 045/126] Login feature developed --- SwiftBuddiesIOS/Sources/ContentView.swift | 19 ++- .../Sources/SwiftBuddiesIOSApp.swift | 11 ++ SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements | 10 ++ .../Sources/AuthenticationManager.swift | 161 ++++++++++++++++++ .../AuthModule/Sources/Authenticator.swift | 23 --- .../Sources/Helpers/SignInAppleHelper.swift | 161 ++++++++++++++++++ .../Sources/Helpers/SignInGoogleHelper.swift | 43 +++++ .../Sources/Extensions/View+Extensions.swift | 7 + .../LoginButtonViewModifier.swift | 18 ++ .../Sources/AuthenticationView.swift | 119 +++++++++++++ .../Sources/AuthenticationViewModel.swift | 30 ++++ .../SignInEmail/SignInEmailView.swift | 132 ++++++++++++++ .../SignInEmail/SignInEmailViewModel.swift | 44 +++++ 13 files changed, 753 insertions(+), 25 deletions(-) create mode 100644 SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift delete mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift index 42ac51c..bc8575a 100644 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ b/SwiftBuddiesIOS/Sources/ContentView.swift @@ -6,10 +6,12 @@ import Onboarding import About import Contributors import Design +import Login import Localization public struct ContentView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false + @State private var showSignInView: Bool = false public init() { } @@ -20,7 +22,21 @@ public struct ContentView: View { @ViewBuilder private func SuitableRootView() -> some View { if isOnboardingScreenViewed { - TabFlow() + ZStack { + if !showSignInView { + TabFlow() + } + } + .onAppear { + let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() + self.showSignInView = authUser == nil + try? AuthenticationManager.shared.signOut() + } + .fullScreenCover(isPresented: $showSignInView, content: { + NavigationStack { + AuthenticationView(showSignInView: $showSignInView) + } + }) } else { OnboardingBuilder.build() } @@ -67,7 +83,6 @@ enum AppTab: Int, Identifiable { case map case about case contributors -// case login var id: Int { rawValue } } diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 7f1128a..9a877f7 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -1,10 +1,21 @@ import SwiftUI +import Firebase +import GoogleSignIn @main struct SwiftBuddiesIOSApp: App { + @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate + var body: some Scene { WindowGroup { ContentView() } } } + +class AppDelegate: NSObject, UIApplicationDelegate { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + FirebaseApp.configure() + return true + } +} diff --git a/SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements b/SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements new file mode 100644 index 0000000..a812db5 --- /dev/null +++ b/SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.developer.applesignin + + Default + + + diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift new file mode 100644 index 0000000..a75a618 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift @@ -0,0 +1,161 @@ + +import Foundation +import FirebaseAuth +import GoogleSignIn +import FirebaseCore + +public struct AuthDataResultModel { + let uid: String + let email: String? + let photoUrl: String? + let isAnonymous: Bool + + init(user: User) { + self.uid = user.uid + self.email = user.email + self.photoUrl = user.photoURL?.absoluteString + self.isAnonymous = user.isAnonymous + } +} + +public enum AuthProviderOption: String { + case email = "password" + case google = "google.com" + case apple = "apple.com" +} + +final public class AuthenticationManager { + + static public let shared = AuthenticationManager() + + private init() { + guard let clientID = FirebaseApp.app()?.options.clientID else { return } + let config = GIDConfiguration(clientID: clientID) + GIDSignIn.sharedInstance.configuration = config + } + + public func getAuthenticatedUser() throws -> AuthDataResultModel { + guard let user = Auth.auth().currentUser else { + throw URLError(.badServerResponse) + } + + return AuthDataResultModel(user: user) + } + + public func getProviders() throws -> [AuthProviderOption] { + guard let providerData = Auth.auth().currentUser?.providerData else { + throw URLError(.badServerResponse) + } + + var providers: [AuthProviderOption] = [] + for provider in providerData { + if let option = AuthProviderOption(rawValue: provider.providerID) { + providers.append(option) + } else { + assertionFailure("Provider option not found: \(provider.providerID)") + } + } + debugPrint(providers) + return providers + } + + public func signOut() throws { + try Auth.auth().signOut() + } + + public func delete() async throws { + guard let user = Auth.auth().currentUser else { + throw URLError(.badURL) + } + + try await user.delete() + } +} + +// MARK: SIGN IN EMAIL + +extension AuthenticationManager { + + @discardableResult + public func createUser(email: String, password: String) async throws -> AuthDataResultModel { + let authDataResult = try await Auth.auth().createUser(withEmail: email, password: password) + return AuthDataResultModel(user: authDataResult.user) + } + + @discardableResult + public func signInUser(email: String, password: String) async throws -> AuthDataResultModel { + let authDataResult = try await Auth.auth().signIn(withEmail: email, password: password) + return AuthDataResultModel(user: authDataResult.user) + } + + public func resetPassword(email: String) async throws { + try await Auth.auth().sendPasswordReset(withEmail: email) + } + + public func updatePassword(password: String) async throws { + guard let user = Auth.auth().currentUser else { + throw URLError(.badServerResponse) + } + + try await user.updatePassword(to: password) + } + +} + +// MARK: SIGN IN SSO + +extension AuthenticationManager { + + @discardableResult + public func signInWithGoogle(tokens: GoogleSignInResultModel) async throws -> AuthDataResultModel { + let credential = GoogleAuthProvider.credential(withIDToken: tokens.idToken, accessToken: tokens.accessToken) + return try await signIn(credential: credential) + } + + @discardableResult + public func signInWithApple(tokens: SignInWithAppleResult) async throws -> AuthDataResultModel { + let credential = OAuthProvider.credential(withProviderID: AuthProviderOption.apple.rawValue, idToken: tokens.token, rawNonce: tokens.nonce) + return try await signIn(credential: credential) + } + + public func signIn(credential: AuthCredential) async throws -> AuthDataResultModel { + let authDataResult = try await Auth.auth().signIn(with: credential) + return AuthDataResultModel(user: authDataResult.user) + } +} + +// MARK: SIGN IN ANONYMOUS + +extension AuthenticationManager { + + @discardableResult + public func signInAnonymous() async throws -> AuthDataResultModel { + let authDataResult = try await Auth.auth().signInAnonymously() + return AuthDataResultModel(user: authDataResult.user) + } + + public func linkEmail(email: String, password: String) async throws -> AuthDataResultModel { + let credential = EmailAuthProvider.credential(withEmail: email, password: password) + return try await linkCredential(credential: credential) + } + + public func linkGoogle(tokens: GoogleSignInResultModel) async throws -> AuthDataResultModel { + let credential = GoogleAuthProvider.credential(withIDToken: tokens.idToken, accessToken: tokens.accessToken) + return try await linkCredential(credential: credential) + } + + public func linkApple(tokens: SignInWithAppleResult) async throws -> AuthDataResultModel { + let credential = OAuthProvider.credential(withProviderID: AuthProviderOption.apple.rawValue, idToken: tokens.token, rawNonce: tokens.nonce) + return try await linkCredential(credential: credential) + } + + private func linkCredential(credential: AuthCredential) async throws -> AuthDataResultModel { + guard let user = Auth.auth().currentUser else { + throw URLError(.badURL) + } + + let authDataResult = try await user.link(with: credential) + return AuthDataResultModel(user: authDataResult.user) + } + +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift deleted file mode 100644 index e5eaf6d..0000000 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift +++ /dev/null @@ -1,23 +0,0 @@ - -import Foundation -import GoogleSignIn - -final public class Authenticator { - - private init() { - GIDSignIn.sharedInstance.configuration = .init(clientID: "221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8.apps.googleusercontent.com") - self.googleService = GIDSignIn.sharedInstance - } - public static let shared = Authenticator() - - private let googleService: GIDSignIn - - @MainActor - public func signIn() async throws { - guard let vc = UIApplication.shared.windows.first?.rootViewController else { return } - - let credentials = try await googleService.signIn(withPresenting: vc) - dump(credentials) - } - -} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift new file mode 100644 index 0000000..99e380f --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift @@ -0,0 +1,161 @@ +// +// SignInAppleHelper.swift +// Auth +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import SwiftUI +import AuthenticationServices +import CryptoKit + +public struct SignInWithAppleButtonViewRepresentable: UIViewRepresentable { + + let type: ASAuthorizationAppleIDButton.ButtonType + let style: ASAuthorizationAppleIDButton.Style + + public init(type: ASAuthorizationAppleIDButton.ButtonType, style: ASAuthorizationAppleIDButton.Style) { + self.type = type + self.style = style + } + + public func makeUIView(context: Context) -> ASAuthorizationAppleIDButton { + ASAuthorizationAppleIDButton(authorizationButtonType: type, authorizationButtonStyle: style) + } + + public func updateUIView(_ uiView: ASAuthorizationAppleIDButton, context: Context) { + + } + +} + +public struct SignInWithAppleResult { + let token: String + let nonce: String + let name: String? + let email: String? +} + +@MainActor +final public class SignInAppleHelper: NSObject { + + private var currentNonce: String? + private var completionHandler: ((Result) -> Void)? + + public init(currentNonce: String? = nil, completionHandler: ( (Result) -> Void)? = nil) { + self.currentNonce = currentNonce + self.completionHandler = completionHandler + } + + public func startSignInWithAppleFlow() async throws -> SignInWithAppleResult { + try await withCheckedThrowingContinuation { continuation in + self.startSignInWithAppleFlow { result in + switch result { + case .success(let signInAppleResult): + continuation.resume(returning: signInAppleResult) + return + case .failure(let error): + continuation.resume(throwing: error) + return + } + } + } + } + + public func startSignInWithAppleFlow(completion: @escaping (Result) -> Void) { + guard let vc = UIApplication.shared.windows.first?.rootViewController else { return } + + let nonce = randomNonceString() + currentNonce = nonce + completionHandler = completion + + let appleIDProvider = ASAuthorizationAppleIDProvider() + let request = appleIDProvider.createRequest() + request.requestedScopes = [.fullName, .email] + request.nonce = sha256(nonce) + + let authorizationController = ASAuthorizationController(authorizationRequests: [request]) + authorizationController.delegate = self + authorizationController.presentationContextProvider = vc + authorizationController.performRequests() + } + + // Adapted from https://auth0.com/docs/api-auth/tutorials/nonce#generate-a-cryptographically-random-nonce + private func randomNonceString(length: Int = 32) -> String { + precondition(length > 0) + let charset: [Character] = + Array("0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._") + var result = "" + var remainingLength = length + + while remainingLength > 0 { + let randoms: [UInt8] = (0 ..< 16).map { _ in + var random: UInt8 = 0 + let errorCode = SecRandomCopyBytes(kSecRandomDefault, 1, &random) + if errorCode != errSecSuccess { + fatalError( + "Unable to generate nonce. SecRandomCopyBytes failed with OSStatus \(errorCode)" + ) + } + return random + } + + randoms.forEach { random in + if remainingLength == 0 { + return + } + + if random < charset.count { + result.append(charset[Int(random)]) + remainingLength -= 1 + } + } + } + + return result + } + + @available(iOS 13, *) + private func sha256(_ input: String) -> String { + let inputData = Data(input.utf8) + let hashedData = SHA256.hash(data: inputData) + let hashString = hashedData.compactMap { + String(format: "%02x", $0) + }.joined() + + return hashString + } + +} + +extension SignInAppleHelper: ASAuthorizationControllerDelegate { + + public func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { + guard + let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential, + let appleIDToken = appleIDCredential.identityToken, + let idTokenString = String(data: appleIDToken, encoding: .utf8), + let nonce = currentNonce else { + completionHandler?(.failure(URLError(.badServerResponse))) + return + } + let name = appleIDCredential.fullName?.givenName + let email = appleIDCredential.email + + let tokens = SignInWithAppleResult(token: idTokenString, nonce: nonce, name: name, email: email) + completionHandler?(.success(tokens)) + } + + public func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { + print("Sign in with Apple errored: \(error)") + completionHandler?(.failure(URLError(.cannotFindHost))) + } + +} + +extension UIViewController: ASAuthorizationControllerPresentationContextProviding { + + public func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { + return self.view.window! + } +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift new file mode 100644 index 0000000..7ac5d8b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -0,0 +1,43 @@ +// +// SignInGoogleHelper.swift +// Auth +// +// Created by Berkay Tuncel on 18.04.2024. +// + +import Foundation +import GoogleSignIn +import GoogleSignInSwift + +public struct GoogleSignInResultModel { + let idToken: String + let accessToken: String + let name: String? + let email: String? +} + +final public class SignInGoogleHelper { + + public init() { } + + @MainActor + public func signIn() async throws -> GoogleSignInResultModel { + guard let vc = UIApplication.shared.windows.first?.rootViewController else { + throw URLError(.cannotFindHost) + } + + let gidSignInResult = try await GIDSignIn.sharedInstance.signIn(withPresenting: vc) + + guard let idToken = gidSignInResult.user.idToken?.tokenString else { + throw URLError(.badServerResponse) + } + + let accessToken = gidSignInResult.user.accessToken.tokenString + let name = gidSignInResult.user.profile?.name + let email = gidSignInResult.user.profile?.email + + let tokens = GoogleSignInResultModel(idToken: idToken, accessToken: accessToken, name: name, email: email) + return tokens + } + +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 194bb22..61a4abe 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -53,3 +53,10 @@ public extension View { .background { color } } } + +public extension View { + + func withLoginButtonFormatting() -> some View { + modifier(LoginButtonViewModifier()) + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift new file mode 100644 index 0000000..cc32d51 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift @@ -0,0 +1,18 @@ +// +// LoginButtonViewModifier.swift +// Design +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import SwiftUI + +struct LoginButtonViewModifier: ViewModifier { + func body(content: Content) -> some View { + content + .foregroundColor(.white) + .fontWeight(.bold) + .padding(.vertical) + .frame(maxWidth: .infinity) + } +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift new file mode 100644 index 0000000..6ed74c9 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -0,0 +1,119 @@ +// +// LoginView.swift +// Login +// +// Created by Berkay Tuncel on 17.04.2024. +// + +import SwiftUI +import GoogleSignIn +import GoogleSignInSwift +import Design +import Auth + +public struct AuthenticationView: View { + + @StateObject private var viewModel = AuthenticationViewModel() + @Binding private var showSignInView: Bool + + public init(showSignInView: Binding) { + self._showSignInView = showSignInView + } + + public var body: some View { + ScrollView { + VStack(spacing: 20) { + SignInEmailView(showSignInView: $showSignInView) + + dividerView + + anonymousSignInButton + googleSignInButton + appleSignInButton + + Spacer() + } + .padding() + .frame(maxWidth: 375) + } + } +} + +extension AuthenticationView { + private var dividerView: some View { + ZStack { + Divider() + + Text("or") + .font(.subheadline) + .fontWeight(.semibold) + .padding(.horizontal) + .background(.white) + } + } + + private var anonymousSignInButton: some View { + Button { + Task { + do { + try await viewModel.signInAnonymous() + showSignInView = false + } catch { + debugPrint(error) + } + } + } label: { + Text("Sign In Anonymously") + .font(.headline) + .foregroundColor(.white) + .frame(height: 55) + .frame(maxWidth: .infinity) + .background(DesignAsset.loginStrokeColor.swiftUIColor) + .cornerRadius(10) + } + } + + private var googleSignInButton: some View { + Button { + Task { + do { + try await viewModel.signInGoogle() + showSignInView = false + } catch { + debugPrint(error) + } + } + } label: { + Text("Sign In With Google") + .font(.headline) + .foregroundColor(.white) + .frame(height: 55) + .frame(maxWidth: .infinity) + .background(DesignAsset.loginStrokeColor.swiftUIColor) + .cornerRadius(10) + } + } + + private var appleSignInButton: some View { + Button(action: { + Task { + do { + try await viewModel.signInApple() + showSignInView = false + } catch { + debugPrint(error) + } + } + }, label: { + SignInWithAppleButtonViewRepresentable(type: .default, style: .black) + .allowsHitTesting(false) + }) + .frame(height: 55) + } +} + +#Preview { + NavigationStack { + AuthenticationView(showSignInView: .constant(true)) + } +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift new file mode 100644 index 0000000..6e102ef --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift @@ -0,0 +1,30 @@ +// +// AuthenticationViewModel.swift +// Login +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import Foundation +import Auth + +@MainActor +final class AuthenticationViewModel: ObservableObject { + + func signInGoogle() async throws { + let helper = SignInGoogleHelper() + let tokens = try await helper.signIn() + let _ = try await AuthenticationManager.shared.signInWithGoogle(tokens: tokens) + } + + func signInApple() async throws { + let helper = SignInAppleHelper() + let tokens = try await helper.startSignInWithAppleFlow() + let _ = try await AuthenticationManager.shared.signInWithApple(tokens: tokens) + } + + func signInAnonymous() async throws { + let _ = try await AuthenticationManager.shared.signInAnonymous() + } + +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift new file mode 100644 index 0000000..03f4714 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift @@ -0,0 +1,132 @@ +// +// SignInEmailView.swift +// Login +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import SwiftUI +import Design + +struct SignInEmailView: View { + + @StateObject private var viewModel = SignInEmailViewModel() + @Binding private var showSignInView: Bool + + @FocusState private var fieldInFocus: LoginField? + + enum LoginField: Hashable { + case email + case password + } + + init(showSignInView: Binding) { + self._showSignInView = showSignInView + } + + var body: some View { + VStack(spacing: 10) { + DesignAsset.swiftBuddiesImage.swiftUIImage + .resizable() + .aspectRatio(1, contentMode: .fit) + .frame(height: 250) + + Text("Log in to your account") + .font(.title) + .fontWeight(.bold) + .foregroundColor(Color.primary.opacity(0.7)) + + TextField("Email", text: $viewModel.email) + .fontWeight(.bold) + .focused($fieldInFocus, equals: .email) + .textInputAutocapitalization(.never) + .submitLabel(viewModel.password.isEmpty ? .continue : .done) + .onSubmit { + if viewModel.password.isEmpty { + fieldInFocus = .password + } + } + .frame(height: 55) + .padding(.horizontal) + .background( + RoundedRectangle(cornerRadius: 4) + .stroke(viewModel.email.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor, lineWidth: 2) + ) + + HStack(spacing: 15) { + if viewModel.visible { + TextField("Password", text: $viewModel.password) + } else { + SecureField("Password", text: $viewModel.password) + } + Button(action: { viewModel.visible.toggle() }) { + Image(systemName: viewModel.visible ? "eye.slash.fill" : "eye.fill") + .foregroundColor(Color.primary.opacity(0.7)) + } + } + .fontWeight(.bold) + .focused($fieldInFocus, equals: .password) + .textInputAutocapitalization(.never) + .frame(height: 55) + .padding(.horizontal) + .background( + RoundedRectangle(cornerRadius: 4) + .stroke(viewModel.password.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor, lineWidth: 2) + ) + + HStack { + Spacer() + Button(action: { + Task { + try? await viewModel.forgotPassword() + } + }) { + Text("Forgot password") + .fontWeight(.bold) + .foregroundColor(DesignAsset.loginStrokeColor.swiftUIColor) + } + } + + Group { + Button(action: { signIn() }) { + Text("Sign In") + .withLoginButtonFormatting() + } + } + .background(DesignAsset.loginStrokeColor.swiftUIColor) + .cornerRadius(10) + } + } +} + +extension SignInEmailView { + private func signIn() { + if viewModel.email.isEmpty { + fieldInFocus = .email + } else if viewModel.password.isEmpty { + fieldInFocus = .password + } else { + Task { + do { + try await viewModel.signUp() + showSignInView = false + return + } catch { + debugPrint(error) + } + + do { + try await viewModel.signIn() + showSignInView = false + return + } catch { + debugPrint(error) + } + } + } + } +} + +#Preview { + SignInEmailView(showSignInView: .constant(true)) +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift new file mode 100644 index 0000000..2014d88 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift @@ -0,0 +1,44 @@ +// +// SignInEmailViewModel.swift +// Login +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import Foundation +import Auth + +@MainActor +final class SignInEmailViewModel: ObservableObject { + + @Published var email = "" + @Published var password = "" + @Published var visible: Bool = false + + func signUp() async throws { + guard !email.isEmpty, !password.isEmpty else { + print("No email or password found.") + return + } + + let _ = try await AuthenticationManager.shared.createUser(email: email, password: password) + } + + func signIn() async throws { + guard !email.isEmpty, !password.isEmpty else { + print("No email or password found.") + return + } + + try await AuthenticationManager.shared.signInUser(email: email, password: password) + } + + func forgotPassword() async throws { + guard !email.isEmpty else { + print("No email or password found.") + return + } + + try await AuthenticationManager.shared.resetPassword(email: email) + } +} From c289564442193cd62ef3df96c0eaae312238dc03 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Mon, 22 Apr 2024 19:47:37 +0300 Subject: [PATCH 046/126] Refactor code --- .../Sources/Extensions/View+Extensions.swift | 4 + .../LoginButtonViewModifier.swift | 22 ++- .../Sources/AuthenticationView.swift | 29 ++-- .../SignInEmail/SignInEmailView.swift | 138 ++++++++++-------- 4 files changed, 112 insertions(+), 81 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 61a4abe..597db91 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -59,4 +59,8 @@ public extension View { func withLoginButtonFormatting() -> some View { modifier(LoginButtonViewModifier()) } + + func withLoginTextFieldFormatting(backgroundColor: Color) -> some View { + modifier(LoginTextFieldModifier(backgroundColor: backgroundColor)) + } } diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift index cc32d51..072fdf5 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift @@ -10,9 +10,27 @@ import SwiftUI struct LoginButtonViewModifier: ViewModifier { func body(content: Content) -> some View { content + .font(.headline) .foregroundColor(.white) - .fontWeight(.bold) - .padding(.vertical) + .frame(height: 55) .frame(maxWidth: .infinity) + .background(DesignAsset.loginStrokeColor.swiftUIColor) + } +} + +struct LoginTextFieldModifier: ViewModifier { + + let backgroundColor: Color + + func body(content: Content) -> some View { + content + .textInputAutocapitalization(.never) + .fontWeight(.bold) + .frame(height: 55) + .padding(.horizontal) + .background( + RoundedRectangle(cornerRadius: 4) + .stroke(backgroundColor, lineWidth: 2) + ) } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index 6ed74c9..4e8a8b7 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -27,9 +27,12 @@ public struct AuthenticationView: View { dividerView - anonymousSignInButton - googleSignInButton - appleSignInButton + Group { + anonymousSignInButton + googleSignInButton + appleSignInButton + } + .clipShape(Capsule()) Spacer() } @@ -64,12 +67,7 @@ extension AuthenticationView { } } label: { Text("Sign In Anonymously") - .font(.headline) - .foregroundColor(.white) - .frame(height: 55) - .frame(maxWidth: .infinity) - .background(DesignAsset.loginStrokeColor.swiftUIColor) - .cornerRadius(10) + .withLoginButtonFormatting() } } @@ -85,12 +83,7 @@ extension AuthenticationView { } } label: { Text("Sign In With Google") - .font(.headline) - .foregroundColor(.white) - .frame(height: 55) - .frame(maxWidth: .infinity) - .background(DesignAsset.loginStrokeColor.swiftUIColor) - .cornerRadius(10) + .withLoginButtonFormatting() } } @@ -107,13 +100,11 @@ extension AuthenticationView { }, label: { SignInWithAppleButtonViewRepresentable(type: .default, style: .black) .allowsHitTesting(false) + .withLoginButtonFormatting() }) - .frame(height: 55) } } #Preview { - NavigationStack { - AuthenticationView(showSignInView: .constant(true)) - } + AuthenticationView(showSignInView: .constant(true)) } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift index 03f4714..80a7eb1 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift @@ -26,79 +26,97 @@ struct SignInEmailView: View { var body: some View { VStack(spacing: 10) { - DesignAsset.swiftBuddiesImage.swiftUIImage - .resizable() - .aspectRatio(1, contentMode: .fit) - .frame(height: 250) + swiftBuddiesImage - Text("Log in to your account") - .font(.title) - .fontWeight(.bold) - .foregroundColor(Color.primary.opacity(0.7)) + signInText - TextField("Email", text: $viewModel.email) - .fontWeight(.bold) - .focused($fieldInFocus, equals: .email) - .textInputAutocapitalization(.never) - .submitLabel(viewModel.password.isEmpty ? .continue : .done) - .onSubmit { - if viewModel.password.isEmpty { - fieldInFocus = .password - } - } - .frame(height: 55) - .padding(.horizontal) - .background( - RoundedRectangle(cornerRadius: 4) - .stroke(viewModel.email.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor, lineWidth: 2) - ) + emailTextField + passwordTextField - HStack(spacing: 15) { - if viewModel.visible { - TextField("Password", text: $viewModel.password) - } else { - SecureField("Password", text: $viewModel.password) - } - Button(action: { viewModel.visible.toggle() }) { - Image(systemName: viewModel.visible ? "eye.slash.fill" : "eye.fill") - .foregroundColor(Color.primary.opacity(0.7)) + forgotPasswordButton + + signInButton + } + } +} + +// MARK: Views + +extension SignInEmailView { + private var swiftBuddiesImage: some View { + DesignAsset.swiftBuddiesImage.swiftUIImage + .resizable() + .aspectRatio(1, contentMode: .fit) + .frame(height: 250) + } + + private var signInText: some View { + Text("Sign in to your account") + .font(.title) + .fontWeight(.bold) + .foregroundColor(Color.primary.opacity(0.7)) + } + + private var emailTextField: some View { + TextField("Email", text: $viewModel.email) + .submitLabel(viewModel.password.isEmpty ? .continue : .done) + .onSubmit { + if viewModel.password.isEmpty { + fieldInFocus = .password } } - .fontWeight(.bold) - .focused($fieldInFocus, equals: .password) - .textInputAutocapitalization(.never) - .frame(height: 55) - .padding(.horizontal) - .background( - RoundedRectangle(cornerRadius: 4) - .stroke(viewModel.password.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor, lineWidth: 2) + .focused($fieldInFocus, equals: .email) + .withLoginTextFieldFormatting( + backgroundColor: viewModel.email.isEmpty ? + Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor ) - - HStack { - Spacer() - Button(action: { - Task { - try? await viewModel.forgotPassword() - } - }) { - Text("Forgot password") - .fontWeight(.bold) - .foregroundColor(DesignAsset.loginStrokeColor.swiftUIColor) - } + } + + private var passwordTextField: some View { + HStack(spacing: 15) { + if viewModel.visible { + TextField("Password", text: $viewModel.password) + } else { + SecureField("Password", text: $viewModel.password) } - - Group { - Button(action: { signIn() }) { - Text("Sign In") - .withLoginButtonFormatting() + Button(action: { viewModel.visible.toggle() }) { + Image(systemName: viewModel.visible ? "eye.slash.fill" : "eye.fill") + .foregroundColor(Color.primary.opacity(0.7)) + } + } + .focused($fieldInFocus, equals: .password) + .withLoginTextFieldFormatting( + backgroundColor: viewModel.email.isEmpty ? + Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor + ) + } + + private var forgotPasswordButton: some View { + HStack { + Spacer() + Button(action: { + Task { + try? await viewModel.forgotPassword() } + }) { + Text("Forgot password") + .fontWeight(.bold) + .foregroundColor(DesignAsset.loginStrokeColor.swiftUIColor) } - .background(DesignAsset.loginStrokeColor.swiftUIColor) - .cornerRadius(10) } } + + private var signInButton: some View { + Button(action: { signIn() }) { + Text("Sign In") + .withLoginButtonFormatting() + } + .clipShape(Capsule()) + } } +// MARK: Functions + extension SignInEmailView { private func signIn() { if viewModel.email.isEmpty { From 377c1b083c8b7fac46075729ffee48af337bbcad Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Mon, 22 Apr 2024 19:59:27 +0300 Subject: [PATCH 047/126] Remove unused dependencies --- Project.swift | 1 - .../Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift | 1 - .../Targets/LoginModule/Sources/AuthenticationView.swift | 2 -- 3 files changed, 4 deletions(-) diff --git a/Project.swift b/Project.swift index 15c8a70..a1c2224 100644 --- a/Project.swift +++ b/Project.swift @@ -125,7 +125,6 @@ let loginModule = Target.featureTarget( .target(designModule), .target(authModule), .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "GoogleSignInSwift", type: .runtime, condition: .none), .package(product: "FirebaseAuth", type: .runtime, condition: .none) ] ) diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift index 7ac5d8b..152c148 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -7,7 +7,6 @@ import Foundation import GoogleSignIn -import GoogleSignInSwift public struct GoogleSignInResultModel { let idToken: String diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index 4e8a8b7..f18103f 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -6,8 +6,6 @@ // import SwiftUI -import GoogleSignIn -import GoogleSignInSwift import Design import Auth From 7ec502bc02ae9eceaf9bb4bd663a396673ff370f Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Mon, 22 Apr 2024 20:08:24 +0300 Subject: [PATCH 048/126] Change TabView subviews Change: - About target to Profile target Add: - SettingsView and AboutView --- Project.swift | 75 ++++++++------- SwiftBuddiesIOS/Sources/ContentView.swift | 93 ------------------- SwiftBuddiesIOS/Sources/RootView.swift | 39 ++++++++ .../Sources/SwiftBuddiesIOSApp.swift | 2 +- SwiftBuddiesIOS/Sources/TabFlowView.swift | 63 +++++++++++++ .../Resources/Localizable.xcstrings | 44 ++------- .../Sources/About}/AboutView.swift | 8 +- .../ProfileModule/Sources/ProfileView.swift | 38 ++++++++ .../Sources/Settings/SettingsView.swift | 27 ++++++ .../Sources/Settings/SettingsViewModel.swift | 10 ++ 10 files changed, 226 insertions(+), 173 deletions(-) delete mode 100644 SwiftBuddiesIOS/Sources/ContentView.swift create mode 100644 SwiftBuddiesIOS/Sources/RootView.swift create mode 100644 SwiftBuddiesIOS/Sources/TabFlowView.swift rename SwiftBuddiesIOS/Targets/{AboutModule/Sources => ProfileModule/Sources/About}/AboutView.swift (95%) create mode 100644 SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift create mode 100644 SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift create mode 100644 SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift diff --git a/Project.swift b/Project.swift index a1c2224..7e1d25a 100644 --- a/Project.swift +++ b/Project.swift @@ -34,30 +34,6 @@ let designModule = Target.featureTarget( hasResources: true ) -let feedModule = Target.featureTarget( - name: "Feed", - productName: "Feed", - dependencies: [.target(designModule)] -) - -let aboutModule = Target.featureTarget( - name: "About", - productName: "About", - dependencies: [.target(designModule)] -) - -let contributorsModule = Target.featureTarget( - name: "Contributors", - productName: "Contributors", - dependencies: [.target(designModule)] -) - -let mapModule = Target.featureTarget( - name: "Map", - productName: "Map", - dependencies: [.target(designModule)] -) - let authModule = Target.featureTarget( name: "Auth", productName: "Auth", @@ -129,9 +105,38 @@ let loginModule = Target.featureTarget( ] ) +let feedModule = Target.featureTarget( + name: "Feed", + productName: "Feed", + dependencies: [.target(designModule)] +) + +let mapModule = Target.featureTarget( + name: "Map", + productName: "Map", + dependencies: [.target(designModule)] +) + +let profileModule = Target.featureTarget( + name: "Profile", + productName: "Profile", + dependencies: [ + .target(designModule), + .target(authModule), + .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none) + ] +) + +let contributorsModule = Target.featureTarget( + name: "Contributors", + productName: "Contributors", + dependencies: [.target(designModule)] +) + let project = Project( - name: "SwiftBuddiesIOS", + name: "Buddies", packages: [ .remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0")), .remote(url: "https://github.com/firebase/firebase-ios-sdk.git", requirement: .exact("10.24.0")), @@ -161,27 +166,27 @@ let project = Project( dependencies: [ .package(product: "GoogleSignIn", type: .runtime, condition: .none), .package(product: "FirebaseAuth", type: .runtime, condition: .none), - .target(authModule), - .target(feedModule), .target(designModule), - .target(contributorsModule), - .target(mapModule), - .target(aboutModule), + .target(authModule), .target(onboardingModule), .target(loginModule), + .target(feedModule), + .target(mapModule), + .target(profileModule), + .target(contributorsModule), // .target(scriptsModule), // .target(localicationCodegen) .target(localizationModule) ] ), - authModule, - feedModule, designModule, - contributorsModule, - mapModule, - aboutModule, + authModule, onboardingModule, loginModule, + feedModule, + mapModule, + profileModule, + contributorsModule, // scriptsModule, localizationModule, localicationCodegen diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift deleted file mode 100644 index bc8575a..0000000 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ /dev/null @@ -1,93 +0,0 @@ -import SwiftUI -import Auth -import Map -import Feed -import Onboarding -import About -import Contributors -import Design -import Login -import Localization - -public struct ContentView: View { - @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false - @State private var showSignInView: Bool = false - - public init() { } - - public var body: some View { - SuitableRootView() - } - - @ViewBuilder - private func SuitableRootView() -> some View { - if isOnboardingScreenViewed { - ZStack { - if !showSignInView { - TabFlow() - } - } - .onAppear { - let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() - self.showSignInView = authUser == nil - try? AuthenticationManager.shared.signOut() - } - .fullScreenCover(isPresented: $showSignInView, content: { - NavigationStack { - AuthenticationView(showSignInView: $showSignInView) - } - }) - } else { - OnboardingBuilder.build() - } - } -} - -struct TabFlow: View { - @State var selectedTab: AppTab = .feed - - public init() {} - var body: some View { - TabView(selection: $selectedTab) { - FeedView() - .tabItem { - Image(systemName: "list.bullet") - L.feed - } - .tag(AppTab.feed) - MapView() - .tabItem { - Image(systemName: "map") - L.map - } - .tag(AppTab.map) - AboutView() - .tabItem { - Image(systemName: "info.circle") - L.about - } - .tag(AppTab.about) - ContributorsView() - .tabItem { - Image(systemName: "person.3") - L.contributors - } - .tag(AppTab.contributors) - } - } -} - - -enum AppTab: Int, Identifiable { - case feed = 0 - case map - case about - case contributors - - var id: Int { rawValue } -} - - -#Preview { - ContentView() -} diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift new file mode 100644 index 0000000..f3aafa7 --- /dev/null +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -0,0 +1,39 @@ +import SwiftUI +import Auth +import Login +import Onboarding + +struct RootView: View { + @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false + @State private var showSignInView: Bool = false + + init() { } + + var body: some View { + SuitableRootView() + } + + @ViewBuilder + private func SuitableRootView() -> some View { + if isOnboardingScreenViewed { + ZStack { + if !showSignInView { + TabFlowView(showSignInView: $showSignInView) + } + } + .onAppear { + let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() + self.showSignInView = authUser == nil + } + .fullScreenCover(isPresented: $showSignInView, content: { + AuthenticationView(showSignInView: $showSignInView) + }) + } else { + OnboardingBuilder.build() + } + } +} + +#Preview { + RootView() +} diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 9a877f7..7cebf3b 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -8,7 +8,7 @@ struct SwiftBuddiesIOSApp: App { var body: some Scene { WindowGroup { - ContentView() + RootView() } } } diff --git a/SwiftBuddiesIOS/Sources/TabFlowView.swift b/SwiftBuddiesIOS/Sources/TabFlowView.swift new file mode 100644 index 0000000..3d878bf --- /dev/null +++ b/SwiftBuddiesIOS/Sources/TabFlowView.swift @@ -0,0 +1,63 @@ +import SwiftUI +import Feed +import Map +import Profile +import Contributors + +enum AppTab: Int, Identifiable { + case feed = 0 + case map + case profile + case contributors + + var id: Int { rawValue } +} + +struct TabFlowView: View { + + @State var selectedTab: AppTab = .feed + @Binding private var showSignInView: Bool + + init(showSignInView: Binding) { + self._showSignInView = showSignInView + } + + var body: some View { + TabView(selection: $selectedTab) { + + FeedView() + .tabItem { + Image(systemName: "list.bullet") + Text("Feed") + } + .tag(AppTab.feed) + + MapView() + .tabItem { + Image(systemName: "map") + Text("Map") + } + .tag(AppTab.map) + + NavigationStack { + ProfileView(showSignInView: $showSignInView) + } + .tabItem { + Image(systemName: "person.fill") + Text("Profile") + } + .tag(AppTab.profile) + + ContributorsView() + .tabItem { + Image(systemName: "person.3") + Text("Contributors") + } + .tag(AppTab.contributors) + } + } +} + +#Preview { + TabFlowView(showSignInView: .constant(false)) +} diff --git a/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings b/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings index 91738c0..dfa8f67 100644 --- a/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings +++ b/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings @@ -1,49 +1,14 @@ { "sourceLanguage" : "en", "strings" : { - "About" : { - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "About" - } - } - } - }, "Contributors" : { - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Contributors" - } - } - } + }, "Feed" : { - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Feed" - } - } - } + }, "Map" : { - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Map" - } - } - } + }, "onboarding.ButtonTitle" : { "extractionState" : "manual", @@ -110,6 +75,9 @@ } } } + }, + "Profile" : { + } }, "version" : "1.0" diff --git a/SwiftBuddiesIOS/Targets/AboutModule/Sources/AboutView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/About/AboutView.swift similarity index 95% rename from SwiftBuddiesIOS/Targets/AboutModule/Sources/AboutView.swift rename to SwiftBuddiesIOS/Targets/ProfileModule/Sources/About/AboutView.swift index 3e20e31..15878cc 100644 --- a/SwiftBuddiesIOS/Targets/AboutModule/Sources/AboutView.swift +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/About/AboutView.swift @@ -1,17 +1,13 @@ import SwiftUI import Design -public struct AboutView: View { - - public init() { } - - public var body: some View { +struct AboutView: View { + var body: some View { HeaderParallaxView { VStack { Image("SwiftBuddiesHeader", bundle: DesignResources.bundle) .resizable() .aspectRatio(contentMode: .fill) - } } content: { VStack(alignment: .leading, spacing: 16) { diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift new file mode 100644 index 0000000..ef217e4 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift @@ -0,0 +1,38 @@ +import SwiftUI +import Design + +public struct ProfileView: View { + + @Binding var showSignInView: Bool + + public init(showSignInView: Binding) { + self._showSignInView = showSignInView + } + + enum ProfileViews: String, CaseIterable { + case about = "About" + case settings = "Settings" + } + + public var body: some View { + List { + ForEach(ProfileViews.allCases, id: \.self) { selectedView in + NavigationLink(selectedView.rawValue) { + switch selectedView { + case .about: + AboutView() + case .settings: + SettingsView(showSignInView: $showSignInView) + } + } + } + } + .navigationTitle("Profile") + } +} + +#Preview { + NavigationStack { + ProfileView(showSignInView: .constant(false)) + } +} diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift new file mode 100644 index 0000000..2009e05 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift @@ -0,0 +1,27 @@ +import SwiftUI + +struct SettingsView: View { + + @StateObject private var viewModel = SettingsViewModel() + @Binding var showSignInView: Bool + + var body: some View { + List { + Button("Log out") { + Task { + do { + try viewModel.signOut() + showSignInView = true + } catch { + debugPrint(error) + } + } + } + } + .navigationBarTitle("Settings") + } +} + +#Preview { + SettingsView(showSignInView: .constant(false)) +} diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift new file mode 100644 index 0000000..2fa71e0 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift @@ -0,0 +1,10 @@ +import Foundation +import Auth + +@MainActor +final class SettingsViewModel: ObservableObject { + + func signOut() throws { + try AuthenticationManager.shared.signOut() + } +} From c6ab9cd36980428d989b2f724eb67358fcbd1193 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Mon, 22 Apr 2024 20:37:52 +0300 Subject: [PATCH 049/126] Fix property and property name --- .../DesignModule/Sources/Extensions/View+Extensions.swift | 4 ++-- .../ViewModifiers/LoginButtonViewModifier.swift | 4 ++-- .../Sources/Subviews/SignInEmail/SignInEmailView.swift | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 597db91..839ec6e 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -60,7 +60,7 @@ public extension View { modifier(LoginButtonViewModifier()) } - func withLoginTextFieldFormatting(backgroundColor: Color) -> some View { - modifier(LoginTextFieldModifier(backgroundColor: backgroundColor)) + func withLoginTextFieldFormatting(borderColor: Color) -> some View { + modifier(LoginTextFieldModifier(borderColor: borderColor)) } } diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift index 072fdf5..b38bd2b 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift @@ -20,7 +20,7 @@ struct LoginButtonViewModifier: ViewModifier { struct LoginTextFieldModifier: ViewModifier { - let backgroundColor: Color + let borderColor: Color func body(content: Content) -> some View { content @@ -30,7 +30,7 @@ struct LoginTextFieldModifier: ViewModifier { .padding(.horizontal) .background( RoundedRectangle(cornerRadius: 4) - .stroke(backgroundColor, lineWidth: 2) + .stroke(borderColor, lineWidth: 2) ) } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift index 80a7eb1..ac72a88 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift @@ -67,7 +67,7 @@ extension SignInEmailView { } .focused($fieldInFocus, equals: .email) .withLoginTextFieldFormatting( - backgroundColor: viewModel.email.isEmpty ? + borderColor: viewModel.email.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor ) } @@ -86,7 +86,7 @@ extension SignInEmailView { } .focused($fieldInFocus, equals: .password) .withLoginTextFieldFormatting( - backgroundColor: viewModel.email.isEmpty ? + borderColor: viewModel.password.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor ) } From 538cd7aaf0ab884c6e580fb6e199da569a79c3d8 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Thu, 25 Apr 2024 16:05:01 +0300 Subject: [PATCH 050/126] Remove unnecessary comment lines from the project --- .../AuthModule/Sources/Helpers/SignInAppleHelper.swift | 7 ------- .../AuthModule/Sources/Helpers/SignInGoogleHelper.swift | 7 ------- .../Targets/LoginModule/Sources/AuthenticationView.swift | 7 ------- .../LoginModule/Sources/AuthenticationViewModel.swift | 7 ------- .../Sources/Subviews/SignInEmail/SignInEmailView.swift | 7 ------- .../Subviews/SignInEmail/SignInEmailViewModel.swift | 7 ------- 6 files changed, 42 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift index 99e380f..23d76f5 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift @@ -1,10 +1,3 @@ -// -// SignInAppleHelper.swift -// Auth -// -// Created by Berkay Tuncel on 19.04.2024. -// - import SwiftUI import AuthenticationServices import CryptoKit diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift index 152c148..7322780 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -1,10 +1,3 @@ -// -// SignInGoogleHelper.swift -// Auth -// -// Created by Berkay Tuncel on 18.04.2024. -// - import Foundation import GoogleSignIn diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index f18103f..e794a80 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -1,10 +1,3 @@ -// -// LoginView.swift -// Login -// -// Created by Berkay Tuncel on 17.04.2024. -// - import SwiftUI import Design import Auth diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift index 6e102ef..978f858 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift @@ -1,10 +1,3 @@ -// -// AuthenticationViewModel.swift -// Login -// -// Created by Berkay Tuncel on 19.04.2024. -// - import Foundation import Auth diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift index ac72a88..0d638b2 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift @@ -1,10 +1,3 @@ -// -// SignInEmailView.swift -// Login -// -// Created by Berkay Tuncel on 19.04.2024. -// - import SwiftUI import Design diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift index 2014d88..3864ae7 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift @@ -1,10 +1,3 @@ -// -// SignInEmailViewModel.swift -// Login -// -// Created by Berkay Tuncel on 19.04.2024. -// - import Foundation import Auth From 01d2a07c5245477ba58a2f125da117d716155d96 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Thu, 25 Apr 2024 16:19:34 +0300 Subject: [PATCH 051/126] Move NavigationStack into ProfileView and Add NotificationCenter for logout functionality --- SwiftBuddiesIOS/Sources/RootView.swift | 6 ++++ SwiftBuddiesIOS/Sources/TabFlowView.swift | 14 ++++----- .../Extensions/Notification+Extensions.swift | 5 ++++ .../ProfileModule/Sources/ProfileView.swift | 30 ++++++++----------- .../Sources/Settings/SettingsView.swift | 8 ++--- 5 files changed, 34 insertions(+), 29 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift index f3aafa7..56969cb 100644 --- a/SwiftBuddiesIOS/Sources/RootView.swift +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -7,6 +7,9 @@ struct RootView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false @State private var showSignInView: Bool = false + let pub = NotificationCenter.default + .publisher(for: .signOutNotification) + init() { } var body: some View { @@ -25,6 +28,9 @@ struct RootView: View { let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() self.showSignInView = authUser == nil } + .onReceive(pub) { _ in + showSignInView = true + } .fullScreenCover(isPresented: $showSignInView, content: { AuthenticationView(showSignInView: $showSignInView) }) diff --git a/SwiftBuddiesIOS/Sources/TabFlowView.swift b/SwiftBuddiesIOS/Sources/TabFlowView.swift index 3d878bf..09a56c5 100644 --- a/SwiftBuddiesIOS/Sources/TabFlowView.swift +++ b/SwiftBuddiesIOS/Sources/TabFlowView.swift @@ -39,14 +39,12 @@ struct TabFlowView: View { } .tag(AppTab.map) - NavigationStack { - ProfileView(showSignInView: $showSignInView) - } - .tabItem { - Image(systemName: "person.fill") - Text("Profile") - } - .tag(AppTab.profile) + ProfileView() + .tabItem { + Image(systemName: "person.fill") + Text("Profile") + } + .tag(AppTab.profile) ContributorsView() .tabItem { diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift new file mode 100644 index 0000000..a58b8ac --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift @@ -0,0 +1,5 @@ +import Foundation + +public extension Notification.Name { + static let signOutNotification = Notification.Name("SignOutNotification") +} diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift index ef217e4..62d72fc 100644 --- a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift @@ -3,11 +3,7 @@ import Design public struct ProfileView: View { - @Binding var showSignInView: Bool - - public init(showSignInView: Binding) { - self._showSignInView = showSignInView - } + public init() { } enum ProfileViews: String, CaseIterable { case about = "About" @@ -15,24 +11,24 @@ public struct ProfileView: View { } public var body: some View { - List { - ForEach(ProfileViews.allCases, id: \.self) { selectedView in - NavigationLink(selectedView.rawValue) { - switch selectedView { - case .about: - AboutView() - case .settings: - SettingsView(showSignInView: $showSignInView) + NavigationStack { + List { + ForEach(ProfileViews.allCases, id: \.self) { selectedView in + NavigationLink(selectedView.rawValue) { + switch selectedView { + case .about: + AboutView() + case .settings: + SettingsView() + } } } } + .navigationTitle("Profile") } - .navigationTitle("Profile") } } #Preview { - NavigationStack { - ProfileView(showSignInView: .constant(false)) - } + ProfileView() } diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift index 2009e05..dfc1425 100644 --- a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift @@ -1,17 +1,17 @@ import SwiftUI +import Design struct SettingsView: View { @StateObject private var viewModel = SettingsViewModel() - @Binding var showSignInView: Bool var body: some View { List { - Button("Log out") { + Button("Sign out") { Task { do { try viewModel.signOut() - showSignInView = true + NotificationCenter.default.post(name: .signOutNotification, object: nil) } catch { debugPrint(error) } @@ -23,5 +23,5 @@ struct SettingsView: View { } #Preview { - SettingsView(showSignInView: .constant(false)) + SettingsView() } From 140083fa7420507645ce597a5b40961928008047 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Thu, 25 Apr 2024 16:22:59 +0300 Subject: [PATCH 052/126] Improve UX with code enhancements --- .../DesignModule/Sources/Extensions/View+Extensions.swift | 4 ++++ .../Targets/LoginModule/Sources/AuthenticationView.swift | 2 ++ 2 files changed, 6 insertions(+) diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 839ec6e..54bcd09 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -52,6 +52,10 @@ public extension View { .padding(.vertical,verticalPadding) .background { color } } + + func endTextEditing() { + UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) + } } public extension View { diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index e794a80..130b4c0 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -30,6 +30,8 @@ public struct AuthenticationView: View { .padding() .frame(maxWidth: 375) } + .scrollIndicators(.never) + .onTapGesture(perform: endTextEditing) } } From 30c485bb1656ccc213b0205f54c1251c7d8c7cd0 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Sat, 27 Apr 2024 03:40:19 +0300 Subject: [PATCH 053/126] Refactor AuthenticationManager according to code review --- .../Sources/SwiftBuddiesIOSApp.swift | 5 + .../Sources/AuthenticationManager.swift | 161 ------------------ .../Sources/Helpers/AuthProvider.swift | 33 ++++ .../Sources/Helpers/SignInAppleHelper.swift | 13 +- .../Sources/Helpers/SignInGoogleHelper.swift | 15 +- .../Managers/AuthenticationManager.swift | 109 ++++++++++++ .../Sources/Models/AuthDataResult.swift | 16 ++ .../Sources/Models/GoogleSignInResult.swift | 8 + .../Models/SignInWithAppleResult.swift | 8 + .../Protocols/AuthWithEmailProtocol.swift | 7 + .../Protocols/AuthWithSSOProtocol.swift | 5 + .../Sources/AuthenticationView.swift | 6 +- .../Sources/AuthenticationViewModel.swift | 16 +- .../SignInEmail/SignInEmailViewModel.swift | 18 +- 14 files changed, 217 insertions(+), 203 deletions(-) delete mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithAppleResult.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 7cebf3b..9de9acf 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -16,6 +16,11 @@ struct SwiftBuddiesIOSApp: App { class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { FirebaseApp.configure() + + guard let clientID = FirebaseApp.app()?.options.clientID else { return true } + let config = GIDConfiguration(clientID: clientID) + GIDSignIn.sharedInstance.configuration = config + return true } } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift deleted file mode 100644 index a75a618..0000000 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift +++ /dev/null @@ -1,161 +0,0 @@ - -import Foundation -import FirebaseAuth -import GoogleSignIn -import FirebaseCore - -public struct AuthDataResultModel { - let uid: String - let email: String? - let photoUrl: String? - let isAnonymous: Bool - - init(user: User) { - self.uid = user.uid - self.email = user.email - self.photoUrl = user.photoURL?.absoluteString - self.isAnonymous = user.isAnonymous - } -} - -public enum AuthProviderOption: String { - case email = "password" - case google = "google.com" - case apple = "apple.com" -} - -final public class AuthenticationManager { - - static public let shared = AuthenticationManager() - - private init() { - guard let clientID = FirebaseApp.app()?.options.clientID else { return } - let config = GIDConfiguration(clientID: clientID) - GIDSignIn.sharedInstance.configuration = config - } - - public func getAuthenticatedUser() throws -> AuthDataResultModel { - guard let user = Auth.auth().currentUser else { - throw URLError(.badServerResponse) - } - - return AuthDataResultModel(user: user) - } - - public func getProviders() throws -> [AuthProviderOption] { - guard let providerData = Auth.auth().currentUser?.providerData else { - throw URLError(.badServerResponse) - } - - var providers: [AuthProviderOption] = [] - for provider in providerData { - if let option = AuthProviderOption(rawValue: provider.providerID) { - providers.append(option) - } else { - assertionFailure("Provider option not found: \(provider.providerID)") - } - } - debugPrint(providers) - return providers - } - - public func signOut() throws { - try Auth.auth().signOut() - } - - public func delete() async throws { - guard let user = Auth.auth().currentUser else { - throw URLError(.badURL) - } - - try await user.delete() - } -} - -// MARK: SIGN IN EMAIL - -extension AuthenticationManager { - - @discardableResult - public func createUser(email: String, password: String) async throws -> AuthDataResultModel { - let authDataResult = try await Auth.auth().createUser(withEmail: email, password: password) - return AuthDataResultModel(user: authDataResult.user) - } - - @discardableResult - public func signInUser(email: String, password: String) async throws -> AuthDataResultModel { - let authDataResult = try await Auth.auth().signIn(withEmail: email, password: password) - return AuthDataResultModel(user: authDataResult.user) - } - - public func resetPassword(email: String) async throws { - try await Auth.auth().sendPasswordReset(withEmail: email) - } - - public func updatePassword(password: String) async throws { - guard let user = Auth.auth().currentUser else { - throw URLError(.badServerResponse) - } - - try await user.updatePassword(to: password) - } - -} - -// MARK: SIGN IN SSO - -extension AuthenticationManager { - - @discardableResult - public func signInWithGoogle(tokens: GoogleSignInResultModel) async throws -> AuthDataResultModel { - let credential = GoogleAuthProvider.credential(withIDToken: tokens.idToken, accessToken: tokens.accessToken) - return try await signIn(credential: credential) - } - - @discardableResult - public func signInWithApple(tokens: SignInWithAppleResult) async throws -> AuthDataResultModel { - let credential = OAuthProvider.credential(withProviderID: AuthProviderOption.apple.rawValue, idToken: tokens.token, rawNonce: tokens.nonce) - return try await signIn(credential: credential) - } - - public func signIn(credential: AuthCredential) async throws -> AuthDataResultModel { - let authDataResult = try await Auth.auth().signIn(with: credential) - return AuthDataResultModel(user: authDataResult.user) - } -} - -// MARK: SIGN IN ANONYMOUS - -extension AuthenticationManager { - - @discardableResult - public func signInAnonymous() async throws -> AuthDataResultModel { - let authDataResult = try await Auth.auth().signInAnonymously() - return AuthDataResultModel(user: authDataResult.user) - } - - public func linkEmail(email: String, password: String) async throws -> AuthDataResultModel { - let credential = EmailAuthProvider.credential(withEmail: email, password: password) - return try await linkCredential(credential: credential) - } - - public func linkGoogle(tokens: GoogleSignInResultModel) async throws -> AuthDataResultModel { - let credential = GoogleAuthProvider.credential(withIDToken: tokens.idToken, accessToken: tokens.accessToken) - return try await linkCredential(credential: credential) - } - - public func linkApple(tokens: SignInWithAppleResult) async throws -> AuthDataResultModel { - let credential = OAuthProvider.credential(withProviderID: AuthProviderOption.apple.rawValue, idToken: tokens.token, rawNonce: tokens.nonce) - return try await linkCredential(credential: credential) - } - - private func linkCredential(credential: AuthCredential) async throws -> AuthDataResultModel { - guard let user = Auth.auth().currentUser else { - throw URLError(.badURL) - } - - let authDataResult = try await user.link(with: credential) - return AuthDataResultModel(user: authDataResult.user) - } - -} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift new file mode 100644 index 0000000..bec7485 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift @@ -0,0 +1,33 @@ +import Foundation +import FirebaseAuth + +public protocol AuthProvider { + func credential() async throws -> AuthCredential +} + +public class GoogleAuthenticationProvider: AuthProvider { + + public init() { } + + public func credential() async throws -> AuthCredential { + let helper = SignInGoogleHelper() + let tokens = try await helper.signIn() + return GoogleAuthProvider.credential( + withIDToken: tokens.idToken, + accessToken: tokens.accessToken) + } +} + +public class AppleAuthenticationProvider: AuthProvider { + + public init() { } + + public func credential() async throws -> AuthCredential { + let helper = await SignInAppleHelper() + let tokens = try await helper.startSignInWithAppleFlow() + return OAuthProvider.credential( + withProviderID: AuthProviderOption.apple.rawValue, + idToken: tokens.token, + rawNonce: tokens.nonce) + } +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift index 23d76f5..ed6ce5a 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift @@ -22,20 +22,13 @@ public struct SignInWithAppleButtonViewRepresentable: UIViewRepresentable { } -public struct SignInWithAppleResult { - let token: String - let nonce: String - let name: String? - let email: String? -} - @MainActor -final public class SignInAppleHelper: NSObject { +final class SignInAppleHelper: NSObject { private var currentNonce: String? private var completionHandler: ((Result) -> Void)? - public init(currentNonce: String? = nil, completionHandler: ( (Result) -> Void)? = nil) { + init(currentNonce: String? = nil, completionHandler: ((Result) -> Void)? = nil) { self.currentNonce = currentNonce self.completionHandler = completionHandler } @@ -140,7 +133,7 @@ extension SignInAppleHelper: ASAuthorizationControllerDelegate { } public func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { - print("Sign in with Apple errored: \(error)") + debugPrint("Sign in with Apple errored: \(error)") completionHandler?(.failure(URLError(.cannotFindHost))) } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift index 7322780..078613e 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -1,19 +1,10 @@ import Foundation import GoogleSignIn -public struct GoogleSignInResultModel { - let idToken: String - let accessToken: String - let name: String? - let email: String? -} - -final public class SignInGoogleHelper { - - public init() { } +final class SignInGoogleHelper { @MainActor - public func signIn() async throws -> GoogleSignInResultModel { + public func signIn() async throws -> GoogleSignInResult { guard let vc = UIApplication.shared.windows.first?.rootViewController else { throw URLError(.cannotFindHost) } @@ -28,7 +19,7 @@ final public class SignInGoogleHelper { let name = gidSignInResult.user.profile?.name let email = gidSignInResult.user.profile?.email - let tokens = GoogleSignInResultModel(idToken: idToken, accessToken: accessToken, name: name, email: email) + let tokens = GoogleSignInResult(idToken: idToken, accessToken: accessToken, name: name, email: email) return tokens } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift new file mode 100644 index 0000000..5e98ec2 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift @@ -0,0 +1,109 @@ +import Foundation +import FirebaseAuth +import GoogleSignIn +import FirebaseCore + +public enum AuthProviderOption: String { + case email = "password" + case google = "google.com" + case apple = "apple.com" +} + +public enum AuthSSOOption { + case google, apple, anonymous +} + +public final class AuthenticationManager { + + public static let shared = AuthenticationManager() + private init() { } + + public func getAuthenticatedUser() throws -> AuthDataResult { + guard let user = Auth.auth().currentUser else { + throw URLError(.badServerResponse) + } + + return AuthDataResult(user: user) + } + + public func signOut() throws { + try Auth.auth().signOut() + } + + public func delete() async throws { + guard let user = Auth.auth().currentUser else { + throw URLError(.badURL) + } + + try await user.delete() + } + +} + +// MARK: SIGN IN EMAIL + +extension AuthenticationManager: AuthWithEmailProtocol { + + @discardableResult + public func createUser(email: String, password: String) async throws -> AuthDataResult { + let authDataResult = try await Auth.auth().createUser(withEmail: email, password: password) + return AuthDataResult(user: authDataResult.user) + } + + @discardableResult + public func signInUser(email: String, password: String) async throws -> AuthDataResult { + let authDataResult = try await Auth.auth().signIn(withEmail: email, password: password) + return AuthDataResult(user: authDataResult.user) + } + + public func resetPassword(email: String) async throws { + try await Auth.auth().sendPasswordReset(withEmail: email) + } + +} + +extension AuthenticationManager { + + public func updatePassword(password: String) async throws { + guard let user = Auth.auth().currentUser else { + throw URLError(.badServerResponse) + } + + try await user.updatePassword(to: password) + } + +} + +// MARK: SIGN IN SSO + +extension AuthenticationManager: AuthWithSSOProtocol { + + @discardableResult + public func signIn(provider: AuthSSOOption) async throws -> AuthDataResult { + var authProvider: AuthProvider? + + switch provider { + case .google: + authProvider = GoogleAuthenticationProvider() + case .apple: + authProvider = AppleAuthenticationProvider() + case .anonymous: + return try await signInAnonymous() + } + + guard let authProvider else { throw URLError(.badServerResponse) } + return try await signIn(credential: authProvider.credential()) + } + + private func signIn(credential: AuthCredential) async throws -> AuthDataResult { + let authDataResult = try await Auth.auth().signIn(with: credential) + return AuthDataResult(user: authDataResult.user) + } + + @discardableResult + private func signInAnonymous() async throws -> AuthDataResult { + let authDataResult = try await Auth.auth().signInAnonymously() + return AuthDataResult(user: authDataResult.user) + } + +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift new file mode 100644 index 0000000..2b82368 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift @@ -0,0 +1,16 @@ +import Foundation +import FirebaseAuth + +public struct AuthDataResult { + let uid: String + let email: String? + let photoUrl: String? + let isAnonymous: Bool + + init(user: User) { + self.uid = user.uid + self.email = user.email + self.photoUrl = user.photoURL?.absoluteString + self.isAnonymous = user.isAnonymous + } +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift new file mode 100644 index 0000000..75e9d9b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift @@ -0,0 +1,8 @@ +import Foundation + +public struct GoogleSignInResult { + let idToken: String + let accessToken: String + let name: String? + let email: String? +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithAppleResult.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithAppleResult.swift new file mode 100644 index 0000000..a79737b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithAppleResult.swift @@ -0,0 +1,8 @@ +import Foundation + +public struct SignInWithAppleResult { + let token: String + let nonce: String + let name: String? + let email: String? +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift new file mode 100644 index 0000000..cb9a1b9 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift @@ -0,0 +1,7 @@ +import Foundation + +public protocol AuthWithEmailProtocol { + func createUser(email: String, password: String) async throws -> AuthDataResult + func signInUser(email: String, password: String) async throws -> AuthDataResult + func resetPassword(email: String) async throws +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift new file mode 100644 index 0000000..6cd57b5 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift @@ -0,0 +1,5 @@ +import Foundation + +public protocol AuthWithSSOProtocol { + func signIn(provider: AuthSSOOption) async throws -> AuthDataResult +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index 130b4c0..5daa859 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -52,7 +52,7 @@ extension AuthenticationView { Button { Task { do { - try await viewModel.signInAnonymous() + try await viewModel.signIn(provider: .anonymous) showSignInView = false } catch { debugPrint(error) @@ -68,7 +68,7 @@ extension AuthenticationView { Button { Task { do { - try await viewModel.signInGoogle() + try await viewModel.signIn(provider: .google) showSignInView = false } catch { debugPrint(error) @@ -84,7 +84,7 @@ extension AuthenticationView { Button(action: { Task { do { - try await viewModel.signInApple() + try await viewModel.signIn(provider: .apple) showSignInView = false } catch { debugPrint(error) diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift index 978f858..fd7cf29 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift @@ -4,20 +4,14 @@ import Auth @MainActor final class AuthenticationViewModel: ObservableObject { - func signInGoogle() async throws { - let helper = SignInGoogleHelper() - let tokens = try await helper.signIn() - let _ = try await AuthenticationManager.shared.signInWithGoogle(tokens: tokens) - } + private let authManager: AuthWithSSOProtocol - func signInApple() async throws { - let helper = SignInAppleHelper() - let tokens = try await helper.startSignInWithAppleFlow() - let _ = try await AuthenticationManager.shared.signInWithApple(tokens: tokens) + init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { + self.authManager = authManager } - func signInAnonymous() async throws { - let _ = try await AuthenticationManager.shared.signInAnonymous() + func signIn(provider: AuthSSOOption) async throws { + let _ = try await authManager.signIn(provider: provider) } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift index 3864ae7..53846c5 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift @@ -8,30 +8,36 @@ final class SignInEmailViewModel: ObservableObject { @Published var password = "" @Published var visible: Bool = false + private let authManager: AuthWithEmailProtocol + + init(authManager: AuthWithEmailProtocol = AuthenticationManager.shared) { + self.authManager = authManager + } + func signUp() async throws { guard !email.isEmpty, !password.isEmpty else { - print("No email or password found.") + debugPrint("No email or password found.") return } - let _ = try await AuthenticationManager.shared.createUser(email: email, password: password) + let _ = try await authManager.createUser(email: email, password: password) } func signIn() async throws { guard !email.isEmpty, !password.isEmpty else { - print("No email or password found.") + debugPrint("No email or password found.") return } - try await AuthenticationManager.shared.signInUser(email: email, password: password) + let _ = try await authManager.signInUser(email: email, password: password) } func forgotPassword() async throws { guard !email.isEmpty else { - print("No email or password found.") + debugPrint("No email found.") return } - try await AuthenticationManager.shared.resetPassword(email: email) + try await authManager.resetPassword(email: email) } } From e9be1d7a4ce9fb8f850246453ca36781cc959eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sat, 18 May 2024 23:11:54 +0300 Subject: [PATCH 054/126] Localizable generated --- .../Resources/Localizable.xcstrings | 12 ----------- .../GeneratedLocalizationStrings.swift | 21 +++++++------------ 2 files changed, 7 insertions(+), 26 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings b/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings index dfa8f67..9315c3b 100644 --- a/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings +++ b/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings @@ -1,15 +1,6 @@ { "sourceLanguage" : "en", "strings" : { - "Contributors" : { - - }, - "Feed" : { - - }, - "Map" : { - - }, "onboarding.ButtonTitle" : { "extractionState" : "manual", "localizations" : { @@ -75,9 +66,6 @@ } } } - }, - "Profile" : { - } }, "version" : "1.0" diff --git a/SwiftBuddiesIOS/Targets/LocalizationModule/Sources/GeneratedLocalizationStrings.swift b/SwiftBuddiesIOS/Targets/LocalizationModule/Sources/GeneratedLocalizationStrings.swift index 7c49fe1..9fb26eb 100644 --- a/SwiftBuddiesIOS/Targets/LocalizationModule/Sources/GeneratedLocalizationStrings.swift +++ b/SwiftBuddiesIOS/Targets/LocalizationModule/Sources/GeneratedLocalizationStrings.swift @@ -12,27 +12,20 @@ public struct LocalizedString { public func callAsFunction(_ arguments: CVarArg...) -> String { String(format: localized, arguments: arguments) } } + // MARK: - Localized strings keys public enum L { - /// About - @LocalizedString(key: "About") public static var about: Text - /// Feed - @LocalizedString(key: "Feed") public static var feed: Text - /// BuddiesIOS - @LocalizedString(key: "onboardingItem.SecondTitle") public static var onboardingitem_secondtitle: Text - /// Contributors - @LocalizedString(key: "Contributors") public static var contributors: Text /// Dive in, explore, learn and share. We're excited to have you here and can't wait to see what you'll bring to the table. @LocalizedString(key: "onboardingItem.SecondDescription") public static var onboardingitem_seconddescription: Text - /// Buddies Community, being a platform dedicated to iOS development, aims to provide a productive environment fostering networking, collaboration, and knowledge sharing. - @LocalizedString(key: "onboardingItem.FirstDescription") public static var onboardingitem_firstdescription: Text - /// Map - @LocalizedString(key: "Map") public static var map: Text - /// Next - @LocalizedString(key: "onboarding.ButtonTitle") public static var onboarding_buttontitle: Text /// Welcome! @LocalizedString(key: "onboardingItem.FirstTitle") public static var onboardingitem_firsttitle: Text + /// Buddies Community, being a platform dedicated to iOS development, aims to provide a productive environment fostering networking, collaboration, and knowledge sharing. + @LocalizedString(key: "onboardingItem.FirstDescription") public static var onboardingitem_firstdescription: Text /// Start @LocalizedString(key: "onboarding.StartButtonTitle") public static var onboarding_startbuttontitle: Text + /// BuddiesIOS + @LocalizedString(key: "onboardingItem.SecondTitle") public static var onboardingitem_secondtitle: Text + /// Next + @LocalizedString(key: "onboarding.ButtonTitle") public static var onboarding_buttontitle: Text } From ec5cbef6ac005c40e1c1f40f5bbe5817013b3afb Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Fri, 9 Aug 2024 22:49:50 +0300 Subject: [PATCH 055/126] Confict resolved --- Project.swift | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/Project.swift b/Project.swift index bb405bd..2c03995 100644 --- a/Project.swift +++ b/Project.swift @@ -43,12 +43,6 @@ let authModule = Target.featureTarget( ] ) -let onboardingModule = Target.featureTarget( - name: "Onboarding", - productName: "Onboarding", - dependencies: [.target(designModule)] -) - let localicationCodegen = Target.target( name: "LocalizationCodegen", destinations: .macOS, @@ -94,25 +88,6 @@ let localicationCodegen = Target.target( // mergedBinaryType: .automatic, // mergeable: false //) -let loginModule = Target.featureTarget( - name: "Login", - productName: "Login", - dependencies: [ - .target(designModule), - .target(authModule), - .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "FirebaseAuth", type: .runtime, condition: .none) - ] -) - -let authModule = Target.featureTarget( - name: "Auth", - productName: "Auth", - dependencies: [ - .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "FirebaseAuth", type: .runtime, condition: .none) - ] -) let onboardingModule = Target.featureTarget( name: "Onboarding", From 999f633a1d5b80aed4d7ae87b1bc5333758c79a3 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Sun, 11 Aug 2024 02:11:47 +0300 Subject: [PATCH 056/126] Add Network module, Remove email and anonymously login --- Project.swift | 13 ++ SwiftBuddiesIOS/Sources/TabFlowView.swift | 1 - .../Sources/Helpers/SignInGoogleHelper.swift | 4 +- .../Managers/AuthenticationManager.swift | 73 ++------- .../Sources/Models/AuthDataResponse.swift | 14 ++ .../Sources/Models/AuthDataResult.swift | 16 -- .../Sources/Models/RegisterResponse.swift | 13 ++ ...ult.swift => SignInWithGoogleResult.swift} | 2 +- .../Protocols/AuthWithEmailProtocol.swift | 7 - .../Protocols/AuthWithSSOProtocol.swift | 2 +- .../Resources/Localizable.xcstrings | 12 -- .../Sources/AuthenticationViewModel.swift | 17 --- .../SignInEmail/SignInEmailView.swift | 143 ------------------ .../SignInEmail/SignInEmailViewModel.swift | 43 ------ .../ViewModels/AuthenticationViewModel.swift | 25 +++ .../{ => Views}/AuthenticationView.swift | 38 +---- .../NetworkModule/Sources/Endpoint.swift | 87 +++++++++++ .../Sources/NetworkManager.swift | 45 ++++++ 18 files changed, 218 insertions(+), 337 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResponse.swift delete mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/RegisterResponse.swift rename SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/{GoogleSignInResult.swift => SignInWithGoogleResult.swift} (75%) delete mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift delete mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift delete mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift delete mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift rename SwiftBuddiesIOS/Targets/LoginModule/Sources/{ => Views}/AuthenticationView.swift (66%) create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift diff --git a/Project.swift b/Project.swift index 2c03995..c2b44ca 100644 --- a/Project.swift +++ b/Project.swift @@ -43,6 +43,16 @@ let authModule = Target.featureTarget( ] ) +let networkModule = Target.featureTarget( + name: "Network", + productName: "Network", + dependencies: [ + .target(authModule), + .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none) + ] +) + let localicationCodegen = Target.target( name: "LocalizationCodegen", destinations: .macOS, @@ -101,6 +111,7 @@ let loginModule = Target.featureTarget( dependencies: [ .target(designModule), .target(authModule), + .target(networkModule), .package(product: "GoogleSignIn", type: .runtime, condition: .none), .package(product: "FirebaseAuth", type: .runtime, condition: .none) ] @@ -175,6 +186,7 @@ let project = Project( .target(mapModule), .target(profileModule), .target(contributorsModule), + .target(networkModule), // .target(scriptsModule), // .target(localicationCodegen) .target(localizationModule) @@ -188,6 +200,7 @@ let project = Project( mapModule, profileModule, contributorsModule, + networkModule, // scriptsModule, localizationModule, localicationCodegen diff --git a/SwiftBuddiesIOS/Sources/TabFlowView.swift b/SwiftBuddiesIOS/Sources/TabFlowView.swift index 09a56c5..b96e043 100644 --- a/SwiftBuddiesIOS/Sources/TabFlowView.swift +++ b/SwiftBuddiesIOS/Sources/TabFlowView.swift @@ -24,7 +24,6 @@ struct TabFlowView: View { var body: some View { TabView(selection: $selectedTab) { - FeedView() .tabItem { Image(systemName: "list.bullet") diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift index 078613e..a3f1487 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -4,7 +4,7 @@ import GoogleSignIn final class SignInGoogleHelper { @MainActor - public func signIn() async throws -> GoogleSignInResult { + public func signIn() async throws -> SignInWithGoogleResult { guard let vc = UIApplication.shared.windows.first?.rootViewController else { throw URLError(.cannotFindHost) } @@ -19,7 +19,7 @@ final class SignInGoogleHelper { let name = gidSignInResult.user.profile?.name let email = gidSignInResult.user.profile?.email - let tokens = GoogleSignInResult(idToken: idToken, accessToken: accessToken, name: name, email: email) + let tokens = SignInWithGoogleResult(idToken: idToken, accessToken: accessToken, name: name, email: email) return tokens } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift index 5e98ec2..34abf11 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift @@ -4,26 +4,24 @@ import GoogleSignIn import FirebaseCore public enum AuthProviderOption: String { - case email = "password" case google = "google.com" case apple = "apple.com" } -public enum AuthSSOOption { - case google, apple, anonymous +public enum AuthSSOOption: String { + case google, apple } public final class AuthenticationManager { - public static let shared = AuthenticationManager() private init() { } - public func getAuthenticatedUser() throws -> AuthDataResult { + public func getAuthenticatedUser() throws -> AuthDataResponse { guard let user = Auth.auth().currentUser else { throw URLError(.badServerResponse) } - return AuthDataResult(user: user) + return AuthDataResponse(user: user) } public func signOut() throws { @@ -37,41 +35,6 @@ public final class AuthenticationManager { try await user.delete() } - -} - -// MARK: SIGN IN EMAIL - -extension AuthenticationManager: AuthWithEmailProtocol { - - @discardableResult - public func createUser(email: String, password: String) async throws -> AuthDataResult { - let authDataResult = try await Auth.auth().createUser(withEmail: email, password: password) - return AuthDataResult(user: authDataResult.user) - } - - @discardableResult - public func signInUser(email: String, password: String) async throws -> AuthDataResult { - let authDataResult = try await Auth.auth().signIn(withEmail: email, password: password) - return AuthDataResult(user: authDataResult.user) - } - - public func resetPassword(email: String) async throws { - try await Auth.auth().sendPasswordReset(withEmail: email) - } - -} - -extension AuthenticationManager { - - public func updatePassword(password: String) async throws { - guard let user = Auth.auth().currentUser else { - throw URLError(.badServerResponse) - } - - try await user.updatePassword(to: password) - } - } // MARK: SIGN IN SSO @@ -79,31 +42,15 @@ extension AuthenticationManager { extension AuthenticationManager: AuthWithSSOProtocol { @discardableResult - public func signIn(provider: AuthSSOOption) async throws -> AuthDataResult { - var authProvider: AuthProvider? - - switch provider { + public func signIn(provider: AuthSSOOption) async throws -> AuthDataResponse { + let authProvider: AuthProvider = switch provider { case .google: - authProvider = GoogleAuthenticationProvider() + GoogleAuthenticationProvider() case .apple: - authProvider = AppleAuthenticationProvider() - case .anonymous: - return try await signInAnonymous() + AppleAuthenticationProvider() } - guard let authProvider else { throw URLError(.badServerResponse) } - return try await signIn(credential: authProvider.credential()) - } - - private func signIn(credential: AuthCredential) async throws -> AuthDataResult { - let authDataResult = try await Auth.auth().signIn(with: credential) - return AuthDataResult(user: authDataResult.user) + let authDataResult = try await Auth.auth().signIn(with: authProvider.credential()) + return AuthDataResponse(user: authDataResult.user) } - - @discardableResult - private func signInAnonymous() async throws -> AuthDataResult { - let authDataResult = try await Auth.auth().signInAnonymously() - return AuthDataResult(user: authDataResult.user) - } - } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResponse.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResponse.swift new file mode 100644 index 0000000..edfab9e --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResponse.swift @@ -0,0 +1,14 @@ +import Foundation +import FirebaseAuth + +public struct AuthDataResponse { + public let uid: String + public let email: String? + public let photoUrl: String? + + public init(user: User) { + self.uid = user.uid + self.email = user.email + self.photoUrl = user.photoURL?.absoluteString + } +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift deleted file mode 100644 index 2b82368..0000000 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift +++ /dev/null @@ -1,16 +0,0 @@ -import Foundation -import FirebaseAuth - -public struct AuthDataResult { - let uid: String - let email: String? - let photoUrl: String? - let isAnonymous: Bool - - init(user: User) { - self.uid = user.uid - self.email = user.email - self.photoUrl = user.photoURL?.absoluteString - self.isAnonymous = user.isAnonymous - } -} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/RegisterResponse.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/RegisterResponse.swift new file mode 100644 index 0000000..92bb466 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/RegisterResponse.swift @@ -0,0 +1,13 @@ +// +// RegisterResponse.swift +// Auth +// +// Created by Berkay Tuncel on 11.08.2024. +// + +import Foundation + +public struct RegisterResponse: Codable { + public let type: String + public let token: String +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithGoogleResult.swift similarity index 75% rename from SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift rename to SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithGoogleResult.swift index 75e9d9b..995b14c 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithGoogleResult.swift @@ -1,6 +1,6 @@ import Foundation -public struct GoogleSignInResult { +public struct SignInWithGoogleResult { let idToken: String let accessToken: String let name: String? diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift deleted file mode 100644 index cb9a1b9..0000000 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift +++ /dev/null @@ -1,7 +0,0 @@ -import Foundation - -public protocol AuthWithEmailProtocol { - func createUser(email: String, password: String) async throws -> AuthDataResult - func signInUser(email: String, password: String) async throws -> AuthDataResult - func resetPassword(email: String) async throws -} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift index 6cd57b5..d3a99fd 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift @@ -1,5 +1,5 @@ import Foundation public protocol AuthWithSSOProtocol { - func signIn(provider: AuthSSOOption) async throws -> AuthDataResult + func signIn(provider: AuthSSOOption) async throws -> AuthDataResponse } diff --git a/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings b/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings index dfa8f67..9315c3b 100644 --- a/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings +++ b/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings @@ -1,15 +1,6 @@ { "sourceLanguage" : "en", "strings" : { - "Contributors" : { - - }, - "Feed" : { - - }, - "Map" : { - - }, "onboarding.ButtonTitle" : { "extractionState" : "manual", "localizations" : { @@ -75,9 +66,6 @@ } } } - }, - "Profile" : { - } }, "version" : "1.0" diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift deleted file mode 100644 index fd7cf29..0000000 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift +++ /dev/null @@ -1,17 +0,0 @@ -import Foundation -import Auth - -@MainActor -final class AuthenticationViewModel: ObservableObject { - - private let authManager: AuthWithSSOProtocol - - init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { - self.authManager = authManager - } - - func signIn(provider: AuthSSOOption) async throws { - let _ = try await authManager.signIn(provider: provider) - } - -} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift deleted file mode 100644 index 0d638b2..0000000 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift +++ /dev/null @@ -1,143 +0,0 @@ -import SwiftUI -import Design - -struct SignInEmailView: View { - - @StateObject private var viewModel = SignInEmailViewModel() - @Binding private var showSignInView: Bool - - @FocusState private var fieldInFocus: LoginField? - - enum LoginField: Hashable { - case email - case password - } - - init(showSignInView: Binding) { - self._showSignInView = showSignInView - } - - var body: some View { - VStack(spacing: 10) { - swiftBuddiesImage - - signInText - - emailTextField - passwordTextField - - forgotPasswordButton - - signInButton - } - } -} - -// MARK: Views - -extension SignInEmailView { - private var swiftBuddiesImage: some View { - DesignAsset.swiftBuddiesImage.swiftUIImage - .resizable() - .aspectRatio(1, contentMode: .fit) - .frame(height: 250) - } - - private var signInText: some View { - Text("Sign in to your account") - .font(.title) - .fontWeight(.bold) - .foregroundColor(Color.primary.opacity(0.7)) - } - - private var emailTextField: some View { - TextField("Email", text: $viewModel.email) - .submitLabel(viewModel.password.isEmpty ? .continue : .done) - .onSubmit { - if viewModel.password.isEmpty { - fieldInFocus = .password - } - } - .focused($fieldInFocus, equals: .email) - .withLoginTextFieldFormatting( - borderColor: viewModel.email.isEmpty ? - Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor - ) - } - - private var passwordTextField: some View { - HStack(spacing: 15) { - if viewModel.visible { - TextField("Password", text: $viewModel.password) - } else { - SecureField("Password", text: $viewModel.password) - } - Button(action: { viewModel.visible.toggle() }) { - Image(systemName: viewModel.visible ? "eye.slash.fill" : "eye.fill") - .foregroundColor(Color.primary.opacity(0.7)) - } - } - .focused($fieldInFocus, equals: .password) - .withLoginTextFieldFormatting( - borderColor: viewModel.password.isEmpty ? - Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor - ) - } - - private var forgotPasswordButton: some View { - HStack { - Spacer() - Button(action: { - Task { - try? await viewModel.forgotPassword() - } - }) { - Text("Forgot password") - .fontWeight(.bold) - .foregroundColor(DesignAsset.loginStrokeColor.swiftUIColor) - } - } - } - - private var signInButton: some View { - Button(action: { signIn() }) { - Text("Sign In") - .withLoginButtonFormatting() - } - .clipShape(Capsule()) - } -} - -// MARK: Functions - -extension SignInEmailView { - private func signIn() { - if viewModel.email.isEmpty { - fieldInFocus = .email - } else if viewModel.password.isEmpty { - fieldInFocus = .password - } else { - Task { - do { - try await viewModel.signUp() - showSignInView = false - return - } catch { - debugPrint(error) - } - - do { - try await viewModel.signIn() - showSignInView = false - return - } catch { - debugPrint(error) - } - } - } - } -} - -#Preview { - SignInEmailView(showSignInView: .constant(true)) -} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift deleted file mode 100644 index 53846c5..0000000 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift +++ /dev/null @@ -1,43 +0,0 @@ -import Foundation -import Auth - -@MainActor -final class SignInEmailViewModel: ObservableObject { - - @Published var email = "" - @Published var password = "" - @Published var visible: Bool = false - - private let authManager: AuthWithEmailProtocol - - init(authManager: AuthWithEmailProtocol = AuthenticationManager.shared) { - self.authManager = authManager - } - - func signUp() async throws { - guard !email.isEmpty, !password.isEmpty else { - debugPrint("No email or password found.") - return - } - - let _ = try await authManager.createUser(email: email, password: password) - } - - func signIn() async throws { - guard !email.isEmpty, !password.isEmpty else { - debugPrint("No email or password found.") - return - } - - let _ = try await authManager.signInUser(email: email, password: password) - } - - func forgotPassword() async throws { - guard !email.isEmpty else { - debugPrint("No email found.") - return - } - - try await authManager.resetPassword(email: email) - } -} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift new file mode 100644 index 0000000..947a942 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift @@ -0,0 +1,25 @@ +import Foundation +import Auth +import Network + +@MainActor +final class AuthenticationViewModel: ObservableObject { + private let authManager: AuthWithSSOProtocol + + init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { + self.authManager = authManager + } + + func signIn(provider: AuthSSOOption) async throws { + let authData = try await authManager.signIn(provider: provider) + NetworkManager.shared.loginRequest(registerType: provider, accessToken: authData.uid) { response in + switch response { + case .success(let success): + debugPrint(success.type) + debugPrint(success.token) + case .failure(let failure): + debugPrint(failure.localizedDescription) + } + } + } +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift similarity index 66% rename from SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift rename to SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift index 5daa859..0885e68 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift @@ -14,12 +14,9 @@ public struct AuthenticationView: View { public var body: some View { ScrollView { VStack(spacing: 20) { - SignInEmailView(showSignInView: $showSignInView) - - dividerView + swiftBuddiesImage Group { - anonymousSignInButton googleSignInButton appleSignInButton } @@ -30,38 +27,17 @@ public struct AuthenticationView: View { .padding() .frame(maxWidth: 375) } - .scrollIndicators(.never) + .scrollIndicators(.hidden) .onTapGesture(perform: endTextEditing) } } extension AuthenticationView { - private var dividerView: some View { - ZStack { - Divider() - - Text("or") - .font(.subheadline) - .fontWeight(.semibold) - .padding(.horizontal) - .background(.white) - } - } - - private var anonymousSignInButton: some View { - Button { - Task { - do { - try await viewModel.signIn(provider: .anonymous) - showSignInView = false - } catch { - debugPrint(error) - } - } - } label: { - Text("Sign In Anonymously") - .withLoginButtonFormatting() - } + private var swiftBuddiesImage: some View { + DesignAsset.swiftBuddiesImage.swiftUIImage + .resizable() + .aspectRatio(1, contentMode: .fit) + .frame(height: 250) } private var googleSignInButton: some View { diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift new file mode 100644 index 0000000..e210d9b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift @@ -0,0 +1,87 @@ +// +// Endpoint.swift +// Auth +// +// Created by Berkay Tuncel on 10.08.2024. +// + +import Foundation +import Auth + +protocol EndpointProtocol { + var baseURL: String { get } + var path: String { get } + var method: HTTPMethod { get } + var header: [String: String]? { get } + var parameters: [String: Any]? { get } + + func request() -> URLRequest +} + +enum HTTPMethod: String { + case get = "GET" + case post = "POST" + case delete = "DELETE" + case patch = "PATCH" +} + +enum Endpoint { + case loginRequest(registerType: AuthSSOOption, accessToken: String) +} + +extension Endpoint: EndpointProtocol { + var baseURL: String { "https://swiftbuddies.vercel.app" } + + var path: String { + switch self { + case .loginRequest: + return "/api/register" + } + } + + var method: HTTPMethod { + switch self { + case .loginRequest: + return .post + } + } + + var header: [String: String]? { + let header: [String: String] = ["Content-type": "application/json; charset=UTF-8"] + return header + } + + var parameters: [String: Any]? { + if case .loginRequest(let registerType, let accessToken) = self { + return ["registerType": registerType.rawValue, "accessToken": accessToken] + } + + return nil + } + + func request() -> URLRequest { + guard var components = URLComponents(string: baseURL) else { fatalError("URL error") } + + components.path = path + + var request = URLRequest(url: components.url!) + request.httpMethod = method.rawValue + + if let header = header { + for (key, value) in header { + request.setValue(value, forHTTPHeaderField: key) + } + } + + if let parameters { + do { + let data = try JSONSerialization.data(withJSONObject: parameters) + request.httpBody = data + } catch { + print(error.localizedDescription) + } + } + + return request + } +} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift new file mode 100644 index 0000000..0c35cf2 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift @@ -0,0 +1,45 @@ +// +// NetworkManager.swift +// Auth +// +// Created by Berkay Tuncel on 10.08.2024. +// + +import Foundation +import Auth + +public final class NetworkManager { + public static let shared = NetworkManager() + private init() {} + + private func request(_ endpoint: Endpoint, completion: @escaping (Result) -> Void) { + URLSession.shared.dataTask(with: endpoint.request()) { data, response, error in + if let error = error { + completion(.failure(error)) + } + + guard let response = response as? HTTPURLResponse, response.statusCode >= 200, response.statusCode <= 299 else { + completion(.failure(NSError(domain: "Invalid Response", code: 0))) + return + } + + guard let data = data else { + completion(.failure(NSError(domain: "Invalid Data Response", code: 0))) + return + } + + do { + let decodedData = try JSONDecoder().decode(T.self, from: data) + completion(.success(decodedData)) + } catch let error { + completion(.failure(error)) + } + } + .resume() + } + + public func loginRequest(registerType: AuthSSOOption, accessToken: String, completion: @escaping (Result) -> Void) { + let endpoint = Endpoint.loginRequest(registerType: registerType, accessToken: accessToken) + request(endpoint, completion: completion) + } +} From 338eec04d29c2a364ee8b14bbf22b70c02941016 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Thu, 15 Aug 2024 22:49:50 +0300 Subject: [PATCH 057/126] Remove Firebase from project, Refactor Network module --- Project.swift | 14 ++--- SwiftBuddiesIOS/Sources/RootView.swift | 17 +++--- .../Sources/SwiftBuddiesIOSApp.swift | 11 ++-- SwiftBuddiesIOS/Sources/TabFlowView.swift | 8 +-- .../Sources/Helpers/AuthProvider.swift | 22 +++---- .../Sources/Helpers/SignInAppleHelper.swift | 4 -- .../Sources/Helpers/SignInGoogleHelper.swift | 2 +- .../Managers/AuthenticationManager.swift | 43 ++++--------- .../Sources/Models/AuthDataResponse.swift | 14 ----- .../Sources/Models/SignInRequest.swift | 13 ++++ ...terResponse.swift => SignInResponse.swift} | 4 +- .../Protocols/AuthWithSSOProtocol.swift | 5 -- .../Sources/Extensions/View+Extensions.swift | 14 +++-- .../LoginButtonViewModifier.swift | 20 +----- .../ViewModels/AuthenticationViewModel.swift | 32 +++++++--- .../Sources/Views/AuthenticationView.swift | 61 +++++++------------ .../NetworkModule/Sources/Endpoint.swift | 24 ++++---- .../Sources/NetworkManager.swift | 61 +++++++++++-------- .../Sources/Services/LoginDataService.swift | 36 +++++++++++ .../Sources/Settings/SettingsViewModel.swift | 1 - 20 files changed, 193 insertions(+), 213 deletions(-) delete mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResponse.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInRequest.swift rename SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/{RegisterResponse.swift => SignInResponse.swift} (64%) delete mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/Services/LoginDataService.swift diff --git a/Project.swift b/Project.swift index c2b44ca..af4acd3 100644 --- a/Project.swift +++ b/Project.swift @@ -38,8 +38,7 @@ let authModule = Target.featureTarget( name: "Auth", productName: "Auth", dependencies: [ - .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "FirebaseAuth", type: .runtime, condition: .none) + .package(product: "GoogleSignIn", type: .runtime, condition: .none) ] ) @@ -48,8 +47,7 @@ let networkModule = Target.featureTarget( productName: "Network", dependencies: [ .target(authModule), - .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "FirebaseAuth", type: .runtime, condition: .none) + .package(product: "GoogleSignIn", type: .runtime, condition: .none) ] ) @@ -112,8 +110,7 @@ let loginModule = Target.featureTarget( .target(designModule), .target(authModule), .target(networkModule), - .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "FirebaseAuth", type: .runtime, condition: .none) + .package(product: "GoogleSignIn", type: .runtime, condition: .none) ] ) @@ -135,8 +132,7 @@ let profileModule = Target.featureTarget( dependencies: [ .target(designModule), .target(authModule), - .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "FirebaseAuth", type: .runtime, condition: .none) + .package(product: "GoogleSignIn", type: .runtime, condition: .none) ] ) @@ -151,7 +147,6 @@ let project = Project( name: "Buddies", packages: [ .remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0")), - .remote(url: "https://github.com/firebase/firebase-ios-sdk.git", requirement: .exact("10.24.0")), .remote(url: "https://github.com/apple/swift-argument-parser.git", requirement: .exact("1.3.0")) ], targets: [ @@ -177,7 +172,6 @@ let project = Project( resources: ["SwiftBuddiesIOS/Resources/**"], dependencies: [ .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "FirebaseAuth", type: .runtime, condition: .none), .target(designModule), .target(authModule), .target(onboardingModule), diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift index 56969cb..f046066 100644 --- a/SwiftBuddiesIOS/Sources/RootView.swift +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -2,10 +2,11 @@ import SwiftUI import Auth import Login import Onboarding +import Design struct RootView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false - @State private var showSignInView: Bool = false + @State private var isLoggedIn: Bool = false let pub = NotificationCenter.default .publisher(for: .signOutNotification) @@ -20,19 +21,15 @@ struct RootView: View { private func SuitableRootView() -> some View { if isOnboardingScreenViewed { ZStack { - if !showSignInView { - TabFlowView(showSignInView: $showSignInView) + if isLoggedIn { + TabFlowView() } } - .onAppear { - let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() - self.showSignInView = authUser == nil - } .onReceive(pub) { _ in - showSignInView = true + isLoggedIn = false } - .fullScreenCover(isPresented: $showSignInView, content: { - AuthenticationView(showSignInView: $showSignInView) + .fullScreenCover(isPresented: $isLoggedIn.negated, content: { + AuthenticationView(isLoggedIn: $isLoggedIn) }) } else { OnboardingBuilder.build() diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 9de9acf..8b1b128 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -1,5 +1,4 @@ import SwiftUI -import Firebase import GoogleSignIn @main @@ -15,12 +14,10 @@ struct SwiftBuddiesIOSApp: App { class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { - FirebaseApp.configure() - - guard let clientID = FirebaseApp.app()?.options.clientID else { return true } - let config = GIDConfiguration(clientID: clientID) - GIDSignIn.sharedInstance.configuration = config - + if let clientID = Bundle.main.object(forInfoDictionaryKey: "CLIENT_ID") as? String { + let signInConfig = GIDConfiguration(clientID: clientID) + GIDSignIn.sharedInstance.configuration = signInConfig + } return true } } diff --git a/SwiftBuddiesIOS/Sources/TabFlowView.swift b/SwiftBuddiesIOS/Sources/TabFlowView.swift index b96e043..3709b77 100644 --- a/SwiftBuddiesIOS/Sources/TabFlowView.swift +++ b/SwiftBuddiesIOS/Sources/TabFlowView.swift @@ -14,13 +14,7 @@ enum AppTab: Int, Identifiable { } struct TabFlowView: View { - @State var selectedTab: AppTab = .feed - @Binding private var showSignInView: Bool - - init(showSignInView: Binding) { - self._showSignInView = showSignInView - } var body: some View { TabView(selection: $selectedTab) { @@ -56,5 +50,5 @@ struct TabFlowView: View { } #Preview { - TabFlowView(showSignInView: .constant(false)) + TabFlowView() } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift index bec7485..fcc3183 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift @@ -1,20 +1,20 @@ import Foundation -import FirebaseAuth public protocol AuthProvider { - func credential() async throws -> AuthCredential + func signIn() async throws -> SignInRequest } public class GoogleAuthenticationProvider: AuthProvider { public init() { } - public func credential() async throws -> AuthCredential { + public func signIn() async throws -> SignInRequest { let helper = SignInGoogleHelper() let tokens = try await helper.signIn() - return GoogleAuthProvider.credential( - withIDToken: tokens.idToken, - accessToken: tokens.accessToken) + return SignInRequest( + accessToken: tokens.accessToken, + type: AuthProviderOption.google.rawValue + ) } } @@ -22,12 +22,12 @@ public class AppleAuthenticationProvider: AuthProvider { public init() { } - public func credential() async throws -> AuthCredential { + public func signIn() async throws -> SignInRequest { let helper = await SignInAppleHelper() let tokens = try await helper.startSignInWithAppleFlow() - return OAuthProvider.credential( - withProviderID: AuthProviderOption.apple.rawValue, - idToken: tokens.token, - rawNonce: tokens.nonce) + return SignInRequest( + accessToken: tokens.token, + type: AuthProviderOption.apple.rawValue + ) } } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift index ed6ce5a..be7b24d 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift @@ -49,8 +49,6 @@ final class SignInAppleHelper: NSObject { } public func startSignInWithAppleFlow(completion: @escaping (Result) -> Void) { - guard let vc = UIApplication.shared.windows.first?.rootViewController else { return } - let nonce = randomNonceString() currentNonce = nonce completionHandler = completion @@ -62,7 +60,6 @@ final class SignInAppleHelper: NSObject { let authorizationController = ASAuthorizationController(authorizationRequests: [request]) authorizationController.delegate = self - authorizationController.presentationContextProvider = vc authorizationController.performRequests() } @@ -127,7 +124,6 @@ extension SignInAppleHelper: ASAuthorizationControllerDelegate { } let name = appleIDCredential.fullName?.givenName let email = appleIDCredential.email - let tokens = SignInWithAppleResult(token: idTokenString, nonce: nonce, name: name, email: email) completionHandler?(.success(tokens)) } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift index a3f1487..eabd930 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -18,7 +18,7 @@ final class SignInGoogleHelper { let accessToken = gidSignInResult.user.accessToken.tokenString let name = gidSignInResult.user.profile?.name let email = gidSignInResult.user.profile?.email - + let tokens = SignInWithGoogleResult(idToken: idToken, accessToken: accessToken, name: name, email: email) return tokens } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift index 34abf11..829c696 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift @@ -1,48 +1,32 @@ import Foundation -import FirebaseAuth -import GoogleSignIn -import FirebaseCore public enum AuthProviderOption: String { - case google = "google.com" - case apple = "apple.com" -} - -public enum AuthSSOOption: String { case google, apple + + var domainName: String { self.rawValue + ".com" } } public final class AuthenticationManager { public static let shared = AuthenticationManager() private init() { } - - public func getAuthenticatedUser() throws -> AuthDataResponse { - guard let user = Auth.auth().currentUser else { - throw URLError(.badServerResponse) - } - - return AuthDataResponse(user: user) - } +// public func getAuthenticatedUser() { +// +// } +// public func signOut() throws { - try Auth.auth().signOut() - } - - public func delete() async throws { - guard let user = Auth.auth().currentUser else { - throw URLError(.badURL) - } - - try await user.delete() + //signOut } } // MARK: SIGN IN SSO +public protocol AuthWithSSOProtocol { + func signIn(provider: AuthProviderOption) async throws -> SignInRequest +} + extension AuthenticationManager: AuthWithSSOProtocol { - - @discardableResult - public func signIn(provider: AuthSSOOption) async throws -> AuthDataResponse { + public func signIn(provider: AuthProviderOption) async throws -> SignInRequest { let authProvider: AuthProvider = switch provider { case .google: GoogleAuthenticationProvider() @@ -50,7 +34,6 @@ extension AuthenticationManager: AuthWithSSOProtocol { AppleAuthenticationProvider() } - let authDataResult = try await Auth.auth().signIn(with: authProvider.credential()) - return AuthDataResponse(user: authDataResult.user) + return try await authProvider.signIn() } } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResponse.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResponse.swift deleted file mode 100644 index edfab9e..0000000 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResponse.swift +++ /dev/null @@ -1,14 +0,0 @@ -import Foundation -import FirebaseAuth - -public struct AuthDataResponse { - public let uid: String - public let email: String? - public let photoUrl: String? - - public init(user: User) { - self.uid = user.uid - self.email = user.email - self.photoUrl = user.photoURL?.absoluteString - } -} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInRequest.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInRequest.swift new file mode 100644 index 0000000..a54a516 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInRequest.swift @@ -0,0 +1,13 @@ +// +// SignInRequest.swift +// Auth +// +// Created by Berkay Tuncel on 15.08.2024. +// + +import Foundation + +public struct SignInRequest { + public let accessToken: String + public let type: String +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/RegisterResponse.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInResponse.swift similarity index 64% rename from SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/RegisterResponse.swift rename to SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInResponse.swift index 92bb466..0da0c99 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/RegisterResponse.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInResponse.swift @@ -1,5 +1,5 @@ // -// RegisterResponse.swift +// SignInResponse.swift // Auth // // Created by Berkay Tuncel on 11.08.2024. @@ -7,7 +7,7 @@ import Foundation -public struct RegisterResponse: Codable { +public struct SignInResponse: Decodable, Equatable { public let type: String public let token: String } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift deleted file mode 100644 index d3a99fd..0000000 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift +++ /dev/null @@ -1,5 +0,0 @@ -import Foundation - -public protocol AuthWithSSOProtocol { - func signIn(provider: AuthSSOOption) async throws -> AuthDataResponse -} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 54bcd09..897ac3f 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -58,13 +58,17 @@ public extension View { } } -public extension View { +public extension Binding where Value == Bool { + var negated: Binding { + return Binding( + get: { !self.wrappedValue }, + set: { self.wrappedValue = !$0 } + ) + } +} +public extension View { func withLoginButtonFormatting() -> some View { modifier(LoginButtonViewModifier()) } - - func withLoginTextFieldFormatting(borderColor: Color) -> some View { - modifier(LoginTextFieldModifier(borderColor: borderColor)) - } } diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift index b38bd2b..3cc2a42 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift @@ -10,27 +10,11 @@ import SwiftUI struct LoginButtonViewModifier: ViewModifier { func body(content: Content) -> some View { content - .font(.headline) + .font(.title2) + .fontWeight(.medium) .foregroundColor(.white) .frame(height: 55) .frame(maxWidth: .infinity) .background(DesignAsset.loginStrokeColor.swiftUIColor) } } - -struct LoginTextFieldModifier: ViewModifier { - - let borderColor: Color - - func body(content: Content) -> some View { - content - .textInputAutocapitalization(.never) - .fontWeight(.bold) - .frame(height: 55) - .padding(.horizontal) - .background( - RoundedRectangle(cornerRadius: 4) - .stroke(borderColor, lineWidth: 2) - ) - } -} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift index 947a942..6076ff8 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift @@ -1,25 +1,37 @@ import Foundation +import Combine import Auth import Network @MainActor final class AuthenticationViewModel: ObservableObject { + @Published public private(set) var userInfo: SignInResponse? + private let authManager: AuthWithSSOProtocol + private let loginDataService = LoginDataService() + private var cancellables = Set() - init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { + public init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { self.authManager = authManager + addSubscribers() } - func signIn(provider: AuthSSOOption) async throws { - let authData = try await authManager.signIn(provider: provider) - NetworkManager.shared.loginRequest(registerType: provider, accessToken: authData.uid) { response in - switch response { - case .success(let success): - debugPrint(success.type) - debugPrint(success.token) - case .failure(let failure): - debugPrint(failure.localizedDescription) + private func addSubscribers() { + loginDataService.$userInfo + .sink { [weak self] userInfo in + self?.userInfo = userInfo } + .store(in: &cancellables) + } + + func signIn(provider: AuthProviderOption) { + Task { + try await signIn(provider: provider) } } + + private func signIn(provider: AuthProviderOption) async throws { + let signInRequest = try await authManager.signIn(provider: provider) + loginDataService.loginRequest(with: signInRequest) + } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift index 0885e68..e539c99 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift @@ -3,37 +3,34 @@ import Design import Auth public struct AuthenticationView: View { - @StateObject private var viewModel = AuthenticationViewModel() - @Binding private var showSignInView: Bool + @Binding private var isLoggedIn: Bool - public init(showSignInView: Binding) { - self._showSignInView = showSignInView + public init(isLoggedIn: Binding) { + _isLoggedIn = isLoggedIn } public var body: some View { - ScrollView { - VStack(spacing: 20) { - swiftBuddiesImage - - Group { - googleSignInButton - appleSignInButton - } - .clipShape(Capsule()) - - Spacer() + VStack(spacing: 20) { + swiftBuddies + .padding(.bottom) + + Group { + googleSignInButton + appleSignInButton } - .padding() - .frame(maxWidth: 375) + .clipShape(Capsule()) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .padding() + .onChange(of: viewModel.userInfo) { _, newValue in + isLoggedIn = newValue != nil } - .scrollIndicators(.hidden) - .onTapGesture(perform: endTextEditing) } } extension AuthenticationView { - private var swiftBuddiesImage: some View { + private var swiftBuddies: some View { DesignAsset.swiftBuddiesImage.swiftUIImage .resizable() .aspectRatio(1, contentMode: .fit) @@ -42,32 +39,18 @@ extension AuthenticationView { private var googleSignInButton: some View { Button { - Task { - do { - try await viewModel.signIn(provider: .google) - showSignInView = false - } catch { - debugPrint(error) - } - } + viewModel.signIn(provider: .google) } label: { - Text("Sign In With Google") + Text("Sign in with Google") .withLoginButtonFormatting() } } private var appleSignInButton: some View { Button(action: { - Task { - do { - try await viewModel.signIn(provider: .apple) - showSignInView = false - } catch { - debugPrint(error) - } - } + viewModel.signIn(provider: .apple) }, label: { - SignInWithAppleButtonViewRepresentable(type: .default, style: .black) + SignInWithAppleButtonViewRepresentable(type: .default, style: .white) .allowsHitTesting(false) .withLoginButtonFormatting() }) @@ -75,5 +58,5 @@ extension AuthenticationView { } #Preview { - AuthenticationView(showSignInView: .constant(true)) + AuthenticationView(isLoggedIn: .constant(false)) } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift index e210d9b..6120a58 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift @@ -8,16 +8,6 @@ import Foundation import Auth -protocol EndpointProtocol { - var baseURL: String { get } - var path: String { get } - var method: HTTPMethod { get } - var header: [String: String]? { get } - var parameters: [String: Any]? { get } - - func request() -> URLRequest -} - enum HTTPMethod: String { case get = "GET" case post = "POST" @@ -26,7 +16,17 @@ enum HTTPMethod: String { } enum Endpoint { - case loginRequest(registerType: AuthSSOOption, accessToken: String) + case loginRequest(registerType: String, accessToken: String) +} + +protocol EndpointProtocol { + var baseURL: String { get } + var path: String { get } + var method: HTTPMethod { get } + var header: [String: String]? { get } + var parameters: [String: Any]? { get } + + func request() -> URLRequest } extension Endpoint: EndpointProtocol { @@ -53,7 +53,7 @@ extension Endpoint: EndpointProtocol { var parameters: [String: Any]? { if case .loginRequest(let registerType, let accessToken) = self { - return ["registerType": registerType.rawValue, "accessToken": accessToken] + return ["registerType": registerType, "accessToken": accessToken] } return nil diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift index 0c35cf2..de7c3fe 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift @@ -6,40 +6,47 @@ // import Foundation +import Combine import Auth public final class NetworkManager { - public static let shared = NetworkManager() - private init() {} - private func request(_ endpoint: Endpoint, completion: @escaping (Result) -> Void) { - URLSession.shared.dataTask(with: endpoint.request()) { data, response, error in - if let error = error { - completion(.failure(error)) - } - - guard let response = response as? HTTPURLResponse, response.statusCode >= 200, response.statusCode <= 299 else { - completion(.failure(NSError(domain: "Invalid Response", code: 0))) - return - } - - guard let data = data else { - completion(.failure(NSError(domain: "Invalid Data Response", code: 0))) - return - } - - do { - let decodedData = try JSONDecoder().decode(T.self, from: data) - completion(.success(decodedData)) - } catch let error { - completion(.failure(error)) + public init() {} + + enum NetworkingError: LocalizedError { + case badURLResponse(urlString: String) + case unknown + + var errorDescription: String { + switch self { + case .badURLResponse(urlString: let url): "[🔥] Bad response from URL: \(url)" + case .unknown: "[⚠️] Unknown error occured." } } - .resume() } - public func loginRequest(registerType: AuthSSOOption, accessToken: String, completion: @escaping (Result) -> Void) { - let endpoint = Endpoint.loginRequest(registerType: registerType, accessToken: accessToken) - request(endpoint, completion: completion) + public static func download(request: URLRequest) -> AnyPublisher { + return URLSession.shared.dataTaskPublisher(for: request) + .tryMap({ try handleURLResponse(output: $0, url: request.url) }) + .retry(3) + .eraseToAnyPublisher() + } + + private static func handleURLResponse(output: URLSession.DataTaskPublisher.Output, url: URL?) throws -> Data { + guard let response = output.response as? HTTPURLResponse, + response.statusCode >= 200 && response.statusCode < 300 else { + throw NetworkingError.badURLResponse(urlString: url?.description ?? "") + } + + return output.data + } + + public static func handleCompletion(completion: Subscribers.Completion) { + switch completion { + case .finished: + break + case .failure(let error): + print(error.localizedDescription) + } } } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Services/LoginDataService.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Services/LoginDataService.swift new file mode 100644 index 0000000..4f0019f --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Services/LoginDataService.swift @@ -0,0 +1,36 @@ +// +// LoginDataService.swift +// SwiftBuddiesIOS +// +// Created by Berkay Tuncel on 15.08.2024. +// + +import Foundation +import Combine +import Auth + +@MainActor +public final class LoginDataService { + @Published public private(set) var userInfo: SignInResponse? + + private var userSubscription: AnyCancellable? + + public init() {} + + public func loginRequest(with signInRequest: SignInRequest) { + let endpoint = Endpoint.loginRequest( + registerType: signInRequest.type, + accessToken: signInRequest.accessToken + ) + loginRequest(endpoint: endpoint) + } + + private func loginRequest(endpoint: Endpoint) { + userSubscription = NetworkManager.download(request: endpoint.request()) + .decode(type: SignInResponse.self, decoder: JSONDecoder()) + .receive(on: DispatchQueue.main) + .sink(receiveCompletion: NetworkManager.handleCompletion) { [weak self] userInfoResponse in + self?.userInfo = userInfoResponse + } + } +} diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift index 2fa71e0..fc58756 100644 --- a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift @@ -3,7 +3,6 @@ import Auth @MainActor final class SettingsViewModel: ObservableObject { - func signOut() throws { try AuthenticationManager.shared.signOut() } From c321ded21d85c7986e6ef829c8d92e03485b268a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sat, 14 Sep 2024 18:13:24 +0300 Subject: [PATCH 058/126] Update projet file --- Project.swift | 307 ++++++++++++++++++++++++++------------------------ 1 file changed, 159 insertions(+), 148 deletions(-) diff --git a/Project.swift b/Project.swift index af4acd3..c9b9d81 100644 --- a/Project.swift +++ b/Project.swift @@ -20,129 +20,6 @@ extension Target { } } -let localizationModule = Target.featureTarget( - name: "Localization", - productName: "Localization", - dependencies: [], - hasResources: true -) - -let designModule = Target.featureTarget( - name: "Design", - productName: "Design", - dependencies: [.target(localizationModule)], - hasResources: true -) - -let authModule = Target.featureTarget( - name: "Auth", - productName: "Auth", - dependencies: [ - .package(product: "GoogleSignIn", type: .runtime, condition: .none) - ] -) - -let networkModule = Target.featureTarget( - name: "Network", - productName: "Network", - dependencies: [ - .target(authModule), - .package(product: "GoogleSignIn", type: .runtime, condition: .none) - ] -) - -let localicationCodegen = Target.target( - name: "LocalizationCodegen", - destinations: .macOS, - product: .commandLineTool, - productName: "LocalizationCodegen", - bundleId: "com.swiftbuddies.localization", - sources: ["SwiftBuddiesIOS/Targets/ScriptsModule/LocalizationCodegen/**"], - scripts: [], - dependencies: [.package(product: "ArgumentParser", type: .runtime, condition: .none)], - coreDataModels: [], - environmentVariables: [:], - launchArguments: [], - additionalFiles: [], - buildRules: [], - mergedBinaryType: .automatic, - mergeable: false -) - - - -//let scriptsModule = Target.target( -// name: "Scripts", -// destinations: .macOS, -// product: .staticFramework, -// productName: "Scripts", -// bundleId: "com.swiftbuddies.scripts", -// deploymentTargets: nil, -// infoPlist: nil, -// -// sources: ["SwiftBuddiesIOS/Targets/ScriptsModule/**"], -// resources: nil, -// copyFiles: nil, -// headers: nil, -// entitlements: nil, -// scripts: [], -// dependencies: [.target(localicationCodegen)], -// settings: nil, -// coreDataModels: [], -// environmentVariables: [:], -// launchArguments: [], -// additionalFiles: [], -// buildRules: [], -// mergedBinaryType: .automatic, -// mergeable: false -//) - -let onboardingModule = Target.featureTarget( - name: "Onboarding", - productName: "Onboarding", - dependencies: [.target(designModule)] -) - -let loginModule = Target.featureTarget( - name: "Login", - productName: "Login", - dependencies: [ - .target(designModule), - .target(authModule), - .target(networkModule), - .package(product: "GoogleSignIn", type: .runtime, condition: .none) - ] -) - -let feedModule = Target.featureTarget( - name: "Feed", - productName: "Feed", - dependencies: [.target(designModule)] -) - -let mapModule = Target.featureTarget( - name: "Map", - productName: "Map", - dependencies: [.target(designModule)] -) - -let profileModule = Target.featureTarget( - name: "Profile", - productName: "Profile", - dependencies: [ - .target(designModule), - .target(authModule), - .package(product: "GoogleSignIn", type: .runtime, condition: .none) - ] -) - -let contributorsModule = Target.featureTarget( - name: "Contributors", - productName: "Contributors", - dependencies: [.target(designModule)] -) - - let project = Project( name: "Buddies", packages: [ @@ -154,7 +31,7 @@ let project = Project( name: "SwiftBuddiesIOS", destinations: .iOS, product: .app, - bundleId: "io.tuist.SwiftBuddiesIOS", + bundleId: "com.swiftbuddies.SwiftBuddiesIOS", infoPlist: .extendingDefault( with: [ "CFBundleShortVersionString": "1.0", @@ -172,31 +49,165 @@ let project = Project( resources: ["SwiftBuddiesIOS/Resources/**"], dependencies: [ .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .target(designModule), - .target(authModule), - .target(onboardingModule), - .target(loginModule), - .target(feedModule), - .target(mapModule), - .target(profileModule), - .target(contributorsModule), - .target(networkModule), -// .target(scriptsModule), -// .target(localicationCodegen) - .target(localizationModule) + .target(Modules.design.target), + .target(Modules.auth.target), + .target(Modules.onboarding.target), + .target(Modules.login.target), + .target(Modules.feed.target), + .target(Modules.map.target), + .target(Modules.profile.target), + .target(Modules.contributors.target), + .target(Modules.network.target), + .target(Modules.localization.target) ] ), - designModule, - authModule, - onboardingModule, - loginModule, - feedModule, - mapModule, - profileModule, - contributorsModule, - networkModule, -// scriptsModule, - localizationModule, - localicationCodegen + Modules.design.target, + Modules.auth.target, + Modules.onboarding.target, + Modules.login.target, + Modules.feed.target, + Modules.map.target, + Modules.profile.target, + Modules.contributors.target, + Modules.network.target, + Modules.localization.target, + Modules.localicationCodegen ] ) + +enum Modules: CaseIterable { + case localization + case design + case network + case auth + case onboarding + case login + case feed + case map + case profile + case contributors + + var target: Target { + switch self { + case .localization: + Target.featureTarget( + name: "Localization", + productName: "Localization", + dependencies: [], + hasResources: true + ) + case .design: + Target.featureTarget( + name: "Design", + productName: "Design", + dependencies: [.target(Modules.localization.target)], + hasResources: true + ) + case .network: + Target.featureTarget( + name: "Network", + productName: "Network", + dependencies: [] + ) + case .auth: + Target.featureTarget( + name: "Auth", + productName: "Auth", + dependencies: [ + .target(Modules.network.target), + .package(product: "GoogleSignIn", type: .runtime, condition: .none) + ] + ) + case .onboarding: + Target.featureTarget( + name: "Onboarding", + productName: "Onboarding", + dependencies: [.target(Modules.design.target)] + ) + case .login: + Target.featureTarget( + name: "Login", + productName: "Login", + dependencies: [ + .target(Modules.design.target), + .target(Modules.auth.target), + .target(Modules.network.target), + .package(product: "GoogleSignIn", type: .runtime, condition: .none) + ] + ) + case .feed: + Target.featureTarget( + name: "Feed", + productName: "Feed", + dependencies: [.target(Modules.design.target)] + ) + case .map: + Target.featureTarget( + name: "Map", + productName: "Map", + dependencies: [.target(Modules.design.target)] + ) + case .profile: + Target.featureTarget( + name: "Profile", + productName: "Profile", + dependencies: [ + .target(Modules.design.target), + .target(Modules.auth.target), + .target(Modules.network.target), + .package(product: "GoogleSignIn", type: .runtime, condition: .none) + ] + ) + case .contributors: + Target.featureTarget( + name: "Contributors", + productName: "Contributors", + dependencies: [.target(Modules.design.target)] + ) + } + } + + static let localicationCodegen = Target.target( + name: "LocalizationCodegen", + destinations: .macOS, + product: .commandLineTool, + productName: "LocalizationCodegen", + bundleId: "com.swiftbuddies.localization", + sources: ["SwiftBuddiesIOS/Targets/ScriptsModule/LocalizationCodegen/**"], + scripts: [], + dependencies: [.package(product: "ArgumentParser", type: .runtime, condition: .none)], + coreDataModels: [], + environmentVariables: [:], + launchArguments: [], + additionalFiles: [], + buildRules: [], + mergedBinaryType: .automatic, + mergeable: false + ) +} + +//let scriptsModule = Target.target( +// name: "Scripts", +// destinations: .macOS, +// product: .staticFramework, +// productName: "Scripts", +// bundleId: "com.swiftbuddies.scripts", +// deploymentTargets: nil, +// infoPlist: nil, +// +// sources: ["SwiftBuddiesIOS/Targets/ScriptsModule/**"], +// resources: nil, +// copyFiles: nil, +// headers: nil, +// entitlements: nil, +// scripts: [], +// dependencies: [.target(localicationCodegen)], +// settings: nil, +// coreDataModels: [], +// environmentVariables: [:], +// launchArguments: [], +// additionalFiles: [], +// buildRules: [], +// mergedBinaryType: .automatic, +// mergeable: false +//) From 31788aedfc6e763f178d7a3eaef905e5e3b913bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sat, 14 Sep 2024 19:16:06 +0300 Subject: [PATCH 059/126] Initialize BuddiesNetwork --- Project.swift | 8 +- .../Sources/SwiftBuddiesIOSApp.swift | 27 ++++++ .../ViewModels/AuthenticationViewModel.swift | 14 +-- .../Sources/BuddiesClient/BuddiesClient.swift | 39 +++++++++ .../NetworkModule/Sources/Endpoint.swift | 87 ------------------- .../BuddiesInterceptorProvider.swift | 62 +++++++++++++ .../Sources/NetworkManager.swift | 52 ----------- .../Sources/Services/LoginDataService.swift | 36 -------- 8 files changed, 141 insertions(+), 184 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift delete mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift delete mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift delete mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/Services/LoginDataService.swift diff --git a/Project.swift b/Project.swift index c9b9d81..51bd5ee 100644 --- a/Project.swift +++ b/Project.swift @@ -24,7 +24,8 @@ let project = Project( name: "Buddies", packages: [ .remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0")), - .remote(url: "https://github.com/apple/swift-argument-parser.git", requirement: .exact("1.3.0")) + .remote(url: "https://github.com/apple/swift-argument-parser.git", requirement: .exact("1.3.0")), + .remote(url: "https://github.com/darkbringer1/BuddiesNetwork.git", requirement: .branch("main")) ], targets: [ .target( @@ -49,6 +50,7 @@ let project = Project( resources: ["SwiftBuddiesIOS/Resources/**"], dependencies: [ .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "BuddiesNetwork", type: .runtime, condition: .none), .target(Modules.design.target), .target(Modules.auth.target), .target(Modules.onboarding.target), @@ -107,7 +109,9 @@ enum Modules: CaseIterable { Target.featureTarget( name: "Network", productName: "Network", - dependencies: [] + dependencies: [ + .package(product: "BuddiesNetwork", type: .runtime, condition: .none) + ] ) case .auth: Target.featureTarget( diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 8b1b128..2173bc4 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -1,5 +1,6 @@ import SwiftUI import GoogleSignIn +import Network @main struct SwiftBuddiesIOSApp: App { @@ -13,11 +14,37 @@ struct SwiftBuddiesIOSApp: App { } class AppDelegate: NSObject, UIApplicationDelegate { + var dependencyContainer: DependencyContainer! + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { if let clientID = Bundle.main.object(forInfoDictionaryKey: "CLIENT_ID") as? String { let signInConfig = GIDConfiguration(clientID: clientID) GIDSignIn.sharedInstance.configuration = signInConfig } + + dependencyContainer = DependencyContainer() + dependencyContainer.build(launchOptions) return true } } + +public class DependencyContainer { + @MainActor + func build(_ launchOptions: [UIApplication.LaunchOptionsKey: Any]?) { + let interceptorProvider: BuddiesInterceptorProvider = BuddiesInterceptorProvider( + client: .init( + sessionConfiguration: .default + ) + ) + + let buddiesChainNetworkTransport = BuddiesRequestChainNetworkTransport.getChainNetworkTransport( + interceptorProvider: interceptorProvider + ) + + let buddiesClient = BuddiesClient( + networkTransporter: buddiesChainNetworkTransport + ) + + BuddiesClient.shared = buddiesClient + } +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift index 6076ff8..3a1266f 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift @@ -8,7 +8,7 @@ final class AuthenticationViewModel: ObservableObject { @Published public private(set) var userInfo: SignInResponse? private let authManager: AuthWithSSOProtocol - private let loginDataService = LoginDataService() +// private let loginDataService = LoginDataService() private var cancellables = Set() public init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { @@ -17,11 +17,11 @@ final class AuthenticationViewModel: ObservableObject { } private func addSubscribers() { - loginDataService.$userInfo - .sink { [weak self] userInfo in - self?.userInfo = userInfo - } - .store(in: &cancellables) +// loginDataService.$userInfo +// .sink { [weak self] userInfo in +// self?.userInfo = userInfo +// } +// .store(in: &cancellables) } func signIn(provider: AuthProviderOption) { @@ -32,6 +32,6 @@ final class AuthenticationViewModel: ObservableObject { private func signIn(provider: AuthProviderOption) async throws { let signInRequest = try await authManager.signIn(provider: provider) - loginDataService.loginRequest(with: signInRequest) +// loginDataService.loginRequest(with: signInRequest) } } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift new file mode 100644 index 0000000..473cb9b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift @@ -0,0 +1,39 @@ +// +// BuddiesClient.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 14.09.2024. +// + +import Foundation +import BuddiesNetwork + +final public class BuddiesClient { + private let apiClient: APIClient + + public static var shared: BuddiesClient! + + public init(networkTransporter: NetworkTransportProtocol) { + apiClient = .init(networkTransporter: networkTransporter) + } + + public func perform( + _ request: Request, + dispatchQueue: DispatchQueue = .main, + completion: @escaping (Result) -> Void + ) { + apiClient.perform( + request, + dispatchQueue: dispatchQueue, + completion: completion + ) + } + + @discardableResult + public func perform( + _ request: Request, + dispatchQueue: DispatchQueue = .main + ) async throws -> Request.Data { + try await apiClient.perform(request, dispatchQueue: dispatchQueue) + } +} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift deleted file mode 100644 index 6120a58..0000000 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Endpoint.swift +++ /dev/null @@ -1,87 +0,0 @@ -// -// Endpoint.swift -// Auth -// -// Created by Berkay Tuncel on 10.08.2024. -// - -import Foundation -import Auth - -enum HTTPMethod: String { - case get = "GET" - case post = "POST" - case delete = "DELETE" - case patch = "PATCH" -} - -enum Endpoint { - case loginRequest(registerType: String, accessToken: String) -} - -protocol EndpointProtocol { - var baseURL: String { get } - var path: String { get } - var method: HTTPMethod { get } - var header: [String: String]? { get } - var parameters: [String: Any]? { get } - - func request() -> URLRequest -} - -extension Endpoint: EndpointProtocol { - var baseURL: String { "https://swiftbuddies.vercel.app" } - - var path: String { - switch self { - case .loginRequest: - return "/api/register" - } - } - - var method: HTTPMethod { - switch self { - case .loginRequest: - return .post - } - } - - var header: [String: String]? { - let header: [String: String] = ["Content-type": "application/json; charset=UTF-8"] - return header - } - - var parameters: [String: Any]? { - if case .loginRequest(let registerType, let accessToken) = self { - return ["registerType": registerType, "accessToken": accessToken] - } - - return nil - } - - func request() -> URLRequest { - guard var components = URLComponents(string: baseURL) else { fatalError("URL error") } - - components.path = path - - var request = URLRequest(url: components.url!) - request.httpMethod = method.rawValue - - if let header = header { - for (key, value) in header { - request.setValue(value, forHTTPHeaderField: key) - } - } - - if let parameters { - do { - let data = try JSONSerialization.data(withJSONObject: parameters) - request.httpBody = data - } catch { - print(error.localizedDescription) - } - } - - return request - } -} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift new file mode 100644 index 0000000..a199676 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift @@ -0,0 +1,62 @@ +// +// BuddiesInterceptorProvider.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 14.09.2024. +// + +import Foundation +import BuddiesNetwork + +public final class BuddiesInterceptorProvider: InterceptorProvider { + let client: URLSessionClient + + public init(client: URLSessionClient) { + self.client = client + } + + public var currentToken: () -> String? = { +// KeychainManager.shared.get(key: .accessToken) + "" + } + + public func interceptors(for request: some Requestable) -> [Interceptor] { + [ + MaxRetryInterceptor(maxRetry: 3), + TokenProviderInterceptor(currentToken: currentToken), + NetworkFetchInterceptor(client: client) + ] + } + + public func additionalErrorHandler(for request: some Requestable) -> (any ChainErrorHandler)? { + AuthenticationErrorHandler() + } +} + +class AuthenticationErrorHandler: ChainErrorHandler { + func handleError( + error: any Error, + chain: any RequestChain, + request: HTTPRequest, + response: HTTPResponse?, + completion: @escaping (Result) -> Void + ) where Request: Requestable { + if response?.httpResponse.statusCode == 401 { + Task { @MainActor in +// try await Authenticator.shared.logout() + // TODO: Auto renew token request + chain.cancel() + } + } else { + completion(.failure(error)) + } + } +} + +public final class BuddiesRequestChainNetworkTransport { + public static func getChainNetworkTransport( + interceptorProvider: some InterceptorProvider + ) -> any NetworkTransportProtocol { + return DefaultRequestChainNetworkTransport(interceptorProvider: interceptorProvider) + } +} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift deleted file mode 100644 index de7c3fe..0000000 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/NetworkManager.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// NetworkManager.swift -// Auth -// -// Created by Berkay Tuncel on 10.08.2024. -// - -import Foundation -import Combine -import Auth - -public final class NetworkManager { - - public init() {} - - enum NetworkingError: LocalizedError { - case badURLResponse(urlString: String) - case unknown - - var errorDescription: String { - switch self { - case .badURLResponse(urlString: let url): "[🔥] Bad response from URL: \(url)" - case .unknown: "[⚠️] Unknown error occured." - } - } - } - - public static func download(request: URLRequest) -> AnyPublisher { - return URLSession.shared.dataTaskPublisher(for: request) - .tryMap({ try handleURLResponse(output: $0, url: request.url) }) - .retry(3) - .eraseToAnyPublisher() - } - - private static func handleURLResponse(output: URLSession.DataTaskPublisher.Output, url: URL?) throws -> Data { - guard let response = output.response as? HTTPURLResponse, - response.statusCode >= 200 && response.statusCode < 300 else { - throw NetworkingError.badURLResponse(urlString: url?.description ?? "") - } - - return output.data - } - - public static func handleCompletion(completion: Subscribers.Completion) { - switch completion { - case .finished: - break - case .failure(let error): - print(error.localizedDescription) - } - } -} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Services/LoginDataService.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Services/LoginDataService.swift deleted file mode 100644 index 4f0019f..0000000 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/Services/LoginDataService.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// LoginDataService.swift -// SwiftBuddiesIOS -// -// Created by Berkay Tuncel on 15.08.2024. -// - -import Foundation -import Combine -import Auth - -@MainActor -public final class LoginDataService { - @Published public private(set) var userInfo: SignInResponse? - - private var userSubscription: AnyCancellable? - - public init() {} - - public func loginRequest(with signInRequest: SignInRequest) { - let endpoint = Endpoint.loginRequest( - registerType: signInRequest.type, - accessToken: signInRequest.accessToken - ) - loginRequest(endpoint: endpoint) - } - - private func loginRequest(endpoint: Endpoint) { - userSubscription = NetworkManager.download(request: endpoint.request()) - .decode(type: SignInResponse.self, decoder: JSONDecoder()) - .receive(on: DispatchQueue.main) - .sink(receiveCompletion: NetworkManager.handleCompletion) { [weak self] userInfoResponse in - self?.userInfo = userInfoResponse - } - } -} From 04aac851420d4f5b83399f687342502bb544e894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sat, 14 Sep 2024 21:18:38 +0300 Subject: [PATCH 060/126] Add backend request after signin/register --- SwiftBuddiesIOS/Sources/RootView.swift | 3 +- .../Sources/SwiftBuddiesIOSApp.swift | 13 +++- .../Managers/AuthenticationManager.swift | 48 ++++++++++++- .../ViewModels/AuthenticationViewModel.swift | 25 ++----- .../Sources/Views/AuthenticationView.swift | 29 ++++---- .../EndpointManager/EndpointManager.swift | 71 +++++++++++++++++++ 6 files changed, 148 insertions(+), 41 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift index f046066..ef2fe9c 100644 --- a/SwiftBuddiesIOS/Sources/RootView.swift +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -1,5 +1,4 @@ import SwiftUI -import Auth import Login import Onboarding import Design @@ -29,7 +28,7 @@ struct RootView: View { isLoggedIn = false } .fullScreenCover(isPresented: $isLoggedIn.negated, content: { - AuthenticationView(isLoggedIn: $isLoggedIn) + AuthenticationView() }) } else { OnboardingBuilder.build() diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 2173bc4..043a78e 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -5,6 +5,9 @@ import Network @main struct SwiftBuddiesIOSApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate + + init() { + } var body: some Scene { WindowGroup { @@ -28,17 +31,20 @@ class AppDelegate: NSObject, UIApplicationDelegate { } } -public class DependencyContainer { +public class DependencyContainer: ObservableObject { + + var buddiesNetwork: BuddiesClient! + @MainActor func build(_ launchOptions: [UIApplication.LaunchOptionsKey: Any]?) { - let interceptorProvider: BuddiesInterceptorProvider = BuddiesInterceptorProvider( + let buddiesInterceptorProvider = BuddiesInterceptorProvider( client: .init( sessionConfiguration: .default ) ) let buddiesChainNetworkTransport = BuddiesRequestChainNetworkTransport.getChainNetworkTransport( - interceptorProvider: interceptorProvider + interceptorProvider: buddiesInterceptorProvider ) let buddiesClient = BuddiesClient( @@ -46,5 +52,6 @@ public class DependencyContainer { ) BuddiesClient.shared = buddiesClient + self.buddiesNetwork = BuddiesClient.shared } } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift index 829c696..1d2b92f 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift @@ -1,4 +1,6 @@ import Foundation +import BuddiesNetwork +import Network public enum AuthProviderOption: String { case google, apple @@ -22,11 +24,11 @@ public final class AuthenticationManager { // MARK: SIGN IN SSO public protocol AuthWithSSOProtocol { - func signIn(provider: AuthProviderOption) async throws -> SignInRequest + func signIn(provider: AuthProviderOption) async throws } extension AuthenticationManager: AuthWithSSOProtocol { - public func signIn(provider: AuthProviderOption) async throws -> SignInRequest { + public func signIn(provider: AuthProviderOption) async throws { let authProvider: AuthProvider = switch provider { case .google: GoogleAuthenticationProvider() @@ -34,6 +36,46 @@ extension AuthenticationManager: AuthWithSSOProtocol { AppleAuthenticationProvider() } - return try await authProvider.signIn() + let credentials = try await authProvider.signIn() + + await BuddiesAuthentication.registerUser(signInRequest: credentials) + } +} + +public final class BuddiesAuthentication { + + static let apiClient: BuddiesClient = .shared + + public static func registerUser(signInRequest: SignInRequest) async { + let request = RegisterRequest( + accessToken: signInRequest.accessToken, + registerType: signInRequest.type + ) + + do { + let data = try await apiClient.perform(request) + + } catch { + debugPrint(error) + } + // save to keychain + } +} + +struct RegisterRequest: Requestable { + var accessToken: String + var registerType: String + + struct Data: Decodable { + let token: String + let type: String + } + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .post, + url: APIs.Login.register.url(), + data: self + ) } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift index 3a1266f..3ea0260 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift @@ -2,36 +2,21 @@ import Foundation import Combine import Auth import Network +import BuddiesNetwork @MainActor final class AuthenticationViewModel: ObservableObject { - @Published public private(set) var userInfo: SignInResponse? - + private let apiClient: BuddiesClient private let authManager: AuthWithSSOProtocol -// private let loginDataService = LoginDataService() - private var cancellables = Set() public init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { self.authManager = authManager - addSubscribers() - } - - private func addSubscribers() { -// loginDataService.$userInfo -// .sink { [weak self] userInfo in -// self?.userInfo = userInfo -// } -// .store(in: &cancellables) + self.apiClient = .shared } - func signIn(provider: AuthProviderOption) { + func signIn(provider: AuthProviderOption) throws { Task { - try await signIn(provider: provider) + try await authManager.signIn(provider: provider) } } - - private func signIn(provider: AuthProviderOption) async throws { - let signInRequest = try await authManager.signIn(provider: provider) -// loginDataService.loginRequest(with: signInRequest) - } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift index e539c99..957e11e 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift @@ -4,10 +4,8 @@ import Auth public struct AuthenticationView: View { @StateObject private var viewModel = AuthenticationViewModel() - @Binding private var isLoggedIn: Bool - - public init(isLoggedIn: Binding) { - _isLoggedIn = isLoggedIn + + public init() { } public var body: some View { @@ -23,9 +21,6 @@ public struct AuthenticationView: View { } .frame(maxWidth: .infinity, maxHeight: .infinity) .padding() - .onChange(of: viewModel.userInfo) { _, newValue in - isLoggedIn = newValue != nil - } } } @@ -39,7 +34,11 @@ extension AuthenticationView { private var googleSignInButton: some View { Button { - viewModel.signIn(provider: .google) + do { + try viewModel.signIn(provider: .google) + } catch { + debugPrint(error) + } } label: { Text("Sign in with Google") .withLoginButtonFormatting() @@ -47,16 +46,20 @@ extension AuthenticationView { } private var appleSignInButton: some View { - Button(action: { - viewModel.signIn(provider: .apple) - }, label: { + Button { + do { + try viewModel.signIn(provider: .apple) + } catch { + debugPrint(error) + } + } label: { SignInWithAppleButtonViewRepresentable(type: .default, style: .white) .allowsHitTesting(false) .withLoginButtonFormatting() - }) + } } } #Preview { - AuthenticationView(isLoggedIn: .constant(false)) + AuthenticationView() } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift new file mode 100644 index 0000000..092c217 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift @@ -0,0 +1,71 @@ +// +// EndpointManager.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 14.09.2024. +// + +import Foundation + +public enum APIs { + /// if you need to add a new endpoint see the example below + public enum Login: Endpoint { + case register + + public var value: String { + switch self { + case .register: "register" + } + } + } +} + +extension Endpoint { + /// Use this function to create an URL for network requests. + /// - Parameter host: Host that which base url to be used for the request. + /// - Returns: Returns URL with provided endpoint and selected Host. + /** + An example use scenario: + + let url: URL = APIs.Claim.uploadFile.url(.prod) + + */ + public func url(_ host: Hosts = .qa) -> URL { + host.env.url(path: self) + } +} + +protocol Host { + static var baseUrl: URL { get } +} + +// swiftlint: disable all +public enum Hosts { + struct Prod: Host { + static let baseUrl: URL = URL(string: "https://swiftbuddies.vercel.app/api/")! + } + + struct Qa: Host { + static let baseUrl: URL = URL(string: "https://swiftbuddies.vercel.app/api/")! + } + + case prod + case qa + + var env: Host { + switch self { + case .prod: Prod() + case .qa: Qa() + } + } +} + +fileprivate extension Host { + func url(path: any Endpoint) -> URL { + Self.baseUrl.appending(path: path.value) + } +} + +public protocol Endpoint { + var value: String { get } +} From 726a4ec9af7ffc3caa011da809a53bdea2ab3bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Tue, 17 Sep 2024 16:55:53 +0300 Subject: [PATCH 061/126] Fix access token getter Add - Keychain manager --- .../Sources/SwiftBuddiesIOSApp.swift | 10 ++- .../AuthenticationManager.swift | 7 +- .../KeychainManager/KeychainManager.swift | 80 +++++++++++++++++++ .../BuddiesInterceptorProvider.swift | 53 ++++++++++-- 4 files changed, 138 insertions(+), 12 deletions(-) rename SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/{ => AuthManager}/AuthenticationManager.swift (90%) create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/KeychainManager/KeychainManager.swift diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 043a78e..5d708d1 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -1,6 +1,7 @@ import SwiftUI import GoogleSignIn import Network +import Auth @main struct SwiftBuddiesIOSApp: App { @@ -26,7 +27,9 @@ class AppDelegate: NSObject, UIApplicationDelegate { } dependencyContainer = DependencyContainer() - dependencyContainer.build(launchOptions) + dependencyContainer.build(launchOptions) { + KeychainManager.shared.get(key: .accessToken) + } return true } } @@ -36,11 +39,12 @@ public class DependencyContainer: ObservableObject { var buddiesNetwork: BuddiesClient! @MainActor - func build(_ launchOptions: [UIApplication.LaunchOptionsKey: Any]?) { + func build(_ launchOptions: [UIApplication.LaunchOptionsKey: Any]?, accessToken: @escaping (() -> String?)) { let buddiesInterceptorProvider = BuddiesInterceptorProvider( client: .init( sessionConfiguration: .default - ) + ), + currentToken: accessToken ) let buddiesChainNetworkTransport = BuddiesRequestChainNetworkTransport.getChainNetworkTransport( diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift similarity index 90% rename from SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift rename to SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift index 1d2b92f..29777fd 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift @@ -15,9 +15,10 @@ public final class AuthenticationManager { // public func getAuthenticatedUser() { // // } -// + public func signOut() throws { //signOut + KeychainManager.shared.delete(.accessToken) } } @@ -54,7 +55,9 @@ public final class BuddiesAuthentication { do { let data = try await apiClient.perform(request) - + let token = data.token + let type = data.type + KeychainManager.shared.save(key: .accessToken, value: token) } catch { debugPrint(error) } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/KeychainManager/KeychainManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/KeychainManager/KeychainManager.swift new file mode 100644 index 0000000..4cd2881 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/KeychainManager/KeychainManager.swift @@ -0,0 +1,80 @@ +// +// KeychainManager.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 17.09.2024. +// + +import Foundation +//import SwiftUI + +public class KeychainManager { + public enum Key: String { + case accessToken + } + + public static let shared = KeychainManager() + + @discardableResult + public func save(key: KeychainManager.Key, value: String) -> Bool { + guard let data = value.data(using: .utf8) else { + debugPrint("Failed to convert value to data") + return false + } + + let query: [CFString: Any] = [ + kSecClass: kSecClassGenericPassword, + kSecAttrAccount: key.rawValue, + kSecValueData: data + ] + + // Delete any existing item before saving + SecItemDelete(query as CFDictionary) + + let status = SecItemAdd(query as CFDictionary, nil) + + if status == errSecSuccess { + return true + } else { + debugPrint("Failed to save item: \(status)") + return false + } + } + + public func get(key: KeychainManager.Key) -> String? { + let query: [CFString: Any] = [ + kSecClass: kSecClassGenericPassword, + kSecAttrAccount: key.rawValue, + kSecReturnData: kCFBooleanTrue as CFTypeRef, + kSecMatchLimit: kSecMatchLimitOne + ] + + var result: AnyObject? + let status = SecItemCopyMatching(query as CFDictionary, &result) + + if status == errSecSuccess, let data = result as? Data { + guard let stringValue = String(data: data, encoding: .utf8) else { + debugPrint("Failed to convert data to string") + return nil + } + return stringValue + } else { + if status != errSecItemNotFound { + debugPrint("Failed to retrieve item: \(status)") + } + return nil + } + } + + @discardableResult + public func delete(_ key: KeychainManager.Key) -> Bool { + let query = [ + kSecClass as String: kSecClassGenericPassword as String, + kSecAttrAccount as String: key.rawValue, + ] + + let status: OSStatus = SecItemDelete(query as CFDictionary) + + return status == noErr + } +} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift index a199676..f064a4d 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift @@ -11,20 +11,19 @@ import BuddiesNetwork public final class BuddiesInterceptorProvider: InterceptorProvider { let client: URLSessionClient - public init(client: URLSessionClient) { + public init(client: URLSessionClient, currentToken: @escaping (() -> String?)) { self.client = client + self.currentToken = currentToken } - public var currentToken: () -> String? = { -// KeychainManager.shared.get(key: .accessToken) - "" - } + public var currentToken: () -> String? public func interceptors(for request: some Requestable) -> [Interceptor] { [ MaxRetryInterceptor(maxRetry: 3), - TokenProviderInterceptor(currentToken: currentToken), - NetworkFetchInterceptor(client: client) + BuddiesTokenProviderInterceptor(currentToken: currentToken), + NetworkFetchInterceptor(client: client), + JSONDecodingInterceptor() ] } @@ -60,3 +59,43 @@ public final class BuddiesRequestChainNetworkTransport { return DefaultRequestChainNetworkTransport(interceptorProvider: interceptorProvider) } } + +// MARK: - Token Interceptor provider +public final class BuddiesTokenProviderInterceptor: Interceptor { + + enum TokenProviderError: Error, LocalizedError { + case tokenNotFound + + var errorDescription: String? { + switch self { + case .tokenNotFound: "Token is not found." + } + } + } + + public var id: String = UUID().uuidString + + var currentToken: () -> String? + + public init(currentToken: @escaping () -> String?) { + self.currentToken = currentToken + } + + public func intercept( + chain: RequestChain, + request: HTTPRequest, + response: HTTPResponse?, + completion: @escaping (Result) -> Void + ) where Request: Requestable { + if let token = currentToken() { + request.addHeader(key: "Authorization", val: "\(token)") + } + + chain.proceed( + request: request, + interceptor: self, + response: response, + completion: completion + ) + } +} From fb0fd13973b0f0ecea74599276450ed48d779351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Wed, 25 Sep 2024 00:12:10 +0300 Subject: [PATCH 062/126] Add Buddies auth service --- SwiftBuddiesIOS/Sources/RootView.swift | 28 +++++--- .../Sources/SwiftBuddiesIOSApp.swift | 18 ++++- .../Extensions/Notification+Extension.swift | 18 +++++ .../AuthManager/AuthenticationManager.swift | 61 +++------------- .../BuddiesAuthenticationService.swift | 71 +++++++++++++++++++ .../Extensions/Notification+Extensions.swift | 5 -- .../ViewModels/AuthenticationViewModel.swift | 6 +- .../Sources/Views/AuthenticationView.swift | 12 ++-- 8 files changed, 142 insertions(+), 77 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Extensions/Notification+Extension.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift delete mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift index ef2fe9c..9fe6fdb 100644 --- a/SwiftBuddiesIOS/Sources/RootView.swift +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -2,13 +2,15 @@ import SwiftUI import Login import Onboarding import Design +import Auth struct RootView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false - @State private var isLoggedIn: Bool = false - - let pub = NotificationCenter.default - .publisher(for: .signOutNotification) + @State private var isLoggedOut: Bool = true + @EnvironmentObject private var dependencies: DependencyContainer + + let loggedOut = NotificationCenter.default.publisher(for: .didLoggedOut) + let loggedIn = NotificationCenter.default.publisher(for: .didLoggedIn) init() { } @@ -20,16 +22,22 @@ struct RootView: View { private func SuitableRootView() -> some View { if isOnboardingScreenViewed { ZStack { - if isLoggedIn { + if !isLoggedOut { TabFlowView() + } else { + AuthenticationView( + viewModel: AuthenticationViewModel( + authManager: dependencies.authManager + ) + ) } } - .onReceive(pub) { _ in - isLoggedIn = false + .onReceive(loggedOut) { _ in + isLoggedOut = true + } + .onReceive(loggedIn) { _ in + isLoggedOut = false } - .fullScreenCover(isPresented: $isLoggedIn.negated, content: { - AuthenticationView() - }) } else { OnboardingBuilder.build() } diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 5d708d1..57ac294 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -13,6 +13,7 @@ struct SwiftBuddiesIOSApp: App { var body: some Scene { WindowGroup { RootView() + .environmentObject(delegate.dependencyContainer) } } } @@ -36,10 +37,13 @@ class AppDelegate: NSObject, UIApplicationDelegate { public class DependencyContainer: ObservableObject { - var buddiesNetwork: BuddiesClient! + public var buddiesNetwork: BuddiesClient! + public var buddiesAuthenticator: BuddiesAuthenticationService! + public var authManager: AuthenticationManager! @MainActor func build(_ launchOptions: [UIApplication.LaunchOptionsKey: Any]?, accessToken: @escaping (() -> String?)) { + let buddiesInterceptorProvider = BuddiesInterceptorProvider( client: .init( sessionConfiguration: .default @@ -57,5 +61,17 @@ public class DependencyContainer: ObservableObject { BuddiesClient.shared = buddiesClient self.buddiesNetwork = BuddiesClient.shared + + let buddiesAuthService = BuddiesAuthenticationService( + notificationCenter: .default, + apiClient: .shared + ) + + BuddiesAuthenticationService.shared = buddiesAuthService + self.buddiesAuthenticator = buddiesAuthService + + let authenticationManager = AuthenticationManager(authService: BuddiesAuthenticationService.shared) + AuthenticationManager.shared = authenticationManager + self.authManager = authenticationManager } } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Extensions/Notification+Extension.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Extensions/Notification+Extension.swift new file mode 100644 index 0000000..44fe9c9 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Extensions/Notification+Extension.swift @@ -0,0 +1,18 @@ +// +// Notification+Extension.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 17.09.2024. +// + +import Foundation + +public extension Notification.Name { + static let signOutNotification = Notification.Name("SignOutNotification") +} + +public extension Notification.Name { + static let didLoggedIn = Notification.Name("didLoggedIn") + static let didLoggedOut = Notification.Name("didLoggedOut") +} + diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift index 29777fd..d38c194 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift @@ -1,6 +1,4 @@ import Foundation -import BuddiesNetwork -import Network public enum AuthProviderOption: String { case google, apple @@ -9,21 +7,21 @@ public enum AuthProviderOption: String { } public final class AuthenticationManager { - public static let shared = AuthenticationManager() - private init() { } + public static var shared: AuthenticationManager! + private let authService: BuddiesAuthenticationService + + public init(authService: BuddiesAuthenticationService) { + self.authService = authService + } -// public func getAuthenticatedUser() { -// -// } - public func signOut() throws { //signOut KeychainManager.shared.delete(.accessToken) + } } // MARK: SIGN IN SSO - public protocol AuthWithSSOProtocol { func signIn(provider: AuthProviderOption) async throws } @@ -38,47 +36,8 @@ extension AuthenticationManager: AuthWithSSOProtocol { } let credentials = try await authProvider.signIn() - - await BuddiesAuthentication.registerUser(signInRequest: credentials) - } -} - -public final class BuddiesAuthentication { - - static let apiClient: BuddiesClient = .shared - - public static func registerUser(signInRequest: SignInRequest) async { - let request = RegisterRequest( - accessToken: signInRequest.accessToken, - registerType: signInRequest.type - ) - - do { - let data = try await apiClient.perform(request) - let token = data.token - let type = data.type - KeychainManager.shared.save(key: .accessToken, value: token) - } catch { - debugPrint(error) - } - // save to keychain - } -} - -struct RegisterRequest: Requestable { - var accessToken: String - var registerType: String - - struct Data: Decodable { - let token: String - let type: String - } - - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .post, - url: APIs.Login.register.url(), - data: self - ) + debugPrint(credentials) + await authService.registerUser(signInRequest: .init(accessToken: credentials.accessToken, type: credentials.type)) +// await BuddiesAuthentication.shared.registerUser(signInRequest: credentials) } } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift new file mode 100644 index 0000000..87d7006 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift @@ -0,0 +1,71 @@ +// +// BuddiesAuthenticationService.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 17.09.2024. +// + +import Foundation +import Network +import BuddiesNetwork + +// Sends the credentials from SSOs to the buddies backend +public final class BuddiesAuthenticationService { + public static var shared: BuddiesAuthenticationService! + + private let notificationCenter: NotificationCenter + private let apiClient: BuddiesClient + + public init(notificationCenter: NotificationCenter, apiClient: BuddiesClient) { + self.notificationCenter = notificationCenter + self.apiClient = apiClient + } + + public func registerUser(signInRequest: SignInRequest) async { + let request = RegisterRequest( + accessToken: signInRequest.accessToken, + registerType: signInRequest.type + ) + + do { + let data = try await apiClient.perform(request) + let token = data.token + let type = data.type + debugPrint("token: \(token), \ntype: \(type)") + await loginState(token: token) + } catch { + debugPrint(error) + await loginState(token: nil) + } + } + + @MainActor + private func loginState(token: String?) async { + if let token { + KeychainManager.shared.save(key: .accessToken, value: token) + notificationCenter.post(name: .didLoggedIn, object: nil) + } else { + KeychainManager.shared.delete(.accessToken) + notificationCenter.post(name: .didLoggedOut, object: nil) + } + } +} + +// MARK: - RegisterRequest +struct RegisterRequest: Requestable { + var accessToken: String + var registerType: String + + struct Data: Decodable { + let token: String + let type: String + } + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .post, + url: APIs.Login.register.url(), + data: self + ) + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift deleted file mode 100644 index a58b8ac..0000000 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift +++ /dev/null @@ -1,5 +0,0 @@ -import Foundation - -public extension Notification.Name { - static let signOutNotification = Notification.Name("SignOutNotification") -} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift index 3ea0260..b9190f7 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift @@ -5,11 +5,11 @@ import Network import BuddiesNetwork @MainActor -final class AuthenticationViewModel: ObservableObject { +final public class AuthenticationViewModel: ObservableObject { private let apiClient: BuddiesClient private let authManager: AuthWithSSOProtocol - - public init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { + + public init(authManager: AuthWithSSOProtocol) { self.authManager = authManager self.apiClient = .shared } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift index 957e11e..ddce3b7 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift @@ -3,9 +3,11 @@ import Design import Auth public struct AuthenticationView: View { - @StateObject private var viewModel = AuthenticationViewModel() + @Environment(\.colorScheme) var colorScheme + @ObservedObject private var viewModel: AuthenticationViewModel - public init() { + public init(viewModel: AuthenticationViewModel) { + self.viewModel = viewModel } public var body: some View { @@ -53,13 +55,9 @@ extension AuthenticationView { debugPrint(error) } } label: { - SignInWithAppleButtonViewRepresentable(type: .default, style: .white) + SignInWithAppleButtonViewRepresentable(type: .default, style: colorScheme == .light ? .black : .white) .allowsHitTesting(false) .withLoginButtonFormatting() } } } - -#Preview { - AuthenticationView() -} From a4fe0ebf2d8418e616c0cac49da10e9a6b62b596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Wed, 25 Sep 2024 00:15:33 +0300 Subject: [PATCH 063/126] Add logout logic --- .../Managers/AuthManager/AuthenticationManager.swift | 4 +++- .../BuddiesAuthenticationService.swift | 8 ++++++-- .../ProfileModule/Sources/Settings/SettingsView.swift | 1 - 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift index d38c194..6469a0c 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthManager/AuthenticationManager.swift @@ -17,7 +17,9 @@ public final class AuthenticationManager { public func signOut() throws { //signOut KeychainManager.shared.delete(.accessToken) - + Task { + await authService.logout() + } } } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift index 87d7006..17ea261 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift @@ -21,6 +21,10 @@ public final class BuddiesAuthenticationService { self.apiClient = apiClient } + public func logout() async { + await loginState() + } + public func registerUser(signInRequest: SignInRequest) async { let request = RegisterRequest( accessToken: signInRequest.accessToken, @@ -35,12 +39,12 @@ public final class BuddiesAuthenticationService { await loginState(token: token) } catch { debugPrint(error) - await loginState(token: nil) + await loginState() } } @MainActor - private func loginState(token: String?) async { + private func loginState(token: String? = nil) async { if let token { KeychainManager.shared.save(key: .accessToken, value: token) notificationCenter.post(name: .didLoggedIn, object: nil) diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift index dfc1425..7286f1b 100644 --- a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift @@ -11,7 +11,6 @@ struct SettingsView: View { Task { do { try viewModel.signOut() - NotificationCenter.default.post(name: .signOutNotification, object: nil) } catch { debugPrint(error) } From c32501bc95765bd6fa3f29b474d1f71878a7089a Mon Sep 17 00:00:00 2001 From: Can Yoldas Date: Wed, 25 Sep 2024 19:54:55 +0100 Subject: [PATCH 064/126] wip --- SwiftBuddiesIOS/Sources/RootView.swift | 5 +- .../Sources/SwiftBuddiesIOSApp.swift | 98 +++++++++++++++++-- .../ViewModels/AuthenticationViewModel.swift | 4 +- 3 files changed, 92 insertions(+), 15 deletions(-) diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift index 9fe6fdb..52a6d72 100644 --- a/SwiftBuddiesIOS/Sources/RootView.swift +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -7,7 +7,6 @@ import Auth struct RootView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false @State private var isLoggedOut: Bool = true - @EnvironmentObject private var dependencies: DependencyContainer let loggedOut = NotificationCenter.default.publisher(for: .didLoggedOut) let loggedIn = NotificationCenter.default.publisher(for: .didLoggedIn) @@ -26,9 +25,7 @@ struct RootView: View { TabFlowView() } else { AuthenticationView( - viewModel: AuthenticationViewModel( - authManager: dependencies.authManager - ) + viewModel: AuthenticationViewModel() ) } } diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 57ac294..459aca4 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -3,6 +3,58 @@ import GoogleSignIn import Network import Auth +public protocol DependencyContainerProtocol { + static var shared: Self { get } + + func get( + _ dependencyKey: DependencyKey + ) throws -> Product +} + +public struct DependencyKey { + public let name: String + + init(name: String) { + self.name = name + } + + public init(type: Product.Type = Product.self) { + var name = String(reflecting: type) +// trimFoundationPrefix(&name) + self.init(name: name) + } + + public init(typeOf product: Product) { + self.init(type: type(of: product)) + } +} + +@propertyWrapper public struct Dependency

{ + public var wrappedValue: P { + do { + return try tryGet() + } catch { + assertionFailure(error.localizedDescription) + preconditionFailure(error.localizedDescription) + } + } + + public func tryGet() throws -> P { + try container().get(key) + } + + let container: () -> DependencyContainerProtocol + let key: DependencyKey

+ + public init( + container: @autoclosure @escaping () -> DependencyContainerProtocol = DependencyContainer.shared, + _ keyPath: KeyPath> + ) { + self.container = container + self.key = DependencyKey

() + } +} + @main struct SwiftBuddiesIOSApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate @@ -13,13 +65,13 @@ struct SwiftBuddiesIOSApp: App { var body: some Scene { WindowGroup { RootView() - .environmentObject(delegate.dependencyContainer) } } } class AppDelegate: NSObject, UIApplicationDelegate { var dependencyContainer: DependencyContainer! + @Dependency(\.authManager) var authManager: AuthenticationManager func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { if let clientID = Bundle.main.object(forInfoDictionaryKey: "CLIENT_ID") as? String { @@ -27,19 +79,43 @@ class AppDelegate: NSObject, UIApplicationDelegate { GIDSignIn.sharedInstance.configuration = signInConfig } - dependencyContainer = DependencyContainer() + dependencyContainer = DependencyContainer.shared dependencyContainer.build(launchOptions) { KeychainManager.shared.get(key: .accessToken) } + + try? authManager.signOut() + return true } } -public class DependencyContainer: ObservableObject { +public final class DependencyContainer: DependencyContainerProtocol { + enum Error: String, LocalizedError { + case productNotFound + + var errorDescription: String { rawValue } + } - public var buddiesNetwork: BuddiesClient! - public var buddiesAuthenticator: BuddiesAuthenticationService! - public var authManager: AuthenticationManager! + public func get(_ dependencyKey: DependencyKey) throws -> Product { + guard let product = builtDependencies[dependencyKey.name] as? Product else { throw Error.productNotFound } + return product + } + + public static var shared: DependencyContainer = .init() + + let buddiesNetwork = DependencyKey() + let buddiesAuthenticator = DependencyKey() + let authManager = DependencyKey() + + private init() { } + + private var builtDependencies: [String: Any] = [:] + + func register(_ value: Product) { + let name = String(reflecting: value) + builtDependencies[name] = value + } @MainActor func build(_ launchOptions: [UIApplication.LaunchOptionsKey: Any]?, accessToken: @escaping (() -> String?)) { @@ -50,28 +126,32 @@ public class DependencyContainer: ObservableObject { ), currentToken: accessToken ) + register(buddiesInterceptorProvider) let buddiesChainNetworkTransport = BuddiesRequestChainNetworkTransport.getChainNetworkTransport( interceptorProvider: buddiesInterceptorProvider ) + register(buddiesChainNetworkTransport) let buddiesClient = BuddiesClient( networkTransporter: buddiesChainNetworkTransport ) + register(buddiesClient) BuddiesClient.shared = buddiesClient - self.buddiesNetwork = BuddiesClient.shared +// self.buddiesNetwork = BuddiesClient.shared let buddiesAuthService = BuddiesAuthenticationService( notificationCenter: .default, apiClient: .shared ) + register(buddiesAuthService) BuddiesAuthenticationService.shared = buddiesAuthService - self.buddiesAuthenticator = buddiesAuthService +// self.buddiesAuthenticator = buddiesAuthService let authenticationManager = AuthenticationManager(authService: BuddiesAuthenticationService.shared) AuthenticationManager.shared = authenticationManager - self.authManager = authenticationManager +// self.authManager = authenticationManager } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift index b9190f7..729ff97 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift @@ -8,9 +8,9 @@ import BuddiesNetwork final public class AuthenticationViewModel: ObservableObject { private let apiClient: BuddiesClient private let authManager: AuthWithSSOProtocol + @Dependency(\.authManager) var authManager - public init(authManager: AuthWithSSOProtocol) { - self.authManager = authManager + public init() { self.apiClient = .shared } From 77529e8e6a26debffdeba4c6fbcf94bb93b41a58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Tue, 1 Oct 2024 09:09:28 +0300 Subject: [PATCH 065/126] WIP: can --- Project.swift | 39 +++++- SwiftBuddiesIOS/Sources/RootView.swift | 4 +- .../Sources/SwiftBuddiesIOSApp.swift | 130 +----------------- .../DependencyContainer.swift | 77 +++++++++++ .../DependencyContainerProtocol.swift | 18 +++ .../DependencyWrapper.swift | 53 +++++++ .../Targets/CoreModule/Sources/Core.swift | 3 + .../ViewModels/AuthenticationViewModel.swift | 3 +- .../Sources/Views/AuthenticationView.swift | 5 +- 9 files changed, 193 insertions(+), 139 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift create mode 100644 SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainerProtocol.swift create mode 100644 SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyWrapper.swift create mode 100644 SwiftBuddiesIOS/Targets/CoreModule/Sources/Core.swift diff --git a/Project.swift b/Project.swift index 51bd5ee..0c83474 100644 --- a/Project.swift +++ b/Project.swift @@ -5,6 +5,7 @@ extension Target { static func featureTarget( name: String, productName: String, + product: Product = .staticLibrary, dependencies: [TargetDependency], hasResources: Bool = false ) -> Self { @@ -60,7 +61,8 @@ let project = Project( .target(Modules.profile.target), .target(Modules.contributors.target), .target(Modules.network.target), - .target(Modules.localization.target) + .target(Modules.localization.target), + .target(Modules.core.target) ] ), Modules.design.target, @@ -73,11 +75,14 @@ let project = Project( Modules.contributors.target, Modules.network.target, Modules.localization.target, + Modules.core.target, Modules.localicationCodegen ] ) + enum Modules: CaseIterable { + case core case localization case design case network @@ -89,8 +94,17 @@ enum Modules: CaseIterable { case profile case contributors + var target: Target { switch self { + case .core: + Target.featureTarget( + name: "Core", + productName: "Core", + dependencies: /*Modules.allCases.filter { $0 != .core }.compactMap { .target($0.target) }*/ +// [.target(Modules.auth.target), .target(Modules.network.target)] + [] + ) case .localization: Target.featureTarget( name: "Localization", @@ -119,6 +133,7 @@ enum Modules: CaseIterable { productName: "Auth", dependencies: [ .target(Modules.network.target), + .target(Modules.core.target), .package(product: "GoogleSignIn", type: .runtime, condition: .none) ] ) @@ -126,7 +141,10 @@ enum Modules: CaseIterable { Target.featureTarget( name: "Onboarding", productName: "Onboarding", - dependencies: [.target(Modules.design.target)] + dependencies: [ + .target(Modules.design.target), + .target(Modules.core.target), + ] ) case .login: Target.featureTarget( @@ -136,6 +154,7 @@ enum Modules: CaseIterable { .target(Modules.design.target), .target(Modules.auth.target), .target(Modules.network.target), + .target(Modules.core.target), .package(product: "GoogleSignIn", type: .runtime, condition: .none) ] ) @@ -143,13 +162,19 @@ enum Modules: CaseIterable { Target.featureTarget( name: "Feed", productName: "Feed", - dependencies: [.target(Modules.design.target)] + dependencies: [ + .target(Modules.core.target), + .target(Modules.design.target) + ] ) case .map: Target.featureTarget( name: "Map", productName: "Map", - dependencies: [.target(Modules.design.target)] + dependencies: [ + .target(Modules.core.target), + .target(Modules.design.target) + ] ) case .profile: Target.featureTarget( @@ -159,6 +184,7 @@ enum Modules: CaseIterable { .target(Modules.design.target), .target(Modules.auth.target), .target(Modules.network.target), + .target(Modules.core.target), .package(product: "GoogleSignIn", type: .runtime, condition: .none) ] ) @@ -166,7 +192,10 @@ enum Modules: CaseIterable { Target.featureTarget( name: "Contributors", productName: "Contributors", - dependencies: [.target(Modules.design.target)] + dependencies: [ + .target(Modules.core.target), + .target(Modules.design.target) + ] ) } } diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift index 52a6d72..569f86b 100644 --- a/SwiftBuddiesIOS/Sources/RootView.swift +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -24,9 +24,7 @@ struct RootView: View { if !isLoggedOut { TabFlowView() } else { - AuthenticationView( - viewModel: AuthenticationViewModel() - ) + AuthenticationView() } } .onReceive(loggedOut) { _ in diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 459aca4..1b26734 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -1,59 +1,6 @@ import SwiftUI import GoogleSignIn -import Network -import Auth - -public protocol DependencyContainerProtocol { - static var shared: Self { get } - - func get( - _ dependencyKey: DependencyKey - ) throws -> Product -} - -public struct DependencyKey { - public let name: String - - init(name: String) { - self.name = name - } - - public init(type: Product.Type = Product.self) { - var name = String(reflecting: type) -// trimFoundationPrefix(&name) - self.init(name: name) - } - - public init(typeOf product: Product) { - self.init(type: type(of: product)) - } -} - -@propertyWrapper public struct Dependency

{ - public var wrappedValue: P { - do { - return try tryGet() - } catch { - assertionFailure(error.localizedDescription) - preconditionFailure(error.localizedDescription) - } - } - - public func tryGet() throws -> P { - try container().get(key) - } - - let container: () -> DependencyContainerProtocol - let key: DependencyKey

- - public init( - container: @autoclosure @escaping () -> DependencyContainerProtocol = DependencyContainer.shared, - _ keyPath: KeyPath> - ) { - self.container = container - self.key = DependencyKey

() - } -} +import Core @main struct SwiftBuddiesIOSApp: App { @@ -70,8 +17,7 @@ struct SwiftBuddiesIOSApp: App { } class AppDelegate: NSObject, UIApplicationDelegate { - var dependencyContainer: DependencyContainer! - @Dependency(\.authManager) var authManager: AuthenticationManager + var dependencyContainer: DependencyContainerProtocol! func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { if let clientID = Bundle.main.object(forInfoDictionaryKey: "CLIENT_ID") as? String { @@ -80,78 +26,8 @@ class AppDelegate: NSObject, UIApplicationDelegate { } dependencyContainer = DependencyContainer.shared - dependencyContainer.build(launchOptions) { - KeychainManager.shared.get(key: .accessToken) - } - - try? authManager.signOut() + dependencyContainer.build() return true } } - -public final class DependencyContainer: DependencyContainerProtocol { - enum Error: String, LocalizedError { - case productNotFound - - var errorDescription: String { rawValue } - } - - public func get(_ dependencyKey: DependencyKey) throws -> Product { - guard let product = builtDependencies[dependencyKey.name] as? Product else { throw Error.productNotFound } - return product - } - - public static var shared: DependencyContainer = .init() - - let buddiesNetwork = DependencyKey() - let buddiesAuthenticator = DependencyKey() - let authManager = DependencyKey() - - private init() { } - - private var builtDependencies: [String: Any] = [:] - - func register(_ value: Product) { - let name = String(reflecting: value) - builtDependencies[name] = value - } - - @MainActor - func build(_ launchOptions: [UIApplication.LaunchOptionsKey: Any]?, accessToken: @escaping (() -> String?)) { - - let buddiesInterceptorProvider = BuddiesInterceptorProvider( - client: .init( - sessionConfiguration: .default - ), - currentToken: accessToken - ) - register(buddiesInterceptorProvider) - - let buddiesChainNetworkTransport = BuddiesRequestChainNetworkTransport.getChainNetworkTransport( - interceptorProvider: buddiesInterceptorProvider - ) - register(buddiesChainNetworkTransport) - - let buddiesClient = BuddiesClient( - networkTransporter: buddiesChainNetworkTransport - ) - register(buddiesClient) - - BuddiesClient.shared = buddiesClient -// self.buddiesNetwork = BuddiesClient.shared - - let buddiesAuthService = BuddiesAuthenticationService( - notificationCenter: .default, - apiClient: .shared - ) - register(buddiesAuthService) - - BuddiesAuthenticationService.shared = buddiesAuthService -// self.buddiesAuthenticator = buddiesAuthService - - let authenticationManager = AuthenticationManager(authService: BuddiesAuthenticationService.shared) - AuthenticationManager.shared = authenticationManager -// self.authManager = authenticationManager - } -} diff --git a/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift new file mode 100644 index 0000000..25bec64 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift @@ -0,0 +1,77 @@ +// +// DependencyContainer.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 26.09.2024. +// + +import SwiftUI +import Auth +import Network +//import Core + +public final class DependencyContainer: DependencyContainerProtocol { + enum Error: String, LocalizedError { + case productNotFound + + var errorDescription: String { rawValue } + } + + + public static var shared: DependencyContainer = .init() + + let buddiesNetwork = DependencyKey() + let buddiesAuthenticator = DependencyKey() + let authManager = DependencyKey() + + private init() { } + + private var builtDependencies: [String: Any] = [:] + + private func register(_ value: Product) { + let name = String(reflecting: value) + builtDependencies[name] = value + } + + public func get(_ dependencyKey: DependencyKey) throws -> Product { + guard let product = builtDependencies[dependencyKey.name] as? Product else { + throw Error.productNotFound + } + return product + } + + @MainActor + public func build() { + let accessToken: (() -> String?) = { + KeychainManager.shared.get(key: .accessToken) + } + + let buddiesInterceptorProvider = BuddiesInterceptorProvider( + client: .init( + sessionConfiguration: .default + ), + currentToken: accessToken + ) + + let buddiesChainNetworkTransport = BuddiesRequestChainNetworkTransport.getChainNetworkTransport( + interceptorProvider: buddiesInterceptorProvider + ) + + let buddiesClient = BuddiesClient( + networkTransporter: buddiesChainNetworkTransport + ) + register(buddiesClient) + BuddiesClient.shared = buddiesClient + + let buddiesAuthService = BuddiesAuthenticationService( + notificationCenter: .default, + apiClient: .shared + ) + register(buddiesAuthService) + BuddiesAuthenticationService.shared = buddiesAuthService + + let authenticationManager = AuthenticationManager(authService: BuddiesAuthenticationService.shared) + AuthenticationManager.shared = authenticationManager + register(authenticationManager) + } +} diff --git a/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainerProtocol.swift b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainerProtocol.swift new file mode 100644 index 0000000..83eaabd --- /dev/null +++ b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainerProtocol.swift @@ -0,0 +1,18 @@ +// +// DependencyContainerProtocol.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 26.09.2024. +// + +import Foundation + +public protocol DependencyContainerProtocol { + static var shared: Self { get } + + func get( + _ dependencyKey: DependencyKey + ) throws -> Product + + func build() +} diff --git a/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyWrapper.swift b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyWrapper.swift new file mode 100644 index 0000000..3b22c55 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyWrapper.swift @@ -0,0 +1,53 @@ +// +// Dependency.swift +// SwiftBuddiesIOS +// +// Created by dogukaan on 26.09.2024. +// + +import Foundation + +public struct DependencyKey { + public let name: String + + init(name: String) { + self.name = name + } + + public init(type: Product.Type = Product.self) { + var name = String(reflecting: type) + // trimFoundationPrefix(&name) + self.init(name: name) + } + + public init(typeOf product: Product) { + self.init(type: type(of: product)) + } +} + +@propertyWrapper +public struct Dependency

{ + public var wrappedValue: P { + do { + return try tryGet() + } catch { + assertionFailure(error.localizedDescription) + preconditionFailure(error.localizedDescription) + } + } + + public func tryGet() throws -> P { + try container().get(key) + } + + let container: () -> DependencyContainerProtocol + let key: DependencyKey

+ + public init( + container: @autoclosure @escaping () -> DependencyContainerProtocol = DependencyContainer.shared, + _ keyPath: KeyPath> + ) { + self.container = container + self.key = DependencyKey

() + } +} diff --git a/SwiftBuddiesIOS/Targets/CoreModule/Sources/Core.swift b/SwiftBuddiesIOS/Targets/CoreModule/Sources/Core.swift new file mode 100644 index 0000000..f9565b4 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/CoreModule/Sources/Core.swift @@ -0,0 +1,3 @@ +class Hello { + +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift index 729ff97..9b0e22f 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/ViewModels/AuthenticationViewModel.swift @@ -8,9 +8,10 @@ import BuddiesNetwork final public class AuthenticationViewModel: ObservableObject { private let apiClient: BuddiesClient private let authManager: AuthWithSSOProtocol - @Dependency(\.authManager) var authManager +// @Dependency(\.authManager) var authManager public init() { + self.authManager = AuthenticationManager(authService: .shared) self.apiClient = .shared } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift index ddce3b7..2b2888a 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Views/AuthenticationView.swift @@ -4,10 +4,9 @@ import Auth public struct AuthenticationView: View { @Environment(\.colorScheme) var colorScheme - @ObservedObject private var viewModel: AuthenticationViewModel + @StateObject private var viewModel: AuthenticationViewModel = .init() - public init(viewModel: AuthenticationViewModel) { - self.viewModel = viewModel + public init() { } public var body: some View { From b15721c2db006526221f41843270d8f0c949a47b Mon Sep 17 00:00:00 2001 From: Can Yoldas Date: Wed, 2 Oct 2024 23:34:44 +0300 Subject: [PATCH 066/126] fixed missing auth dependency for core module --- Project.swift | 11 ++++++----- .../BuddiesDependencies/DependencyContainer.swift | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Project.swift b/Project.swift index 0c83474..3e87537 100644 --- a/Project.swift +++ b/Project.swift @@ -101,9 +101,10 @@ enum Modules: CaseIterable { Target.featureTarget( name: "Core", productName: "Core", - dependencies: /*Modules.allCases.filter { $0 != .core }.compactMap { .target($0.target) }*/ -// [.target(Modules.auth.target), .target(Modules.network.target)] - [] + dependencies: + [.target(Modules.auth.target), .target(Modules.network.target), + .package(product: "GoogleSignIn", type: .runtime, condition: .none)] +// [] ) case .localization: Target.featureTarget( @@ -133,7 +134,7 @@ enum Modules: CaseIterable { productName: "Auth", dependencies: [ .target(Modules.network.target), - .target(Modules.core.target), +// .target(Modules.core.target), .package(product: "GoogleSignIn", type: .runtime, condition: .none) ] ) @@ -143,7 +144,7 @@ enum Modules: CaseIterable { productName: "Onboarding", dependencies: [ .target(Modules.design.target), - .target(Modules.core.target), + .target(Modules.core.target), ] ) case .login: diff --git a/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift index 25bec64..62b80fd 100644 --- a/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift +++ b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift @@ -10,7 +10,7 @@ import Auth import Network //import Core -public final class DependencyContainer: DependencyContainerProtocol { +public final class DependencyContainer: @preconcurrency DependencyContainerProtocol { enum Error: String, LocalizedError { case productNotFound From 94d55d6fae9a330eb0d269170f976803ddc7a459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Thu, 10 Oct 2024 13:34:22 +0300 Subject: [PATCH 067/126] Fix syntax --- .../Sources/BuddiesDependencies/DependencyContainer.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift index 62b80fd..26d404d 100644 --- a/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift +++ b/SwiftBuddiesIOS/Targets/CoreModule/Sources/BuddiesDependencies/DependencyContainer.swift @@ -10,7 +10,7 @@ import Auth import Network //import Core -public final class DependencyContainer: @preconcurrency DependencyContainerProtocol { +@preconcurrency public final class DependencyContainer: DependencyContainerProtocol { enum Error: String, LocalizedError { case productNotFound From 4411e027944176e1967f7624858ee7c7228bde6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sun, 17 Nov 2024 12:53:13 +0300 Subject: [PATCH 068/126] Fix login Fix an issue where user forced to login again after app restart --- SwiftBuddiesIOS/Sources/RootView.swift | 3 +++ .../BuddiesAuthenticationService.swift | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift index 569f86b..123f526 100644 --- a/SwiftBuddiesIOS/Sources/RootView.swift +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -33,6 +33,9 @@ struct RootView: View { .onReceive(loggedIn) { _ in isLoggedOut = false } + .task { + await BuddiesAuthenticationService.shared.checkIfLoggedIn() + } } else { OnboardingBuilder.build() } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift index 17ea261..73dc4b4 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift @@ -43,6 +43,14 @@ public final class BuddiesAuthenticationService { } } + public func checkIfLoggedIn() async { + if let token = KeychainManager.shared.get(key: .accessToken) { + await loginState(token: token) + } else { + await loginState() + } + } + @MainActor private func loginState(token: String? = nil) async { if let token { From 9994f90acec9a15c45a2b56cf799f76807641968 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Sun, 12 May 2024 16:58:56 +0300 Subject: [PATCH 069/126] LocationModel & MapViewModel added, map initialised w/ user location --- .../Targets/MapModule/Sources/Location.swift | 20 +++ .../Targets/MapModule/Sources/MapView.swift | 118 +++++++++++------- .../MapModule/Sources/MapViewViewModel.swift | 29 +++++ 3 files changed, 123 insertions(+), 44 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapViewViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift new file mode 100644 index 0000000..756dd28 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift @@ -0,0 +1,20 @@ +// +// Location.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 12.05.2024. +// + +import Foundation +import SwiftUI +import MapKit + + +// Define a simple model for location +struct Location: Identifiable { + let id = UUID() + let name: String + let coordinate: CLLocationCoordinate2D + let image: Image? = nil + let backgroundColor: Color? = nil +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift index 8d71721..ef8bfa1 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift @@ -3,55 +3,41 @@ import MapKit import Design public struct MapView: View { -// @State private var selectedCategory: String? = nil - @State private var locations: [Location] = [ - Location(name: "Boga Heykeli", coordinate: CLLocationCoordinate2D(latitude: 40.990467, longitude: 29.029162)), - Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.043544, longitude: 29.004255)), - Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.06, longitude: 29)), - ] - - @State private var categoryModalShown = false - @State private var selectedCategory: String = "Select Location" - @State private var selectedDetent: PresentationDetent = .fraction(0.2) - @State private var dismissableMessage: Bool = false + + @StateObject var vm = MapViewViewModel() public init() {} public var body: some View { ZStack { - MapLocationsView(locations: locations) - .edgesIgnoringSafeArea([.top, .leading, .trailing]) - .bottomSheet( - presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .medium], - detentSelection: $selectedDetent, - isPresented: $categoryModalShown, - sheetCornerRadius: 12, - interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $selectedCategory) { - selectedDetent = .fraction(0.2) - dismissableMessage.toggle() - } - } onDismiss: { - + MapLayer + .bottomSheet( + presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .medium], + detentSelection: $vm.selectedDetent, + isPresented: $vm.categoryModalShown, + sheetCornerRadius: 12, + interactiveDismissDisabled: false) { + CategoryPicker(selectedCategory: $vm.selectedCategory) { + vm.selectedDetent = .fraction(0.2) + vm.dismissableMessage.toggle() } - if !categoryModalShown { + } onDismiss: { + + } + + if !vm.categoryModalShown { VStack { Spacer() - Button(action: { - categoryModalShown.toggle() - }) { - Text("See Locations") - .foregroundColor(.white) + HStack{ + seeLocationsButton + createEventButton .padding() - .background(Color.blue) - .cornerRadius(10) } - .padding() } } - DismissableMessage(displayMessage: $dismissableMessage, delay: 3.0) { - Text("Selected: \(selectedCategory)") + DismissableMessage(displayMessage: $vm.dismissableMessage, delay: 3.0) { + Text("\(vm.selectedCategory)") .padding() .foregroundColor(.white) .background(Color.black.opacity(0.75)) @@ -66,14 +52,7 @@ public struct MapView: View { MapView() } -// Define a simple model for location -struct Location: Identifiable { - let id = UUID() - let name: String - let coordinate: CLLocationCoordinate2D - let image: Image? = nil - let backgroundColor: Color? = nil -} + // Map view struct MapLocationsView: View { @@ -160,3 +139,54 @@ struct CategoryPicker: View { } } } + + +// MARK: View extensions for mapView +extension MapView { + + private var MapLayer: some View { + Map(position: $vm.position){ + + } + .mapControls { + Spacer() + MapUserLocationButton() + MapPitchToggle() + } + .padding(.top, 40) + .onAppear{ + CLLocationManager().requestWhenInUseAuthorization() + } + .ignoresSafeArea() + } + + private var seeLocationsButton: some View { + Button(action: { + vm.categoryModalShown.toggle() + }) { + Text("See Locations") + .foregroundColor(.white) + .padding() + .background(Color.blue) + .cornerRadius(10) + } + .padding() + } + + private var createEventButton: some View { + Button(action: { + // MARK: define function to create event + + vm.selectedCategory = "Select a meeting point on map" + vm.dismissableMessage = true + + }) { + Text("Create Event ") + .foregroundColor(.white) + .padding() + .background(Color.orange) + .cornerRadius(10) + } + } + +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapViewViewModel.swift new file mode 100644 index 0000000..471d5f0 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapViewViewModel.swift @@ -0,0 +1,29 @@ +// +// MapViewViewModel.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 12.05.2024. +// + +import Foundation +import SwiftUI +import MapKit + +class MapViewViewModel: ObservableObject { + + // @State private var selectedCategory: String? = nil + @Published var locations: [Location] = [ + Location(name: "Boga Heykeli", coordinate: CLLocationCoordinate2D(latitude: 40.990467, longitude: 29.029162)), + Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.043544, longitude: 29.004255)), + Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.06, longitude: 29)), + ] + + @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) + @Published var categoryModalShown = false + @Published var selectedCategory: String = "Select Location" + @Published var selectedDetent: PresentationDetent = .fraction(0.2) + @Published var dismissableMessage: Bool = false + + + init(){} +} From b0a5786a58982a66fb8afa99f8bc92b6f1b1cecf Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 13 May 2024 13:08:28 +0300 Subject: [PATCH 070/126] NewEventView designed for create new event. --- .../MapModule/Sources/DropDownMenu.swift | 93 ++++++++++ .../Targets/MapModule/Sources/Location.swift | 10 +- .../Targets/MapModule/Sources/MapView.swift | 118 ++++++------- .../MapModule/Sources/NewEventView.swift | 163 ++++++++++++++++++ .../MapModule/Sources/NewEventViewModel.swift | 25 +++ 5 files changed, 347 insertions(+), 62 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/DropDownMenu.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/DropDownMenu.swift new file mode 100644 index 0000000..f5b00ff --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/DropDownMenu.swift @@ -0,0 +1,93 @@ +// +// DropDownMenu.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 13.05.2024. +// + +import SwiftUI + +struct DropdownMenu: View { + + let prompt: String + let options: [String] + + @State private var isShowing = false + @Binding var selection: String? + @Environment(\.colorScheme) var scheme + + var body: some View { + VStack { + HStack{ + Text(selection ?? prompt) + + Spacer() + + Image(systemName: "chevron.down") + .font(.subheadline) + .foregroundStyle(.gray) + .rotationEffect(.degrees(isShowing ? -180 : 0)) + } + .frame(height: 55) + .background(scheme == .dark ? .black : .white) + .padding(.horizontal) + .bold() + .onTapGesture { + withAnimation(.snappy) { + isShowing.toggle() + } + } + + if isShowing { + VStack{ + ForEach(options, id: \.self) { option in + HStack{ + Text(option) + .foregroundStyle(selection == option ? Color.primary : .gray) + + Spacer() + + if selection == option { + Image(systemName: "checkmark") + .font(.subheadline) + } + + } + .frame(height: 40) + .padding(.horizontal) + .onTapGesture { + selection = option + isShowing.toggle() + } + } + } + + } + + } + .overlay( + RoundedRectangle(cornerRadius: 4) + .stroke(Color.primary, lineWidth: 1) + ) + .background(scheme == .dark ? .black : .white) + .padding(.horizontal) + + + } + + + + +} + + +#Preview { + DropdownMenu(prompt: "Select", + options: [ + "option1", + "option2", + "option3"], + selection: .constant("option2") + ) +} + diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift index 756dd28..475c405 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift @@ -10,11 +10,15 @@ import SwiftUI import MapKit -// Define a simple model for location +// Define a simple model for event struct Location: Identifiable { let id = UUID() + let category: String let name: String + let aboutEvent: String + let startDate: TimeInterval + let dueDate: TimeInterval let coordinate: CLLocationCoordinate2D - let image: Image? = nil - let backgroundColor: Color? = nil + //let image: Image? = nil + //let backgroundColor: Color? = nil } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift index ef8bfa1..5a0a803 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift @@ -9,42 +9,45 @@ public struct MapView: View { public init() {} public var body: some View { - ZStack { - MapLayer - .bottomSheet( - presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .medium], - detentSelection: $vm.selectedDetent, - isPresented: $vm.categoryModalShown, - sheetCornerRadius: 12, - interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $vm.selectedCategory) { - vm.selectedDetent = .fraction(0.2) - vm.dismissableMessage.toggle() + NavigationView{ + ZStack { + MapLayer + .bottomSheet( + presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .medium], + detentSelection: $vm.selectedDetent, + isPresented: $vm.categoryModalShown, + sheetCornerRadius: 12, + interactiveDismissDisabled: false) { + CategoryPicker(selectedCategory: $vm.selectedCategory) { + vm.selectedDetent = .fraction(0.2) + vm.dismissableMessage.toggle() + } + } onDismiss: { + } - } onDismiss: { + if !vm.categoryModalShown { + VStack { + Spacer() + HStack{ + seeLocationsButton + createEventButton + .padding() + } + } } - if !vm.categoryModalShown { - VStack { - Spacer() - HStack{ - seeLocationsButton - createEventButton - .padding() - } + DismissableMessage(displayMessage: $vm.dismissableMessage, delay: 3.0) { + Text("\(vm.selectedCategory)") + .padding() + .foregroundColor(.white) + .background(Color.black.opacity(0.75)) + .cornerRadius(5) + .padding(.top, 80) // Adjust this to properly place on the screen } } - - DismissableMessage(displayMessage: $vm.dismissableMessage, delay: 3.0) { - Text("\(vm.selectedCategory)") - .padding() - .foregroundColor(.white) - .background(Color.black.opacity(0.75)) - .cornerRadius(5) - .padding(.top, 80) // Adjust this to properly place on the screen - } } + } } @@ -55,10 +58,11 @@ public struct MapView: View { // Map view -struct MapLocationsView: View { +/*struct MapLocationsView: View { var locations: [Location] var body: some View { + VStack { Map(position: .constant(.automatic)) { ForEach(locations) { location in @@ -81,31 +85,31 @@ struct MapLocationsView: View { } } -// Annotation("Columbia University", coordinate: .columbiaUniversity) { -// ZStack { -// RoundedRectangle(cornerRadius: 5) -// .fill(Color.teal) -// Text("🎓") -// .padding(5) -// } -// } + Annotation("Columbia University", coordinate: .columbiaUniversity) { + ZStack { + RoundedRectangle(cornerRadius: 5) + .fill(Color.teal) + Text("🎓") + .padding(5) + } + } } -// Map( -// coordinateRegion: .constant( -// MKCoordinateRegion( -// center: CLLocationCoordinate2D(latitude: 41.04, longitude: 29), -// latitudinalMeters: 10000, -// longitudinalMeters: 10000 -// ) -// ), -// annotationItems: locations -// ) { location in -// MapPin(coordinate: location.coordinate, tint: Color.orange) -// } + Map( + coordinateRegion: .constant( + MKCoordinateRegion( + center: CLLocationCoordinate2D(latitude: 41.04, longitude: 29), + latitudinalMeters: 10000, + longitudinalMeters: 10000 + ) + ), + annotationItems: locations + ) { location in + MapPin(coordinate: location.coordinate, tint: Color.orange) + } } } -} +}*/ struct CategoryPicker: View { @Environment(\.presentationMode) var presentationMode @@ -174,19 +178,15 @@ extension MapView { } private var createEventButton: some View { - Button(action: { - // MARK: define function to create event - - vm.selectedCategory = "Select a meeting point on map" - vm.dismissableMessage = true - - }) { - Text("Create Event ") + NavigationLink(destination: NewEventView()) { + Text("Create Event") .foregroundColor(.white) .padding() .background(Color.orange) .cornerRadius(10) } + + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift new file mode 100644 index 0000000..f77ef4e --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift @@ -0,0 +1,163 @@ +// +// NewEventView.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 13.05.2024. +// + +import SwiftUI +import MapKit + +struct NewEventView: View { + + @StateObject var viewModel = NewEventViewModel() + @FocusState private var fieldInFocus: textFieldFocus? + + @State private var selectedCategory: String? + + @State private var cameraPosition: MapCameraPosition = .userLocation(fallback: .automatic) + + private let categories = [ + "Meeting", + "Study Body", + "Place to work", + "Swift Buddies Event" + ] + + var body: some View { + + ScrollView{ + VStack(spacing: 15){ + + DropdownMenu(prompt: "Select..", + options: categories, + selection:$selectedCategory + ) + + eventNameTextfield + aboutText + datePickers + mapLayer + createButton + } + .navigationTitle("Event Details") + .padding(.top) + Spacer() + } + + + + } + + enum textFieldFocus: Hashable { + case category, name, about, startDate, dueDate + } +} + +#Preview { + NewEventView() +} + + + +extension NewEventView { + + private var eventNameTextfield: some View { + TextField("Event name...", text: $viewModel.name ) + .frame(height: 50) + .textFieldStyle(RoundedBorderTextFieldStyle()) + .background(Color(UIColor.systemBackground)) + .textInputAutocapitalization(.never) + .overlay( + RoundedRectangle(cornerRadius: 4) + .stroke(Color.primary, lineWidth: 1) + ) + .padding(.horizontal) + .fontWeight(.bold) + .onSubmit { + fieldInFocus = .about + } + .focused($fieldInFocus, equals: .name) + } + + private var aboutText: some View { + TextEditor(text: $viewModel.about) + .frame(height: 120) + .overlay( + RoundedRectangle(cornerRadius: 4) + .stroke(Color.primary, lineWidth: 1) + ) + .padding(.horizontal) + } + + private var datePickers: some View { + VStack(spacing: 15) { + DatePicker("Start Date", selection: $viewModel.startDate) + .frame(width: UIScreen.main.bounds.width - 64, height: 55) + .textFieldStyle(RoundedBorderTextFieldStyle()) + .padding(.horizontal) + .background(Color(UIColor.systemBackground)) + .textInputAutocapitalization(.never) + .overlay( + RoundedRectangle(cornerRadius: 4) + .stroke(Color.primary, lineWidth: 1) + ) + .fontWeight(.bold) + .padding(.horizontal) + .onSubmit { + fieldInFocus = .dueDate + } + .focused($fieldInFocus, equals: .startDate) + + DatePicker("Due Date", selection: $viewModel.dueDate) + .frame(width: UIScreen.main.bounds.width - 64, height: 55) + .textFieldStyle(RoundedBorderTextFieldStyle()) + .padding(.horizontal) + .background(Color(UIColor.systemBackground)) + .textInputAutocapitalization(.never) + .overlay( + RoundedRectangle(cornerRadius: 4) + .stroke(Color.primary, lineWidth: 1) + ) + .fontWeight(.bold) + .padding(.horizontal) + .onSubmit { + + } + .focused($fieldInFocus, equals: .dueDate) + } + } + + private var mapLayer: some View { + VStack { + Map(position: $cameraPosition) { + + } + .mapControls { + MapUserLocationButton() + MapPitchToggle() + } + .onAppear{ + CLLocationManager().requestWhenInUseAuthorization() + } + } + .aspectRatio(1, contentMode: .fill) + .padding() + .cornerRadius(20) + } + + private var createButton: some View { + Button(action: { + // Save the event to database + }) { + Text("Create") + .frame(width: UIScreen.main.bounds.width - 64, height: 55) + .padding(.horizontal) + .background(RoundedRectangle(cornerRadius: 10).fill(Color.orange)) + .foregroundStyle(.white) + .fontWeight(.bold) + + } + + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventViewModel.swift new file mode 100644 index 0000000..3d49cfd --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventViewModel.swift @@ -0,0 +1,25 @@ +// +// NewEventViewModel.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 13.05.2024. +// + +import Foundation + +import Foundation + +class NewEventViewModel: ObservableObject { + + @Published var name = "" + @Published var category = "" + @Published var about = "" + @Published var startDate = Date() + @Published var dueDate = Date() + + init(){} + + func createButtonClicked(){ + + } +} From e3791293d352dbf6e66f78fd477aa7095b0110a9 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Sun, 26 May 2024 11:19:36 +0300 Subject: [PATCH 071/126] i just edited the file locations --- .../Targets/MapModule/{Sources => Models}/Location.swift | 0 .../MapModule/{Sources => ViewComponents}/DropDownMenu.swift | 0 .../MapModule/{Sources => ViewModels}/MapViewViewModel.swift | 4 ++-- .../MapModule/{Sources => ViewModels}/NewEventViewModel.swift | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename SwiftBuddiesIOS/Targets/MapModule/{Sources => Models}/Location.swift (100%) rename SwiftBuddiesIOS/Targets/MapModule/{Sources => ViewComponents}/DropDownMenu.swift (100%) rename SwiftBuddiesIOS/Targets/MapModule/{Sources => ViewModels}/MapViewViewModel.swift (93%) rename SwiftBuddiesIOS/Targets/MapModule/{Sources => ViewModels}/NewEventViewModel.swift (100%) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift b/SwiftBuddiesIOS/Targets/MapModule/Models/Location.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/Location.swift rename to SwiftBuddiesIOS/Targets/MapModule/Models/Location.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/ViewComponents/DropDownMenu.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/DropDownMenu.swift rename to SwiftBuddiesIOS/Targets/MapModule/ViewComponents/DropDownMenu.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift similarity index 93% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapViewViewModel.swift rename to SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift index 471d5f0..1703f00 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift @@ -12,11 +12,11 @@ import MapKit class MapViewViewModel: ObservableObject { // @State private var selectedCategory: String? = nil - @Published var locations: [Location] = [ + /*@Published var locations: [Location] = [ Location(name: "Boga Heykeli", coordinate: CLLocationCoordinate2D(latitude: 40.990467, longitude: 29.029162)), Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.043544, longitude: 29.004255)), Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.06, longitude: 29)), - ] + ]*/ @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) @Published var categoryModalShown = false diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/NewEventViewModel.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventViewModel.swift rename to SwiftBuddiesIOS/Targets/MapModule/ViewModels/NewEventViewModel.swift From 5d5a4ad404fc78bf2e7a734d09c1a5956a798844 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Fri, 7 Jun 2024 15:39:31 +0300 Subject: [PATCH 072/126] add CoreData to save new events --- .../Sources/CategoryPickerSheet.swift | 48 ++++++ .../Targets/MapModule/Sources/MapView.swift | 153 ++++++++---------- .../MapModule/Sources/NewEventView.swift | 133 +++++++++------ .../ViewComponents/DropDownMenu.swift | 15 +- .../EventContainer.xcdatamodel/contents | 11 ++ .../ViewModels/MapViewViewModel.swift | 89 ++++++++-- .../ViewModels/NewEventViewModel.swift | 25 --- 7 files changed, 289 insertions(+), 185 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/CategoryPickerSheet.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/ViewModels/EventContainer.xcdatamodeld/EventContainer.xcdatamodel/contents delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/ViewModels/NewEventViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/CategoryPickerSheet.swift new file mode 100644 index 0000000..cfb3c68 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/CategoryPickerSheet.swift @@ -0,0 +1,48 @@ +// +// CategoryPickerSheet.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 5.06.2024. +// + +import SwiftUI + +struct CategoryPicker: View { + @Environment(\.presentationMode) var presentationMode + + @Binding var selectedCategory: String + + private let categories = [ + "Meeting", + "Study Body", + "Place to work", + "Swift Buddies Event" + ] + + var selectAction: () -> Void + + var body: some View { + NavigationView { + List { + ForEach(categories, id: \.self) { category in + Button(action: { + selectedCategory = category + selectAction() + }) { + Text(category) + .padding() + .frame(maxWidth: .infinity) + .background(Color.blue) + .foregroundColor(.white) + .cornerRadius(10) + .padding(.horizontal) + } + } + } + .navigationTitle("Select Category") + .navigationBarItems(trailing: Button("Dismiss") { + presentationMode.wrappedValue.dismiss() + }) + } + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift index 5a0a803..ed69707 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift @@ -36,19 +36,12 @@ public struct MapView: View { } } } - - DismissableMessage(displayMessage: $vm.dismissableMessage, delay: 3.0) { - Text("\(vm.selectedCategory)") - .padding() - .foregroundColor(.white) - .background(Color.black.opacity(0.75)) - .cornerRadius(5) - .padding(.top, 80) // Adjust this to properly place on the screen - } } } - + } + + } #Preview { @@ -56,6 +49,66 @@ public struct MapView: View { } +// MARK: View extensions for mapView +extension MapView { + + private var MapLayer: some View { + Map(position: $vm.position){ + + } + .mapControls { + Spacer() + MapUserLocationButton() + MapPitchToggle() + } + .padding(.top, 40) + .onAppear{ + CLLocationManager().requestWhenInUseAuthorization() + } + .ignoresSafeArea() + } + + private var seeLocationsButton: some View { + Button(action: { + vm.categoryModalShown.toggle() + }) { + Text("See Locations") + .foregroundColor(.white) + .padding() + .background(Color.blue) + .cornerRadius(10) + } + .padding() + } + + private var createEventButton: some View { + NavigationLink(destination: NewEventView()) { + Text("Create Event") + .foregroundColor(.white) + .padding() + .background(Color.orange) + .cornerRadius(10) + } + + + } + +} + + + + + +/*DismissableMessage(displayMessage: $vm.dismissableMessage, delay: 3.0) { + Text("\(vm.selectedCategory)") + .padding() + .foregroundColor(.white) + .background(Color.black.opacity(0.75)) + .cornerRadius(5) + .padding(.top, 80) // Adjust this to properly place on the screen +}*/ + + // Map view /*struct MapLocationsView: View { @@ -110,83 +163,3 @@ public struct MapView: View { } } }*/ - -struct CategoryPicker: View { - @Environment(\.presentationMode) var presentationMode - - @Binding var selectedCategory: String - let categories = ["Coffee Shops", "Where to Work", "Meeting Points"] - var selectAction: () -> Void - - var body: some View { - NavigationView { - List { - ForEach(categories, id: \.self) { category in - Button(action: { - selectedCategory = category - selectAction() - }) { - Text(category) - .padding() - .frame(maxWidth: .infinity) - .background(Color.blue) - .foregroundColor(.white) - .cornerRadius(10) - .padding(.horizontal) - } - } - } - .navigationTitle("Select Category") - .navigationBarItems(trailing: Button("Dismiss") { - presentationMode.wrappedValue.dismiss() - }) - } - } -} - - -// MARK: View extensions for mapView -extension MapView { - - private var MapLayer: some View { - Map(position: $vm.position){ - - } - .mapControls { - Spacer() - MapUserLocationButton() - MapPitchToggle() - } - .padding(.top, 40) - .onAppear{ - CLLocationManager().requestWhenInUseAuthorization() - } - .ignoresSafeArea() - } - - private var seeLocationsButton: some View { - Button(action: { - vm.categoryModalShown.toggle() - }) { - Text("See Locations") - .foregroundColor(.white) - .padding() - .background(Color.blue) - .cornerRadius(10) - } - .padding() - } - - private var createEventButton: some View { - NavigationLink(destination: NewEventView()) { - Text("Create Event") - .foregroundColor(.white) - .padding() - .background(Color.orange) - .cornerRadius(10) - } - - - } - -} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift index f77ef4e..891f5b4 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift @@ -10,10 +10,7 @@ import MapKit struct NewEventView: View { - @StateObject var viewModel = NewEventViewModel() - @FocusState private var fieldInFocus: textFieldFocus? - - @State private var selectedCategory: String? + @StateObject var vm = MapViewViewModel() @State private var cameraPosition: MapCameraPosition = .userLocation(fallback: .automatic) @@ -24,18 +21,28 @@ struct NewEventView: View { "Swift Buddies Event" ] + @FocusState private var fieldInFocus: textFieldFocus? + + @State private var selectedCategory: String? + @State var nameText: String = "" + @State var descriptionText: String = "" + @State var adressText: String = "" + @State var startDate: Date = Date() + @State var dueDate: Date = Date() + //@State var location: CLLocationCoordinate2D = + + var body: some View { ScrollView{ VStack(spacing: 15){ - DropdownMenu(prompt: "Select..", options: categories, - selection:$selectedCategory + selection: $selectedCategory ) - - eventNameTextfield - aboutText + nameTextfield + descriptionTextField + adressTextField datePickers mapLayer createButton @@ -50,7 +57,7 @@ struct NewEventView: View { } enum textFieldFocus: Hashable { - case category, name, about, startDate, dueDate + case name, about, adress } } @@ -62,69 +69,95 @@ struct NewEventView: View { extension NewEventView { - private var eventNameTextfield: some View { - TextField("Event name...", text: $viewModel.name ) - .frame(height: 50) - .textFieldStyle(RoundedBorderTextFieldStyle()) - .background(Color(UIColor.systemBackground)) + private var nameTextfield: some View { + TextField("Event name...", text: $nameText) .textInputAutocapitalization(.never) + .font(.headline) + .padding() + .frame(maxWidth: .infinity) + .frame(height: 55) .overlay( - RoundedRectangle(cornerRadius: 4) + RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) + .background( + Color(.secondarySystemBackground) + ) .padding(.horizontal) - .fontWeight(.bold) .onSubmit { fieldInFocus = .about } .focused($fieldInFocus, equals: .name) + + } + + private var descriptionTextField: some View { + TextField("About your event...", text: $descriptionText) + .font(.headline) + .padding() + .frame(maxWidth: .infinity) + .frame(height: 55) + .overlay( + RoundedRectangle(cornerRadius: 10) + .stroke(Color.primary, lineWidth: 1) + ) + .background( + Color(.secondarySystemBackground) + ) + .padding(.horizontal) + .onSubmit { + fieldInFocus = .adress + } + .focused($fieldInFocus, equals: .about) } - private var aboutText: some View { - TextEditor(text: $viewModel.about) - .frame(height: 120) + private var adressTextField: some View { + TextField("Full Adress...", text: $adressText) + .font(.headline) + .padding() + .frame(maxWidth: .infinity) + .frame(height: 55) .overlay( - RoundedRectangle(cornerRadius: 4) + RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) + .background( + Color(.secondarySystemBackground) + ) .padding(.horizontal) } + private var datePickers: some View { VStack(spacing: 15) { - DatePicker("Start Date", selection: $viewModel.startDate) - .frame(width: UIScreen.main.bounds.width - 64, height: 55) - .textFieldStyle(RoundedBorderTextFieldStyle()) - .padding(.horizontal) - .background(Color(UIColor.systemBackground)) - .textInputAutocapitalization(.never) + DatePicker("Start Date", selection: $startDate) + .font(.headline) + .padding() + .frame(maxWidth: .infinity) + .frame(height: 55) .overlay( - RoundedRectangle(cornerRadius: 4) + RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) - .fontWeight(.bold) + .background( + Color(.secondarySystemBackground) + ) .padding(.horizontal) - .onSubmit { - fieldInFocus = .dueDate - } - .focused($fieldInFocus, equals: .startDate) + - DatePicker("Due Date", selection: $viewModel.dueDate) - .frame(width: UIScreen.main.bounds.width - 64, height: 55) - .textFieldStyle(RoundedBorderTextFieldStyle()) - .padding(.horizontal) - .background(Color(UIColor.systemBackground)) - .textInputAutocapitalization(.never) + DatePicker("Due Date", selection: $dueDate) + .font(.headline) + .padding() + .frame(maxWidth: .infinity) + .frame(height: 55) .overlay( - RoundedRectangle(cornerRadius: 4) + RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) - .fontWeight(.bold) + .background( + Color(.secondarySystemBackground) + ) .padding(.horizontal) - .onSubmit { - - } - .focused($fieldInFocus, equals: .dueDate) } } @@ -142,13 +175,17 @@ extension NewEventView { } } .aspectRatio(1, contentMode: .fill) - .padding() - .cornerRadius(20) + .cornerRadius(15) + .padding(.horizontal) } private var createButton: some View { Button(action: { - // Save the event to database + // Save the event into core data + if selectedCategory != nil { + vm.addData(category: selectedCategory!, name: nameText, description: descriptionText, adress: adressText, startDate: startDate, dueDate: dueDate) + print(vm.savedEvents.count) + } }) { Text("Create") .frame(width: UIScreen.main.bounds.width - 64, height: 55) diff --git a/SwiftBuddiesIOS/Targets/MapModule/ViewComponents/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/ViewComponents/DropDownMenu.swift index f5b00ff..7d189f2 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/ViewComponents/DropDownMenu.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/ViewComponents/DropDownMenu.swift @@ -29,7 +29,9 @@ struct DropdownMenu: View { .rotationEffect(.degrees(isShowing ? -180 : 0)) } .frame(height: 55) - .background(scheme == .dark ? .black : .white) + .background( + Color(.secondarySystemBackground) + ) .padding(.horizontal) .bold() .onTapGesture { @@ -66,18 +68,17 @@ struct DropdownMenu: View { } .overlay( - RoundedRectangle(cornerRadius: 4) + RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) - .background(scheme == .dark ? .black : .white) + .background( + Color(.secondarySystemBackground) + ) .padding(.horizontal) } - - - - + } diff --git a/SwiftBuddiesIOS/Targets/MapModule/ViewModels/EventContainer.xcdatamodeld/EventContainer.xcdatamodel/contents b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/EventContainer.xcdatamodeld/EventContainer.xcdatamodel/contents new file mode 100644 index 0000000..ba3ef7c --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/EventContainer.xcdatamodeld/EventContainer.xcdatamodel/contents @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift index 1703f00..9414a03 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift @@ -7,23 +7,82 @@ import Foundation import SwiftUI +import CoreData import MapKit class MapViewViewModel: ObservableObject { - // @State private var selectedCategory: String? = nil - /*@Published var locations: [Location] = [ - Location(name: "Boga Heykeli", coordinate: CLLocationCoordinate2D(latitude: 40.990467, longitude: 29.029162)), - Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.043544, longitude: 29.004255)), - Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.06, longitude: 29)), - ]*/ - - @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) - @Published var categoryModalShown = false - @Published var selectedCategory: String = "Select Location" - @Published var selectedDetent: PresentationDetent = .fraction(0.2) - @Published var dismissableMessage: Bool = false - - - init(){} + let container: NSPersistentContainer + @Published var savedEvents: [EventEntity] = [] + + @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) + @Published var categoryModalShown = false + @Published var selectedCategory: String = "Select Location" + @Published var selectedDetent: PresentationDetent = .fraction(0.2) + @Published var dismissableMessage: Bool = false + + + init(){ + container = NSPersistentContainer(name: "EventContainer") + container.loadPersistentStores { description, error in + if error != nil { + print("ERROR when creating Container!") + } else { + print("Container created SUCCESFULLY") + } + } + } + + func fetchData() { + let request = NSFetchRequest(entityName: "EventEntity") + do { + savedEvents = try container.viewContext.fetch(request) + } catch let error { + print("Error fetching: \(error)") + } + } + + func addData(category: String, name: String, description: String, adress: String, startDate: Date, dueDate: Date) { + let newEvent = EventEntity(context: container.viewContext) + newEvent.category = category + newEvent.name = name + newEvent.about = description + newEvent.adress = adress + newEvent.startDate = startDate + newEvent.dueDate = dueDate + saveData() + + } + + func saveData() { + do { + try container.viewContext.save() + // to keep data updated + fetchData() + } catch let error { + print("Error saving: \(error)") + } + } + + + } + + + + + + + + + + +// @State private var selectedCategory: String? = nil + /*@Published var locations: [Location] = [ + Location(name: "Boga Heykeli", coordinate: CLLocationCoordinate2D(latitude: 40.990467, longitude: 29.029162)), + Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.043544, longitude: 29.004255)), + Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.06, longitude: 29)), + ]*/ + + + diff --git a/SwiftBuddiesIOS/Targets/MapModule/ViewModels/NewEventViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/NewEventViewModel.swift deleted file mode 100644 index 3d49cfd..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/ViewModels/NewEventViewModel.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// NewEventViewModel.swift -// Map -// -// Created by Oğuzhan Abuhanoğlu on 13.05.2024. -// - -import Foundation - -import Foundation - -class NewEventViewModel: ObservableObject { - - @Published var name = "" - @Published var category = "" - @Published var about = "" - @Published var startDate = Date() - @Published var dueDate = Date() - - init(){} - - func createButtonClicked(){ - - } -} From 5d15bab7fa95321e54cef8d51f352eb34e350468 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Thu, 13 Jun 2024 23:47:55 +0300 Subject: [PATCH 073/126] CoreData cancelled I will use swiftData --- .../EventsContainer.xcdatamodel}/contents | 0 .../{ => Sources}/Models/Location.swift | 2 + .../CategoryPickerSheet.swift | 0 .../ViewComponents/DropDownMenu.swift | 0 .../Sources/ViewModels/MapViewModel.swift | 49 +++++++++++ .../Sources/{ => Views}/MapView.swift | 12 ++- .../Sources/{ => Views}/NewEventView.swift | 34 ++++--- .../ViewModels/MapViewViewModel.swift | 88 ------------------- 8 files changed, 74 insertions(+), 111 deletions(-) rename SwiftBuddiesIOS/Targets/MapModule/{ViewModels/EventContainer.xcdatamodeld/EventContainer.xcdatamodel => Resources/EventsContainer.xcdatamodeld/EventsContainer.xcdatamodel}/contents (100%) rename SwiftBuddiesIOS/Targets/MapModule/{ => Sources}/Models/Location.swift (97%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => ViewComponents}/CategoryPickerSheet.swift (100%) rename SwiftBuddiesIOS/Targets/MapModule/{ => Sources}/ViewComponents/DropDownMenu.swift (100%) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => Views}/MapView.swift (94%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => Views}/NewEventView.swift (86%) delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/ViewModels/EventContainer.xcdatamodeld/EventContainer.xcdatamodel/contents b/SwiftBuddiesIOS/Targets/MapModule/Resources/EventsContainer.xcdatamodeld/EventsContainer.xcdatamodel/contents similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/ViewModels/EventContainer.xcdatamodeld/EventContainer.xcdatamodel/contents rename to SwiftBuddiesIOS/Targets/MapModule/Resources/EventsContainer.xcdatamodeld/EventsContainer.xcdatamodel/contents diff --git a/SwiftBuddiesIOS/Targets/MapModule/Models/Location.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift similarity index 97% rename from SwiftBuddiesIOS/Targets/MapModule/Models/Location.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift index 475c405..e911146 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Models/Location.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift @@ -21,4 +21,6 @@ struct Location: Identifiable { let coordinate: CLLocationCoordinate2D //let image: Image? = nil //let backgroundColor: Color? = nil + + } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/CategoryPickerSheet.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/ViewComponents/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/DropDownMenu.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/ViewComponents/DropDownMenu.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/DropDownMenu.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift new file mode 100644 index 0000000..b94463f --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift @@ -0,0 +1,49 @@ +// +// MapViewViewModel.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 12.05.2024. +// + +import Foundation +import SwiftUI +import CoreData +import MapKit + +class MapViewModel: ObservableObject { + + @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) + @Published var categoryModalShown = false + @Published var selectedCategory: String = "Select Location" + @Published var selectedDetent: PresentationDetent = .fraction(0.2) + @Published var dismissableMessage: Bool = false + + + init() { + + } + + + + + +} + + + + + + + + + + +// @State private var selectedCategory: String? = nil + /*@Published var locations: [Location] = [ + Location(name: "Boga Heykeli", coordinate: CLLocationCoordinate2D(latitude: 40.990467, longitude: 29.029162)), + Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.043544, longitude: 29.004255)), + Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.06, longitude: 29)), + ]*/ + + + diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift similarity index 94% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift index ed69707..660775a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift @@ -4,9 +4,11 @@ import Design public struct MapView: View { - @StateObject var vm = MapViewViewModel() + @StateObject var vm = MapViewModel() - public init() {} + public init() { + + } public var body: some View { NavigationView{ @@ -36,6 +38,7 @@ public struct MapView: View { } } } + } } @@ -52,16 +55,17 @@ public struct MapView: View { // MARK: View extensions for mapView extension MapView { + // Core Dataya Location kaydedebilirsem. Bu haritayı o lokasyonlarla başlatacağım ver her category için farklı bir pin designi olcak. private var MapLayer: some View { Map(position: $vm.position){ - + } .mapControls { Spacer() MapUserLocationButton() MapPitchToggle() } - .padding(.top, 40) + .padding(.top, 50) .onAppear{ CLLocationManager().requestWhenInUseAuthorization() } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift similarity index 86% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift index 891f5b4..4f4ed69 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift @@ -9,10 +9,11 @@ import SwiftUI import MapKit struct NewEventView: View { + @Environment(\.presentationMode) var presentationMode - @StateObject var vm = MapViewViewModel() - - @State private var cameraPosition: MapCameraPosition = .userLocation(fallback: .automatic) + @StateObject var vm = MapViewModel() + + //@State private var tappedLocation: CLLocationCoordinate2D? private let categories = [ "Meeting", @@ -21,7 +22,6 @@ struct NewEventView: View { "Swift Buddies Event" ] - @FocusState private var fieldInFocus: textFieldFocus? @State private var selectedCategory: String? @State var nameText: String = "" @@ -51,14 +51,11 @@ struct NewEventView: View { .padding(.top) Spacer() } - + } - enum textFieldFocus: Hashable { - case name, about, adress - } } #Preview { @@ -84,10 +81,7 @@ extension NewEventView { Color(.secondarySystemBackground) ) .padding(.horizontal) - .onSubmit { - fieldInFocus = .about - } - .focused($fieldInFocus, equals: .name) + } @@ -105,10 +99,7 @@ extension NewEventView { Color(.secondarySystemBackground) ) .padding(.horizontal) - .onSubmit { - fieldInFocus = .adress - } - .focused($fieldInFocus, equals: .about) + } private var adressTextField: some View { @@ -163,7 +154,7 @@ extension NewEventView { private var mapLayer: some View { VStack { - Map(position: $cameraPosition) { + Map(position: $vm.position) { } .mapControls { @@ -173,6 +164,7 @@ extension NewEventView { .onAppear{ CLLocationManager().requestWhenInUseAuthorization() } + } .aspectRatio(1, contentMode: .fill) .cornerRadius(15) @@ -183,8 +175,9 @@ extension NewEventView { Button(action: { // Save the event into core data if selectedCategory != nil { - vm.addData(category: selectedCategory!, name: nameText, description: descriptionText, adress: adressText, startDate: startDate, dueDate: dueDate) - print(vm.savedEvents.count) + + } else { + } }) { Text("Create") @@ -198,3 +191,6 @@ extension NewEventView { } } + + + diff --git a/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift deleted file mode 100644 index 9414a03..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/ViewModels/MapViewViewModel.swift +++ /dev/null @@ -1,88 +0,0 @@ -// -// MapViewViewModel.swift -// Map -// -// Created by Oğuzhan Abuhanoğlu on 12.05.2024. -// - -import Foundation -import SwiftUI -import CoreData -import MapKit - -class MapViewViewModel: ObservableObject { - - let container: NSPersistentContainer - @Published var savedEvents: [EventEntity] = [] - - @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) - @Published var categoryModalShown = false - @Published var selectedCategory: String = "Select Location" - @Published var selectedDetent: PresentationDetent = .fraction(0.2) - @Published var dismissableMessage: Bool = false - - - init(){ - container = NSPersistentContainer(name: "EventContainer") - container.loadPersistentStores { description, error in - if error != nil { - print("ERROR when creating Container!") - } else { - print("Container created SUCCESFULLY") - } - } - } - - func fetchData() { - let request = NSFetchRequest(entityName: "EventEntity") - do { - savedEvents = try container.viewContext.fetch(request) - } catch let error { - print("Error fetching: \(error)") - } - } - - func addData(category: String, name: String, description: String, adress: String, startDate: Date, dueDate: Date) { - let newEvent = EventEntity(context: container.viewContext) - newEvent.category = category - newEvent.name = name - newEvent.about = description - newEvent.adress = adress - newEvent.startDate = startDate - newEvent.dueDate = dueDate - saveData() - - } - - func saveData() { - do { - try container.viewContext.save() - // to keep data updated - fetchData() - } catch let error { - print("Error saving: \(error)") - } - } - - - -} - - - - - - - - - - -// @State private var selectedCategory: String? = nil - /*@Published var locations: [Location] = [ - Location(name: "Boga Heykeli", coordinate: CLLocationCoordinate2D(latitude: 40.990467, longitude: 29.029162)), - Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.043544, longitude: 29.004255)), - Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.06, longitude: 29)), - ]*/ - - - From d8761bf72b7ccfbe2d191738d407839e1ad09e3a Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Fri, 14 Jun 2024 01:06:44 +0300 Subject: [PATCH 074/126] EventModel created for SwiftData --- .../MapModule/Sources/Models/Location.swift | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift index e911146..1d21929 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift @@ -6,21 +6,26 @@ // import Foundation -import SwiftUI import MapKit +import SwiftData - -// Define a simple model for event -struct Location: Identifiable { - let id = UUID() +@Model +class EventModel: Identifiable { + let id: String let category: String let name: String let aboutEvent: String let startDate: TimeInterval let dueDate: TimeInterval let coordinate: CLLocationCoordinate2D - //let image: Image? = nil - //let backgroundColor: Color? = nil - + init(category: String, name: String, aboutEvent: String, startDate: TimeInterval, dueDate: TimeInterval, coordinate: CLLocationCoordinate2D) { + self.id = UUID().uuidString + self.category = category + self.name = name + self.aboutEvent = aboutEvent + self.startDate = startDate + self.dueDate = dueDate + self.coordinate = coordinate + } } From c08bdcd3ab315e3ae93e038d0e3d19054b321f66 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Wed, 26 Jun 2024 02:00:42 +0300 Subject: [PATCH 075/126] SwiftData added to save new events --- .../Sources/SwiftBuddiesIOSApp.swift | 7 +- .../{Location.swift => EventModel.swift} | 16 ++-- .../Sources/ViewModels/MapViewModel.swift | 7 +- .../MapModule/Sources/Views/MapView.swift | 3 + .../Sources/Views/NewEventView.swift | 78 ++++++++++++++++++- 5 files changed, 98 insertions(+), 13 deletions(-) rename SwiftBuddiesIOS/Targets/MapModule/Sources/Models/{Location.swift => EventModel.swift} (62%) diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 1b26734..6fa1f8a 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -1,6 +1,6 @@ import SwiftUI -import GoogleSignIn -import Core +import Map +import SwiftData @main struct SwiftBuddiesIOSApp: App { @@ -13,6 +13,9 @@ struct SwiftBuddiesIOSApp: App { WindowGroup { RootView() } + .modelContainer(for: EventModel.self) + + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift similarity index 62% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift index 1d21929..dabe809 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/Location.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift @@ -6,26 +6,26 @@ // import Foundation -import MapKit +//import MapKit import SwiftData @Model -class EventModel: Identifiable { - let id: String +public class EventModel: Identifiable { + public let id: String let category: String let name: String let aboutEvent: String - let startDate: TimeInterval - let dueDate: TimeInterval - let coordinate: CLLocationCoordinate2D + let startDate: Date + let dueDate: Date + //let coordinate: CLLocationCoordinate2D - init(category: String, name: String, aboutEvent: String, startDate: TimeInterval, dueDate: TimeInterval, coordinate: CLLocationCoordinate2D) { + init(category: String, name: String, aboutEvent: String, startDate: Date, dueDate: Date/*, coordinate: CLLocationCoordinate2D*/) { self.id = UUID().uuidString self.category = category self.name = name self.aboutEvent = aboutEvent self.startDate = startDate self.dueDate = dueDate - self.coordinate = coordinate + //self.coordinate = coordinate } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift index b94463f..a95facf 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift @@ -7,7 +7,7 @@ import Foundation import SwiftUI -import CoreData +import SwiftData import MapKit class MapViewModel: ObservableObject { @@ -23,6 +23,11 @@ class MapViewModel: ObservableObject { } + func addItem(modelContext: ModelContext, id: String, category: String, name: String, about: String, startDate: Date, dueDate: Date/*, coordinate: CLLocationCoordinate2D*/) { + let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate/*,coordinate: coordinate*/) + modelContext.insert(event) + } + diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift index 660775a..150bbee 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift @@ -1,11 +1,13 @@ import SwiftUI import MapKit import Design +import SwiftData public struct MapView: View { @StateObject var vm = MapViewModel() + public init() { } @@ -41,6 +43,7 @@ public struct MapView: View { } } + //.modelContainer(for: EventModel.self) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift index 4f4ed69..cf33539 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift @@ -7,9 +7,13 @@ import SwiftUI import MapKit +import SwiftData struct NewEventView: View { + @Environment(\.presentationMode) var presentationMode + @Environment(\.modelContext) private var context + @Query private var items: [EventModel] @StateObject var vm = MapViewModel() @@ -175,9 +179,11 @@ extension NewEventView { Button(action: { // Save the event into core data if selectedCategory != nil { - + vm.addItem(modelContext: context, id: UUID().uuidString, category: selectedCategory ?? "", name: nameText, about: descriptionText, startDate: startDate, dueDate: dueDate) + print(items.count) + self.presentationMode.wrappedValue.dismiss() } else { - + } }) { Text("Create") @@ -194,3 +200,71 @@ extension NewEventView { +/*import SwiftUI +import MapKit + +struct MapView: UIViewRepresentable { + @Binding var region: MKCoordinateRegion + @Binding var annotations: [MKPointAnnotation] + + class Coordinator: NSObject, MKMapViewDelegate { + var parent: MapView + + init(_ parent: MapView) { + self.parent = parent + } + + @objc func handleLongPress(gestureRecognizer: UILongPressGestureRecognizer) { + if gestureRecognizer.state == .began { + let location = gestureRecognizer.location(in: gestureRecognizer.view as? MKMapView) + if let mapView = gestureRecognizer.view as? MKMapView { + let coordinate = mapView.convert(location, toCoordinateFrom: mapView) + let annotation = MKPointAnnotation() + annotation.coordinate = coordinate + parent.annotations.append(annotation) + } + } + } + } + + func makeCoordinator() -> Coordinator { + return Coordinator(self) + } + + func makeUIView(context: Context) -> MKMapView { + let mapView = MKMapView() + mapView.delegate = context.coordinator + + let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.handleLongPress(gestureRecognizer:))) + mapView.addGestureRecognizer(longPressGesture) + + return mapView + } + + func updateUIView(_ uiView: MKMapView, context: Context) { + uiView.setRegion(region, animated: true) + uiView.removeAnnotations(uiView.annotations) + uiView.addAnnotations(annotations) + } +} + +struct ContentView: View { + @State private var region = MKCoordinateRegion( + center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), + span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + ) + @State private var annotations = [MKPointAnnotation]() + + var body: some View { + VStack { + MapView(region: $region, annotations: $annotations) + .aspectRatio(1, contentMode: .fill) + .cornerRadius(15) + .padding(.horizontal) + } + .onAppear { + CLLocationManager().requestWhenInUseAuthorization() + } + } +} +*/ From 9409cb2801bdc6d3584cf61049a94e3152ba1db7 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Thu, 27 Jun 2024 23:39:03 +0300 Subject: [PATCH 076/126] query for events --- .../ViewComponents/CategoryPickerSheet.swift | 17 ++++++++++++++++- .../MapModule/Sources/Views/MapView.swift | 2 +- .../MapModule/Sources/Views/NewEventView.swift | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift index cfb3c68..2f3318b 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift @@ -6,11 +6,15 @@ // import SwiftUI +import SwiftData struct CategoryPicker: View { @Environment(\.presentationMode) var presentationMode @Binding var selectedCategory: String + @Query private var items: [EventModel] + + @State private var selectedItems: [EventModel] = [] private let categories = [ "Meeting", @@ -26,8 +30,19 @@ struct CategoryPicker: View { List { ForEach(categories, id: \.self) { category in Button(action: { + print("all items count: \(items.count)") selectedCategory = category - selectAction() + selectedItems.removeAll() + for item in items { + if selectedCategory == item.category { + selectedItems.append(item) + /*for si in selectedItems { + print(si.name) + }*/ + } + } + + print("selected items \(selectedItems.count)") }) { Text(category) .padding() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift index 150bbee..1f93736 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift @@ -13,6 +13,7 @@ public struct MapView: View { } public var body: some View { + NavigationView{ ZStack { MapLayer @@ -43,7 +44,6 @@ public struct MapView: View { } } - //.modelContainer(for: EventModel.self) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift index cf33539..a9d0dd9 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift @@ -183,7 +183,7 @@ extension NewEventView { print(items.count) self.presentationMode.wrappedValue.dismiss() } else { - + //Hata mesajı } }) { Text("Create") From a94710ed7db9f57446f8209538bd9a0b94cf6193 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Sun, 30 Jun 2024 21:15:14 +0300 Subject: [PATCH 077/126] Create map w/UIViewRepresentable to get coordinate w/longPressGestureRecognizer --- .../ViewComponents/MapViewRepresentable.swift | 63 +++++++++++++ .../ViewComponents/SelectLocationView.swift | 57 ++++++++++++ .../Sources/Views/NewEventView.swift | 88 +++---------------- 3 files changed, 131 insertions(+), 77 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/MapViewRepresentable.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/SelectLocationView.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/MapViewRepresentable.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/MapViewRepresentable.swift new file mode 100644 index 0000000..d36524a --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/MapViewRepresentable.swift @@ -0,0 +1,63 @@ +// +// MapViewRepresentable.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 30.06.2024. +// + +import Foundation +import SwiftUI +import MapKit + +struct MapViewRepresentable: UIViewRepresentable { + + @Binding var tappedLocation: CLLocationCoordinate2D? + + class Coordinator: NSObject, MKMapViewDelegate { + var parent: MapViewRepresentable + + init(_ parent: MapViewRepresentable) { + self.parent = parent + } + + @objc func handleLongPress(gestureRecognizer: UILongPressGestureRecognizer) { + if gestureRecognizer.state == .began { + let location = gestureRecognizer.location(in: gestureRecognizer.view as? MKMapView) + if let mapView = gestureRecognizer.view as? MKMapView { + let coordinate = mapView.convert(location, toCoordinateFrom: mapView) + parent.tappedLocation = coordinate + } + } + } + } + + func makeCoordinator() -> Coordinator { + return Coordinator(self) + } + + func makeUIView(context: Context) -> MKMapView { + let mapView = MKMapView() + mapView.delegate = context.coordinator + + // Long press gesture recognizer + let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.handleLongPress(gestureRecognizer:))) + mapView.addGestureRecognizer(longPressGesture) + + // Haritayı kullanıcının konumu ile başlat + mapView.showsUserLocation = true + mapView.userTrackingMode = .follow + + return mapView + } + + func updateUIView(_ uiView: MKMapView, context: Context) { + // Anotasyonları kaldır ve yeni anotasyonu ekle + uiView.removeAnnotations(uiView.annotations) + if let location = tappedLocation { + let annotation = MKPointAnnotation() + annotation.coordinate = location + uiView.addAnnotation(annotation) + } + } +} + diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/SelectLocationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/SelectLocationView.swift new file mode 100644 index 0000000..73007fc --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/SelectLocationView.swift @@ -0,0 +1,57 @@ +// +// LittleMapView.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 27.06.2024. +// + + +import SwiftUI +import MapKit + +struct SelectLocationView: UIViewRepresentable { + @Binding var region: MKCoordinateRegion + @Binding var annotations: [MKPointAnnotation] + + class Coordinator: NSObject, MKMapViewDelegate { + var parent: SelectLocationView + + init(_ parent: SelectLocationView) { + self.parent = parent + } + + @objc func handleLongPress(gestureRecognizer: UILongPressGestureRecognizer) { + if gestureRecognizer.state == .began { + let location = gestureRecognizer.location(in: gestureRecognizer.view as? MKMapView) + if let mapView = gestureRecognizer.view as? MKMapView { + let coordinate = mapView.convert(location, toCoordinateFrom: mapView) + let annotation = MKPointAnnotation() + annotation.coordinate = coordinate + //parent.annotations.append(annotation) + } + } + } + } + + func makeCoordinator() -> Coordinator { + return Coordinator(self) + } + + func makeUIView(context: Context) -> MKMapView { + let mapView = MKMapView() + mapView.delegate = context.coordinator + + let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.handleLongPress(gestureRecognizer:))) + mapView.addGestureRecognizer(longPressGesture) + + return mapView + } + + func updateUIView(_ uiView: MKMapView, context: Context) { + uiView.setRegion(region, animated: true) + uiView.removeAnnotations(uiView.annotations) + uiView.addAnnotations(annotations) + } +} + + diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift index a9d0dd9..a8d47a2 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift @@ -5,6 +5,7 @@ // Created by Oğuzhan Abuhanoğlu on 13.05.2024. // +import Foundation import SwiftUI import MapKit import SwiftData @@ -13,11 +14,8 @@ struct NewEventView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context - @Query private var items: [EventModel] @StateObject var vm = MapViewModel() - - //@State private var tappedLocation: CLLocationCoordinate2D? private let categories = [ "Meeting", @@ -33,7 +31,7 @@ struct NewEventView: View { @State var adressText: String = "" @State var startDate: Date = Date() @State var dueDate: Date = Date() - //@State var location: CLLocationCoordinate2D = + @State var tappedLocation: CLLocationCoordinate2D? var body: some View { @@ -60,6 +58,9 @@ struct NewEventView: View { } + + + } #Preview { @@ -157,10 +158,9 @@ extension NewEventView { } private var mapLayer: some View { + VStack { - Map(position: $vm.position) { - - } + MapViewRepresentable(tappedLocation: $tappedLocation) .mapControls { MapUserLocationButton() MapPitchToggle() @@ -168,19 +168,21 @@ extension NewEventView { .onAppear{ CLLocationManager().requestWhenInUseAuthorization() } - } .aspectRatio(1, contentMode: .fill) .cornerRadius(15) .padding(.horizontal) + } + + private var createButton: some View { Button(action: { // Save the event into core data if selectedCategory != nil { vm.addItem(modelContext: context, id: UUID().uuidString, category: selectedCategory ?? "", name: nameText, about: descriptionText, startDate: startDate, dueDate: dueDate) - print(items.count) + print(tappedLocation?.latitude) self.presentationMode.wrappedValue.dismiss() } else { //Hata mesajı @@ -200,71 +202,3 @@ extension NewEventView { -/*import SwiftUI -import MapKit - -struct MapView: UIViewRepresentable { - @Binding var region: MKCoordinateRegion - @Binding var annotations: [MKPointAnnotation] - - class Coordinator: NSObject, MKMapViewDelegate { - var parent: MapView - - init(_ parent: MapView) { - self.parent = parent - } - - @objc func handleLongPress(gestureRecognizer: UILongPressGestureRecognizer) { - if gestureRecognizer.state == .began { - let location = gestureRecognizer.location(in: gestureRecognizer.view as? MKMapView) - if let mapView = gestureRecognizer.view as? MKMapView { - let coordinate = mapView.convert(location, toCoordinateFrom: mapView) - let annotation = MKPointAnnotation() - annotation.coordinate = coordinate - parent.annotations.append(annotation) - } - } - } - } - - func makeCoordinator() -> Coordinator { - return Coordinator(self) - } - - func makeUIView(context: Context) -> MKMapView { - let mapView = MKMapView() - mapView.delegate = context.coordinator - - let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.handleLongPress(gestureRecognizer:))) - mapView.addGestureRecognizer(longPressGesture) - - return mapView - } - - func updateUIView(_ uiView: MKMapView, context: Context) { - uiView.setRegion(region, animated: true) - uiView.removeAnnotations(uiView.annotations) - uiView.addAnnotations(annotations) - } -} - -struct ContentView: View { - @State private var region = MKCoordinateRegion( - center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), - span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - ) - @State private var annotations = [MKPointAnnotation]() - - var body: some View { - VStack { - MapView(region: $region, annotations: $annotations) - .aspectRatio(1, contentMode: .fill) - .cornerRadius(15) - .padding(.horizontal) - } - .onAppear { - CLLocationManager().requestWhenInUseAuthorization() - } - } -} -*/ From 4ae4b15dcda5e56de8d67f188b282f99685f8169 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 1 Jul 2024 18:14:31 +0300 Subject: [PATCH 078/126] Save location latitude and longitude, move them to mapView --- .../MapModule/Sources/Models/EventModel.swift | 11 ++- .../ViewComponents/CategoryPickerSheet.swift | 11 ++- .../Sources/ViewModels/MapViewModel.swift | 6 +- .../MapModule/Sources/Views/MapView.swift | 83 ++----------------- .../Sources/Views/NewEventView.swift | 9 +- 5 files changed, 29 insertions(+), 91 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift index dabe809..fa0e2e5 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift @@ -6,7 +6,6 @@ // import Foundation -//import MapKit import SwiftData @Model @@ -17,15 +16,19 @@ public class EventModel: Identifiable { let aboutEvent: String let startDate: Date let dueDate: Date - //let coordinate: CLLocationCoordinate2D + let latitude: Double + let longitude: Double - init(category: String, name: String, aboutEvent: String, startDate: Date, dueDate: Date/*, coordinate: CLLocationCoordinate2D*/) { + + init(category: String, name: String, aboutEvent: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { self.id = UUID().uuidString self.category = category self.name = name self.aboutEvent = aboutEvent self.startDate = startDate self.dueDate = dueDate - //self.coordinate = coordinate + self.latitude = latitude + self.longitude = longitude + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift index 2f3318b..51c2261 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift @@ -9,12 +9,14 @@ import SwiftUI import SwiftData struct CategoryPicker: View { + @Environment(\.presentationMode) var presentationMode + @StateObject var vm = MapViewModel() @Binding var selectedCategory: String - @Query private var items: [EventModel] - @State private var selectedItems: [EventModel] = [] + @Query private var items: [EventModel] + @Binding var selectedItems: [EventModel] private let categories = [ "Meeting", @@ -36,12 +38,9 @@ struct CategoryPicker: View { for item in items { if selectedCategory == item.category { selectedItems.append(item) - /*for si in selectedItems { - print(si.name) - }*/ } } - + presentationMode.wrappedValue.dismiss() print("selected items \(selectedItems.count)") }) { Text(category) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift index a95facf..53543c4 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift @@ -15,7 +15,7 @@ class MapViewModel: ObservableObject { @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) @Published var categoryModalShown = false @Published var selectedCategory: String = "Select Location" - @Published var selectedDetent: PresentationDetent = .fraction(0.2) + @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var dismissableMessage: Bool = false @@ -23,8 +23,8 @@ class MapViewModel: ObservableObject { } - func addItem(modelContext: ModelContext, id: String, category: String, name: String, about: String, startDate: Date, dueDate: Date/*, coordinate: CLLocationCoordinate2D*/) { - let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate/*,coordinate: coordinate*/) + func addItem(modelContext: ModelContext, id: String, category: String, name: String, about: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { + let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate, latitude: latitude, longitude: longitude) modelContext.insert(event) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift index 1f93736..8a59c65 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift @@ -6,6 +6,7 @@ import SwiftData public struct MapView: View { @StateObject var vm = MapViewModel() + @State private var items: [EventModel] = [] public init() { @@ -18,17 +19,20 @@ public struct MapView: View { ZStack { MapLayer .bottomSheet( - presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .medium], + presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .fraction(0.9), .medium], detentSelection: $vm.selectedDetent, isPresented: $vm.categoryModalShown, sheetCornerRadius: 12, interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $vm.selectedCategory) { - vm.selectedDetent = .fraction(0.2) - vm.dismissableMessage.toggle() + CategoryPicker(selectedCategory: $vm.selectedCategory, selectedItems: $items) { + } } onDismiss: { - + for item in items { + print("Category: \(item.category)") + print("Latitude: \(item.latitude)") + print("Longitude: \(item.longitude)") + } } if !vm.categoryModalShown { @@ -101,72 +105,3 @@ extension MapView { } } - - - - - -/*DismissableMessage(displayMessage: $vm.dismissableMessage, delay: 3.0) { - Text("\(vm.selectedCategory)") - .padding() - .foregroundColor(.white) - .background(Color.black.opacity(0.75)) - .cornerRadius(5) - .padding(.top, 80) // Adjust this to properly place on the screen -}*/ - - - -// Map view -/*struct MapLocationsView: View { - var locations: [Location] - - var body: some View { - - VStack { - Map(position: .constant(.automatic)) { - ForEach(locations) { location in - Annotation(coordinate: location.coordinate) { - ZStack { - RoundedRectangle(cornerRadius: 5) - .fill(location.backgroundColor ?? Color.teal) - if let image = location.image { - image - .frame(width: 12, height: 12) - .padding(5) - } else { - Image(systemName: "house") - .frame(width: 24, height: 24) - .padding(5) - } - } - } label: { - Text(location.name) - } - - } - Annotation("Columbia University", coordinate: .columbiaUniversity) { - ZStack { - RoundedRectangle(cornerRadius: 5) - .fill(Color.teal) - Text("🎓") - .padding(5) - } - } - } - - Map( - coordinateRegion: .constant( - MKCoordinateRegion( - center: CLLocationCoordinate2D(latitude: 41.04, longitude: 29), - latitudinalMeters: 10000, - longitudinalMeters: 10000 - ) - ), - annotationItems: locations - ) { location in - MapPin(coordinate: location.coordinate, tint: Color.orange) - } - } - } -}*/ diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift index a8d47a2..d158765 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift @@ -14,7 +14,7 @@ struct NewEventView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context - + @Query private var items: [EventModel] @StateObject var vm = MapViewModel() private let categories = [ @@ -31,7 +31,7 @@ struct NewEventView: View { @State var adressText: String = "" @State var startDate: Date = Date() @State var dueDate: Date = Date() - @State var tappedLocation: CLLocationCoordinate2D? + @State var tappedLocation: CLLocationCoordinate2D? = nil var body: some View { @@ -180,8 +180,9 @@ extension NewEventView { private var createButton: some View { Button(action: { // Save the event into core data - if selectedCategory != nil { - vm.addItem(modelContext: context, id: UUID().uuidString, category: selectedCategory ?? "", name: nameText, about: descriptionText, startDate: startDate, dueDate: dueDate) + if selectedCategory != nil, tappedLocation != nil { + vm.addItem(modelContext: context, id: UUID().uuidString, category: selectedCategory ?? "", name: nameText, about: descriptionText, startDate: startDate, dueDate: dueDate, latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) + print(items.count) print(tappedLocation?.latitude) self.presentationMode.wrappedValue.dismiss() } else { From 901eba385dc3808c3c52d8a8dd9367d0274469f6 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Tue, 2 Jul 2024 03:31:48 +0300 Subject: [PATCH 079/126] custom annotation view created, put it on map view for events --- .../ViewComponents/CustomAnnotationView.swift | 41 +++++++++++++++++++ .../MapModule/Sources/Views/MapView.swift | 25 ++++++++++- 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CustomAnnotationView.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CustomAnnotationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CustomAnnotationView.swift new file mode 100644 index 0000000..5ab006d --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CustomAnnotationView.swift @@ -0,0 +1,41 @@ +// +// CustomAnnotationView.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 2.07.2024. +// + +import SwiftUI + +struct CustomAnnotationView: View { + + var body: some View { + + VStack{ + Image(systemName: "map.circle.fill") + .resizable() + .scaledToFit() + .frame(width: 30, height: 30) + .foregroundColor(.white) + .padding(6) + .background(Color.orange) + .clipShape(.circle) + + Image(systemName: "triangle.fill") + .resizable() + .scaledToFit() + .frame(width: 10, height: 10) + .foregroundColor(Color.orange) + .rotationEffect(Angle(degrees: 180)) + .offset(y: -11) + + } + //bu paddingi annotation yerleştirildiğinde konumu kapatmaması ve okun tam lokasyonnu göstermesi için kullandım + .padding(.bottom) + + } +} + +#Preview { + CustomAnnotationView() +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift index 8a59c65..190454a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift @@ -8,6 +8,10 @@ public struct MapView: View { @StateObject var vm = MapViewModel() @State private var items: [EventModel] = [] + @State private var region: MKCoordinateRegion = MKCoordinateRegion( + center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), + span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + ) public init() { @@ -32,6 +36,9 @@ public struct MapView: View { print("Category: \(item.category)") print("Latitude: \(item.latitude)") print("Longitude: \(item.longitude)") + if let firstItem = items.first { + setMapRegion(to: firstItem) + } } } @@ -52,6 +59,14 @@ public struct MapView: View { } + private func setMapRegion(to item: EventModel) { + let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) + let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + withAnimation(.easeInOut) { + self.region = MKCoordinateRegion(center: coordinate, span: span) + } + } + } #Preview { @@ -64,8 +79,14 @@ extension MapView { // Core Dataya Location kaydedebilirsem. Bu haritayı o lokasyonlarla başlatacağım ver her category için farklı bir pin designi olcak. private var MapLayer: some View { - Map(position: $vm.position){ - + Map(coordinateRegion: $region, annotationItems: items) { item in + MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { + CustomAnnotationView() + .shadow(radius: 10) + .onTapGesture { + setMapRegion(to: item) + } + } } .mapControls { Spacer() From 0674686dfd76f514a7f9ad957860d83e013d35fa Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Wed, 10 Jul 2024 16:39:40 +0300 Subject: [PATCH 080/126] Requesting swift data has been moved to mapView --- .../EventsContainer.xcdatamodel/contents | 11 ---- .../{ => MapView}/Models/EventModel.swift | 0 .../ViewComponents/CategoryPickerSheet.swift | 12 ++-- .../ViewComponents/CustomAnnotationView.swift | 0 .../ViewComponents/DropDownMenu.swift | 0 .../ViewComponents/MapViewRepresentable.swift | 0 .../MapView/ViewModels/MapViewModel.swift | 65 +++++++++++++++++++ .../Sources/{ => MapView}/Views/MapView.swift | 38 +++++------ .../{ => MapView}/Views/NewEventView.swift | 0 .../ViewComponents/SelectLocationView.swift | 57 ---------------- .../Sources/ViewModels/MapViewModel.swift | 54 --------------- 11 files changed, 88 insertions(+), 149 deletions(-) delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Resources/EventsContainer.xcdatamodeld/EventsContainer.xcdatamodel/contents rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => MapView}/Models/EventModel.swift (100%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => MapView}/ViewComponents/CategoryPickerSheet.swift (84%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => MapView}/ViewComponents/CustomAnnotationView.swift (100%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => MapView}/ViewComponents/DropDownMenu.swift (100%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => MapView}/ViewComponents/MapViewRepresentable.swift (100%) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => MapView}/Views/MapView.swift (77%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/{ => MapView}/Views/NewEventView.swift (100%) delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/SelectLocationView.swift delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Resources/EventsContainer.xcdatamodeld/EventsContainer.xcdatamodel/contents b/SwiftBuddiesIOS/Targets/MapModule/Resources/EventsContainer.xcdatamodeld/EventsContainer.xcdatamodel/contents deleted file mode 100644 index ba3ef7c..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Resources/EventsContainer.xcdatamodeld/EventsContainer.xcdatamodel/contents +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/Models/EventModel.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift similarity index 84% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift index 51c2261..cfbda5d 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift @@ -15,8 +15,8 @@ struct CategoryPicker: View { @Binding var selectedCategory: String - @Query private var items: [EventModel] - @Binding var selectedItems: [EventModel] + //@Query private var items: [EventModel] + //@Binding var selectedItems: [EventModel] private let categories = [ "Meeting", @@ -32,16 +32,16 @@ struct CategoryPicker: View { List { ForEach(categories, id: \.self) { category in Button(action: { - print("all items count: \(items.count)") + selectedCategory = category - selectedItems.removeAll() + /*selectedItems.removeAll() for item in items { if selectedCategory == item.category { selectedItems.append(item) } - } + }*/ presentationMode.wrappedValue.dismiss() - print("selected items \(selectedItems.count)") + }) { Text(category) .padding() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CustomAnnotationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/CustomAnnotationView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/DropDownMenu.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/MapViewRepresentable.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/MapViewRepresentable.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift new file mode 100644 index 0000000..19ab66b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -0,0 +1,65 @@ +// +// MapViewViewModel.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 12.05.2024. +// + +import Foundation +import SwiftUI +import SwiftData +import MapKit +import CoreLocation + +class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { + + @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) + @Published var categoryModalShown = false + @Published var selectedCategory: String = "Select Location" + @Published var selectedDetent: PresentationDetent = .fraction(0.9) + @Published var dismissableMessage: Bool = false + + @Published var region: MKCoordinateRegion = MKCoordinateRegion( + center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), + span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + ) + + private let locationManager = CLLocationManager() + + override init() { + super.init() + locationManager.delegate = self + locationManager.desiredAccuracy = kCLLocationAccuracyBest + locationManager.requestWhenInUseAuthorization() + locationManager.startUpdatingLocation() + } + + func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { + if let location = locations.first { + withAnimation { + region = MKCoordinateRegion( + center: location.coordinate, + span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + ) + } + locationManager.stopUpdatingLocation() + } + } + + func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { + print("Failed to get user location: \(error)") + } + + func addItem(modelContext: ModelContext, id: String, category: String, name: String, about: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { + let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate, latitude: latitude, longitude: longitude) + modelContext.insert(event) + } + + func setMapRegion(to item: EventModel) { + let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) + let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + withAnimation(.easeInOut) { + self.region = MKCoordinateRegion(center: coordinate, span: span) + } + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift similarity index 77% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift index 190454a..327b1cc 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift @@ -6,13 +6,10 @@ import SwiftData public struct MapView: View { @StateObject var vm = MapViewModel() - @State private var items: [EventModel] = [] - - @State private var region: MKCoordinateRegion = MKCoordinateRegion( - center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), - span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - ) + @Query private var items: [EventModel] + @State private var selectedItems: [EventModel] = [] + public init() { } @@ -28,16 +25,23 @@ public struct MapView: View { isPresented: $vm.categoryModalShown, sheetCornerRadius: 12, interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $vm.selectedCategory, selectedItems: $items) { + CategoryPicker(selectedCategory: $vm.selectedCategory) { } } onDismiss: { + selectedItems.removeAll() for item in items { + if vm.selectedCategory == item.category { + selectedItems.append(item) + } + } + print("selected items count: \(selectedItems.count)") + for item in selectedItems { print("Category: \(item.category)") print("Latitude: \(item.latitude)") print("Longitude: \(item.longitude)") if let firstItem = items.first { - setMapRegion(to: firstItem) + vm.setMapRegion(to: firstItem) } } } @@ -54,19 +58,11 @@ public struct MapView: View { } } + + } - - } - - - private func setMapRegion(to item: EventModel) { - let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) - let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - withAnimation(.easeInOut) { - self.region = MKCoordinateRegion(center: coordinate, span: span) - } + } - } #Preview { @@ -79,12 +75,12 @@ extension MapView { // Core Dataya Location kaydedebilirsem. Bu haritayı o lokasyonlarla başlatacağım ver her category için farklı bir pin designi olcak. private var MapLayer: some View { - Map(coordinateRegion: $region, annotationItems: items) { item in + Map(coordinateRegion: $vm.region, annotationItems: selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { CustomAnnotationView() .shadow(radius: 10) .onTapGesture { - setMapRegion(to: item) + vm.setMapRegion(to: item) } } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/Views/NewEventView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/SelectLocationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/SelectLocationView.swift deleted file mode 100644 index 73007fc..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewComponents/SelectLocationView.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// LittleMapView.swift -// Map -// -// Created by Oğuzhan Abuhanoğlu on 27.06.2024. -// - - -import SwiftUI -import MapKit - -struct SelectLocationView: UIViewRepresentable { - @Binding var region: MKCoordinateRegion - @Binding var annotations: [MKPointAnnotation] - - class Coordinator: NSObject, MKMapViewDelegate { - var parent: SelectLocationView - - init(_ parent: SelectLocationView) { - self.parent = parent - } - - @objc func handleLongPress(gestureRecognizer: UILongPressGestureRecognizer) { - if gestureRecognizer.state == .began { - let location = gestureRecognizer.location(in: gestureRecognizer.view as? MKMapView) - if let mapView = gestureRecognizer.view as? MKMapView { - let coordinate = mapView.convert(location, toCoordinateFrom: mapView) - let annotation = MKPointAnnotation() - annotation.coordinate = coordinate - //parent.annotations.append(annotation) - } - } - } - } - - func makeCoordinator() -> Coordinator { - return Coordinator(self) - } - - func makeUIView(context: Context) -> MKMapView { - let mapView = MKMapView() - mapView.delegate = context.coordinator - - let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.handleLongPress(gestureRecognizer:))) - mapView.addGestureRecognizer(longPressGesture) - - return mapView - } - - func updateUIView(_ uiView: MKMapView, context: Context) { - uiView.setRegion(region, animated: true) - uiView.removeAnnotations(uiView.annotations) - uiView.addAnnotations(annotations) - } -} - - diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift deleted file mode 100644 index 53543c4..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/ViewModels/MapViewModel.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// MapViewViewModel.swift -// Map -// -// Created by Oğuzhan Abuhanoğlu on 12.05.2024. -// - -import Foundation -import SwiftUI -import SwiftData -import MapKit - -class MapViewModel: ObservableObject { - - @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) - @Published var categoryModalShown = false - @Published var selectedCategory: String = "Select Location" - @Published var selectedDetent: PresentationDetent = .fraction(0.9) - @Published var dismissableMessage: Bool = false - - - init() { - - } - - func addItem(modelContext: ModelContext, id: String, category: String, name: String, about: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { - let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate, latitude: latitude, longitude: longitude) - modelContext.insert(event) - } - - - - - -} - - - - - - - - - - -// @State private var selectedCategory: String? = nil - /*@Published var locations: [Location] = [ - Location(name: "Boga Heykeli", coordinate: CLLocationCoordinate2D(latitude: 40.990467, longitude: 29.029162)), - Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.043544, longitude: 29.004255)), - Location(name: "Coffee Shop 1", coordinate: CLLocationCoordinate2D(latitude: 41.06, longitude: 29)), - ]*/ - - - From 51469c963a04b365f5488a90b79ebce99f29642b Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Wed, 17 Jul 2024 00:05:19 +0300 Subject: [PATCH 081/126] Use navigationStack instead of navigationView --- .../Sources/MapView/Models/Coordinator.swift | 29 +++++ .../MapView/Models/EventSingletonModel.swift | 22 ++++ .../ViewComponents/CategoryPickerSheet.swift | 10 -- .../ViewComponents/CustomAnnotationView.swift | 34 ++++++ .../MapView/ViewComponents/DropDownMenu.swift | 7 +- .../MapView/ViewModels/MapViewModel.swift | 21 +++- .../Sources/MapView/Views/MapView.swift | 112 +++++++++--------- .../Sources/MapView/Views/NewEventView.swift | 112 ++++++------------ .../MapView/Views/SelectLocationMapView.swift | 78 ++++++++++++ 9 files changed, 281 insertions(+), 144 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coordinator.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/SelectLocationMapView.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coordinator.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coordinator.swift new file mode 100644 index 0000000..7a94e64 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coordinator.swift @@ -0,0 +1,29 @@ +// +// Coordinator.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 11.07.2024. +// + +import Foundation +import SwiftUI + + +class Coordinator: ObservableObject { + + enum NavigationDestination: Hashable { + case mapView + case newEventView + case selectLocationMapView + } + + @Published var path = NavigationPath() + + func navigate(to destination: NavigationDestination) { + path.append(destination) + } + + func popToRoot() { + path.removeLast(path.count) + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift new file mode 100644 index 0000000..c55133e --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift @@ -0,0 +1,22 @@ +// +// EventSingletonModel.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 10.07.2024. +// + +import Foundation + +class EventSingletonModel { + + static var sharedInstance = EventSingletonModel() + + var category: String = "" + var name: String = "" + var aboutEvent: String = "" + var startDate: Date = Date() + var dueDate: Date = Date() + + private init(){} + +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift index cfbda5d..3bd1a1e 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift @@ -15,9 +15,6 @@ struct CategoryPicker: View { @Binding var selectedCategory: String - //@Query private var items: [EventModel] - //@Binding var selectedItems: [EventModel] - private let categories = [ "Meeting", "Study Body", @@ -32,14 +29,7 @@ struct CategoryPicker: View { List { ForEach(categories, id: \.self) { category in Button(action: { - selectedCategory = category - /*selectedItems.removeAll() - for item in items { - if selectedCategory == item.category { - selectedItems.append(item) - } - }*/ presentationMode.wrappedValue.dismiss() }) { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift index 5ab006d..7c95d0e 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift @@ -39,3 +39,37 @@ struct CustomAnnotationView: View { #Preview { CustomAnnotationView() } + + +struct RedAnnotationView: View { + + var body: some View { + + VStack{ + Image(systemName: "map.circle.fill") + .resizable() + .scaledToFit() + .frame(width: 30, height: 30) + .foregroundColor(.white) + .padding(6) + .background(Color.red) + .clipShape(.circle) + + Image(systemName: "triangle.fill") + .resizable() + .scaledToFit() + .frame(width: 10, height: 10) + .foregroundColor(Color.red) + .rotationEffect(Angle(degrees: 180)) + .offset(y: -11) + + } + //bu paddingi annotation yerleştirildiğinde konumu kapatmaması ve okun tam lokasyonnu göstermesi için kullandım + .padding(.bottom) + + } +} + +#Preview { + RedAnnotationView() +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift index 7d189f2..cf21b9c 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift @@ -35,7 +35,7 @@ struct DropdownMenu: View { .padding(.horizontal) .bold() .onTapGesture { - withAnimation(.snappy) { + withAnimation(.easeInOut) { isShowing.toggle() } } @@ -59,7 +59,10 @@ struct DropdownMenu: View { .padding(.horizontal) .onTapGesture { selection = option - isShowing.toggle() + withAnimation(.easeInOut) { + isShowing.toggle() + } + } } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift index 19ab66b..dec5219 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -13,7 +13,6 @@ import CoreLocation class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { - @Published var position: MapCameraPosition = .userLocation(fallback: .automatic) @Published var categoryModalShown = false @Published var selectedCategory: String = "Select Location" @Published var selectedDetent: PresentationDetent = .fraction(0.9) @@ -24,7 +23,7 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) ) - private let locationManager = CLLocationManager() + let locationManager = CLLocationManager() override init() { super.init() @@ -62,4 +61,22 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { self.region = MKCoordinateRegion(center: coordinate, span: span) } } + + func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { + selectedItems.removeAll() + + for item in items { + print("selected category: \(selectedCategory)") + print("item category: \(item.category)") + if selectedCategory == item.category { + selectedItems.append(item) + } + } + + for item in selectedItems { + if let firstItem = items.first { + setMapRegion(to: firstItem) + } + } + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift index 327b1cc..484f0b8 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift @@ -9,62 +9,59 @@ public struct MapView: View { @Query private var items: [EventModel] @State private var selectedItems: [EventModel] = [] + @StateObject var coordinator = Coordinator() public init() { } public var body: some View { - - NavigationView{ + NavigationStack(path: $coordinator.path) { ZStack { MapLayer - .bottomSheet( - presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .fraction(0.9), .medium], - detentSelection: $vm.selectedDetent, - isPresented: $vm.categoryModalShown, - sheetCornerRadius: 12, - interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $vm.selectedCategory) { + .edgesIgnoringSafeArea([.top, .leading, .trailing]) + .bottomSheet( + presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .fraction(0.9), .medium], + detentSelection: $vm.selectedDetent, + isPresented: $vm.categoryModalShown, + sheetCornerRadius: 12, + interactiveDismissDisabled: false) { + CategoryPicker(selectedCategory: $vm.selectedCategory) {} + } onDismiss: { + vm.filteredItems(items: items, selectedItems: &selectedItems) + print("all items count: \(items.count)") + print("selected items count: \(selectedItems.count)") } - } onDismiss: { - selectedItems.removeAll() - for item in items { - if vm.selectedCategory == item.category { - selectedItems.append(item) - } - } - print("selected items count: \(selectedItems.count)") - for item in selectedItems { - print("Category: \(item.category)") - print("Latitude: \(item.latitude)") - print("Longitude: \(item.longitude)") - if let firstItem = items.first { - vm.setMapRegion(to: firstItem) - } - } - } - + if !vm.categoryModalShown { VStack { Spacer() - HStack{ + HStack { seeLocationsButton createEventButton .padding() } } } - } - - + .navigationDestination(for: Coordinator.NavigationDestination.self) { destination in + switch destination { + case .newEventView: + NewEventView() + .environmentObject(coordinator) + case .selectLocationMapView: + SelectLocationMapView() + .environmentObject(coordinator) + case .mapView: + MapView() + .environmentObject(coordinator) + } + } } - + .environmentObject(coordinator) } } - #Preview { MapView() } @@ -77,7 +74,7 @@ extension MapView { private var MapLayer: some View { Map(coordinateRegion: $vm.region, annotationItems: selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { - CustomAnnotationView() + RedAnnotationView() .shadow(radius: 10) .onTapGesture { vm.setMapRegion(to: item) @@ -93,32 +90,35 @@ extension MapView { .onAppear{ CLLocationManager().requestWhenInUseAuthorization() } - .ignoresSafeArea() - } - - private var seeLocationsButton: some View { - Button(action: { - vm.categoryModalShown.toggle() - }) { - Text("See Locations") - .foregroundColor(.white) - .padding() - .background(Color.blue) - .cornerRadius(10) + .onDisappear { + vm.locationManager.stopUpdatingLocation() } - .padding() + } - private var createEventButton: some View { - NavigationLink(destination: NewEventView()) { - Text("Create Event") - .foregroundColor(.white) - .padding() - .background(Color.orange) - .cornerRadius(10) + private var seeLocationsButton: some View { + Button(action: { + vm.categoryModalShown.toggle() + }) { + Text("See Locations") + .foregroundColor(.white) + .padding() + .background(Color.blue) + .cornerRadius(10) + } + .padding() } - - } + private var createEventButton: some View { + Button(action: { + coordinator.navigate(to: .newEventView) + }) { + Text("Create Event") + .foregroundColor(.white) + .padding() + .background(Color.orange) + .cornerRadius(10) + } + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift index d158765..382f1fe 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift @@ -5,17 +5,16 @@ // Created by Oğuzhan Abuhanoğlu on 13.05.2024. // -import Foundation import SwiftUI -import MapKit import SwiftData struct NewEventView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context - @Query private var items: [EventModel] + @StateObject var vm = MapViewModel() + @EnvironmentObject var coordinator: Coordinator private let categories = [ "Meeting", @@ -23,52 +22,43 @@ struct NewEventView: View { "Place to work", "Swift Buddies Event" ] - - + @State private var selectedCategory: String? @State var nameText: String = "" @State var descriptionText: String = "" @State var adressText: String = "" @State var startDate: Date = Date() @State var dueDate: Date = Date() - @State var tappedLocation: CLLocationCoordinate2D? = nil - + + + var body: some View { - - ScrollView{ - VStack(spacing: 15){ - DropdownMenu(prompt: "Select..", - options: categories, - selection: $selectedCategory - ) - nameTextfield - descriptionTextField - adressTextField - datePickers - mapLayer - createButton - } - .navigationTitle("Event Details") - .padding(.top) - Spacer() + ScrollView { + VStack(spacing: 15) { + DropdownMenu(prompt: "Select..", + options: categories, + selection: $selectedCategory) + nameTextfield + descriptionTextField + adressTextField + datePickers + NextButton } - - - + .navigationTitle("Event Details") + .navigationBarTitleDisplayMode(.large) + .padding(.top) + Spacer() + } } - - - - } + + #Preview { NewEventView() } - - extension NewEventView { private var nameTextfield: some View { @@ -86,8 +76,6 @@ extension NewEventView { Color(.secondarySystemBackground) ) .padding(.horizontal) - - } private var descriptionTextField: some View { @@ -104,11 +92,10 @@ extension NewEventView { Color(.secondarySystemBackground) ) .padding(.horizontal) - } private var adressTextField: some View { - TextField("Full Adress...", text: $adressText) + TextField("Full Address...", text: $adressText) .font(.headline) .padding() .frame(maxWidth: .infinity) @@ -123,7 +110,6 @@ extension NewEventView { .padding(.horizontal) } - private var datePickers: some View { VStack(spacing: 15) { DatePicker("Start Date", selection: $startDate) @@ -139,7 +125,6 @@ extension NewEventView { Color(.secondarySystemBackground) ) .padding(.horizontal) - DatePicker("Due Date", selection: $dueDate) .font(.headline) @@ -157,49 +142,28 @@ extension NewEventView { } } - private var mapLayer: some View { - - VStack { - MapViewRepresentable(tappedLocation: $tappedLocation) - .mapControls { - MapUserLocationButton() - MapPitchToggle() - } - .onAppear{ - CLLocationManager().requestWhenInUseAuthorization() - } - } - .aspectRatio(1, contentMode: .fill) - .cornerRadius(15) - .padding(.horizontal) - - } - - - - private var createButton: some View { + private var NextButton: some View { Button(action: { - // Save the event into core data - if selectedCategory != nil, tappedLocation != nil { - vm.addItem(modelContext: context, id: UUID().uuidString, category: selectedCategory ?? "", name: nameText, about: descriptionText, startDate: startDate, dueDate: dueDate, latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) - print(items.count) - print(tappedLocation?.latitude) - self.presentationMode.wrappedValue.dismiss() + if selectedCategory != nil { + EventSingletonModel.sharedInstance.category = selectedCategory ?? "" + EventSingletonModel.sharedInstance.name = nameText + EventSingletonModel.sharedInstance.aboutEvent = descriptionText + EventSingletonModel.sharedInstance.startDate = startDate + EventSingletonModel.sharedInstance.dueDate = dueDate + coordinator.navigate(to: .selectLocationMapView) } else { - //Hata mesajı + // Handle error message if selectedCategory is nil } + }) { - Text("Create") + Text("Next") .frame(width: UIScreen.main.bounds.width - 64, height: 55) .padding(.horizontal) .background(RoundedRectangle(cornerRadius: 10).fill(Color.orange)) - .foregroundStyle(.white) + .foregroundColor(.white) .fontWeight(.bold) - } - + .disabled(selectedCategory == nil) // Disable button if selectedCategory is nil + } } - - - diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/SelectLocationMapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/SelectLocationMapView.swift new file mode 100644 index 0000000..e323a8d --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/SelectLocationMapView.swift @@ -0,0 +1,78 @@ +// +// SelectLocationMapView.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 10.07.2024. +// + +import SwiftUI +import MapKit +import SwiftData + +struct SelectLocationMapView: View { + + @Environment(\.modelContext) private var context + @Environment(\.presentationMode) var presentationMode + @EnvironmentObject var coordinator: Coordinator + + @StateObject var vm = MapViewModel() + + @State var tappedLocation: CLLocationCoordinate2D? = nil + let eventSingleton = EventSingletonModel.sharedInstance + + var body: some View { + ZStack { + mapLayer + .edgesIgnoringSafeArea([.top, .leading, .trailing]) + + VStack { + Spacer() + createButton + .padding() + } + + } + } +} + +#Preview { + SelectLocationMapView() +} + +extension SelectLocationMapView { + + private var mapLayer: some View { + VStack { + MapViewRepresentable(tappedLocation: $tappedLocation) + .mapControls { + MapUserLocationButton() + MapPitchToggle() + } + .onAppear{ + CLLocationManager().requestWhenInUseAuthorization() + } + } + .aspectRatio(1, contentMode: .fill) + .cornerRadius(15) + .padding(.horizontal) + + } + + private var createButton: some View { + Button(action: { + // Save the event into core data + vm.addItem(modelContext: context, id: UUID().uuidString, category: eventSingleton.category, name: eventSingleton.name, about: eventSingleton.aboutEvent, startDate: eventSingleton.startDate, dueDate: eventSingleton.dueDate, latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) + + coordinator.popToRoot() + }) { + Text("Create") + .frame(width: UIScreen.main.bounds.width - 64, height: 55) + .padding(.horizontal) + .background(RoundedRectangle(cornerRadius: 10).fill(Color.orange)) + .foregroundStyle(.white) + .fontWeight(.bold) + + } + } + +} From 2e821c1e26840857bb1431830b2b19928bb02dbf Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Thu, 18 Jul 2024 03:51:07 +0300 Subject: [PATCH 082/126] Different pins for all categories, show all pins at beginning --- .../MapView/Models/EventCategory.swift | 15 ++++ .../Sources/MapView/Models/EventModel.swift | 2 +- .../ViewComponents/CustomAnnotationView.swift | 73 ++++++++++++++++- .../MapView/ViewModels/MapViewModel.swift | 16 ++-- .../Sources/MapView/Views/MapView.swift | 81 ++++++++++++++----- 5 files changed, 155 insertions(+), 32 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift new file mode 100644 index 0000000..ad3ffcf --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift @@ -0,0 +1,15 @@ +// +// EventCategory.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 17.07.2024. +// + +import Foundation + +enum EventCategory: String, CaseIterable, Codable{ + case meeting = "Meeting" + case studyBody = "Study Body" + case placeToWork = "Place to work" + case swiftBuddiesEvent = "Swift Buddies Event" +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index fa0e2e5..447f28f 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -9,7 +9,7 @@ import Foundation import SwiftData @Model -public class EventModel: Identifiable { +public class EventModel: Identifiable{ public let id: String let category: String let name: String diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift index 7c95d0e..16f2203 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift @@ -7,7 +7,7 @@ import SwiftUI -struct CustomAnnotationView: View { +struct OrangeAnnotationView: View { var body: some View { @@ -37,7 +37,7 @@ struct CustomAnnotationView: View { } #Preview { - CustomAnnotationView() + OrangeAnnotationView() } @@ -73,3 +73,72 @@ struct RedAnnotationView: View { #Preview { RedAnnotationView() } + + +struct BlueAnnotationView: View { + + var body: some View { + + VStack{ + Image(systemName: "map.circle.fill") + .resizable() + .scaledToFit() + .frame(width: 30, height: 30) + .foregroundColor(.white) + .padding(6) + .background(Color.blue) + .clipShape(.circle) + + Image(systemName: "triangle.fill") + .resizable() + .scaledToFit() + .frame(width: 10, height: 10) + .foregroundColor(Color.blue) + .rotationEffect(Angle(degrees: 180)) + .offset(y: -11) + + } + //bu paddingi annotation yerleştirildiğinde konumu kapatmaması ve okun tam lokasyonnu göstermesi için kullandım + .padding(.bottom) + + } +} + +#Preview { + BlueAnnotationView() +} + + +struct GreenAnnotationView: View { + + var body: some View { + + VStack{ + Image(systemName: "map.circle.fill") + .resizable() + .scaledToFit() + .frame(width: 30, height: 30) + .foregroundColor(.white) + .padding(6) + .background(Color.green) + .clipShape(.circle) + + Image(systemName: "triangle.fill") + .resizable() + .scaledToFit() + .frame(width: 10, height: 10) + .foregroundColor(Color.green) + .rotationEffect(Angle(degrees: 180)) + .offset(y: -11) + + } + //bu paddingi annotation yerleştirildiğinde konumu kapatmaması ve okun tam lokasyonnu göstermesi için kullandım + .padding(.bottom) + + } +} + +#Preview { + GreenAnnotationView() +} + diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift index dec5219..214f6f3 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -56,27 +56,25 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { func setMapRegion(to item: EventModel) { let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) - let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - withAnimation(.easeInOut) { - self.region = MKCoordinateRegion(center: coordinate, span: span) - } + let span = MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) + self.region = MKCoordinateRegion(center: coordinate, span: span) } func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { selectedItems.removeAll() - for item in items { - print("selected category: \(selectedCategory)") - print("item category: \(item.category)") if selectedCategory == item.category { selectedItems.append(item) } } - for item in selectedItems { - if let firstItem = items.first { + if let firstItem = selectedItems.first { + setMapRegion(to: firstItem) + print("1") } } } + + } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift index 484f0b8..36822e9 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift @@ -3,10 +3,12 @@ import MapKit import Design import SwiftData + public struct MapView: View { @StateObject var vm = MapViewModel() + //QUERY MAPVİEWMODEL A AKTARILMALI? @Query private var items: [EventModel] @State private var selectedItems: [EventModel] = [] @StateObject var coordinator = Coordinator() @@ -20,20 +22,7 @@ public struct MapView: View { ZStack { MapLayer .edgesIgnoringSafeArea([.top, .leading, .trailing]) - .bottomSheet( - presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .fraction(0.9), .medium], - detentSelection: $vm.selectedDetent, - isPresented: $vm.categoryModalShown, - sheetCornerRadius: 12, - interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $vm.selectedCategory) {} - } onDismiss: { - vm.filteredItems(items: items, selectedItems: &selectedItems) - print("all items count: \(items.count)") - print("selected items count: \(selectedItems.count)") - - } - + if !vm.categoryModalShown { VStack { Spacer() @@ -45,6 +34,10 @@ public struct MapView: View { } } } + .onAppear { + // Map açıldığında tüm eventler de ki anotasyonları görebilmek için + self.selectedItems = items + } .navigationDestination(for: Coordinator.NavigationDestination.self) { destination in switch destination { case .newEventView: @@ -70,15 +63,48 @@ public struct MapView: View { // MARK: View extensions for mapView extension MapView { - // Core Dataya Location kaydedebilirsem. Bu haritayı o lokasyonlarla başlatacağım ver her category için farklı bir pin designi olcak. private var MapLayer: some View { Map(coordinateRegion: $vm.region, annotationItems: selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { - RedAnnotationView() - .shadow(radius: 10) - .onTapGesture { - vm.setMapRegion(to: item) - } + // BU KONTROL ENUMLA GERÇEKLEŞTİRELECEK! + if item.category == "Meeting" { + OrangeAnnotationView() + .shadow(radius: 10) + .onTapGesture { + withAnimation(.easeInOut) { + vm.setMapRegion(to: item) + } + } + + } else if item.category == "Study Body" { + RedAnnotationView() + .shadow(radius: 10) + .onTapGesture { + withAnimation(.easeInOut) { + vm.setMapRegion(to: item) + } + } + + } else if item.category == "Place to work" { + + BlueAnnotationView() + .shadow(radius: 10) + .onTapGesture { + withAnimation(.easeInOut) { + vm.setMapRegion(to: item) + } + } + + } else if item.category == "Swift Buddies Event" { + + GreenAnnotationView() + .shadow(radius: 10) + .onTapGesture { + withAnimation(.easeInOut) { + vm.setMapRegion(to: item) + } + } + } } } .mapControls { @@ -93,6 +119,21 @@ extension MapView { .onDisappear { vm.locationManager.stopUpdatingLocation() } + .bottomSheet( + presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .fraction(0.9), .medium], + detentSelection: $vm.selectedDetent, + isPresented: $vm.categoryModalShown, + sheetCornerRadius: 12, + interactiveDismissDisabled: false) { + CategoryPicker(selectedCategory: $vm.selectedCategory) {} + } onDismiss: { + withAnimation(.easeInOut) { + vm.filteredItems(items: items, selectedItems: &selectedItems) + + } + + + } } From 9b0d0b69f0746caa395ef3f87215d1b6d02c1859 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Thu, 18 Jul 2024 04:07:28 +0300 Subject: [PATCH 083/126] changing some file names also add another viewModel --- .../LocationSelectionViewViewModel.swift | 17 +++++++++++++++++ .../MapView/ViewModels/MapViewModel.swift | 4 ---- ...apView.swift => LocationSelectionView.swift} | 8 ++++---- .../Sources/MapView/Views/MapView.swift | 2 +- .../Sources/MapView/Views/NewEventView.swift | 6 ++---- 5 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/{SelectLocationMapView.swift => LocationSelectionView.swift} (92%) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift new file mode 100644 index 0000000..a61d5a8 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift @@ -0,0 +1,17 @@ +// +// NewEventViewViewModel.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 18.07.2024. +// + +import Foundation +import SwiftData + +class LocationSelectionViewViewModel: ObservableObject { + + func addItem(modelContext: ModelContext, id: String, category: String, name: String, about: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { + let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate, latitude: latitude, longitude: longitude) + modelContext.insert(event) + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift index 214f6f3..4e267ea 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -49,10 +49,6 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { print("Failed to get user location: \(error)") } - func addItem(modelContext: ModelContext, id: String, category: String, name: String, about: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { - let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate, latitude: latitude, longitude: longitude) - modelContext.insert(event) - } func setMapRegion(to item: EventModel) { let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/SelectLocationMapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift similarity index 92% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/SelectLocationMapView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift index e323a8d..b2d3d76 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/SelectLocationMapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift @@ -9,13 +9,13 @@ import SwiftUI import MapKit import SwiftData -struct SelectLocationMapView: View { +struct LocationSelectionView: View { @Environment(\.modelContext) private var context @Environment(\.presentationMode) var presentationMode @EnvironmentObject var coordinator: Coordinator - @StateObject var vm = MapViewModel() + @StateObject var vm = LocationSelectionViewViewModel() @State var tappedLocation: CLLocationCoordinate2D? = nil let eventSingleton = EventSingletonModel.sharedInstance @@ -36,10 +36,10 @@ struct SelectLocationMapView: View { } #Preview { - SelectLocationMapView() + LocationSelectionView() } -extension SelectLocationMapView { +extension LocationSelectionView { private var mapLayer: some View { VStack { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift index 36822e9..3d96e18 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift @@ -44,7 +44,7 @@ public struct MapView: View { NewEventView() .environmentObject(coordinator) case .selectLocationMapView: - SelectLocationMapView() + LocationSelectionView() .environmentObject(coordinator) case .mapView: MapView() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift index 382f1fe..adbc61c 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift @@ -13,7 +13,7 @@ struct NewEventView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context - @StateObject var vm = MapViewModel() + @StateObject var vm = LocationSelectionViewViewModel() @EnvironmentObject var coordinator: Coordinator private let categories = [ @@ -30,12 +30,10 @@ struct NewEventView: View { @State var startDate: Date = Date() @State var dueDate: Date = Date() - - var body: some View { ScrollView { - VStack(spacing: 15) { + VStack(spacing: 30) { DropdownMenu(prompt: "Select..", options: categories, selection: $selectedCategory) From 9b8584530d14b1759ef5a20e28e96cadf374745b Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Fri, 19 Jul 2024 21:08:29 +0300 Subject: [PATCH 084/126] Changed category property in Event model to enum and added "All" filter --- .../MapView/Models/EventCategory.swift | 1 + .../Sources/MapView/Models/EventModel.swift | 6 +-- .../MapView/Models/EventSingletonModel.swift | 2 +- .../ViewComponents/CategoryPickerSheet.swift | 9 +--- .../MapView/ViewComponents/DropDownMenu.swift | 5 ++- .../LocationSelectionViewViewModel.swift | 2 +- .../MapView/ViewModels/MapViewModel.swift | 13 ++++-- .../MapView/Views/LocationSelectionView.swift | 2 +- .../Sources/MapView/Views/MapView.swift | 41 ++++++++++--------- .../Sources/MapView/Views/NewEventView.swift | 10 +---- 10 files changed, 46 insertions(+), 45 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift index ad3ffcf..1706e24 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift @@ -8,6 +8,7 @@ import Foundation enum EventCategory: String, CaseIterable, Codable{ + case all = "All" case meeting = "Meeting" case studyBody = "Study Body" case placeToWork = "Place to work" diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index 447f28f..435cb7d 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -9,9 +9,9 @@ import Foundation import SwiftData @Model -public class EventModel: Identifiable{ +public class EventModel: Identifiable { public let id: String - let category: String + let category: EventCategory.RawValue let name: String let aboutEvent: String let startDate: Date @@ -20,7 +20,7 @@ public class EventModel: Identifiable{ let longitude: Double - init(category: String, name: String, aboutEvent: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { + init(category: EventCategory.RawValue, name: String, aboutEvent: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { self.id = UUID().uuidString self.category = category self.name = name diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift index c55133e..69dc8c9 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift @@ -11,7 +11,7 @@ class EventSingletonModel { static var sharedInstance = EventSingletonModel() - var category: String = "" + var category: String = EventCategory.RawValue() var name: String = "" var aboutEvent: String = "" var startDate: Date = Date() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift index 3bd1a1e..f3b306e 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift @@ -11,22 +11,17 @@ import SwiftData struct CategoryPicker: View { @Environment(\.presentationMode) var presentationMode - @StateObject var vm = MapViewModel() @Binding var selectedCategory: String - private let categories = [ - "Meeting", - "Study Body", - "Place to work", - "Swift Buddies Event" - ] + private let categories = EventCategory.allCases.map { $0.rawValue } var selectAction: () -> Void var body: some View { NavigationView { List { + ForEach(categories, id: \.self) { category in Button(action: { selectedCategory = category diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift index cf21b9c..5bde85a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift @@ -11,9 +11,10 @@ struct DropdownMenu: View { let prompt: String let options: [String] + @Binding var selection: String @State private var isShowing = false - @Binding var selection: String? + @Environment(\.colorScheme) var scheme var body: some View { @@ -91,7 +92,7 @@ struct DropdownMenu: View { "option1", "option2", "option3"], - selection: .constant("option2") + selection: .constant(EventCategory.meeting.rawValue) ) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift index a61d5a8..ed6b375 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift @@ -10,7 +10,7 @@ import SwiftData class LocationSelectionViewViewModel: ObservableObject { - func addItem(modelContext: ModelContext, id: String, category: String, name: String, about: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { + func addItem(modelContext: ModelContext, id: String, category: EventCategory.RawValue, name: String, about: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate, latitude: latitude, longitude: longitude) modelContext.insert(event) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift index 4e267ea..e93e4a5 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -14,15 +14,17 @@ import CoreLocation class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { @Published var categoryModalShown = false - @Published var selectedCategory: String = "Select Location" + @Published var selectedCategory: String = "" @Published var selectedDetent: PresentationDetent = .fraction(0.9) - @Published var dismissableMessage: Bool = false + @Published var region: MKCoordinateRegion = MKCoordinateRegion( center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) ) + @Published var currentEvent: EventModel? + let locationManager = CLLocationManager() override init() { @@ -52,12 +54,17 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { func setMapRegion(to item: EventModel) { let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) - let span = MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) + let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) self.region = MKCoordinateRegion(center: coordinate, span: span) + self.currentEvent = item } func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { selectedItems.removeAll() + if selectedCategory == EventCategory.all.rawValue { + selectedItems = items + } + for item in items { if selectedCategory == item.category { selectedItems.append(item) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift index b2d3d76..17a1252 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift @@ -61,7 +61,7 @@ extension LocationSelectionView { private var createButton: some View { Button(action: { // Save the event into core data - vm.addItem(modelContext: context, id: UUID().uuidString, category: eventSingleton.category, name: eventSingleton.name, about: eventSingleton.aboutEvent, startDate: eventSingleton.startDate, dueDate: eventSingleton.dueDate, latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) + vm.addItem(modelContext: context, id: UUID().uuidString, category: eventSingleton.category , name: eventSingleton.name, about: eventSingleton.aboutEvent, startDate: eventSingleton.startDate, dueDate: eventSingleton.dueDate, latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) coordinator.popToRoot() }) { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift index 3d96e18..721b8a5 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift @@ -38,6 +38,18 @@ public struct MapView: View { // Map açıldığında tüm eventler de ki anotasyonları görebilmek için self.selectedItems = items } + .bottomSheet( + presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .fraction(0.9), .medium], + detentSelection: $vm.selectedDetent, + isPresented: $vm.categoryModalShown, + sheetCornerRadius: 12, + interactiveDismissDisabled: false) { + CategoryPicker(selectedCategory: $vm.selectedCategory) {} + } onDismiss: { + withAnimation(.easeInOut) { + vm.filteredItems(items: items, selectedItems: &selectedItems) + } + } .navigationDestination(for: Coordinator.NavigationDestination.self) { destination in switch destination { case .newEventView: @@ -67,7 +79,8 @@ extension MapView { Map(coordinateRegion: $vm.region, annotationItems: selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { // BU KONTROL ENUMLA GERÇEKLEŞTİRELECEK! - if item.category == "Meeting" { + + if item.category == EventCategory.meeting.rawValue { OrangeAnnotationView() .shadow(radius: 10) .onTapGesture { @@ -75,8 +88,9 @@ extension MapView { vm.setMapRegion(to: item) } } + .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - } else if item.category == "Study Body" { + } else if item.category == EventCategory.studyBody.rawValue { RedAnnotationView() .shadow(radius: 10) .onTapGesture { @@ -84,8 +98,9 @@ extension MapView { vm.setMapRegion(to: item) } } + .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - } else if item.category == "Place to work" { + } else if item.category == EventCategory.placeToWork.rawValue { BlueAnnotationView() .shadow(radius: 10) @@ -94,8 +109,9 @@ extension MapView { vm.setMapRegion(to: item) } } + .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - } else if item.category == "Swift Buddies Event" { + } else if item.category == EventCategory.swiftBuddiesEvent.rawValue { GreenAnnotationView() .shadow(radius: 10) @@ -104,6 +120,7 @@ extension MapView { vm.setMapRegion(to: item) } } + .scaleEffect(vm.currentEvent == item ? 1 : 0.8) } } } @@ -119,21 +136,7 @@ extension MapView { .onDisappear { vm.locationManager.stopUpdatingLocation() } - .bottomSheet( - presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .fraction(0.9), .medium], - detentSelection: $vm.selectedDetent, - isPresented: $vm.categoryModalShown, - sheetCornerRadius: 12, - interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $vm.selectedCategory) {} - } onDismiss: { - withAnimation(.easeInOut) { - vm.filteredItems(items: items, selectedItems: &selectedItems) - - } - - - } + } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift index adbc61c..d22ec6d 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift @@ -13,17 +13,11 @@ struct NewEventView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context - @StateObject var vm = LocationSelectionViewViewModel() @EnvironmentObject var coordinator: Coordinator - private let categories = [ - "Meeting", - "Study Body", - "Place to work", - "Swift Buddies Event" - ] + let categories = EventCategory.allCases.map { $0.rawValue } - @State private var selectedCategory: String? + @State private var selectedCategory: EventCategory.RawValue? @State var nameText: String = "" @State var descriptionText: String = "" @State var adressText: String = "" From ba6a4240228bc3c987550575457858d6fa544e18 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Fri, 19 Jul 2024 21:45:54 +0300 Subject: [PATCH 085/126] edit some codes --- ...ator.swift => NavigationCoordinator.swift} | 2 +- .../ViewComponents/CategoryPickerSheet.swift | 5 +-- .../MapView/ViewComponents/DropDownMenu.swift | 3 +- .../ViewComponents/MapViewRepresentable.swift | 2 +- .../MapView/ViewModels/MapViewModel.swift | 8 ++++ .../ViewModels/NewEventViewViewModel.swift | 27 ++++++++++++ .../MapView/Views/LocationSelectionView.swift | 11 +++-- .../Sources/MapView/Views/MapView.swift | 4 +- .../Sources/MapView/Views/NewEventView.swift | 41 ++++++++----------- 9 files changed, 66 insertions(+), 37 deletions(-) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/{Coordinator.swift => NavigationCoordinator.swift} (90%) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/NewEventViewViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coordinator.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/NavigationCoordinator.swift similarity index 90% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coordinator.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/NavigationCoordinator.swift index 7a94e64..ff455dd 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coordinator.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/NavigationCoordinator.swift @@ -9,7 +9,7 @@ import Foundation import SwiftUI -class Coordinator: ObservableObject { +class NavigationCoordinator: ObservableObject { enum NavigationDestination: Hashable { case mapView diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift index f3b306e..b95a51f 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift @@ -13,8 +13,7 @@ struct CategoryPicker: View { @Environment(\.presentationMode) var presentationMode @Binding var selectedCategory: String - - private let categories = EventCategory.allCases.map { $0.rawValue } + @StateObject var vm = MapViewModel() var selectAction: () -> Void @@ -22,7 +21,7 @@ struct CategoryPicker: View { NavigationView { List { - ForEach(categories, id: \.self) { category in + ForEach(vm.categories, id: \.self) { category in Button(action: { selectedCategory = category presentationMode.wrappedValue.dismiss() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift index 5bde85a..b41ff1b 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift @@ -11,10 +11,9 @@ struct DropdownMenu: View { let prompt: String let options: [String] - @Binding var selection: String + @Binding var selection: EventCategory.RawValue? @State private var isShowing = false - @Environment(\.colorScheme) var scheme var body: some View { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift index d36524a..7c41b5d 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift @@ -40,7 +40,7 @@ struct MapViewRepresentable: UIViewRepresentable { mapView.delegate = context.coordinator // Long press gesture recognizer - let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.handleLongPress(gestureRecognizer:))) + let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(NavigationCoordinator.handleLongPress(gestureRecognizer:))) mapView.addGestureRecognizer(longPressGesture) // Haritayı kullanıcının konumu ile başlat diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift index e93e4a5..fafe9aa 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -16,6 +16,14 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { @Published var categoryModalShown = false @Published var selectedCategory: String = "" @Published var selectedDetent: PresentationDetent = .fraction(0.9) + + var categories: [String] { + EventCategory.allCases.map { $0.rawValue } + } + + var filteredCategories: [String] { + categories.filter { $0 != "All" } + } @Published var region: MKCoordinateRegion = MKCoordinateRegion( diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/NewEventViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/NewEventViewViewModel.swift new file mode 100644 index 0000000..aab5314 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/NewEventViewViewModel.swift @@ -0,0 +1,27 @@ +// +// NewEventViewViewModels.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 19.07.2024. +// + +import Foundation + +class NewEventViewViewModel: ObservableObject { + + var categories: [String] { + EventCategory.allCases.map { $0.rawValue } + } + + var filteredCategories: [String] { + categories.filter { $0 != "All" } + } + + @Published var selectedCategory: EventCategory.RawValue? + @Published var nameText: String = "" + @Published var descriptionText: String = "" + @Published var adressText: String = "" + @Published var startDate: Date = Date() + @Published var dueDate: Date = Date() + +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift index 17a1252..a9c3f50 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift @@ -13,7 +13,7 @@ struct LocationSelectionView: View { @Environment(\.modelContext) private var context @Environment(\.presentationMode) var presentationMode - @EnvironmentObject var coordinator: Coordinator + @EnvironmentObject var coordinator: NavigationCoordinator @StateObject var vm = LocationSelectionViewViewModel() @@ -61,9 +61,14 @@ extension LocationSelectionView { private var createButton: some View { Button(action: { // Save the event into core data - vm.addItem(modelContext: context, id: UUID().uuidString, category: eventSingleton.category , name: eventSingleton.name, about: eventSingleton.aboutEvent, startDate: eventSingleton.startDate, dueDate: eventSingleton.dueDate, latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) + if tappedLocation != nil { + vm.addItem(modelContext: context, id: UUID().uuidString, category: eventSingleton.category , name: eventSingleton.name, about: eventSingleton.aboutEvent, startDate: eventSingleton.startDate, dueDate: eventSingleton.dueDate, latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) + + coordinator.popToRoot() + } else { + //error message + } - coordinator.popToRoot() }) { Text("Create") .frame(width: UIScreen.main.bounds.width - 64, height: 55) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift index 721b8a5..bd51c6b 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift @@ -11,7 +11,7 @@ public struct MapView: View { //QUERY MAPVİEWMODEL A AKTARILMALI? @Query private var items: [EventModel] @State private var selectedItems: [EventModel] = [] - @StateObject var coordinator = Coordinator() + @StateObject var coordinator = NavigationCoordinator() public init() { @@ -50,7 +50,7 @@ public struct MapView: View { vm.filteredItems(items: items, selectedItems: &selectedItems) } } - .navigationDestination(for: Coordinator.NavigationDestination.self) { destination in + .navigationDestination(for: NavigationCoordinator.NavigationDestination.self) { destination in switch destination { case .newEventView: NewEventView() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift index d22ec6d..d6149ba 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift @@ -13,24 +13,15 @@ struct NewEventView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context - @EnvironmentObject var coordinator: Coordinator - - let categories = EventCategory.allCases.map { $0.rawValue } - - @State private var selectedCategory: EventCategory.RawValue? - @State var nameText: String = "" - @State var descriptionText: String = "" - @State var adressText: String = "" - @State var startDate: Date = Date() - @State var dueDate: Date = Date() - + @StateObject private var vm = NewEventViewViewModel() + @EnvironmentObject var coordinator: NavigationCoordinator var body: some View { ScrollView { VStack(spacing: 30) { DropdownMenu(prompt: "Select..", - options: categories, - selection: $selectedCategory) + options: vm.filteredCategories, + selection: $vm.selectedCategory) nameTextfield descriptionTextField adressTextField @@ -54,7 +45,7 @@ struct NewEventView: View { extension NewEventView { private var nameTextfield: some View { - TextField("Event name...", text: $nameText) + TextField("Event name...", text: $vm.nameText) .textInputAutocapitalization(.never) .font(.headline) .padding() @@ -71,7 +62,7 @@ extension NewEventView { } private var descriptionTextField: some View { - TextField("About your event...", text: $descriptionText) + TextField("About your event...", text: $vm.descriptionText) .font(.headline) .padding() .frame(maxWidth: .infinity) @@ -87,7 +78,7 @@ extension NewEventView { } private var adressTextField: some View { - TextField("Full Address...", text: $adressText) + TextField("Full Address...", text: $vm.adressText) .font(.headline) .padding() .frame(maxWidth: .infinity) @@ -104,7 +95,7 @@ extension NewEventView { private var datePickers: some View { VStack(spacing: 15) { - DatePicker("Start Date", selection: $startDate) + DatePicker("Start Date", selection: $vm.startDate) .font(.headline) .padding() .frame(maxWidth: .infinity) @@ -118,7 +109,7 @@ extension NewEventView { ) .padding(.horizontal) - DatePicker("Due Date", selection: $dueDate) + DatePicker("Due Date", selection: $vm.dueDate) .font(.headline) .padding() .frame(maxWidth: .infinity) @@ -136,12 +127,12 @@ extension NewEventView { private var NextButton: some View { Button(action: { - if selectedCategory != nil { - EventSingletonModel.sharedInstance.category = selectedCategory ?? "" - EventSingletonModel.sharedInstance.name = nameText - EventSingletonModel.sharedInstance.aboutEvent = descriptionText - EventSingletonModel.sharedInstance.startDate = startDate - EventSingletonModel.sharedInstance.dueDate = dueDate + if vm.selectedCategory != nil { + EventSingletonModel.sharedInstance.category = vm.selectedCategory ?? "" + EventSingletonModel.sharedInstance.name = vm.nameText + EventSingletonModel.sharedInstance.aboutEvent = vm.descriptionText + EventSingletonModel.sharedInstance.startDate = vm.startDate + EventSingletonModel.sharedInstance.dueDate = vm.dueDate coordinator.navigate(to: .selectLocationMapView) } else { // Handle error message if selectedCategory is nil @@ -155,7 +146,7 @@ extension NewEventView { .foregroundColor(.white) .fontWeight(.bold) } - .disabled(selectedCategory == nil) // Disable button if selectedCategory is nil + .disabled(vm.selectedCategory == nil) // Disable button if selectedCategory is nil } } From cf0ded8bffa2b0d10f7b40af0f79355dfcfc0011 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 22 Jul 2024 19:05:44 +0300 Subject: [PATCH 086/126] EventListView Created and UI Updated --- .../MapView/ViewComponents/EventListView.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift new file mode 100644 index 0000000..b8381f9 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -0,0 +1,18 @@ +// +// EventListView.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 22.07.2024. +// + +import SwiftUI + +struct EventListView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + EventListView() +} From 812338d97071a9136c6b8bd0d67f2360d923b9e5 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 22 Jul 2024 19:06:19 +0300 Subject: [PATCH 087/126] EventListViewCreated and UI updated --- .../ViewComponents/EventListView.swift | 60 ++++++++- .../ViewComponents/MapViewRepresentable.swift | 2 +- .../MapView/ViewModels/MapViewModel.swift | 25 ++-- .../Sources/MapView/Views/MapView.swift | 124 +++++++++++++----- 4 files changed, 166 insertions(+), 45 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift index b8381f9..f1b6605 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -8,11 +8,67 @@ import SwiftUI struct EventListView: View { + + @StateObject var vm = MapViewModel() + var events: [EventModel] + var body: some View { - Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + List{ + ForEach(events) { event in + Button { + print("gazaa") + print(event.name) + vm.toggleEventList() + /*if vm.showEventListView == false { + withAnimation(.easeInOut) { + vm.setMapRegion(to: event) + } + }*/ + } label: { + listRowView(event: event) + } + .padding(.vertical , 4) + .listRowBackground(Color.clear) + } + } + .listStyle(PlainListStyle()) } } #Preview { - EventListView() + EventListView(events: [EventModel(category: "test", name: "test", aboutEvent: "test", startDate: Date(), dueDate: Date(), latitude: 12, longitude: 12)]) +} + +extension EventListView { + + private func listRowView(event: EventModel) -> some View { + HStack{ + Image(systemName: "circle.dotted.circle") + .foregroundColor(imageColor(event: event)) + + VStack(alignment: .leading){ + Text(event.name) + .font(.headline) + Text(event.category) + .font(.subheadline) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + + } + + private func imageColor(event: EventModel) -> Color { + if event.category == EventCategory.meeting.rawValue { + return .orange + } else if event.category == EventCategory.studyBody.rawValue { + return .red + } else if event.category == EventCategory.placeToWork.rawValue { + return .blue + } else if event.category == EventCategory.swiftBuddiesEvent.rawValue { + return .green + } + + return .orange + + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift index 7c41b5d..d36524a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift @@ -40,7 +40,7 @@ struct MapViewRepresentable: UIViewRepresentable { mapView.delegate = context.coordinator // Long press gesture recognizer - let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(NavigationCoordinator.handleLongPress(gestureRecognizer:))) + let longPressGesture = UILongPressGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.handleLongPress(gestureRecognizer:))) mapView.addGestureRecognizer(longPressGesture) // Haritayı kullanıcının konumu ile başlat diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift index fafe9aa..f1f1b76 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -16,25 +16,24 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { @Published var categoryModalShown = false @Published var selectedCategory: String = "" @Published var selectedDetent: PresentationDetent = .fraction(0.9) - - var categories: [String] { - EventCategory.allCases.map { $0.rawValue } - } - - var filteredCategories: [String] { - categories.filter { $0 != "All" } - } - + @Published var showEventListView: Bool = false @Published var region: MKCoordinateRegion = MKCoordinateRegion( center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) ) - @Published var currentEvent: EventModel? let locationManager = CLLocationManager() + var categories: [String] { + EventCategory.allCases.map { $0.rawValue } + } + + var filteredCategories: [String] { + categories.filter { $0 != "All" } + } + override init() { super.init() locationManager.delegate = self @@ -87,5 +86,11 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { } } + func toggleEventList() { + withAnimation(.easeInOut) { + showEventListView.toggle() + } + } + } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift index bd51c6b..5a94812 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift @@ -18,21 +18,35 @@ public struct MapView: View { } public var body: some View { + NavigationStack(path: $coordinator.path) { ZStack { MapLayer .edgesIgnoringSafeArea([.top, .leading, .trailing]) - - if !vm.categoryModalShown { - VStack { - Spacer() - HStack { - seeLocationsButton - createEventButton - .padding() + + + VStack(alignment: .leading) { + listHeader + .padding(.horizontal) + + seeLocationsButton + .padding(.leading) + + Spacer() + + if !vm.categoryModalShown { + VStack { + Spacer() + HStack { + learnMoreButton + createEventButton + } + .padding() } } } + + } .onAppear { // Map açıldığında tüm eventler de ki anotasyonları görebilmek için @@ -72,14 +86,15 @@ public struct MapView: View { } + + // MARK: View extensions for mapView extension MapView { private var MapLayer: some View { Map(coordinateRegion: $vm.region, annotationItems: selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { - // BU KONTROL ENUMLA GERÇEKLEŞTİRELECEK! - + if item.category == EventCategory.meeting.rawValue { OrangeAnnotationView() .shadow(radius: 10) @@ -124,45 +139,90 @@ extension MapView { } } } - .mapControls { - Spacer() - MapUserLocationButton() - MapPitchToggle() - } - .padding(.top, 50) .onAppear{ CLLocationManager().requestWhenInUseAuthorization() } .onDisappear { vm.locationManager.stopUpdatingLocation() } - + } + + + private var listHeader: some View { + VStack { + Button { + vm.toggleEventList() + } label: { + Text(vm.currentEvent?.name ?? "") + .font(.title2) + .fontWeight(.black) + .foregroundColor(.primary) + .frame(height: 55) + .frame(maxWidth: .infinity) + .overlay(alignment: .leading) { + Image(systemName: "arrow.down") + .font(.headline) + .foregroundColor(.primary) + .padding() + .rotationEffect(Angle(degrees: vm.showEventListView ? 180 : 0)) + } + } + + if vm.showEventListView { + EventListView(events: selectedItems) + } + } + .background(.thickMaterial) + .cornerRadius(10) + .shadow(color: .black.opacity(0.3), radius: 20 ,x: 0 , y: 15) } private var seeLocationsButton: some View { + VStack{ Button(action: { vm.categoryModalShown.toggle() }) { - Text("See Locations") - .foregroundColor(.white) + Text("filter by category") + .foregroundColor(.secondary) + .font(.subheadline) .padding() - .background(Color.blue) - .cornerRadius(10) } - .padding() } + .frame(height: 30) + .background(.thickMaterial) + .shadow(color: .black.opacity(0.3), radius: 20 ,x: 0 , y: 15) + .cornerRadius(30) + - private var createEventButton: some View { - Button(action: { - coordinator.navigate(to: .newEventView) - }) { - Text("Create Event") - .foregroundColor(.white) - .padding() - .background(Color.orange) - .cornerRadius(10) - } + } + + private var learnMoreButton: some View { + Button(action: { + // to detils view + }) { + Text(" Learn More ") + .frame(maxWidth: .infinity) + .foregroundColor(.white) + .padding() + .background(Color.red) + .cornerRadius(10) + } + .padding(.horizontal) + } + + + private var createEventButton: some View { + Button(action: { + coordinator.navigate(to: .newEventView) + }) { + //Text("Create Event") + Image(systemName: "plus") + .foregroundColor(.white) + .padding() + .background(Color.orange) + .cornerRadius(55/2) } + } } From 50efb54e9b9c092f2864a1a037399e53310018b8 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Wed, 24 Jul 2024 23:11:03 +0300 Subject: [PATCH 088/126] EventDetailsView Created --- .../Sources/MapView/Models/EventModel.swift | 1 - .../ViewComponents/CategoryPickerSheet.swift | 24 +++- .../ViewComponents/EventListView.swift | 11 +- .../MapView/ViewModels/MapViewModel.swift | 4 +- .../MapView/Views/EventDetailsView.swift | 108 ++++++++++++++++++ .../Sources/MapView/Views/MapView.swift | 15 ++- .../Sources/MapView/Views/NewEventView.swift | 17 --- 7 files changed, 142 insertions(+), 38 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index 435cb7d..79b1948 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -3,7 +3,6 @@ // Map // // Created by Oğuzhan Abuhanoğlu on 12.05.2024. -// import Foundation import SwiftData diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift index b95a51f..63e68df 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift @@ -38,9 +38,27 @@ struct CategoryPicker: View { } } .navigationTitle("Select Category") - .navigationBarItems(trailing: Button("Dismiss") { - presentationMode.wrappedValue.dismiss() - }) + .navigationBarItems(trailing: backButton) + + } + } +} + +extension CategoryPicker { + + private var backButton: some View{ + Button(action: { + //dismiss sheet + presentationMode.wrappedValue.dismiss() + }) { + Image(systemName: "xmark") + .font(.headline) + .padding() + .foregroundColor(.primary) + .background(.thinMaterial) + .cornerRadius(10) + .shadow(radius: 4) + .padding() } } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift index f1b6605..b1ed257 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -15,15 +15,8 @@ struct EventListView: View { var body: some View { List{ ForEach(events) { event in - Button { - print("gazaa") - print(event.name) - vm.toggleEventList() - /*if vm.showEventListView == false { - withAnimation(.easeInOut) { - vm.setMapRegion(to: event) - } - }*/ + NavigationLink { + EventDetailsView(event: event) } label: { listRowView(event: event) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift index f1f1b76..282667c 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -17,12 +17,12 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { @Published var selectedCategory: String = "" @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var showEventListView: Bool = false - + @Published var region: MKCoordinateRegion = MKCoordinateRegion( center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) ) - @Published var currentEvent: EventModel? + @Published var currentEvent: EventModel = EventModel(category: "test", name: "test", aboutEvent: "test", startDate: Date(), dueDate: Date(), latitude: 12, longitude: 12) let locationManager = CLLocationManager() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift new file mode 100644 index 0000000..e8e4290 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift @@ -0,0 +1,108 @@ +// +// EventDetailsView.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 22.07.2024. +// + +import SwiftUI +import MapKit + +struct EventDetailsView: View { + + var event: EventModel + + var body: some View { + ScrollView { + VStack { + VStack(alignment: .leading, spacing: 16){ + titleSection + Divider() + if event.aboutEvent != "" { + descriptionSection + Divider() + } + eventDates + Divider() + mapLocation + } + .frame(maxWidth: .infinity, alignment: .leading) + .padding() + } + + } + .background(.ultraThinMaterial) + + + + + } +} + + +#Preview { + EventDetailsView(event: EventModel(category: "test", name: "test", aboutEvent: "test", startDate: Date(), dueDate: Date(), latitude: 12, longitude: 12)) +} + + +extension EventDetailsView { + + private var titleSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text(event.name) + .font(.largeTitle) + .fontWeight(.semibold) + Text(event.category) + .font(.title3) + .foregroundColor(.secondary) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + + private var descriptionSection: some View { + VStack(alignment: .leading) { + Text(event.aboutEvent) + } + } + + private var eventDates: some View { + let dateFormatter = DateFormatter() + dateFormatter.dateStyle = .medium + dateFormatter.timeStyle = .short + + return VStack(alignment: .leading, spacing: 8) { + Text("Between:") + .font(.title2) + .fontWeight(.bold) + Text(dateFormatter.string(from: event.startDate)) + Text(dateFormatter.string(from: event.dueDate)) + } + } + + private var mapLocation: some View { + VStack { + Map(coordinateRegion: .constant(MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude), span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))), annotationItems: [event]) { event in + MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude)) { + if event.category == EventCategory.meeting.rawValue { + OrangeAnnotationView() + .shadow(radius: 10) + } else if event.category == EventCategory.studyBody.rawValue { + RedAnnotationView() + .shadow(radius: 10) + } else if event.category == EventCategory.placeToWork.rawValue { + BlueAnnotationView() + .shadow(radius: 10) + + } else if event.category == EventCategory.swiftBuddiesEvent.rawValue { + GreenAnnotationView() + .shadow(radius: 10) + } + } + } + .allowsHitTesting(false) + .aspectRatio(1, contentMode: .fit) + .cornerRadius(30) + } + } + +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift index 5a94812..8c3f123 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift @@ -94,13 +94,13 @@ extension MapView { private var MapLayer: some View { Map(coordinateRegion: $vm.region, annotationItems: selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { - if item.category == EventCategory.meeting.rawValue { OrangeAnnotationView() .shadow(radius: 10) .onTapGesture { withAnimation(.easeInOut) { vm.setMapRegion(to: item) + vm.showEventListView = false } } .scaleEffect(vm.currentEvent == item ? 1 : 0.8) @@ -111,6 +111,7 @@ extension MapView { .onTapGesture { withAnimation(.easeInOut) { vm.setMapRegion(to: item) + vm.showEventListView = false } } .scaleEffect(vm.currentEvent == item ? 1 : 0.8) @@ -122,6 +123,7 @@ extension MapView { .onTapGesture { withAnimation(.easeInOut) { vm.setMapRegion(to: item) + vm.showEventListView = false } } .scaleEffect(vm.currentEvent == item ? 1 : 0.8) @@ -133,6 +135,7 @@ extension MapView { .onTapGesture { withAnimation(.easeInOut) { vm.setMapRegion(to: item) + vm.showEventListView = false } } .scaleEffect(vm.currentEvent == item ? 1 : 0.8) @@ -153,7 +156,7 @@ extension MapView { Button { vm.toggleEventList() } label: { - Text(vm.currentEvent?.name ?? "") + Text(vm.currentEvent.name) .font(.title2) .fontWeight(.black) .foregroundColor(.primary) @@ -198,9 +201,9 @@ extension MapView { } private var learnMoreButton: some View { - Button(action: { - // to detils view - }) { + NavigationLink { + EventDetailsView(event: (vm.currentEvent)) + } label: { Text(" Learn More ") .frame(maxWidth: .infinity) .foregroundColor(.white) @@ -212,11 +215,11 @@ extension MapView { } + private var createEventButton: some View { Button(action: { coordinator.navigate(to: .newEventView) }) { - //Text("Create Event") Image(systemName: "plus") .foregroundColor(.white) .padding() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift index d6149ba..47a79d5 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift @@ -24,7 +24,6 @@ struct NewEventView: View { selection: $vm.selectedCategory) nameTextfield descriptionTextField - adressTextField datePickers NextButton } @@ -77,22 +76,6 @@ extension NewEventView { .padding(.horizontal) } - private var adressTextField: some View { - TextField("Full Address...", text: $vm.adressText) - .font(.headline) - .padding() - .frame(maxWidth: .infinity) - .frame(height: 55) - .overlay( - RoundedRectangle(cornerRadius: 10) - .stroke(Color.primary, lineWidth: 1) - ) - .background( - Color(.secondarySystemBackground) - ) - .padding(.horizontal) - } - private var datePickers: some View { VStack(spacing: 15) { DatePicker("Start Date", selection: $vm.startDate) From 6f7a37a2a3fe5b43b6b295faa93a233456f20540 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Thu, 25 Jul 2024 18:48:10 +0300 Subject: [PATCH 089/126] pr --- .../MapView/Views/LocationSelectionView.swift | 12 ++++++++++-- .../Sources/MapView/Views/NewEventView.swift | 7 ++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift index a9c3f50..02b8dfd 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift @@ -10,7 +10,7 @@ import MapKit import SwiftData struct LocationSelectionView: View { - + //BUTON FOCUS PROBLEMİ VAR. @Environment(\.modelContext) private var context @Environment(\.presentationMode) var presentationMode @EnvironmentObject var coordinator: NavigationCoordinator @@ -19,18 +19,20 @@ struct LocationSelectionView: View { @State var tappedLocation: CLLocationCoordinate2D? = nil let eventSingleton = EventSingletonModel.sharedInstance + @FocusState private var isButtonFocused: Bool var body: some View { ZStack { mapLayer .edgesIgnoringSafeArea([.top, .leading, .trailing]) + VStack { Spacer() createButton .padding() + .focused($isButtonFocused) } - } } } @@ -81,3 +83,9 @@ extension LocationSelectionView { } } + +extension CLLocationCoordinate2D: Equatable { + public static func == (lhs: CLLocationCoordinate2D, rhs: CLLocationCoordinate2D) -> Bool { + return lhs.latitude == rhs.latitude && lhs.longitude == rhs.longitude + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift index 47a79d5..caed39c 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift @@ -9,7 +9,7 @@ import SwiftUI import SwiftData struct NewEventView: View { - + //BU EKRANIN TASARIMI GELİŞTİRİLEBİLİR. @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context @@ -18,12 +18,13 @@ struct NewEventView: View { var body: some View { ScrollView { - VStack(spacing: 30) { + VStack(spacing: 20) { DropdownMenu(prompt: "Select..", options: vm.filteredCategories, selection: $vm.selectedCategory) nameTextfield descriptionTextField + Divider() datePickers NextButton } @@ -77,7 +78,7 @@ extension NewEventView { } private var datePickers: some View { - VStack(spacing: 15) { + VStack(spacing: 20) { DatePicker("Start Date", selection: $vm.startDate) .font(.headline) .padding() From a22b9ec48dabbf5d31c391fc42d0549f214b5ff9 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Sat, 31 Aug 2024 19:27:37 +0300 Subject: [PATCH 090/126] Add alert pop-up's --- .../MapView/Extensions/DateExtension.swift | 8 ++++++++ .../MapView/Views/LocationSelectionView.swift | 16 ++++++++++++++-- .../Sources/MapView/Views/NewEventView.swift | 13 ++++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/DateExtension.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/DateExtension.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/DateExtension.swift new file mode 100644 index 0000000..97bc607 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/DateExtension.swift @@ -0,0 +1,8 @@ +// +// DateExtension.swift +// SwiftBuddiesIOS +// +// Created by Oğuzhan Abuhanoğlu on 1.08.2024. +// + +import Foundation diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift index 02b8dfd..80968a5 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift @@ -18,6 +18,7 @@ struct LocationSelectionView: View { @StateObject var vm = LocationSelectionViewViewModel() @State var tappedLocation: CLLocationCoordinate2D? = nil + @State private var showAlert: Bool = false let eventSingleton = EventSingletonModel.sharedInstance @FocusState private var isButtonFocused: Bool @@ -33,10 +34,14 @@ struct LocationSelectionView: View { .padding() .focused($isButtonFocused) } + .alert(isPresented: $showAlert) { + createAlert() + } } } } + #Preview { LocationSelectionView() } @@ -64,11 +69,12 @@ extension LocationSelectionView { Button(action: { // Save the event into core data if tappedLocation != nil { - vm.addItem(modelContext: context, id: UUID().uuidString, category: eventSingleton.category , name: eventSingleton.name, about: eventSingleton.aboutEvent, startDate: eventSingleton.startDate, dueDate: eventSingleton.dueDate, latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) + vm.addItem(modelContext: context, id: UUID().uuidString, category: eventSingleton.category , name: eventSingleton.name, about: eventSingleton.aboutEvent, startDate: eventSingleton.startDate.toISOString(), dueDate: eventSingleton.dueDate.toISOString(), latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) coordinator.popToRoot() + } else { - //error message + showAlert = true } }) { @@ -81,6 +87,12 @@ extension LocationSelectionView { } } + + private func createAlert() -> Alert { + return Alert(title: Text("Ups 🧐"), + message: Text("Please specify the event location."), + dismissButton: .default(Text("OK"))) + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift index caed39c..216a6c8 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift @@ -15,6 +15,7 @@ struct NewEventView: View { @StateObject private var vm = NewEventViewViewModel() @EnvironmentObject var coordinator: NavigationCoordinator + @State private var showAlert: Bool = false var body: some View { ScrollView { @@ -27,6 +28,10 @@ struct NewEventView: View { Divider() datePickers NextButton + + } + .alert(isPresented: $showAlert) { + createAlert() } .navigationTitle("Event Details") .navigationBarTitleDisplayMode(.large) @@ -120,6 +125,7 @@ extension NewEventView { coordinator.navigate(to: .selectLocationMapView) } else { // Handle error message if selectedCategory is nil + showAlert = true } }) { @@ -130,7 +136,12 @@ extension NewEventView { .foregroundColor(.white) .fontWeight(.bold) } - .disabled(vm.selectedCategory == nil) // Disable button if selectedCategory is nil } + + private func createAlert() -> Alert { + return Alert(title: Text("Ups 🧐"), + message: Text("Category option can not be empty."), + dismissButton: .default(Text("OK"))) + } } From d0648b7e7a4b297348ef281928479ae2bc520bad Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Thu, 12 Sep 2024 15:07:41 +0300 Subject: [PATCH 091/126] fix --- .../Sources/MapView/Extensions/DateExtension.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/DateExtension.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/DateExtension.swift index 97bc607..821540b 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/DateExtension.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/DateExtension.swift @@ -6,3 +6,15 @@ // import Foundation + +extension Date { + + func toISOString() -> String { + let formatter = DateFormatter() + formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.calendar = Calendar(identifier: .gregorian) + return formatter.string(from: self) + } + +} From 0158b594bdbb11f667d187525b83f482859b6f86 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Thu, 12 Sep 2024 15:10:09 +0300 Subject: [PATCH 092/126] date formatter --- .../Sources/MapView/Models/EventModel.swift | 6 ++-- .../ViewComponents/EventListView.swift | 2 +- .../LocationSelectionViewViewModel.swift | 2 +- .../MapView/ViewModels/MapViewModel.swift | 4 +-- .../MapView/Views/EventDetailsView.swift | 30 ++++++++++++------- .../MapView/Views/LocationSelectionView.swift | 12 +++++++- 6 files changed, 37 insertions(+), 19 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index 79b1948..03fd333 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -13,13 +13,13 @@ public class EventModel: Identifiable { let category: EventCategory.RawValue let name: String let aboutEvent: String - let startDate: Date - let dueDate: Date + let startDate: String + let dueDate: String let latitude: Double let longitude: Double - init(category: EventCategory.RawValue, name: String, aboutEvent: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { + init(category: EventCategory.RawValue, name: String, aboutEvent: String, startDate: String, dueDate: String, latitude: Double, longitude: Double) { self.id = UUID().uuidString self.category = category self.name = name diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift index b1ed257..3e0e562 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -29,7 +29,7 @@ struct EventListView: View { } #Preview { - EventListView(events: [EventModel(category: "test", name: "test", aboutEvent: "test", startDate: Date(), dueDate: Date(), latitude: 12, longitude: 12)]) + EventListView(events: [EventModel(category: "test", name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)]) } extension EventListView { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift index ed6b375..b876708 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift @@ -10,7 +10,7 @@ import SwiftData class LocationSelectionViewViewModel: ObservableObject { - func addItem(modelContext: ModelContext, id: String, category: EventCategory.RawValue, name: String, about: String, startDate: Date, dueDate: Date, latitude: Double, longitude: Double) { + func addItem(modelContext: ModelContext, id: String, category: EventCategory.RawValue, name: String, about: String, startDate: String, dueDate: String, latitude: Double, longitude: Double) { let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate, latitude: latitude, longitude: longitude) modelContext.insert(event) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift index 282667c..d3fd81a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift @@ -22,7 +22,7 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) ) - @Published var currentEvent: EventModel = EventModel(category: "test", name: "test", aboutEvent: "test", startDate: Date(), dueDate: Date(), latitude: 12, longitude: 12) + @Published var currentEvent: EventModel = EventModel(category: "test", name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12) let locationManager = CLLocationManager() @@ -79,9 +79,7 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { } for item in selectedItems { if let firstItem = selectedItems.first { - setMapRegion(to: firstItem) - print("1") } } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift index e8e4290..c27e487 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift @@ -41,7 +41,7 @@ struct EventDetailsView: View { #Preview { - EventDetailsView(event: EventModel(category: "test", name: "test", aboutEvent: "test", startDate: Date(), dueDate: Date(), latitude: 12, longitude: 12)) + EventDetailsView(event: EventModel(category: "test", name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)) } @@ -67,16 +67,26 @@ extension EventDetailsView { private var eventDates: some View { let dateFormatter = DateFormatter() - dateFormatter.dateStyle = .medium - dateFormatter.timeStyle = .short + dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" + dateFormatter.dateStyle = .medium + dateFormatter.timeStyle = .short + - return VStack(alignment: .leading, spacing: 8) { - Text("Between:") - .font(.title2) - .fontWeight(.bold) - Text(dateFormatter.string(from: event.startDate)) - Text(dateFormatter.string(from: event.dueDate)) - } + return VStack(alignment: .leading, spacing: 8) { + Text("Between:") + .font(.title2) + .fontWeight(.bold) + if let startDate = dateFormatter.date(from: event.startDate) { + let formattedStartDate = dateFormatter.string(from: startDate) + Text(formattedStartDate) + } + + if let dueDate = dateFormatter.date(from: event.dueDate) { + let formattedDueDate = dateFormatter.string(from: dueDate) + Text(formattedDueDate) + } + } + } private var mapLocation: some View { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift index 80968a5..952e2f3 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift @@ -69,7 +69,17 @@ extension LocationSelectionView { Button(action: { // Save the event into core data if tappedLocation != nil { - vm.addItem(modelContext: context, id: UUID().uuidString, category: eventSingleton.category , name: eventSingleton.name, about: eventSingleton.aboutEvent, startDate: eventSingleton.startDate.toISOString(), dueDate: eventSingleton.dueDate.toISOString(), latitude: tappedLocation!.latitude, longitude: tappedLocation!.longitude) + vm.addItem( + modelContext: context, + id: UUID().uuidString, + category: eventSingleton.category , + name: eventSingleton.name, + about: eventSingleton.aboutEvent, + startDate: eventSingleton.startDate.toISOString(), + dueDate: eventSingleton.dueDate.toISOString(), + latitude: tappedLocation!.latitude, + longitude: tappedLocation!.longitude + ) coordinator.popToRoot() From 3282968ce92bdac1ebf2af851086e5a2654da51e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Thu, 12 Sep 2024 19:00:14 +0300 Subject: [PATCH 093/126] remove event singleton and pass newEventModel to locationSeletionView --- .../Sources/MapView/Models/EventModel.swift | 10 ++++- .../MapNavigationCoordinator.swift} | 10 ++--- .../View}/LocationSelectionView.swift | 35 ++++++++++------ .../LocationSelectionViewViewModel.swift | 40 +++++++++++++++++++ .../MainMapView/View}/MapView.swift | 19 ++++----- .../MainMapView/ViewModel}/MapViewModel.swift | 0 .../NewEventView/View}/NewEventView.swift | 18 +++++---- .../ViewModel}/NewEventViewViewModel.swift | 0 .../LocationSelectionViewViewModel.swift | 17 -------- 9 files changed, 95 insertions(+), 54 deletions(-) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{Models/NavigationCoordinator.swift => NavigationCoordinator/MapNavigationCoordinator.swift} (54%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{Views => Scenes/LocationSelectionView/View}/LocationSelectionView.swift (80%) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{Views => Scenes/MainMapView/View}/MapView.swift (93%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{ViewModels => Scenes/MainMapView/ViewModel}/MapViewModel.swift (100%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{Views => Scenes/NewEventView/View}/NewEventView.swift (88%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{ViewModels => Scenes/NewEventView/ViewModel}/NewEventViewViewModel.swift (100%) delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index 03fd333..36ddecf 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -19,7 +19,15 @@ public class EventModel: Identifiable { let longitude: Double - init(category: EventCategory.RawValue, name: String, aboutEvent: String, startDate: String, dueDate: String, latitude: Double, longitude: Double) { + init( + category: EventCategory.RawValue, + name: String, + aboutEvent: String, + startDate: String, + dueDate: String, + latitude: Double, + longitude: Double + ) { self.id = UUID().uuidString self.category = category self.name = name diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/NavigationCoordinator.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/NavigationCoordinator/MapNavigationCoordinator.swift similarity index 54% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/NavigationCoordinator.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/NavigationCoordinator/MapNavigationCoordinator.swift index ff455dd..d0f9737 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/NavigationCoordinator.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/NavigationCoordinator/MapNavigationCoordinator.swift @@ -9,21 +9,21 @@ import Foundation import SwiftUI -class NavigationCoordinator: ObservableObject { +class MapNavigationCoordinator: ObservableObject { enum NavigationDestination: Hashable { case mapView case newEventView - case selectLocationMapView + case selectLocationMapView(NewEventModel) } - @Published var path = NavigationPath() + @Published var mapNavigationStack: [NavigationDestination] = [] func navigate(to destination: NavigationDestination) { - path.append(destination) + mapNavigationStack.append(destination) } func popToRoot() { - path.removeLast(path.count) + mapNavigationStack.removeLast(mapNavigationStack.count) } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift similarity index 80% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index 952e2f3..5b0e214 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -13,15 +13,22 @@ struct LocationSelectionView: View { //BUTON FOCUS PROBLEMİ VAR. @Environment(\.modelContext) private var context @Environment(\.presentationMode) var presentationMode - @EnvironmentObject var coordinator: NavigationCoordinator + @EnvironmentObject var coordinator: MapNavigationCoordinator @StateObject var vm = LocationSelectionViewViewModel() @State var tappedLocation: CLLocationCoordinate2D? = nil @State private var showAlert: Bool = false - let eventSingleton = EventSingletonModel.sharedInstance @FocusState private var isButtonFocused: Bool + @State var newEvent: NewEventModel + + init( + newEvent: NewEventModel + ) { + self.newEvent = newEvent + } + var body: some View { ZStack { mapLayer @@ -43,7 +50,17 @@ struct LocationSelectionView: View { #Preview { - LocationSelectionView() + LocationSelectionView( + newEvent: .init( + category: "cat", + name: "name", + aboutEvent: "about", + startDate: "start", + dueDate: "due", + latitude: 0.00, + longitude: 0.00 + ) + ) } extension LocationSelectionView { @@ -69,18 +86,12 @@ extension LocationSelectionView { Button(action: { // Save the event into core data if tappedLocation != nil { + newEvent.latitude = tappedLocation?.latitude + newEvent.longitude = tappedLocation?.longitude vm.addItem( modelContext: context, - id: UUID().uuidString, - category: eventSingleton.category , - name: eventSingleton.name, - about: eventSingleton.aboutEvent, - startDate: eventSingleton.startDate.toISOString(), - dueDate: eventSingleton.dueDate.toISOString(), - latitude: tappedLocation!.latitude, - longitude: tappedLocation!.longitude + newEventModel: newEvent ) - coordinator.popToRoot() } else { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift new file mode 100644 index 0000000..41a313e --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift @@ -0,0 +1,40 @@ +// +// NewEventViewViewModel.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 18.07.2024. +// + +import Foundation +import SwiftData + +class LocationSelectionViewViewModel: ObservableObject { + + func addItem( + modelContext: ModelContext, + newEventModel: NewEventModel + ) { + guard let latitude = newEventModel.latitude, + let longitude = newEventModel.longitude else { return } + let event = EventModel( + category: newEventModel.category, + name: newEventModel.name, + aboutEvent: newEventModel.aboutEvent, + startDate: newEventModel.startDate, + dueDate: newEventModel.dueDate, + latitude: latitude, + longitude: longitude + ) + modelContext.insert(event) + } +} + +struct NewEventModel: Hashable { + var category: EventCategory.RawValue + var name: String + var aboutEvent: String + var startDate: String + var dueDate: String + var latitude: Double? + var longitude: Double? +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift similarity index 93% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index 8c3f123..f949406 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -3,7 +3,6 @@ import MapKit import Design import SwiftData - public struct MapView: View { @StateObject var vm = MapViewModel() @@ -11,15 +10,14 @@ public struct MapView: View { //QUERY MAPVİEWMODEL A AKTARILMALI? @Query private var items: [EventModel] @State private var selectedItems: [EventModel] = [] - @StateObject var coordinator = NavigationCoordinator() + @StateObject var coordinator = MapNavigationCoordinator() public init() { } public var body: some View { - - NavigationStack(path: $coordinator.path) { + NavigationStack(path: $coordinator.mapNavigationStack) { ZStack { MapLayer .edgesIgnoringSafeArea([.top, .leading, .trailing]) @@ -64,17 +62,14 @@ public struct MapView: View { vm.filteredItems(items: items, selectedItems: &selectedItems) } } - .navigationDestination(for: NavigationCoordinator.NavigationDestination.self) { destination in + .navigationDestination(for: MapNavigationCoordinator.NavigationDestination.self) { destination in switch destination { - case .newEventView: - NewEventView() - .environmentObject(coordinator) - case .selectLocationMapView: - LocationSelectionView() - .environmentObject(coordinator) case .mapView: MapView() - .environmentObject(coordinator) + case .newEventView: + NewEventView() + case .selectLocationMapView(let event): + LocationSelectionView(newEvent: event) } } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/MapViewModel.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift similarity index 88% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift index 216a6c8..4b5d5b5 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift @@ -14,7 +14,7 @@ struct NewEventView: View { @Environment(\.modelContext) private var context @StateObject private var vm = NewEventViewViewModel() - @EnvironmentObject var coordinator: NavigationCoordinator + @EnvironmentObject var coordinator: MapNavigationCoordinator @State private var showAlert: Bool = false var body: some View { @@ -117,12 +117,16 @@ extension NewEventView { private var NextButton: some View { Button(action: { if vm.selectedCategory != nil { - EventSingletonModel.sharedInstance.category = vm.selectedCategory ?? "" - EventSingletonModel.sharedInstance.name = vm.nameText - EventSingletonModel.sharedInstance.aboutEvent = vm.descriptionText - EventSingletonModel.sharedInstance.startDate = vm.startDate - EventSingletonModel.sharedInstance.dueDate = vm.dueDate - coordinator.navigate(to: .selectLocationMapView) + let newEventModel: NewEventModel = .init( + category: vm.selectedCategory ?? "", + name: vm.nameText, + aboutEvent: vm.descriptionText, + startDate: vm.startDate.toISOString(), + dueDate: vm.dueDate.toISOString(), + latitude: nil, + longitude: nil + ) + coordinator.navigate(to: .selectLocationMapView(newEventModel)) } else { // Handle error message if selectedCategory is nil showAlert = true diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/NewEventViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/NewEventViewViewModel.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift deleted file mode 100644 index b876708..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewModels/LocationSelectionViewViewModel.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// NewEventViewViewModel.swift -// Map -// -// Created by Oğuzhan Abuhanoğlu on 18.07.2024. -// - -import Foundation -import SwiftData - -class LocationSelectionViewViewModel: ObservableObject { - - func addItem(modelContext: ModelContext, id: String, category: EventCategory.RawValue, name: String, about: String, startDate: String, dueDate: String, latitude: Double, longitude: Double) { - let event = EventModel(category: category, name: name, aboutEvent: about, startDate: startDate, dueDate: dueDate, latitude: latitude, longitude: longitude) - modelContext.insert(event) - } -} From aecabc1c14f218b71a88fe58414f125a4d288d9d Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Thu, 12 Sep 2024 20:26:05 +0300 Subject: [PATCH 094/126] add plist req string --- .../Sources/MapView/Scenes/MainMapView/View/MapView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index f949406..1a75c4c 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -138,7 +138,7 @@ extension MapView { } } .onAppear{ - CLLocationManager().requestWhenInUseAuthorization() + vm.locationManager.requestWhenInUseAuthorization() } .onDisappear { vm.locationManager.stopUpdatingLocation() From 9a9e836f9c58143725a84b70582f07b44881bb7a Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Sat, 14 Sep 2024 12:43:32 +0300 Subject: [PATCH 095/126] LocationManager added, category enum changed to stringArray --- .../AdaptiveColor.colorset/Contents.json | 38 ++++ .../MapView/Models/EventCategory.swift | 14 +- .../Sources/MapView/Models/EventModel.swift | 4 +- .../MapView/Models/EventSingletonModel.swift | 22 --- .../View}/EventDetailsView.swift | 31 +-- .../View/LocationSelectionView.swift | 10 +- .../View}/MapViewRepresentable.swift | 0 .../LocationSelectionViewViewModel.swift | 2 +- .../Scenes/MainMapView/View/MapView.swift | 117 ++++++------ .../MainMapView/ViewModel/MapViewModel.swift | 23 ++- .../NewEventView/View/NewEventView.swift | 50 ++++- .../ViewModel/NewEventViewViewModel.swift | 10 +- .../LocationManager/CoordModel.swift | 14 ++ .../LocationManager/LocationManager.swift | 70 +++++++ .../ViewComponents/CategoryPickerSheet.swift | 3 +- .../ViewComponents/CustomAnnotationView.swift | 109 +---------- .../MapView/ViewComponents/DropDownMenu.swift | 180 +++++++++--------- .../ViewComponents/EventListView.swift | 8 +- 18 files changed, 375 insertions(+), 330 deletions(-) create mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/AdaptiveColor.colorset/Contents.json delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{Views => Scenes/EventDetailsView/View}/EventDetailsView.swift (77%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{ViewComponents => Scenes/LocationSelectionView/View}/MapViewRepresentable.swift (100%) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/CoordModel.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AdaptiveColor.colorset/Contents.json b/SwiftBuddiesIOS/Resources/Assets.xcassets/AdaptiveColor.colorset/Contents.json new file mode 100644 index 0000000..d890719 --- /dev/null +++ b/SwiftBuddiesIOS/Resources/Assets.xcassets/AdaptiveColor.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.000", + "green" : "0.000", + "red" : "0.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift index 1706e24..1c3bb63 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift @@ -7,10 +7,10 @@ import Foundation -enum EventCategory: String, CaseIterable, Codable{ - case all = "All" - case meeting = "Meeting" - case studyBody = "Study Body" - case placeToWork = "Place to work" - case swiftBuddiesEvent = "Swift Buddies Event" -} +//enum EventCategory: String, CaseIterable, Codable{ +// case all = "All" +// case meeting = "Meeting" +// case studyBody = "Study Body" +// case placeToWork = "Place to work" +// case swiftBuddiesEvent = "Swift Buddies Event" +//} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index 36ddecf..0983ab9 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -10,7 +10,7 @@ import SwiftData @Model public class EventModel: Identifiable { public let id: String - let category: EventCategory.RawValue + let category: String let name: String let aboutEvent: String let startDate: String @@ -20,7 +20,7 @@ public class EventModel: Identifiable { init( - category: EventCategory.RawValue, + category: String, name: String, aboutEvent: String, startDate: String, diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift deleted file mode 100644 index 69dc8c9..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventSingletonModel.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// EventSingletonModel.swift -// Map -// -// Created by Oğuzhan Abuhanoğlu on 10.07.2024. -// - -import Foundation - -class EventSingletonModel { - - static var sharedInstance = EventSingletonModel() - - var category: String = EventCategory.RawValue() - var name: String = "" - var aboutEvent: String = "" - var startDate: Date = Date() - var dueDate: Date = Date() - - private init(){} - -} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift similarity index 77% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift index c27e487..fbc222c 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Views/EventDetailsView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift @@ -93,20 +93,23 @@ extension EventDetailsView { VStack { Map(coordinateRegion: .constant(MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude), span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))), annotationItems: [event]) { event in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude)) { - if event.category == EventCategory.meeting.rawValue { - OrangeAnnotationView() - .shadow(radius: 10) - } else if event.category == EventCategory.studyBody.rawValue { - RedAnnotationView() - .shadow(radius: 10) - } else if event.category == EventCategory.placeToWork.rawValue { - BlueAnnotationView() - .shadow(radius: 10) - - } else if event.category == EventCategory.swiftBuddiesEvent.rawValue { - GreenAnnotationView() - .shadow(radius: 10) - } +// if event.category == EventCategory.meeting.rawValue { +// AnnotationView() +// .shadow(radius: 10) +// } else if event.category == EventCategory.studyBody.rawValue { +// RedAnnotationView() +// .shadow(radius: 10) +// } else if event.category == EventCategory.placeToWork.rawValue { +// BlueAnnotationView() +// .shadow(radius: 10) +// +// } else if event.category == EventCategory.swiftBuddiesEvent.rawValue { +// GreenAnnotationView() +// .shadow(radius: 10) +// } + + AnnotationView(color: .orange) + .shadow(radius: 10) } } .allowsHitTesting(false) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index 5b0e214..535273a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -13,13 +13,14 @@ struct LocationSelectionView: View { //BUTON FOCUS PROBLEMİ VAR. @Environment(\.modelContext) private var context @Environment(\.presentationMode) var presentationMode + @EnvironmentObject var coordinator: MapNavigationCoordinator + @EnvironmentObject var locationManager: LocationManager @StateObject var vm = LocationSelectionViewViewModel() @State var tappedLocation: CLLocationCoordinate2D? = nil @State private var showAlert: Bool = false - @FocusState private var isButtonFocused: Bool @State var newEvent: NewEventModel @@ -39,7 +40,6 @@ struct LocationSelectionView: View { Spacer() createButton .padding() - .focused($isButtonFocused) } .alert(isPresented: $showAlert) { createAlert() @@ -63,6 +63,7 @@ struct LocationSelectionView: View { ) } +// MARK: COMPONENTS extension LocationSelectionView { private var mapLayer: some View { @@ -73,7 +74,10 @@ extension LocationSelectionView { MapPitchToggle() } .onAppear{ - CLLocationManager().requestWhenInUseAuthorization() + locationManager.startUpdatingLocation() + } + .onDisappear { + locationManager.stopUpdatingLocation() } } .aspectRatio(1, contentMode: .fill) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/MapViewRepresentable.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/MapViewRepresentable.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/MapViewRepresentable.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift index 41a313e..ce5432f 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift @@ -30,7 +30,7 @@ class LocationSelectionViewViewModel: ObservableObject { } struct NewEventModel: Hashable { - var category: EventCategory.RawValue + var category: String var name: String var aboutEvent: String var startDate: String diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index 1a75c4c..2bd2ca2 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -6,14 +6,15 @@ import SwiftData public struct MapView: View { @StateObject var vm = MapViewModel() - - //QUERY MAPVİEWMODEL A AKTARILMALI? + @StateObject var coordinator = MapNavigationCoordinator() + + @StateObject var locationManager = LocationManager() @Query private var items: [EventModel] @State private var selectedItems: [EventModel] = [] - @StateObject var coordinator = MapNavigationCoordinator() + public init() { - + locationManager.checkLocationAuthorization() } public var body: some View { @@ -21,17 +22,13 @@ public struct MapView: View { ZStack { MapLayer .edgesIgnoringSafeArea([.top, .leading, .trailing]) - - + VStack(alignment: .leading) { listHeader .padding(.horizontal) - - seeLocationsButton + categoryFilterButton .padding(.leading) - Spacer() - if !vm.categoryModalShown { VStack { Spacer() @@ -43,8 +40,6 @@ public struct MapView: View { } } } - - } .onAppear { // Map açıldığında tüm eventler de ki anotasyonları görebilmek için @@ -73,6 +68,8 @@ public struct MapView: View { } } } + .environmentObject(locationManager) + .environmentObject(vm) .environmentObject(coordinator) } } @@ -83,14 +80,13 @@ public struct MapView: View { -// MARK: View extensions for mapView +// MARK: COMPONENTS extension MapView { private var MapLayer: some View { Map(coordinateRegion: $vm.region, annotationItems: selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { - if item.category == EventCategory.meeting.rawValue { - OrangeAnnotationView() + AnnotationView(color: .orange) .shadow(radius: 10) .onTapGesture { withAnimation(.easeInOut) { @@ -99,52 +95,65 @@ extension MapView { } } .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - - } else if item.category == EventCategory.studyBody.rawValue { - RedAnnotationView() - .shadow(radius: 10) - .onTapGesture { - withAnimation(.easeInOut) { - vm.setMapRegion(to: item) - vm.showEventListView = false - } - } - .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - - } else if item.category == EventCategory.placeToWork.rawValue { - - BlueAnnotationView() - .shadow(radius: 10) - .onTapGesture { - withAnimation(.easeInOut) { - vm.setMapRegion(to: item) - vm.showEventListView = false - } - } - .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - - } else if item.category == EventCategory.swiftBuddiesEvent.rawValue { - - GreenAnnotationView() - .shadow(radius: 10) - .onTapGesture { - withAnimation(.easeInOut) { - vm.setMapRegion(to: item) - vm.showEventListView = false - } - } - .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - } + } } .onAppear{ - vm.locationManager.requestWhenInUseAuthorization() + locationManager.startUpdatingLocation() + locationManager.checkLocationAuthorization() } .onDisappear { - vm.locationManager.stopUpdatingLocation() + locationManager.stopUpdatingLocation() + locationManager.checkLocationAuthorization() } } + // if item.category == EventCategory.meeting.rawValue { + // AnnotationView() + // .shadow(radius: 10) + // .onTapGesture { + // withAnimation(.easeInOut) { + // vm.setMapRegion(to: item) + // vm.showEventListView = false + // } + // } + // .scaleEffect(vm.currentEvent == item ? 1 : 0.8) + // + // } else if item.category == EventCategory.studyBody.rawValue { + // RedAnnotationView() + // .shadow(radius: 10) + // .onTapGesture { + // withAnimation(.easeInOut) { + // vm.setMapRegion(to: item) + // vm.showEventListView = false + // } + // } + // .scaleEffect(vm.currentEvent == item ? 1 : 0.8) + // + // } else if item.category == EventCategory.placeToWork.rawValue { + // + // BlueAnnotationView() + // .shadow(radius: 10) + // .onTapGesture { + // withAnimation(.easeInOut) { + // vm.setMapRegion(to: item) + // vm.showEventListView = false + // } + // } + // .scaleEffect(vm.currentEvent == item ? 1 : 0.8) + // + // } else if item.category == EventCategory.swiftBuddiesEvent.rawValue { + // + // GreenAnnotationView() + // .shadow(radius: 10) + // .onTapGesture { + // withAnimation(.easeInOut) { + // vm.setMapRegion(to: item) + // vm.showEventListView = false + // } + // } + // .scaleEffect(vm.currentEvent == item ? 1 : 0.8) + // } private var listHeader: some View { VStack { @@ -176,7 +185,7 @@ extension MapView { } - private var seeLocationsButton: some View { + private var categoryFilterButton: some View { VStack{ Button(action: { vm.categoryModalShown.toggle() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index d3fd81a..9e22f1a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -13,7 +13,7 @@ import CoreLocation class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { - @Published var categoryModalShown = false + @Published var categoryModalShown: Bool = false @Published var selectedCategory: String = "" @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var showEventListView: Bool = false @@ -22,17 +22,22 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) ) + @Published var currentEvent: EventModel = EventModel(category: "test", name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12) let locationManager = CLLocationManager() - var categories: [String] { - EventCategory.allCases.map { $0.rawValue } - } - - var filteredCategories: [String] { - categories.filter { $0 != "All" } - } + // bunu backednden alacağız. + @Published var categories: [String] = + ["All", "Meeting", "Study Body", "Place to work", "Swift Buddies Event"] + +// var categories: [String] { +// EventCategory.allCases.map { $0.rawValue } +// } +// +// var filteredCategories: [String] { +// categories.filter { $0 != "All" } +// } override init() { super.init() @@ -68,7 +73,7 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { selectedItems.removeAll() - if selectedCategory == EventCategory.all.rawValue { + if selectedCategory == "All" /*EventCategory.all.rawValue*/ { selectedItems = items } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift index 4b5d5b5..a8e4348 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift @@ -9,20 +9,50 @@ import SwiftUI import SwiftData struct NewEventView: View { - //BU EKRANIN TASARIMI GELİŞTİRİLEBİLİR. + @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context - - @StateObject private var vm = NewEventViewViewModel() + + @EnvironmentObject var mapVM: MapViewModel @EnvironmentObject var coordinator: MapNavigationCoordinator + @StateObject private var vm = NewEventViewViewModel() + @State private var showAlert: Bool = false - + var body: some View { ScrollView { VStack(spacing: 20) { - DropdownMenu(prompt: "Select..", - options: vm.filteredCategories, - selection: $vm.selectedCategory) +// DropdownMenu(prompt: "Select..", +// options: vm.filteredCategories, +// selection: $vm.selectedCategory) + Menu { + ForEach(mapVM.categories, id: \.self) { category in + Button(action: { + vm.selection = category + }) { + Text(category.capitalized) + .foregroundStyle(.primary) + .frame(maxWidth: .infinity) + } + } + } label: { + HStack { + Text(vm.selection) + .font(.headline) + .foregroundStyle(Color("AdaptiveColor")) + .padding() + .frame(maxWidth: .infinity) + .frame(height: 55) + .overlay( + RoundedRectangle(cornerRadius: 10) + .stroke(Color.primary, lineWidth: 1) + ) + .background( + Color(.secondarySystemBackground) + ) + .padding(.horizontal) + } + } nameTextfield descriptionTextField Divider() @@ -47,6 +77,7 @@ struct NewEventView: View { NewEventView() } +// MARK: COMPONENTS extension NewEventView { private var nameTextfield: some View { @@ -116,9 +147,9 @@ extension NewEventView { private var NextButton: some View { Button(action: { - if vm.selectedCategory != nil { + if vm.selection != "Select a category" { let newEventModel: NewEventModel = .init( - category: vm.selectedCategory ?? "", + category: vm.selection, name: vm.nameText, aboutEvent: vm.descriptionText, startDate: vm.startDate.toISOString(), @@ -128,7 +159,6 @@ extension NewEventView { ) coordinator.navigate(to: .selectLocationMapView(newEventModel)) } else { - // Handle error message if selectedCategory is nil showAlert = true } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift index aab5314..aa7ed50 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift @@ -9,15 +9,7 @@ import Foundation class NewEventViewViewModel: ObservableObject { - var categories: [String] { - EventCategory.allCases.map { $0.rawValue } - } - - var filteredCategories: [String] { - categories.filter { $0 != "All" } - } - - @Published var selectedCategory: EventCategory.RawValue? + @Published var selection: String = "Select a category" @Published var nameText: String = "" @Published var descriptionText: String = "" @Published var adressText: String = "" diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/CoordModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/CoordModel.swift new file mode 100644 index 0000000..1fc5d0e --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/CoordModel.swift @@ -0,0 +1,14 @@ +// +// CordModel.swift +// SwiftBuddiesIOS +// +// Created by Oğuzhan Abuhanoğlu on 14.09.2024. +// + +import Foundation + +struct Coord: Codable, Equatable { + let lat, lon: Double + + static func == (lhs: Coord, rhs: Coord) -> Bool { lhs.lat == rhs.lat && lhs.lon == rhs.lon } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift new file mode 100644 index 0000000..4a6eda1 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift @@ -0,0 +1,70 @@ +// +// LocationManager.swift +// SwiftBuddiesIOS +// +// Created by Oğuzhan Abuhanoğlu on 14.09.2024. +// + +import Foundation +import CoreLocation +import SwiftUI + +class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject { + + @Published private(set) var lastKnownLocation: Coord? + + private let manager = CLLocationManager() + + override init() { + super.init() + + manager.delegate = self + manager.startUpdatingLocation() + } + + func startUpdatingLocation() { + manager.startUpdatingLocation() + } + + func stopUpdatingLocation() { + manager.stopUpdatingLocation() + } + + func checkLocationAuthorization() { + switch manager.authorizationStatus { + case .notDetermined: + manager.requestWhenInUseAuthorization() + + case .restricted: + debugPrint("Location restricted") + + case .denied: + debugPrint("Location denied") + + case .authorizedAlways: + debugPrint("Location authorizedAlways") + + case .authorizedWhenInUse: + debugPrint("Location authorized when in use") + if let coordinate = manager.location?.coordinate { + lastKnownLocation = Coord(lat: coordinate.latitude.magnitude, lon: coordinate.longitude.magnitude) + } + + @unknown default: + debugPrint("Location service disabled") + } + + manager.stopUpdatingLocation() + } + + func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) { + checkLocationAuthorization() + } + + func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { + if let coordinate = locations.first?.coordinate { + lastKnownLocation = Coord(lat: coordinate.latitude.magnitude, lon: coordinate.longitude.magnitude) + } + manager.stopUpdatingLocation() + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift index 63e68df..d8bb19d 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift @@ -11,6 +11,7 @@ import SwiftData struct CategoryPicker: View { @Environment(\.presentationMode) var presentationMode + @EnvironmentObject var mapVM: MapViewModel @Binding var selectedCategory: String @StateObject var vm = MapViewModel() @@ -21,7 +22,7 @@ struct CategoryPicker: View { NavigationView { List { - ForEach(vm.categories, id: \.self) { category in + ForEach(mapVM.categories, id: \.self) { category in Button(action: { selectedCategory = category presentationMode.wrappedValue.dismiss() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift index 16f2203..88a10ec 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift @@ -7,75 +7,9 @@ import SwiftUI -struct OrangeAnnotationView: View { +struct AnnotationView: View { - var body: some View { - - VStack{ - Image(systemName: "map.circle.fill") - .resizable() - .scaledToFit() - .frame(width: 30, height: 30) - .foregroundColor(.white) - .padding(6) - .background(Color.orange) - .clipShape(.circle) - - Image(systemName: "triangle.fill") - .resizable() - .scaledToFit() - .frame(width: 10, height: 10) - .foregroundColor(Color.orange) - .rotationEffect(Angle(degrees: 180)) - .offset(y: -11) - - } - //bu paddingi annotation yerleştirildiğinde konumu kapatmaması ve okun tam lokasyonnu göstermesi için kullandım - .padding(.bottom) - - } -} - -#Preview { - OrangeAnnotationView() -} - - -struct RedAnnotationView: View { - - var body: some View { - - VStack{ - Image(systemName: "map.circle.fill") - .resizable() - .scaledToFit() - .frame(width: 30, height: 30) - .foregroundColor(.white) - .padding(6) - .background(Color.red) - .clipShape(.circle) - - Image(systemName: "triangle.fill") - .resizable() - .scaledToFit() - .frame(width: 10, height: 10) - .foregroundColor(Color.red) - .rotationEffect(Angle(degrees: 180)) - .offset(y: -11) - - } - //bu paddingi annotation yerleştirildiğinde konumu kapatmaması ve okun tam lokasyonnu göstermesi için kullandım - .padding(.bottom) - - } -} - -#Preview { - RedAnnotationView() -} - - -struct BlueAnnotationView: View { + @State var color: Color = .black var body: some View { @@ -86,14 +20,14 @@ struct BlueAnnotationView: View { .frame(width: 30, height: 30) .foregroundColor(.white) .padding(6) - .background(Color.blue) + .background(color) .clipShape(.circle) Image(systemName: "triangle.fill") .resizable() .scaledToFit() .frame(width: 10, height: 10) - .foregroundColor(Color.blue) + .foregroundColor(color) .rotationEffect(Angle(degrees: 180)) .offset(y: -11) @@ -105,40 +39,7 @@ struct BlueAnnotationView: View { } #Preview { - BlueAnnotationView() -} - - -struct GreenAnnotationView: View { - - var body: some View { - - VStack{ - Image(systemName: "map.circle.fill") - .resizable() - .scaledToFit() - .frame(width: 30, height: 30) - .foregroundColor(.white) - .padding(6) - .background(Color.green) - .clipShape(.circle) - - Image(systemName: "triangle.fill") - .resizable() - .scaledToFit() - .frame(width: 10, height: 10) - .foregroundColor(Color.green) - .rotationEffect(Angle(degrees: 180)) - .offset(y: -11) - - } - //bu paddingi annotation yerleştirildiğinde konumu kapatmaması ve okun tam lokasyonnu göstermesi için kullandım - .padding(.bottom) - - } + AnnotationView() } -#Preview { - GreenAnnotationView() -} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift index b41ff1b..21fc143 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift @@ -5,93 +5,93 @@ // Created by Oğuzhan Abuhanoğlu on 13.05.2024. // -import SwiftUI - -struct DropdownMenu: View { - - let prompt: String - let options: [String] - @Binding var selection: EventCategory.RawValue? - - @State private var isShowing = false - @Environment(\.colorScheme) var scheme - - var body: some View { - VStack { - HStack{ - Text(selection ?? prompt) - - Spacer() - - Image(systemName: "chevron.down") - .font(.subheadline) - .foregroundStyle(.gray) - .rotationEffect(.degrees(isShowing ? -180 : 0)) - } - .frame(height: 55) - .background( - Color(.secondarySystemBackground) - ) - .padding(.horizontal) - .bold() - .onTapGesture { - withAnimation(.easeInOut) { - isShowing.toggle() - } - } - - if isShowing { - VStack{ - ForEach(options, id: \.self) { option in - HStack{ - Text(option) - .foregroundStyle(selection == option ? Color.primary : .gray) - - Spacer() - - if selection == option { - Image(systemName: "checkmark") - .font(.subheadline) - } - - } - .frame(height: 40) - .padding(.horizontal) - .onTapGesture { - selection = option - withAnimation(.easeInOut) { - isShowing.toggle() - } - - } - } - } - - } - - } - .overlay( - RoundedRectangle(cornerRadius: 10) - .stroke(Color.primary, lineWidth: 1) - ) - .background( - Color(.secondarySystemBackground) - ) - .padding(.horizontal) - - - } - -} - - -#Preview { - DropdownMenu(prompt: "Select", - options: [ - "option1", - "option2", - "option3"], - selection: .constant(EventCategory.meeting.rawValue) - ) -} - +//import SwiftUI +// +//struct DropdownMenu: View { +// +// let prompt: String +// let options: [String] +// //@Binding var selection: EventCategory.RawValue? +// +// @State private var isShowing = false +// @Environment(\.colorScheme) var scheme +// +// var body: some View { +// VStack { +// HStack{ +// Text(selection ?? prompt) +// +// Spacer() +// +// Image(systemName: "chevron.down") +// .font(.subheadline) +// .foregroundStyle(.gray) +// .rotationEffect(.degrees(isShowing ? -180 : 0)) +// } +// .frame(height: 55) +// .background( +// Color(.secondarySystemBackground) +// ) +// .padding(.horizontal) +// .bold() +// .onTapGesture { +// withAnimation(.easeInOut) { +// isShowing.toggle() +// } +// } +// +// if isShowing { +// VStack{ +// ForEach(options, id: \.self) { option in +// HStack{ +// Text(option) +// .foregroundStyle(selection == option ? Color.primary : .gray) +// +// Spacer() +// +// if selection == option { +// Image(systemName: "checkmark") +// .font(.subheadline) +// } +// +// } +// .frame(height: 40) +// .padding(.horizontal) +// .onTapGesture { +// selection = option +// withAnimation(.easeInOut) { +// isShowing.toggle() +// } +// +// } +// } +// } +// +// } +// +// } +// .overlay( +// RoundedRectangle(cornerRadius: 10) +// .stroke(Color.primary, lineWidth: 1) +// ) +// .background( +// Color(.secondarySystemBackground) +// ) +// .padding(.horizontal) +// +// +// } +// +//} +// +// +//#Preview { +// DropdownMenu(prompt: "Select", +// options: [ +// "option1", +// "option2", +// "option3"], +// selection: .constant(EventCategory.meeting.rawValue) +// ) +//} +// diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift index 3e0e562..770a393 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -51,13 +51,13 @@ extension EventListView { } private func imageColor(event: EventModel) -> Color { - if event.category == EventCategory.meeting.rawValue { + if event.category == "Meeting" /*EventCategory.meeting.rawValue*/ { return .orange - } else if event.category == EventCategory.studyBody.rawValue { + } else if event.category == "Study Body" /*EventCategory.studyBody.rawValue*/ { return .red - } else if event.category == EventCategory.placeToWork.rawValue { + } else if event.category == "Place the work" /*EventCategory.placeToWork.rawValue*/ { return .blue - } else if event.category == EventCategory.swiftBuddiesEvent.rawValue { + } else if event.category == "Swift Buddies Event" /*EventCategory.swiftBuddiesEvent.rawValue*/ { return .green } From 9a926e6a13f567da45221dea7cf708df09331ea4 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 16 Sep 2024 01:44:41 +0300 Subject: [PATCH 096/126] The locationManager and mapViewModel have been updated. --- .../Scenes/MainMapView/View/MapView.swift | 146 ++++++++---------- .../MainMapView/ViewModel/MapViewModel.swift | 53 ++----- .../LocationManager/LocationManager.swift | 37 +++-- 3 files changed, 104 insertions(+), 132 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index 2bd2ca2..174dfdc 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -7,20 +7,20 @@ public struct MapView: View { @StateObject var vm = MapViewModel() @StateObject var coordinator = MapNavigationCoordinator() - @StateObject var locationManager = LocationManager() + @Query private var items: [EventModel] - @State private var selectedItems: [EventModel] = [] + - public init() { locationManager.checkLocationAuthorization() + } public var body: some View { NavigationStack(path: $coordinator.mapNavigationStack) { ZStack { - MapLayer + mapLayer .edgesIgnoringSafeArea([.top, .leading, .trailing]) VStack(alignment: .leading) { @@ -31,30 +31,39 @@ public struct MapView: View { Spacer() if !vm.categoryModalShown { VStack { - Spacer() HStack { - learnMoreButton + VStack { + // add explanation text here + if vm.showExplanationText == true , vm.currentEvent != nil { + explanationText + } + if vm.currentEvent != nil { + learnMoreButton + .allowsHitTesting(vm.currentEvent != nil) + } + } + .frame(maxHeight: .infinity, alignment: .bottom) + createEventButton + .padding(.horizontal) + .frame(maxHeight: .infinity, alignment: .bottom) } .padding() } } } } - .onAppear { - // Map açıldığında tüm eventler de ki anotasyonları görebilmek için - self.selectedItems = items - } .bottomSheet( - presentationDetents: [.large, .fraction(0.2), .fraction(0.4), .fraction(0.5), .fraction(0.9), .medium], + presentationDetents: [.large, .fraction(0.2), .fraction(0.9), .medium], detentSelection: $vm.selectedDetent, isPresented: $vm.categoryModalShown, sheetCornerRadius: 12, interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $vm.selectedCategory) {} + CategoryPicker(selectedCategory: $vm.selectedCategory) } onDismiss: { withAnimation(.easeInOut) { - vm.filteredItems(items: items, selectedItems: &selectedItems) + vm.filteredItems(items: items, selectedItems: &vm.selectedItems) + vm.currentEvent = vm.selectedItems.first } } .navigationDestination(for: MapNavigationCoordinator.NavigationDestination.self) { destination in @@ -68,8 +77,8 @@ public struct MapView: View { } } } - .environmentObject(locationManager) .environmentObject(vm) + .environmentObject(locationManager) .environmentObject(coordinator) } } @@ -78,89 +87,44 @@ public struct MapView: View { } - - // MARK: COMPONENTS extension MapView { - private var MapLayer: some View { - Map(coordinateRegion: $vm.region, annotationItems: selectedItems) { item in + private var mapLayer: some View { + Map(coordinateRegion: $locationManager.region, annotationItems: vm.selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { AnnotationView(color: .orange) - .shadow(radius: 10) - .onTapGesture { - withAnimation(.easeInOut) { - vm.setMapRegion(to: item) - vm.showEventListView = false - } + .scaleEffect(vm.currentEvent == item ? 1 : 0.8) + .onTapGesture { + withAnimation(.easeInOut) { + vm.setMapRegion(to: item) + vm.showEventListView = false } - .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - + + } + .shadow(radius: 10) } } .onAppear{ locationManager.startUpdatingLocation() locationManager.checkLocationAuthorization() + vm.selectedItems = items + vm.currentEvent = vm.selectedItems.first } .onDisappear { locationManager.stopUpdatingLocation() locationManager.checkLocationAuthorization() + vm.showExplanationText = false + vm.showExplanationText = false } } - // if item.category == EventCategory.meeting.rawValue { - // AnnotationView() - // .shadow(radius: 10) - // .onTapGesture { - // withAnimation(.easeInOut) { - // vm.setMapRegion(to: item) - // vm.showEventListView = false - // } - // } - // .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - // - // } else if item.category == EventCategory.studyBody.rawValue { - // RedAnnotationView() - // .shadow(radius: 10) - // .onTapGesture { - // withAnimation(.easeInOut) { - // vm.setMapRegion(to: item) - // vm.showEventListView = false - // } - // } - // .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - // - // } else if item.category == EventCategory.placeToWork.rawValue { - // - // BlueAnnotationView() - // .shadow(radius: 10) - // .onTapGesture { - // withAnimation(.easeInOut) { - // vm.setMapRegion(to: item) - // vm.showEventListView = false - // } - // } - // .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - // - // } else if item.category == EventCategory.swiftBuddiesEvent.rawValue { - // - // GreenAnnotationView() - // .shadow(radius: 10) - // .onTapGesture { - // withAnimation(.easeInOut) { - // vm.setMapRegion(to: item) - // vm.showEventListView = false - // } - // } - // .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - // } - private var listHeader: some View { VStack { Button { vm.toggleEventList() } label: { - Text(vm.currentEvent.name) + Text(vm.currentEvent?.name ?? "") .font(.title2) .fontWeight(.black) .foregroundColor(.primary) @@ -176,7 +140,7 @@ extension MapView { } if vm.showEventListView { - EventListView(events: selectedItems) + EventListView(events: vm.selectedItems) } } .background(.thickMaterial) @@ -200,25 +164,45 @@ extension MapView { .background(.thickMaterial) .shadow(color: .black.opacity(0.3), radius: 20 ,x: 0 , y: 15) .cornerRadius(30) - - } private var learnMoreButton: some View { NavigationLink { - EventDetailsView(event: (vm.currentEvent)) + if let event = vm.currentEvent { + EventDetailsView(event: event) + } } label: { - Text(" Learn More ") - .frame(maxWidth: .infinity) + Image(systemName: "info.circle.fill") .foregroundColor(.white) .padding() .background(Color.red) - .cornerRadius(10) + .cornerRadius(55/2) } .padding(.horizontal) + .frame(maxWidth: .infinity, alignment: .leading) } + private var explanationText: some View { + VStack { + Text("You can click for more information about the selected event on the map.") + .font(.headline) + .foregroundStyle(.red) + .padding() + .background(Color.white) + .cornerRadius(10) + + Image(systemName: "triangle.fill") + .resizable() + .scaledToFit() + .frame(width: 10, height: 10) + .foregroundColor(Color.red) + .rotationEffect(Angle(degrees: 180)) + .offset(x: -100 , y: -11) + } + .multilineTextAlignment(.center) + } + private var createEventButton: some View { Button(action: { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 9e22f1a..21bd923 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -7,67 +7,42 @@ import Foundation import SwiftUI -import SwiftData import MapKit import CoreLocation class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { + @Published var selectedItems: [EventModel] = [] + @Published var currentEvent: EventModel? + @Published var categoryModalShown: Bool = false @Published var selectedCategory: String = "" @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var showEventListView: Bool = false - @Published var region: MKCoordinateRegion = MKCoordinateRegion( - center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), - span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - ) - - @Published var currentEvent: EventModel = EventModel(category: "test", name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12) + private let locationManager = LocationManager() - let locationManager = CLLocationManager() + @Published var showExplanationText: Bool = true // bunu backednden alacağız. - @Published var categories: [String] = - ["All", "Meeting", "Study Body", "Place to work", "Swift Buddies Event"] + @Published var categories: [String] = [ + "All", "Meeting", "Study Body", "Place to work", "Swift Buddies Event" + ] -// var categories: [String] { -// EventCategory.allCases.map { $0.rawValue } -// } -// -// var filteredCategories: [String] { -// categories.filter { $0 != "All" } -// } + var filteredCategories: [String] { + categories.filter { $0 != "All" } + } override init() { super.init() - locationManager.delegate = self - locationManager.desiredAccuracy = kCLLocationAccuracyBest - locationManager.requestWhenInUseAuthorization() - locationManager.startUpdatingLocation() - } - - func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { - if let location = locations.first { - withAnimation { - region = MKCoordinateRegion( - center: location.coordinate, - span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - ) - } - locationManager.stopUpdatingLocation() - } - } - - func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { - print("Failed to get user location: \(error)") + + } - func setMapRegion(to item: EventModel) { let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - self.region = MKCoordinateRegion(center: coordinate, span: span) + locationManager.region = MKCoordinateRegion(center: coordinate, span: span) self.currentEvent = item } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift index 4a6eda1..61b961e 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift @@ -8,17 +8,22 @@ import Foundation import CoreLocation import SwiftUI +import MapKit class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject { - @Published private(set) var lastKnownLocation: Coord? - private let manager = CLLocationManager() + @Published var region: MKCoordinateRegion = MKCoordinateRegion( + center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), + span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + ) + override init() { super.init() - manager.delegate = self + manager.desiredAccuracy = kCLLocationAccuracyBest + manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() } @@ -46,9 +51,6 @@ class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject { case .authorizedWhenInUse: debugPrint("Location authorized when in use") - if let coordinate = manager.location?.coordinate { - lastKnownLocation = Coord(lat: coordinate.latitude.magnitude, lon: coordinate.longitude.magnitude) - } @unknown default: debugPrint("Location service disabled") @@ -57,14 +59,25 @@ class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject { manager.stopUpdatingLocation() } + func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { + if let location = locations.first { + withAnimation { + region = MKCoordinateRegion( + center: location.coordinate, + span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + ) + } + manager.stopUpdatingLocation() + } + } + + func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { + print("Failed to get user location: \(error)") + } + + func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) { checkLocationAuthorization() } - func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { - if let coordinate = locations.first?.coordinate { - lastKnownLocation = Coord(lat: coordinate.latitude.magnitude, lon: coordinate.longitude.magnitude) - } - manager.stopUpdatingLocation() - } } From 56ffec2adeb61db8e48cb14342e00ffab9826cf4 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 16 Sep 2024 01:45:11 +0300 Subject: [PATCH 097/126] cleaner code. --- .../MapView/Models/EventCategory.swift | 16 --- .../NewEventView/View/NewEventView.swift | 68 ++++++------- .../ViewModel/NewEventViewViewModel.swift | 1 + .../ViewComponents/CategoryPickerSheet.swift | 14 +-- .../ViewComponents/CustomAnnotationView.swift | 1 - .../MapView/ViewComponents/DropDownMenu.swift | 97 ------------------- 6 files changed, 42 insertions(+), 155 deletions(-) delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift deleted file mode 100644 index 1c3bb63..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventCategory.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// EventCategory.swift -// Map -// -// Created by Oğuzhan Abuhanoğlu on 17.07.2024. -// - -import Foundation - -//enum EventCategory: String, CaseIterable, Codable{ -// case all = "All" -// case meeting = "Meeting" -// case studyBody = "Study Body" -// case placeToWork = "Place to work" -// case swiftBuddiesEvent = "Swift Buddies Event" -//} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift index a8e4348..9bf659b 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift @@ -17,42 +17,11 @@ struct NewEventView: View { @EnvironmentObject var coordinator: MapNavigationCoordinator @StateObject private var vm = NewEventViewViewModel() - @State private var showAlert: Bool = false var body: some View { ScrollView { VStack(spacing: 20) { -// DropdownMenu(prompt: "Select..", -// options: vm.filteredCategories, -// selection: $vm.selectedCategory) - Menu { - ForEach(mapVM.categories, id: \.self) { category in - Button(action: { - vm.selection = category - }) { - Text(category.capitalized) - .foregroundStyle(.primary) - .frame(maxWidth: .infinity) - } - } - } label: { - HStack { - Text(vm.selection) - .font(.headline) - .foregroundStyle(Color("AdaptiveColor")) - .padding() - .frame(maxWidth: .infinity) - .frame(height: 55) - .overlay( - RoundedRectangle(cornerRadius: 10) - .stroke(Color.primary, lineWidth: 1) - ) - .background( - Color(.secondarySystemBackground) - ) - .padding(.horizontal) - } - } + categoryPickerMenu nameTextfield descriptionTextField Divider() @@ -60,7 +29,7 @@ struct NewEventView: View { NextButton } - .alert(isPresented: $showAlert) { + .alert(isPresented: $vm.showAlert) { createAlert() } .navigationTitle("Event Details") @@ -80,6 +49,37 @@ struct NewEventView: View { // MARK: COMPONENTS extension NewEventView { + private var categoryPickerMenu: some View { + Menu { + ForEach(mapVM.filteredCategories, id: \.self) { category in + Button(action: { + vm.selection = category + }) { + Text(category.capitalized) + .foregroundStyle(.primary) + .frame(maxWidth: .infinity) + } + } + } label: { + HStack { + Text(vm.selection) + .font(.headline) + .foregroundStyle(Color("AdaptiveColor")) + .padding() + .frame(maxWidth: .infinity) + .frame(height: 55) + .overlay( + RoundedRectangle(cornerRadius: 10) + .stroke(Color.primary, lineWidth: 1) + ) + .background( + Color(.secondarySystemBackground) + ) + .padding(.horizontal) + } + } + } + private var nameTextfield: some View { TextField("Event name...", text: $vm.nameText) .textInputAutocapitalization(.never) @@ -159,7 +159,7 @@ extension NewEventView { ) coordinator.navigate(to: .selectLocationMapView(newEventModel)) } else { - showAlert = true + vm.showAlert = true } }) { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift index aa7ed50..b7eaf8b 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift @@ -16,4 +16,5 @@ class NewEventViewViewModel: ObservableObject { @Published var startDate: Date = Date() @Published var dueDate: Date = Date() + @Published var showAlert: Bool = false } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift index d8bb19d..13f2244 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift @@ -16,12 +16,9 @@ struct CategoryPicker: View { @Binding var selectedCategory: String @StateObject var vm = MapViewModel() - var selectAction: () -> Void - var body: some View { NavigationView { List { - ForEach(mapVM.categories, id: \.self) { category in Button(action: { selectedCategory = category @@ -29,9 +26,10 @@ struct CategoryPicker: View { }) { Text(category) + .fontWeight(.semibold) .padding() .frame(maxWidth: .infinity) - .background(Color.blue) + .background(Color.orange) .foregroundColor(.white) .cornerRadius(10) .padding(.horizontal) @@ -45,6 +43,7 @@ struct CategoryPicker: View { } } +// MARK: COMPONENTS extension CategoryPicker { private var backButton: some View{ @@ -54,12 +53,13 @@ extension CategoryPicker { }) { Image(systemName: "xmark") .font(.headline) - .padding() .foregroundColor(.primary) + .padding() .background(.thinMaterial) .cornerRadius(10) - .shadow(radius: 4) - .padding() + .shadow(radius: 7) + } + .padding(.top, 20) } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift index 88a10ec..c43ff77 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift @@ -34,7 +34,6 @@ struct AnnotationView: View { } //bu paddingi annotation yerleştirildiğinde konumu kapatmaması ve okun tam lokasyonnu göstermesi için kullandım .padding(.bottom) - } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift deleted file mode 100644 index 21fc143..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/DropDownMenu.swift +++ /dev/null @@ -1,97 +0,0 @@ -// -// DropDownMenu.swift -// Map -// -// Created by Oğuzhan Abuhanoğlu on 13.05.2024. -// - -//import SwiftUI -// -//struct DropdownMenu: View { -// -// let prompt: String -// let options: [String] -// //@Binding var selection: EventCategory.RawValue? -// -// @State private var isShowing = false -// @Environment(\.colorScheme) var scheme -// -// var body: some View { -// VStack { -// HStack{ -// Text(selection ?? prompt) -// -// Spacer() -// -// Image(systemName: "chevron.down") -// .font(.subheadline) -// .foregroundStyle(.gray) -// .rotationEffect(.degrees(isShowing ? -180 : 0)) -// } -// .frame(height: 55) -// .background( -// Color(.secondarySystemBackground) -// ) -// .padding(.horizontal) -// .bold() -// .onTapGesture { -// withAnimation(.easeInOut) { -// isShowing.toggle() -// } -// } -// -// if isShowing { -// VStack{ -// ForEach(options, id: \.self) { option in -// HStack{ -// Text(option) -// .foregroundStyle(selection == option ? Color.primary : .gray) -// -// Spacer() -// -// if selection == option { -// Image(systemName: "checkmark") -// .font(.subheadline) -// } -// -// } -// .frame(height: 40) -// .padding(.horizontal) -// .onTapGesture { -// selection = option -// withAnimation(.easeInOut) { -// isShowing.toggle() -// } -// -// } -// } -// } -// -// } -// -// } -// .overlay( -// RoundedRectangle(cornerRadius: 10) -// .stroke(Color.primary, lineWidth: 1) -// ) -// .background( -// Color(.secondarySystemBackground) -// ) -// .padding(.horizontal) -// -// -// } -// -//} -// -// -//#Preview { -// DropdownMenu(prompt: "Select", -// options: [ -// "option1", -// "option2", -// "option3"], -// selection: .constant(EventCategory.meeting.rawValue) -// ) -//} -// From fd0bfc5a7e5955dd6a15ec5b90a1d124b33ae3c2 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 16 Sep 2024 01:54:12 +0300 Subject: [PATCH 098/126] add color extension and clenar code --- .../MapView/Extensions/ColorExtension.swift | 35 +++++++++++++++++++ .../View/EventDetailsView.swift | 17 +-------- .../View/LocationSelectionView.swift | 13 +------ .../Scenes/MainMapView/View/MapView.swift | 15 ++++---- .../MainMapView/ViewModel/MapViewModel.swift | 2 +- .../NewEventView/View/NewEventView.swift | 2 +- .../LocationManager/CoordModel.swift | 14 -------- 7 files changed, 45 insertions(+), 53 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/ColorExtension.swift delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/CoordModel.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/ColorExtension.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/ColorExtension.swift new file mode 100644 index 0000000..2b8546f --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Extensions/ColorExtension.swift @@ -0,0 +1,35 @@ +// +// ColorExtension.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 14.09.2024. +// + +import SwiftUI + +extension Color { + init(hex: String) { + let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) + var int: UInt64 = 0 + Scanner(string: hex).scanHexInt64(&int) + let a, r, g, b: UInt64 + switch hex.count { + case 3: // RGB (12-bit) + (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) + case 6: // RGB (24-bit) + (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF) + case 8: // ARGB (32-bit) + (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) + default: + (a, r, g, b) = (1, 1, 1, 0) + } + + self.init( + .sRGB, + red: Double(r) / 255, + green: Double(g) / 255, + blue: Double(b) / 255, + opacity: Double(a) / 255 + ) + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift index fbc222c..051d834 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift @@ -44,7 +44,7 @@ struct EventDetailsView: View { EventDetailsView(event: EventModel(category: "test", name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)) } - +// MARK: COMPONENTS extension EventDetailsView { private var titleSection: some View { @@ -93,21 +93,6 @@ extension EventDetailsView { VStack { Map(coordinateRegion: .constant(MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude), span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))), annotationItems: [event]) { event in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude)) { -// if event.category == EventCategory.meeting.rawValue { -// AnnotationView() -// .shadow(radius: 10) -// } else if event.category == EventCategory.studyBody.rawValue { -// RedAnnotationView() -// .shadow(radius: 10) -// } else if event.category == EventCategory.placeToWork.rawValue { -// BlueAnnotationView() -// .shadow(radius: 10) -// -// } else if event.category == EventCategory.swiftBuddiesEvent.rawValue { -// GreenAnnotationView() -// .shadow(radius: 10) -// } - AnnotationView(color: .orange) .shadow(radius: 10) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index 535273a..48f99d7 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -15,15 +15,12 @@ struct LocationSelectionView: View { @Environment(\.presentationMode) var presentationMode @EnvironmentObject var coordinator: MapNavigationCoordinator - @EnvironmentObject var locationManager: LocationManager - @StateObject var vm = LocationSelectionViewViewModel() + @State var newEvent: NewEventModel @State var tappedLocation: CLLocationCoordinate2D? = nil @State private var showAlert: Bool = false - @State var newEvent: NewEventModel - init( newEvent: NewEventModel ) { @@ -34,8 +31,6 @@ struct LocationSelectionView: View { ZStack { mapLayer .edgesIgnoringSafeArea([.top, .leading, .trailing]) - - VStack { Spacer() createButton @@ -73,12 +68,6 @@ extension LocationSelectionView { MapUserLocationButton() MapPitchToggle() } - .onAppear{ - locationManager.startUpdatingLocation() - } - .onDisappear { - locationManager.stopUpdatingLocation() - } } .aspectRatio(1, contentMode: .fill) .cornerRadius(15) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index 174dfdc..c4853a0 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -7,13 +7,11 @@ public struct MapView: View { @StateObject var vm = MapViewModel() @StateObject var coordinator = MapNavigationCoordinator() - @StateObject var locationManager = LocationManager() @Query private var items: [EventModel] - public init() { - locationManager.checkLocationAuthorization() + vm.locationManager.checkLocationAuthorization() } @@ -78,7 +76,6 @@ public struct MapView: View { } } .environmentObject(vm) - .environmentObject(locationManager) .environmentObject(coordinator) } } @@ -91,7 +88,7 @@ public struct MapView: View { extension MapView { private var mapLayer: some View { - Map(coordinateRegion: $locationManager.region, annotationItems: vm.selectedItems) { item in + Map(coordinateRegion: $vm.locationManager.region, annotationItems: vm.selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { AnnotationView(color: .orange) .scaleEffect(vm.currentEvent == item ? 1 : 0.8) @@ -106,14 +103,14 @@ extension MapView { } } .onAppear{ - locationManager.startUpdatingLocation() - locationManager.checkLocationAuthorization() + vm.locationManager.startUpdatingLocation() + vm.locationManager.checkLocationAuthorization() vm.selectedItems = items vm.currentEvent = vm.selectedItems.first } .onDisappear { - locationManager.stopUpdatingLocation() - locationManager.checkLocationAuthorization() + vm.locationManager.stopUpdatingLocation() + vm.locationManager.checkLocationAuthorization() vm.showExplanationText = false vm.showExplanationText = false } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 21bd923..068e0f3 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -20,7 +20,7 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var showEventListView: Bool = false - private let locationManager = LocationManager() + var locationManager = LocationManager() @Published var showExplanationText: Bool = true diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift index 9bf659b..ef50a44 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift @@ -13,8 +13,8 @@ struct NewEventView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.modelContext) private var context - @EnvironmentObject var mapVM: MapViewModel @EnvironmentObject var coordinator: MapNavigationCoordinator + @EnvironmentObject var mapVM: MapViewModel @StateObject private var vm = NewEventViewViewModel() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/CoordModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/CoordModel.swift deleted file mode 100644 index 1fc5d0e..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/CoordModel.swift +++ /dev/null @@ -1,14 +0,0 @@ -// -// CordModel.swift -// SwiftBuddiesIOS -// -// Created by Oğuzhan Abuhanoğlu on 14.09.2024. -// - -import Foundation - -struct Coord: Codable, Equatable { - let lat, lon: Double - - static func == (lhs: Coord, rhs: Coord) -> Bool { lhs.lat == rhs.lat && lhs.lon == rhs.lon } -} From 7797cbede44380cf99fc370ea0fddfa36a027d7d Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 16 Sep 2024 18:23:37 +0300 Subject: [PATCH 099/126] add displayFormatter to show dates on view. --- .../View/EventDetailsView.swift | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift index 051d834..32c0f0e 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift @@ -66,27 +66,30 @@ extension EventDetailsView { } private var eventDates: some View { + // ISO 8601 formatını çözmek için doğru formatı kullanıyoruz let dateFormatter = DateFormatter() - dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" - dateFormatter.dateStyle = .medium - dateFormatter.timeStyle = .short + dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" + dateFormatter.timeZone = TimeZone(secondsFromGMT: 0) - - return VStack(alignment: .leading, spacing: 8) { - Text("Between:") - .font(.title2) - .fontWeight(.bold) - if let startDate = dateFormatter.date(from: event.startDate) { - let formattedStartDate = dateFormatter.string(from: startDate) - Text(formattedStartDate) - } - - if let dueDate = dateFormatter.date(from: event.dueDate) { - let formattedDueDate = dateFormatter.string(from: dueDate) - Text(formattedDueDate) - } - } + let displayFormatter = DateFormatter() + displayFormatter.dateStyle = .medium + displayFormatter.timeStyle = .short + return VStack(alignment: .leading, spacing: 8) { + Text("Between:") + .font(.title2) + .fontWeight(.bold) + + if let startDate = dateFormatter.date(from: event.startDate) { + let formattedStartDate = displayFormatter.string(from: startDate) + Text(formattedStartDate) + } + + if let dueDate = dateFormatter.date(from: event.dueDate) { + let formattedDueDate = displayFormatter.string(from: dueDate) + Text(formattedDueDate) + } + } } private var mapLocation: some View { From 71e1873d8cefd62ceaac83b0c132168b660cd372 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Tue, 17 Sep 2024 01:52:23 +0300 Subject: [PATCH 100/126] LocationManager last update. --- .../Sources/MapView/Models/Coord.swift | 14 +++++ .../Scenes/MainMapView/View/MapView.swift | 14 ++--- .../MainMapView/ViewModel/MapViewModel.swift | 60 +++++++++++++++---- .../LocationManager/LocationManager.swift | 39 +++++------- 4 files changed, 81 insertions(+), 46 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coord.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coord.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coord.swift new file mode 100644 index 0000000..410002e --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/Coord.swift @@ -0,0 +1,14 @@ +// +// Coord.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 16.09.2024. +// + +import Foundation + +struct Coord: Codable, Equatable { + let lat, lon: Double + + static func == (lhs: Coord, rhs: Coord) -> Bool { lhs.lat == rhs.lat && lhs.lon == rhs.lon } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index c4853a0..8de59fa 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -11,8 +11,7 @@ public struct MapView: View { @Query private var items: [EventModel] public init() { - vm.locationManager.checkLocationAuthorization() - + } public var body: some View { @@ -88,13 +87,13 @@ public struct MapView: View { extension MapView { private var mapLayer: some View { - Map(coordinateRegion: $vm.locationManager.region, annotationItems: vm.selectedItems) { item in + Map(coordinateRegion: $vm.region, showsUserLocation: true, annotationItems: vm.selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { AnnotationView(color: .orange) .scaleEffect(vm.currentEvent == item ? 1 : 0.8) .onTapGesture { withAnimation(.easeInOut) { - vm.setMapRegion(to: item) + vm.currentEvent = item vm.showEventListView = false } @@ -103,15 +102,12 @@ extension MapView { } } .onAppear{ - vm.locationManager.startUpdatingLocation() - vm.locationManager.checkLocationAuthorization() + vm.startUpdatingLocation() vm.selectedItems = items vm.currentEvent = vm.selectedItems.first } .onDisappear { - vm.locationManager.stopUpdatingLocation() - vm.locationManager.checkLocationAuthorization() - vm.showExplanationText = false + vm.stopUpdatingLocation() vm.showExplanationText = false } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 068e0f3..c02973a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -9,21 +9,31 @@ import Foundation import SwiftUI import MapKit import CoreLocation +import Combine -class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { +class MapViewModel: ObservableObject { @Published var selectedItems: [EventModel] = [] - @Published var currentEvent: EventModel? + @Published var currentEvent: EventModel? { + didSet { + setMapRegion(to: currentEvent) + } + } @Published var categoryModalShown: Bool = false @Published var selectedCategory: String = "" @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var showEventListView: Bool = false - - var locationManager = LocationManager() + + private var locationManager = LocationManager() + + @Published var region: MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 0, longitude: 0), span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)) + @Published private(set) var currentCoord: Coord = Coord(lat: 0, lon: 0) @Published var showExplanationText: Bool = true + private var cancellables = Set() + // bunu backednden alacağız. @Published var categories: [String] = [ "All", "Meeting", "Study Body", "Place to work", "Swift Buddies Event" @@ -33,22 +43,40 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { categories.filter { $0 != "All" } } - override init() { - super.init() - - + init() { + self.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: currentCoord.lat, longitude: currentCoord.lon ), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)) + addSubscribers() } - func setMapRegion(to item: EventModel) { + func addSubscribers() { + locationManager.$lastKnownLocation + .sink { [weak self] coord in + self?.setMapRegion(to: coord) + } + .store(in: &cancellables) + } + + private func setMapRegion(to item: EventModel?) { + guard let item else { + return + } let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - locationManager.region = MKCoordinateRegion(center: coordinate, span: span) - self.currentEvent = item + self.region = MKCoordinateRegion(center: coordinate, span: span) + } + + private func setMapRegion(to coord: Coord?) { + guard let coord, currentEvent == nil else { + return + } + let coordinate = CLLocationCoordinate2D(latitude: coord.lat, longitude: coord.lon) + let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.05) + self.region = MKCoordinateRegion(center: coordinate, span: span) } func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { selectedItems.removeAll() - if selectedCategory == "All" /*EventCategory.all.rawValue*/ { + if selectedCategory == "All" { selectedItems = items } @@ -70,5 +98,13 @@ class MapViewModel: NSObject, ObservableObject, CLLocationManagerDelegate { } } + func stopUpdatingLocation() { + locationManager.stopUpdatingLocation() + } + + func startUpdatingLocation() { + locationManager.startUpdatingLocation() + } + } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift index 61b961e..91a618b 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift @@ -12,21 +12,18 @@ import MapKit class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject { - private let manager = CLLocationManager() + @Published private(set) var lastKnownLocation: Coord? - @Published var region: MKCoordinateRegion = MKCoordinateRegion( - center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), - span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - ) + private let manager = CLLocationManager() override init() { super.init() manager.delegate = self - manager.desiredAccuracy = kCLLocationAccuracyBest - manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() + manager.desiredAccuracy = kCLLocationAccuracyBest } + func startUpdatingLocation() { manager.startUpdatingLocation() } @@ -51,33 +48,25 @@ class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject { case .authorizedWhenInUse: debugPrint("Location authorized when in use") + if let coordinate = manager.location?.coordinate { + lastKnownLocation = Coord(lat: coordinate.latitude.magnitude, lon: coordinate.longitude.magnitude) + } @unknown default: debugPrint("Location service disabled") + } - - manager.stopUpdatingLocation() } - func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { - if let location = locations.first { - withAnimation { - region = MKCoordinateRegion( - center: location.coordinate, - span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) - ) - } - manager.stopUpdatingLocation() - } + func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) { + checkLocationAuthorization() } - func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { - print("Failed to get user location: \(error)") + func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { + if let coordinate = locations.first?.coordinate { + lastKnownLocation = Coord(lat: coordinate.latitude.magnitude, lon: coordinate.longitude.magnitude) + } } - - func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) { - checkLocationAuthorization() - } } From e73ba9b257f17dbee7c03a1eefb94a08852e685e Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Tue, 17 Sep 2024 15:37:48 +0300 Subject: [PATCH 101/126] event category changed to Category model. --- .../Sources/MapView/Models/EventModel.swift | 42 +++++++++++++++++-- .../View/EventDetailsView.swift | 4 +- .../View/LocationSelectionView.swift | 2 +- .../LocationSelectionViewViewModel.swift | 4 +- .../Scenes/MainMapView/View/MapView.swift | 11 ++--- .../MainMapView/ViewModel/MapViewModel.swift | 17 ++++---- .../NewEventView/View/NewEventView.swift | 14 +++---- .../ViewModel/NewEventViewViewModel.swift | 4 +- .../ViewComponents/CategoryPickerSheet.swift | 10 ++--- .../ViewComponents/EventListView.swift | 28 ++++++------- 10 files changed, 85 insertions(+), 51 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index 0983ab9..d5e7463 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -10,7 +10,7 @@ import SwiftData @Model public class EventModel: Identifiable { public let id: String - let category: String + let category: Category let name: String let aboutEvent: String let startDate: String @@ -20,7 +20,7 @@ public class EventModel: Identifiable { init( - category: String, + category: Category, name: String, aboutEvent: String, startDate: String, @@ -36,6 +36,42 @@ public class EventModel: Identifiable { self.dueDate = dueDate self.latitude = latitude self.longitude = longitude - } } + +typealias Categories = [Category] + +public struct Category: Identifiable, Codable, Hashable { + public let id: String + let name: String + let color: String + + init(name: String, color: String) { + self.id = UUID().uuidString + self.name = name + self.color = color + } + + init(id: String, name: String, color: String) { + self.id = id + self.name = name + self.color = color + } +} + +extension Category { + static let mock: Category = .init( + name: "Meeting", + color: "#FF0000" + ) +} + +extension Categories { + static let mock: Categories = [ + Category(name: "All", color: "#FFFFFF"), + Category(name: "Meeting", color: "#FF0000"), + Category(name: "Study Boddy", color: "#FFFF00"), + Category(name: "Places to Work", color: "#00FF00"), + Category(name: "SwiftBuddies Event", color: "#0000FF") + ] +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift index 32c0f0e..a72dc7a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift @@ -41,7 +41,7 @@ struct EventDetailsView: View { #Preview { - EventDetailsView(event: EventModel(category: "test", name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)) + EventDetailsView(event: EventModel(category: .init(name: "", color: ""), name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)) } // MARK: COMPONENTS @@ -52,7 +52,7 @@ extension EventDetailsView { Text(event.name) .font(.largeTitle) .fontWeight(.semibold) - Text(event.category) + Text(event.category.name) .font(.title3) .foregroundColor(.secondary) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index 48f99d7..ab3349d 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -47,7 +47,7 @@ struct LocationSelectionView: View { #Preview { LocationSelectionView( newEvent: .init( - category: "cat", + category: .mock, name: "name", aboutEvent: "about", startDate: "start", diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift index ce5432f..cd331be 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift @@ -29,8 +29,8 @@ class LocationSelectionViewViewModel: ObservableObject { } } -struct NewEventModel: Hashable { - var category: String +struct NewEventModel: Hashable, Codable { + var category: Category var name: String var aboutEvent: String var startDate: String diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index 8de59fa..ec499b1 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -9,10 +9,8 @@ public struct MapView: View { @StateObject var coordinator = MapNavigationCoordinator() @Query private var items: [EventModel] - - public init() { - - } + + public init() {} public var body: some View { NavigationStack(path: $coordinator.mapNavigationStack) { @@ -56,7 +54,10 @@ public struct MapView: View { isPresented: $vm.categoryModalShown, sheetCornerRadius: 12, interactiveDismissDisabled: false) { - CategoryPicker(selectedCategory: $vm.selectedCategory) + CategoryPicker( + selectedCategory: $vm.selectedCategory, + categories: vm.categories + ) } onDismiss: { withAnimation(.easeInOut) { vm.filteredItems(items: items, selectedItems: &vm.selectedItems) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index c02973a..53f2c21 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -21,7 +21,7 @@ class MapViewModel: ObservableObject { } @Published var categoryModalShown: Bool = false - @Published var selectedCategory: String = "" + @Published var selectedCategory: Category? @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var showEventListView: Bool = false @@ -35,15 +35,14 @@ class MapViewModel: ObservableObject { private var cancellables = Set() // bunu backednden alacağız. - @Published var categories: [String] = [ - "All", "Meeting", "Study Body", "Place to work", "Swift Buddies Event" - ] + @Published var categories: Categories - var filteredCategories: [String] { - categories.filter { $0 != "All" } + var filteredCategories: Categories { + categories.filter { $0.name != "All" } } - init() { + init() { + self.categories = .mock self.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: currentCoord.lat, longitude: currentCoord.lon ), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)) addSubscribers() } @@ -76,12 +75,12 @@ class MapViewModel: ObservableObject { func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { selectedItems.removeAll() - if selectedCategory == "All" { + if selectedCategory?.name == "All" { selectedItems = items } for item in items { - if selectedCategory == item.category { + if selectedCategory?.name == item.category.name { selectedItems.append(item) } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift index ef50a44..6279c75 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift @@ -26,7 +26,7 @@ struct NewEventView: View { descriptionTextField Divider() datePickers - NextButton + nextButton } .alert(isPresented: $vm.showAlert) { @@ -51,18 +51,18 @@ extension NewEventView { private var categoryPickerMenu: some View { Menu { - ForEach(mapVM.filteredCategories, id: \.self) { category in + ForEach(mapVM.filteredCategories) { category in Button(action: { vm.selection = category }) { - Text(category.capitalized) + Text(category.name.capitalized) .foregroundStyle(.primary) .frame(maxWidth: .infinity) } } } label: { HStack { - Text(vm.selection) + Text(vm.selection?.name ?? "Select a Category") .font(.headline) .foregroundStyle(Color("AdaptiveColor")) .padding() @@ -145,11 +145,11 @@ extension NewEventView { } } - private var NextButton: some View { + private var nextButton: some View { Button(action: { - if vm.selection != "Select a category" { + if let selection = vm.selection { let newEventModel: NewEventModel = .init( - category: vm.selection, + category: selection, name: vm.nameText, aboutEvent: vm.descriptionText, startDate: vm.startDate.toISOString(), diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift index b7eaf8b..da25140 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift @@ -7,9 +7,9 @@ import Foundation -class NewEventViewViewModel: ObservableObject { +final class NewEventViewViewModel: ObservableObject { - @Published var selection: String = "Select a category" + @Published var selection: Category? @Published var nameText: String = "" @Published var descriptionText: String = "" @Published var adressText: String = "" diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift index 13f2244..5aec171 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CategoryPickerSheet.swift @@ -11,21 +11,19 @@ import SwiftData struct CategoryPicker: View { @Environment(\.presentationMode) var presentationMode - @EnvironmentObject var mapVM: MapViewModel - @Binding var selectedCategory: String - @StateObject var vm = MapViewModel() + @Binding var selectedCategory: Category? + let categories: Categories var body: some View { NavigationView { List { - ForEach(mapVM.categories, id: \.self) { category in + ForEach(categories, id: \.self) { category in Button(action: { selectedCategory = category presentationMode.wrappedValue.dismiss() - }) { - Text(category) + Text(category.name) .fontWeight(.semibold) .padding() .frame(maxWidth: .infinity) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift index 770a393..fd32394 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -29,7 +29,7 @@ struct EventListView: View { } #Preview { - EventListView(events: [EventModel(category: "test", name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)]) + EventListView(events: [EventModel(category: .mock, name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)]) } extension EventListView { @@ -42,7 +42,7 @@ extension EventListView { VStack(alignment: .leading){ Text(event.name) .font(.headline) - Text(event.category) + Text(event.category.name) .font(.subheadline) } .frame(maxWidth: .infinity, alignment: .leading) @@ -51,17 +51,17 @@ extension EventListView { } private func imageColor(event: EventModel) -> Color { - if event.category == "Meeting" /*EventCategory.meeting.rawValue*/ { - return .orange - } else if event.category == "Study Body" /*EventCategory.studyBody.rawValue*/ { - return .red - } else if event.category == "Place the work" /*EventCategory.placeToWork.rawValue*/ { - return .blue - } else if event.category == "Swift Buddies Event" /*EventCategory.swiftBuddiesEvent.rawValue*/ { - return .green - } - - return .orange - +// if event.category == "Meeting" /*EventCategory.meeting.rawValue*/ { +// return .orange +// } else if event.category == "Study Body" /*EventCategory.studyBody.rawValue*/ { +// return .red +// } else if event.category == "Place the work" /*EventCategory.placeToWork.rawValue*/ { +// return .blue +// } else if event.category == "Swift Buddies Event" /*EventCategory.swiftBuddiesEvent.rawValue*/ { +// return .green +// } +// +// return .orange + Color(hex: event.category.color) } } From 3d76686f506ce1c60cae23d1b1009606c06b05fd Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Tue, 17 Sep 2024 16:17:43 +0300 Subject: [PATCH 102/126] =?UTF-8?q?Change=20AnnotationView=20color=20and?= =?UTF-8?q?=20listRowView=20act=C3=B3n/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/MainMapView/View/MapView.swift | 2 +- .../MainMapView/ViewModel/MapViewModel.swift | 4 +++- .../MapView/ViewComponents/EventListView.swift | 16 ++++++++-------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index ec499b1..f76f6bd 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -90,7 +90,7 @@ extension MapView { private var mapLayer: some View { Map(coordinateRegion: $vm.region, showsUserLocation: true, annotationItems: vm.selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { - AnnotationView(color: .orange) + AnnotationView(color: Color(hex: item.category.color)) .scaleEffect(vm.currentEvent == item ? 1 : 0.8) .onTapGesture { withAnimation(.easeInOut) { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 53f2c21..386fd28 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -16,7 +16,9 @@ class MapViewModel: ObservableObject { @Published var selectedItems: [EventModel] = [] @Published var currentEvent: EventModel? { didSet { - setMapRegion(to: currentEvent) + withAnimation(.easeInOut) { + setMapRegion(to: currentEvent) + } } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift index fd32394..d7c9bea 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -9,19 +9,19 @@ import SwiftUI struct EventListView: View { - @StateObject var vm = MapViewModel() + @EnvironmentObject var vm: MapViewModel var events: [EventModel] var body: some View { List{ ForEach(events) { event in - NavigationLink { - EventDetailsView(event: event) - } label: { - listRowView(event: event) - } - .padding(.vertical , 4) - .listRowBackground(Color.clear) + listRowView(event: event) + .onTapGesture { + vm.currentEvent = event + vm.toggleEventList() + } + .padding(.vertical , 4) + .listRowBackground(Color.clear) } } .listStyle(PlainListStyle()) From 469143a1917e6a399da27d461d3fb9e857730331 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Sat, 5 Oct 2024 14:45:16 +0300 Subject: [PATCH 103/126] Color issues solved, Deprecated map could not change. --- .../Sources/MapView/Models/EventModel.swift | 22 +++++++--------- .../View/EventDetailsView.swift | 2 +- .../Scenes/MainMapView/View/MapView.swift | 26 ++++++++++++++++--- .../MainMapView/ViewModel/MapViewModel.swift | 19 +++++++------- .../ViewComponents/CustomAnnotationView.swift | 6 ++--- .../ViewComponents/EventListView.swift | 11 -------- 6 files changed, 46 insertions(+), 40 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index d5e7463..af72d61 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -9,14 +9,14 @@ import SwiftData @Model public class EventModel: Identifiable { - public let id: String - let category: Category - let name: String - let aboutEvent: String - let startDate: String - let dueDate: String - let latitude: Double - let longitude: Double + public var id: String + var category: Category + var name: String + var aboutEvent: String + var startDate: String + var dueDate: String + var latitude: Double + var longitude: Double init( @@ -59,11 +59,9 @@ public struct Category: Identifiable, Codable, Hashable { } } +// For previews extension Category { - static let mock: Category = .init( - name: "Meeting", - color: "#FF0000" - ) + static let mock: Category = Categories.mock[1] } extension Categories { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift index a72dc7a..3e88d43 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift @@ -96,7 +96,7 @@ extension EventDetailsView { VStack { Map(coordinateRegion: .constant(MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude), span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))), annotationItems: [event]) { event in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude)) { - AnnotationView(color: .orange) + AnnotationView(color: Color(hex: event.category.color)) .shadow(radius: 10) } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index f76f6bd..55cbf20 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -7,6 +7,7 @@ public struct MapView: View { @StateObject var vm = MapViewModel() @StateObject var coordinator = MapNavigationCoordinator() + @Query private var items: [EventModel] @@ -16,7 +17,7 @@ public struct MapView: View { NavigationStack(path: $coordinator.mapNavigationStack) { ZStack { mapLayer - .edgesIgnoringSafeArea([.top, .leading, .trailing]) + .ignoresSafeArea(edges: [.top, .leading, .trailing]) VStack(alignment: .leading) { listHeader @@ -61,7 +62,6 @@ public struct MapView: View { } onDismiss: { withAnimation(.easeInOut) { vm.filteredItems(items: items, selectedItems: &vm.selectedItems) - vm.currentEvent = vm.selectedItems.first } } .navigationDestination(for: MapNavigationCoordinator.NavigationDestination.self) { destination in @@ -88,6 +88,27 @@ public struct MapView: View { extension MapView { private var mapLayer: some View { + +// Map(position: $vm.region) { +// ForEach(vm.selectedItems) { item in +// // Using Annotation for full control over appearance +// Annotation("", coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { +// AnnotationView(color: Color(hex: item.category.color)) +// .scaleEffect(vm.currentEvent == item ? 1 : 0.8) +// .onTapGesture { +// withAnimation(.easeInOut) { +// vm.currentEvent = item +// vm.showEventListView = false +// } +// } +// .shadow(radius: 10) +// } +// } +// } +// .frame(maxWidth: .infinity, maxHeight: .infinity) +// .ignoresSafeArea(edges: [.top, .leading, .trailing]) + + Map(coordinateRegion: $vm.region, showsUserLocation: true, annotationItems: vm.selectedItems) { item in MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { AnnotationView(color: Color(hex: item.category.color)) @@ -97,7 +118,6 @@ extension MapView { vm.currentEvent = item vm.showEventListView = false } - } .shadow(radius: 10) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 386fd28..697efdf 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -26,14 +26,13 @@ class MapViewModel: ObservableObject { @Published var selectedCategory: Category? @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var showEventListView: Bool = false + @Published var showExplanationText: Bool = true private var locationManager = LocationManager() - @Published var region: MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 0, longitude: 0), span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)) + @Published var region : MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 40, longitude: 40), span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)) +// @Published var region: MapCameraPosition = MapCameraPosition.region(MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 40, longitude: 40), span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1))) @Published private(set) var currentCoord: Coord = Coord(lat: 0, lon: 0) - - @Published var showExplanationText: Bool = true - private var cancellables = Set() // bunu backednden alacağız. @@ -45,7 +44,7 @@ class MapViewModel: ObservableObject { init() { self.categories = .mock - self.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: currentCoord.lat, longitude: currentCoord.lon ), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)) +// self.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: currentCoord.lat, longitude: currentCoord.lon ), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)) addSubscribers() } @@ -64,6 +63,7 @@ class MapViewModel: ObservableObject { let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) self.region = MKCoordinateRegion(center: coordinate, span: span) +// self.region = MapCameraPosition.region(MKCoordinateRegion(center: coordinate, span: span)) } private func setMapRegion(to coord: Coord?) { @@ -73,6 +73,7 @@ class MapViewModel: ObservableObject { let coordinate = CLLocationCoordinate2D(latitude: coord.lat, longitude: coord.lon) let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.05) self.region = MKCoordinateRegion(center: coordinate, span: span) +// self.region = MapCameraPosition.region(MKCoordinateRegion(center: coordinate, span: span)) } func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { @@ -86,10 +87,10 @@ class MapViewModel: ObservableObject { selectedItems.append(item) } } - for item in selectedItems { - if let firstItem = selectedItems.first { - setMapRegion(to: firstItem) - } + + if let firstItem = selectedItems.first { + setMapRegion(to: firstItem) + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift index c43ff77..a7e0c00 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/CustomAnnotationView.swift @@ -9,7 +9,7 @@ import SwiftUI struct AnnotationView: View { - @State var color: Color = .black + let color: Color var body: some View { @@ -38,7 +38,5 @@ struct AnnotationView: View { } #Preview { - AnnotationView() + AnnotationView(color: .red) } - - diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift index d7c9bea..d6330fe 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -51,17 +51,6 @@ extension EventListView { } private func imageColor(event: EventModel) -> Color { -// if event.category == "Meeting" /*EventCategory.meeting.rawValue*/ { -// return .orange -// } else if event.category == "Study Body" /*EventCategory.studyBody.rawValue*/ { -// return .red -// } else if event.category == "Place the work" /*EventCategory.placeToWork.rawValue*/ { -// return .blue -// } else if event.category == "Swift Buddies Event" /*EventCategory.swiftBuddiesEvent.rawValue*/ { -// return .green -// } -// -// return .orange Color(hex: event.category.color) } } From b23c1a04e28ff51a681d8858fbe6746acad0d705 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 7 Oct 2024 11:51:47 +0300 Subject: [PATCH 104/126] SearchBar added on LocationSelectionView. --- .../View/LocationSelectionView.swift | 41 ++++---- .../View/MapViewRepresentable.swift | 94 +++++++++++++++++-- .../View/SearchBarRepresentable.swift | 50 ++++++++++ .../LocationSelectionViewViewModel.swift | 22 +++++ 4 files changed, 184 insertions(+), 23 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/SearchBarRepresentable.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index ab3349d..32ffe11 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -13,7 +13,6 @@ struct LocationSelectionView: View { //BUTON FOCUS PROBLEMİ VAR. @Environment(\.modelContext) private var context @Environment(\.presentationMode) var presentationMode - @EnvironmentObject var coordinator: MapNavigationCoordinator @StateObject var vm = LocationSelectionViewViewModel() @State var newEvent: NewEventModel @@ -41,6 +40,8 @@ struct LocationSelectionView: View { } } } + + } @@ -62,16 +63,30 @@ struct LocationSelectionView: View { extension LocationSelectionView { private var mapLayer: some View { - VStack { - MapViewRepresentable(tappedLocation: $tappedLocation) - .mapControls { - MapUserLocationButton() - MapPitchToggle() - } + + ZStack { + MapViewRepresentable(tappedLocation: $tappedLocation, searchResults: $vm.searchResults, selectedAnnotation: $vm.selectedAnnotation) + .edgesIgnoringSafeArea([.top, .leading, .trailing]) + + VStack { + SearchBar(text: $vm.searchText, onSearchButtonClicked: vm.search) + .padding() + + Spacer() + } + .padding(.top, 80) } - .aspectRatio(1, contentMode: .fill) - .cornerRadius(15) - .padding(.horizontal) + +// VStack { +// MapViewRepresentable(tappedLocation: $tappedLocation) +// .mapControls { +// MapUserLocationButton() +// MapPitchToggle() +// } +// } +// .aspectRatio(1, contentMode: .fill) +// .cornerRadius(15) +// .padding(.horizontal) } @@ -109,9 +124,3 @@ extension LocationSelectionView { } } - -extension CLLocationCoordinate2D: Equatable { - public static func == (lhs: CLLocationCoordinate2D, rhs: CLLocationCoordinate2D) -> Bool { - return lhs.latitude == rhs.latitude && lhs.longitude == rhs.longitude - } -} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/MapViewRepresentable.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/MapViewRepresentable.swift index d36524a..8a6fb1a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/MapViewRepresentable.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/MapViewRepresentable.swift @@ -4,6 +4,9 @@ // // Created by Oğuzhan Abuhanoğlu on 30.06.2024. // +// +// +// import Foundation import SwiftUI @@ -12,6 +15,8 @@ import MapKit struct MapViewRepresentable: UIViewRepresentable { @Binding var tappedLocation: CLLocationCoordinate2D? + @Binding var searchResults: [MKMapItem] + @Binding var selectedAnnotation: MKPointAnnotation? class Coordinator: NSObject, MKMapViewDelegate { var parent: MapViewRepresentable @@ -26,9 +31,30 @@ struct MapViewRepresentable: UIViewRepresentable { if let mapView = gestureRecognizer.view as? MKMapView { let coordinate = mapView.convert(location, toCoordinateFrom: mapView) parent.tappedLocation = coordinate + + // Long press yapıldığında diğer tüm anotasyonları kaldır + parent.selectedAnnotation = nil + parent.searchResults.removeAll() } } } + + // Anotasyona tıklama işlemini ele al + func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) { + guard let annotation = view.annotation as? MKPointAnnotation else { return } + + // Seçilen anotasyonu kaydet ve diğerlerini temizle + parent.selectedAnnotation = annotation + parent.searchResults.removeAll() + mapView.removeAnnotations(mapView.annotations) + mapView.addAnnotation(annotation) // <-- Sadece seçilen anotasyonu ekle + + // Seçilen anotasyonun konumunu tappedLocation'a aktar + parent.tappedLocation = annotation.coordinate + + print("Seçilen anotasyon: \(annotation.title ?? "Bilinmiyor")") + print("Konum: \(annotation.coordinate.latitude), \(annotation.coordinate.longitude)") + } } func makeCoordinator() -> Coordinator { @@ -50,14 +76,68 @@ struct MapViewRepresentable: UIViewRepresentable { return mapView } + func updateUIView(_ uiView: MKMapView, context: Context) { - // Anotasyonları kaldır ve yeni anotasyonu ekle - uiView.removeAnnotations(uiView.annotations) - if let location = tappedLocation { - let annotation = MKPointAnnotation() - annotation.coordinate = location - uiView.addAnnotation(annotation) + // Eğer yeni bir arama yapılırsa, seçilen anotasyonu temizle + if !searchResults.isEmpty { + selectedAnnotation = nil + // Arama sonuçları için haritayı odakla + zoomToSearchResults(mapView: uiView) + } + + // Eğer seçili bir anotasyon varsa sadece onu göster + if let selectedAnnotation = selectedAnnotation { + uiView.removeAnnotations(uiView.annotations) + uiView.addAnnotation(selectedAnnotation) // <-- Sadece seçili anotasyonu göster + } else { + // Eğer seçili anotasyon yoksa, arama sonuçlarını ekle + uiView.removeAnnotations(uiView.annotations) + if let location = tappedLocation { + let annotation = MKPointAnnotation() + annotation.coordinate = location + uiView.addAnnotation(annotation) + } + + // Arama sonuçlarını göster + for item in searchResults { + let annotation = MKPointAnnotation() + annotation.coordinate = item.placemark.coordinate + annotation.title = item.name + uiView.addAnnotation(annotation) + } } } -} + + // Haritanın arama sonuçlarına odaklanmasını sağlayan fonksiyon + private func zoomToSearchResults(mapView: MKMapView) { + guard !searchResults.isEmpty else { return } + + let coordinates = searchResults.map { $0.placemark.coordinate } + let region = calculateRegion(for: coordinates) + mapView.setRegion(region, animated: true) + + } + // Koordinatlara göre region ayarla (arama sonuclarının hepsi görünsün) + private func calculateRegion(for coordinates: [CLLocationCoordinate2D]) -> MKCoordinateRegion { + let latitudes = coordinates.map { $0.latitude } + let longitudes = coordinates.map { $0.longitude } + + let minLat = latitudes.min() ?? 0 + let maxLat = latitudes.max() ?? 0 + let minLon = longitudes.min() ?? 0 + let maxLon = longitudes.max() ?? 0 + + let center = CLLocationCoordinate2D( + latitude: (minLat + maxLat) / 2, + longitude: (minLon + maxLon) / 2 + ) + + let span = MKCoordinateSpan( + latitudeDelta: (maxLat - minLat) * 1.5, + longitudeDelta: (maxLon - minLon) * 1.5 + ) + + return MKCoordinateRegion(center: center, span: span) + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/SearchBarRepresentable.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/SearchBarRepresentable.swift new file mode 100644 index 0000000..ddde6dc --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/SearchBarRepresentable.swift @@ -0,0 +1,50 @@ +// +// SearchBar.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 6.10.2024. +// + +import SwiftUI +import UIKit + +struct SearchBar: UIViewRepresentable { + @Binding var text: String + var onSearchButtonClicked: () -> Void + + class Coordinator: NSObject, UISearchBarDelegate { + @Binding var text: String + var onSearchButtonClicked: () -> Void + + init(text: Binding, onSearchButtonClicked: @escaping () -> Void) { + _text = text + self.onSearchButtonClicked = onSearchButtonClicked + } + + func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { + text = searchText + } + + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { + onSearchButtonClicked() + searchBar.resignFirstResponder() + } + } + + func makeCoordinator() -> Coordinator { + return Coordinator(text: $text, onSearchButtonClicked: onSearchButtonClicked) + } + + func makeUIView(context: UIViewRepresentableContext) -> UISearchBar { + let searchBar = UISearchBar(frame: .zero) + searchBar.delegate = context.coordinator + searchBar.backgroundColor = UIColor.clear + searchBar.placeholder = "Find the best place for your event..." + searchBar.autocapitalizationType = .none + return searchBar + } + + func updateUIView(_ uiView: UISearchBar, context: UIViewRepresentableContext) { + uiView.text = text + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift index cd331be..e7ae713 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift @@ -7,9 +7,18 @@ import Foundation import SwiftData +import MapKit class LocationSelectionViewViewModel: ObservableObject { + @Published var selectedAnnotation: MKPointAnnotation? + @Published var searchText = "" + @Published var searchResults: [MKMapItem] = [] + @Published var mapRegion: MKCoordinateRegion = MKCoordinateRegion( + center: CLLocationCoordinate2D(latitude: 0, longitude: 0), + span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) + ) + func addItem( modelContext: ModelContext, newEventModel: NewEventModel @@ -27,6 +36,19 @@ class LocationSelectionViewViewModel: ObservableObject { ) modelContext.insert(event) } + + func search() { + let request = MKLocalSearch.Request() + request.naturalLanguageQuery = searchText + + let search = MKLocalSearch(request: request) + search.start { response, error in + if let response = response { + self.searchResults = response.mapItems + } + } + } + } struct NewEventModel: Hashable, Codable { From 83ddfc3f42f49db9628d07ce6d9afc467994d2d2 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Fri, 25 Oct 2024 15:30:20 +0300 Subject: [PATCH 105/126] create endpoinst to connect with backend --- .../Sources/SwiftBuddiesIOSApp.swift | 2 + .../Sources/MapView/Models/EventModel.swift | 4 +- .../View/EventDetailsView.swift | 2 +- .../View/LocationSelectionView.swift | 9 +-- .../LocationSelectionViewViewModel.swift | 61 ++++++++++++++++++ .../MainMapView/Model/MapEventModel.swift | 63 +++++++++++++++++++ .../Scenes/MainMapView/View/MapView.swift | 4 ++ .../MainMapView/ViewModel/MapViewModel.swift | 30 ++++++++- .../ViewComponents/EventListView.swift | 2 +- .../EndpointManager/EndpointManager.swift | 14 +++++ 10 files changed, 182 insertions(+), 9 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Model/MapEventModel.swift diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 6fa1f8a..0890834 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -1,6 +1,8 @@ import SwiftUI +import GoogleSignIn import Map import SwiftData +import Core @main struct SwiftBuddiesIOSApp: App { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index af72d61..c26a2ee 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -18,8 +18,8 @@ public class EventModel: Identifiable { var latitude: Double var longitude: Double - init( + uid: String, category: Category, name: String, aboutEvent: String, @@ -28,7 +28,7 @@ public class EventModel: Identifiable { latitude: Double, longitude: Double ) { - self.id = UUID().uuidString + self.id = uid self.category = category self.name = name self.aboutEvent = aboutEvent diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift index 3e88d43..8cc41ab 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/EventDetailsView/View/EventDetailsView.swift @@ -41,7 +41,7 @@ struct EventDetailsView: View { #Preview { - EventDetailsView(event: EventModel(category: .init(name: "", color: ""), name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)) + EventDetailsView(event: EventModel(uid: UUID().uuidString,category: .init(name: "", color: ""), name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)) } // MARK: COMPONENTS diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index 32ffe11..4cbb7d7 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -96,10 +96,11 @@ extension LocationSelectionView { if tappedLocation != nil { newEvent.latitude = tappedLocation?.latitude newEvent.longitude = tappedLocation?.longitude - vm.addItem( - modelContext: context, - newEventModel: newEvent - ) + Task { + await vm.createEvent(event: newEvent) { uid in + vm.addItem(uid: uid, modelContext: context, newEventModel: newEvent) + } + } coordinator.popToRoot() } else { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift index e7ae713..60602d0 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift @@ -8,6 +8,8 @@ import Foundation import SwiftData import MapKit +import BuddiesNetwork +import Network class LocationSelectionViewViewModel: ObservableObject { @@ -18,14 +20,21 @@ class LocationSelectionViewViewModel: ObservableObject { center: CLLocationCoordinate2D(latitude: 0, longitude: 0), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) ) + private let apiClient: BuddiesClient! + + init() { + self.apiClient = .shared + } func addItem( + uid: String?, modelContext: ModelContext, newEventModel: NewEventModel ) { guard let latitude = newEventModel.latitude, let longitude = newEventModel.longitude else { return } let event = EventModel( + uid: uid ?? "asdfasfafaf", category: newEventModel.category, name: newEventModel.name, aboutEvent: newEventModel.aboutEvent, @@ -49,6 +58,24 @@ class LocationSelectionViewViewModel: ObservableObject { } } + func createEvent(event: NewEventModel, completion: @escaping (String?) -> Void) async { + let request = MapCreateEventRequest( + category: event.category.name, + name: event.name, + description: event.aboutEvent, + startDate: event.startDate, + dueDate: event.dueDate, + latitude: event.latitude, + longitude: event.longitude + ) + + do { + let data = try await apiClient.perform(request) + completion(data.uid) + } catch { + debugPrint(error) + } + } } struct NewEventModel: Hashable, Codable { @@ -60,3 +87,37 @@ struct NewEventModel: Hashable, Codable { var latitude: Double? var longitude: Double? } + +struct MapCreateEventRequest: Requestable { + + let category: String? + let name: String? + let description: String? + let startDate: String? + let dueDate: String? + let latitude: Double? + let longitude: Double? + + enum CodingKeys: String, CodingKey { + case category = "category" + case name = "name" + case description = "description" + case startDate = "startDate" + case dueDate = "dueDate" + case latitude = "latitude" + case longitude = "longitude" + } + + struct Data: Decodable { + var uid: String? + } + + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .post, + url: APIs.Map.createEvent.url(), + data: self + ) + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Model/MapEventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Model/MapEventModel.swift new file mode 100644 index 0000000..6a4ee47 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Model/MapEventModel.swift @@ -0,0 +1,63 @@ +// +// MapEventModel.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 22.10.2024. +// + +import Foundation + +struct MapEventsResponseModel: Codable { + let count: Int? + let events: [MapEventModel]? +} + +// MARK: - Event +struct MapEventModel: Codable { + let id: String? + let uid: String? + let ownerUid: String? + let category: String? + let name: String? + let description: String? + let startDate: String? + let dueDate: String? + let latitude: Double? + let longitude: Double? + let v: Int? + + enum CodingKeys: String, CodingKey { + case id = "_id" + case uid = "uid" + case ownerUid = "owner_uid" + case category = "category" + case name = "name" + case description = "description" + case startDate = "startDate" + case dueDate = "dueDate" + case latitude = "latitude" + case longitude = "longitude" + case v = "__v" + } +} + +// MARK: - Welcome +struct MapCreateEventRequestModel: Codable { + let category: String? + let name: String? + let description: String? + let startDate: Date? + let dueDate: Date? + let latitude: Double? + let longitude: Double? + + enum CodingKeys: String, CodingKey { + case category = "category" + case name = "name" + case description = "description" + case startDate = "startDate" + case dueDate = "dueDate" + case latitude = "latitude" + case longitude = "longitude" + } +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index 55cbf20..2320157 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -122,10 +122,14 @@ extension MapView { .shadow(radius: 10) } } + .task { + await vm.getEvents() + } .onAppear{ vm.startUpdatingLocation() vm.selectedItems = items vm.currentEvent = vm.selectedItems.first + } .onDisappear { vm.stopUpdatingLocation() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 697efdf..7c78ba8 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -10,9 +10,12 @@ import SwiftUI import MapKit import CoreLocation import Combine +import BuddiesNetwork +import Network class MapViewModel: ObservableObject { - + private let apiClient: BuddiesClient + @Published var selectedItems: [EventModel] = [] @Published var currentEvent: EventModel? { didSet { @@ -45,6 +48,7 @@ class MapViewModel: ObservableObject { init() { self.categories = .mock // self.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: currentCoord.lat, longitude: currentCoord.lon ), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)) + self.apiClient = .shared addSubscribers() } @@ -108,5 +112,29 @@ class MapViewModel: ObservableObject { locationManager.startUpdatingLocation() } + public func getEvents() async { + let request = MapGetEventsRequest() + + do { + let data = try await apiClient.perform(request) + debugPrint("Events Success: \(data.events)") + } catch { + debugPrint(error) + } + } + +} + +// MARK: - RegisterRequest +struct MapGetEventsRequest: Requestable { + typealias Data = MapEventsResponseModel + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .get, + url: APIs.Map.getEvents.url(), + data: self + ) + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift index d6330fe..e4c10a6 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/ViewComponents/EventListView.swift @@ -29,7 +29,7 @@ struct EventListView: View { } #Preview { - EventListView(events: [EventModel(category: .mock, name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)]) + EventListView(events: [EventModel(uid: UUID().uuidString, category: .mock, name: "test", aboutEvent: "test", startDate: "", dueDate: "", latitude: 12, longitude: 12)]) } extension EventListView { diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift index 092c217..c9d3aa1 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift @@ -18,6 +18,20 @@ public enum APIs { } } } + + public enum Map: Endpoint { + case getEvents + case createEvent + + public var value: String { + switch self { + case .getEvents: + "getEvents" + case .createEvent: + "createEvent" + } + } + } } extension Endpoint { From 725d9d7b1d4adfa6fc21dc052d038d72033b6966 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 4 Nov 2024 21:45:55 +0300 Subject: [PATCH 106/126] add location permission into tuist. --- Project.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Project.swift b/Project.swift index 3e87537..f9b6ac1 100644 --- a/Project.swift +++ b/Project.swift @@ -42,6 +42,7 @@ let project = Project( "UILaunchStoryboardName": "LaunchScreen", "CLIENT_ID": "1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr.apps.googleusercontent.com", "REVERSED_CLIENT_ID": "com.googleusercontent.apps.1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr", + "NSLocationWhenInUseUsageDescription": "Your location is needed to provide location-based features.", "CFBundleURLTypes": [ ["CFBundleURLSchemes": ["com.googleusercontent.apps.1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr"]] ] From 96105c3c7b991dd017901d4b15ec85ab41fc3271 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Sun, 17 Nov 2024 16:52:37 +0300 Subject: [PATCH 107/126] WIP: fix --- .../View/LocationSelectionView.swift | 22 +--- .../LocationSelectionViewViewModel.swift | 25 +--- .../MainMapView/Manager/GetManager.swift | 12 ++ .../Scenes/MainMapView/View/MapView.swift | 52 ++++---- .../MainMapView/ViewModel/MapViewModel.swift | 123 +++++++++++++----- .../Utilities/MapManager/MapDataManager.swift | 72 ++++++++++ .../EndpointManager/EndpointManager.swift | 3 + 7 files changed, 206 insertions(+), 103 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Manager/GetManager.swift create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/MapManager/MapDataManager.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index 4cbb7d7..01f0a17 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -10,8 +10,7 @@ import MapKit import SwiftData struct LocationSelectionView: View { - //BUTON FOCUS PROBLEMİ VAR. - @Environment(\.modelContext) private var context + @Environment(\.presentationMode) var presentationMode @EnvironmentObject var coordinator: MapNavigationCoordinator @StateObject var vm = LocationSelectionViewViewModel() @@ -76,30 +75,17 @@ extension LocationSelectionView { } .padding(.top, 80) } - -// VStack { -// MapViewRepresentable(tappedLocation: $tappedLocation) -// .mapControls { -// MapUserLocationButton() -// MapPitchToggle() -// } -// } -// .aspectRatio(1, contentMode: .fill) -// .cornerRadius(15) -// .padding(.horizontal) - } private var createButton: some View { Button(action: { - // Save the event into core data if tappedLocation != nil { newEvent.latitude = tappedLocation?.latitude newEvent.longitude = tappedLocation?.longitude Task { - await vm.createEvent(event: newEvent) { uid in - vm.addItem(uid: uid, modelContext: context, newEventModel: newEvent) - } + await vm.createEvent(event: newEvent) + print("created") + } coordinator.popToRoot() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift index 60602d0..af0e506 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift @@ -26,26 +26,6 @@ class LocationSelectionViewViewModel: ObservableObject { self.apiClient = .shared } - func addItem( - uid: String?, - modelContext: ModelContext, - newEventModel: NewEventModel - ) { - guard let latitude = newEventModel.latitude, - let longitude = newEventModel.longitude else { return } - let event = EventModel( - uid: uid ?? "asdfasfafaf", - category: newEventModel.category, - name: newEventModel.name, - aboutEvent: newEventModel.aboutEvent, - startDate: newEventModel.startDate, - dueDate: newEventModel.dueDate, - latitude: latitude, - longitude: longitude - ) - modelContext.insert(event) - } - func search() { let request = MKLocalSearch.Request() request.naturalLanguageQuery = searchText @@ -58,7 +38,7 @@ class LocationSelectionViewViewModel: ObservableObject { } } - func createEvent(event: NewEventModel, completion: @escaping (String?) -> Void) async { + func createEvent(event: NewEventModel) async { let request = MapCreateEventRequest( category: event.category.name, name: event.name, @@ -71,7 +51,8 @@ class LocationSelectionViewViewModel: ObservableObject { do { let data = try await apiClient.perform(request) - completion(data.uid) + print("new event created \(data)") + } catch { debugPrint(error) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Manager/GetManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Manager/GetManager.swift new file mode 100644 index 0000000..8023b05 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Manager/GetManager.swift @@ -0,0 +1,12 @@ +// +// GetManager.swift +// SwiftBuddiesIOS +// +// Created by Oğuzhan Abuhanoğlu on 10.11.2024. +// + +import Foundation +import BuddiesNetwork +import Network + +class diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index 2320157..c741aff 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -7,9 +7,7 @@ public struct MapView: View { @StateObject var vm = MapViewModel() @StateObject var coordinator = MapNavigationCoordinator() - - - @Query private var items: [EventModel] + @Environment(\.modelContext) private var context public init() {} @@ -25,11 +23,12 @@ public struct MapView: View { categoryFilterButton .padding(.leading) Spacer() + if !vm.categoryModalShown { VStack { HStack { VStack { - // add explanation text here + if vm.showExplanationText == true , vm.currentEvent != nil { explanationText } @@ -37,6 +36,7 @@ public struct MapView: View { learnMoreButton .allowsHitTesting(vm.currentEvent != nil) } + } .frame(maxHeight: .infinity, alignment: .bottom) @@ -47,6 +47,7 @@ public struct MapView: View { .padding() } } + } } .bottomSheet( @@ -61,7 +62,7 @@ public struct MapView: View { ) } onDismiss: { withAnimation(.easeInOut) { - vm.filteredItems(items: items, selectedItems: &vm.selectedItems) + vm.filterItems() } } .navigationDestination(for: MapNavigationCoordinator.NavigationDestination.self) { destination in @@ -75,10 +76,15 @@ public struct MapView: View { } } } + .onAppear { + vm.dataManager.modelContext = context + } .environmentObject(vm) .environmentObject(coordinator) } } + + #Preview { MapView() } @@ -89,28 +95,14 @@ extension MapView { private var mapLayer: some View { -// Map(position: $vm.region) { -// ForEach(vm.selectedItems) { item in -// // Using Annotation for full control over appearance -// Annotation("", coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { -// AnnotationView(color: Color(hex: item.category.color)) -// .scaleEffect(vm.currentEvent == item ? 1 : 0.8) -// .onTapGesture { -// withAnimation(.easeInOut) { -// vm.currentEvent = item -// vm.showEventListView = false -// } -// } -// .shadow(radius: 10) -// } -// } -// } -// .frame(maxWidth: .infinity, maxHeight: .infinity) -// .ignoresSafeArea(edges: [.top, .leading, .trailing]) - - - Map(coordinateRegion: $vm.region, showsUserLocation: true, annotationItems: vm.selectedItems) { item in - MapAnnotation(coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude)) { + Map( + coordinateRegion: $vm.region, + showsUserLocation: true, + annotationItems: vm.selectedItems + ) { item in + MapAnnotation( + coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) + ) { AnnotationView(color: Color(hex: item.category.color)) .scaleEffect(vm.currentEvent == item ? 1 : 0.8) .onTapGesture { @@ -123,13 +115,15 @@ extension MapView { } } .task { - await vm.getEvents() + await vm.updateAllEvents() } .onAppear{ vm.startUpdatingLocation() - vm.selectedItems = items + vm.filterItems() vm.currentEvent = vm.selectedItems.first + print("all events count:\(vm.allEvents.count)") + } .onDisappear { vm.stopUpdatingLocation() diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 7c78ba8..594497a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -12,11 +12,19 @@ import CoreLocation import Combine import BuddiesNetwork import Network +import SwiftData +@MainActor class MapViewModel: ObservableObject { + private let apiClient: BuddiesClient - + private var locationManager = LocationManager() + var dataManager: MapDataManager = .init() + + + @Published var allEvents: [EventModel] = [] @Published var selectedItems: [EventModel] = [] + @Published var currentEvent: EventModel? { didSet { withAnimation(.easeInOut) { @@ -31,14 +39,11 @@ class MapViewModel: ObservableObject { @Published var showEventListView: Bool = false @Published var showExplanationText: Bool = true - private var locationManager = LocationManager() - @Published var region : MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 40, longitude: 40), span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)) -// @Published var region: MapCameraPosition = MapCameraPosition.region(MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 40, longitude: 40), span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1))) + @Published private(set) var currentCoord: Coord = Coord(lat: 0, lon: 0) private var cancellables = Set() - // bunu backednden alacağız. @Published var categories: Categories var filteredCategories: Categories { @@ -47,7 +52,6 @@ class MapViewModel: ObservableObject { init() { self.categories = .mock -// self.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: currentCoord.lat, longitude: currentCoord.lon ), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)) self.apiClient = .shared addSubscribers() } @@ -60,6 +64,65 @@ class MapViewModel: ObservableObject { .store(in: &cancellables) } + + func addItems(events: [EventModel]) { + dataManager.addUniqueItems(events: events) + } + + func updateAllEvents() async { + await fetchEvents() + allEvents = dataManager.getAllEvents() + } + + func deleteAllEvents() { + dataManager.deleteAllEvents() + } + + + private func fetchEvents() async { + let request = MapGetEventsRequest() + + do { + let data = try await apiClient.perform(request) + debugPrint("Events Success: \(data.events?.count)") + + guard let mapEvents = data.events else { + return + } + + let events: [EventModel] = mapEvents.compactMap { mapEvent in + guard + let uid = mapEvent.uid, + let categoryString = mapEvent.category, + let category = Categories.mock.first(where: { $0.name == categoryString }), + let name = mapEvent.name, + let description = mapEvent.description, + let startDate = mapEvent.startDate, + let dueDate = mapEvent.dueDate, + let latitude = mapEvent.latitude, + let longitude = mapEvent.longitude + else { + return nil + } + + return EventModel( + uid: uid, + category: category, + name: name, + aboutEvent: description, + startDate: startDate, + dueDate: dueDate, + latitude: latitude, + longitude: longitude + ) + } + dataManager.addUniqueItems(events: events) + } catch { + debugPrint(error) + } + } + + // MARK: DATA FILTERING AND MAP FUNCS private func setMapRegion(to item: EventModel?) { guard let item else { return @@ -67,9 +130,9 @@ class MapViewModel: ObservableObject { let coordinate = CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) self.region = MKCoordinateRegion(center: coordinate, span: span) -// self.region = MapCameraPosition.region(MKCoordinateRegion(center: coordinate, span: span)) } + private func setMapRegion(to coord: Coord?) { guard let coord, currentEvent == nil else { return @@ -77,21 +140,21 @@ class MapViewModel: ObservableObject { let coordinate = CLLocationCoordinate2D(latitude: coord.lat, longitude: coord.lon) let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.05) self.region = MKCoordinateRegion(center: coordinate, span: span) -// self.region = MapCameraPosition.region(MKCoordinateRegion(center: coordinate, span: span)) } - func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { + + func filterItems() { selectedItems.removeAll() if selectedCategory?.name == "All" { - selectedItems = items + selectedItems = allEvents } - for item in items { + for item in allEvents { if selectedCategory?.name == item.category.name { selectedItems.append(item) } } - + if let firstItem = selectedItems.first { setMapRegion(to: firstItem) @@ -104,6 +167,7 @@ class MapViewModel: ObservableObject { } } + // MARK: LOCATİON func stopUpdatingLocation() { locationManager.stopUpdatingLocation() } @@ -112,29 +176,20 @@ class MapViewModel: ObservableObject { locationManager.startUpdatingLocation() } - public func getEvents() async { - let request = MapGetEventsRequest() - - do { - let data = try await apiClient.perform(request) - debugPrint("Events Success: \(data.events)") - } catch { - debugPrint(error) - } - } } - -// MARK: - RegisterRequest -struct MapGetEventsRequest: Requestable { - - typealias Data = MapEventsResponseModel - - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .get, - url: APIs.Map.getEvents.url(), - data: self - ) +extension MapViewModel { + // MARK: - RegisterRequest + struct MapGetEventsRequest: Requestable { + + typealias Data = MapEventsResponseModel + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .get, + url: APIs.Map.getEvents.url(), + data: self + ) + } } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/MapManager/MapDataManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/MapManager/MapDataManager.swift new file mode 100644 index 0000000..3b5495e --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/MapManager/MapDataManager.swift @@ -0,0 +1,72 @@ +// +// MapDataManager.swift +// SwiftBuddiesIOS +// +// Created by Oğuzhan Abuhanoğlu on 17.11.2024. +// + +import Foundation +import SwiftUI +import SwiftData + +// LOCAL DATA MANAGER +@MainActor +class MapDataManager { + var modelContext: ModelContext? // The optional model context value + + init() { + + } + + + func getAllEvents() -> [EventModel] { + guard let modelContext else { return [] } + do { + print("Fetching all events from context...") + let fetchDescriptor = FetchDescriptor() + let events = try modelContext.fetch(fetchDescriptor) + print("Fetched events count: \(events.count)") + return events + } catch { + print("Error fethed data: \(error)") + return [] + } + + } + + func deleteAllEvents() { + guard let modelContext else { return } + + do { + print("Deleting all events from context...") + let fetchDescriptor = FetchDescriptor() + let events = try modelContext.fetch(fetchDescriptor) + for event in events { + modelContext.delete(event) + } + print("Deleted events count: \(events.count)") + } catch { + let errorMessage = "Error deletion data: \(error)" + print(errorMessage) + } + } + + func addUniqueItems( + events: [EventModel] + ) { + guard let modelContext else { return } + + let existingEvents = Set(getAllEvents().map { $0.id }) + + for event in events { + if !existingEvents.contains(event.id) { + modelContext.insert(event) + } + } + } + + + + + +} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift index c9d3aa1..043e47b 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift @@ -7,6 +7,8 @@ import Foundation +// APIs.Map.getEvents.url(), + public enum APIs { /// if you need to add a new endpoint see the example below public enum Login: Endpoint { @@ -47,6 +49,7 @@ extension Endpoint { public func url(_ host: Hosts = .qa) -> URL { host.env.url(path: self) } + } protocol Host { From c29ed5466367150c4d7dfcc5818ffa5ec1346a21 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Mon, 2 Dec 2024 14:45:22 +0300 Subject: [PATCH 108/126] Database Manager Created, backend integrated without swift data. --- .../MapView/Managers/DatabaseManager.swift | 139 ++++++++++++++++++ .../LocationManager.swift | 0 .../MapDataManager.swift | 43 +++--- .../Sources/MapView/Models/EventModel.swift | 10 ++ .../View/LocationSelectionView.swift | 11 +- .../LocationSelectionViewViewModel.swift | 71 +-------- .../MainMapView/Manager/GetManager.swift | 12 -- .../MainMapView/Model/MapEventModel.swift | 4 - .../Scenes/MainMapView/View/MapView.swift | 22 ++- .../MainMapView/ViewModel/MapViewModel.swift | 94 +++--------- .../NewEventView/View/NewEventView.swift | 2 +- 11 files changed, 212 insertions(+), 196 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/DatabaseManager.swift rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{Utilities/LocationManager => Managers}/LocationManager.swift (100%) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{Utilities/MapManager => Managers}/MapDataManager.swift (83%) delete mode 100644 SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Manager/GetManager.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/DatabaseManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/DatabaseManager.swift new file mode 100644 index 0000000..d4d2731 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/DatabaseManager.swift @@ -0,0 +1,139 @@ +// +// DatabaseManager.swift +// Map +// +// Created by Oğuzhan Abuhanoğlu on 2.12.2024. +// + +import Foundation +import BuddiesNetwork +import Network + +class DatabaseManager { + + private let apiClient: BuddiesClient! + + init() { + self.apiClient = .shared + } + + func createEvent(event: NewEventModel) async { + let request = MapCreateEventRequest( + category: event.category.name, + name: event.name, + description: event.aboutEvent, + startDate: event.startDate, + dueDate: event.dueDate, + latitude: event.latitude, + longitude: event.longitude + ) + + do { + let data = try await apiClient.perform(request) + print("new event created \(data)") + + } catch { + debugPrint(error) + } + } + + + func fetchEvents() async -> [EventModel]{ + let request = MapGetEventsRequest() + var fetchedEvents: [EventModel] = [] + + do { + let data = try await apiClient.perform(request) + + guard let mapEvents = data.events else { + return [] + } + + let events: [EventModel] = mapEvents.compactMap { mapEvent in + guard + let uid = mapEvent.uid, + let categoryString = mapEvent.category, + let category = Categories.mock.first(where: { $0.name == categoryString }), + let name = mapEvent.name, + let description = mapEvent.description, + let startDate = mapEvent.startDate, + let dueDate = mapEvent.dueDate, + let latitude = mapEvent.latitude, + let longitude = mapEvent.longitude + else { + return nil + } + + return EventModel( + uid: uid, + category: category, + name: name, + aboutEvent: description, + startDate: startDate, + dueDate: dueDate, + latitude: latitude, + longitude: longitude + ) + } + fetchedEvents = events + print("fetched events count: that is the counts of events in the database\(fetchedEvents.count)") + + + } catch { + debugPrint(error) + } + + return fetchedEvents + } +} + + +struct MapCreateEventRequest: Requestable { + + let category: String? + let name: String? + let description: String? + let startDate: String? + let dueDate: String? + let latitude: Double? + let longitude: Double? + + enum CodingKeys: String, CodingKey { + case category = "category" + case name = "name" + case description = "description" + case startDate = "startDate" + case dueDate = "dueDate" + case latitude = "latitude" + case longitude = "longitude" + } + + struct Data: Decodable { + var uid: String? + } + + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .post, + url: APIs.Map.createEvent.url(), + data: self + ) + } +} + + + +struct MapGetEventsRequest: Requestable { + + typealias Data = MapEventsResponseModel + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .get, + url: APIs.Map.getEvents.url(), + data: self + ) + } +} + diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/LocationManager.swift similarity index 100% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/LocationManager/LocationManager.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/LocationManager.swift diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/MapManager/MapDataManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/MapDataManager.swift similarity index 83% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/MapManager/MapDataManager.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/MapDataManager.swift index 3b5495e..3f45a60 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Utilities/MapManager/MapDataManager.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/MapDataManager.swift @@ -22,10 +22,10 @@ class MapDataManager { func getAllEvents() -> [EventModel] { guard let modelContext else { return [] } do { - print("Fetching all events from context...") + print("Loading all events from context...") let fetchDescriptor = FetchDescriptor() let events = try modelContext.fetch(fetchDescriptor) - print("Fetched events count: \(events.count)") + print("Loaded events count: \(events.count)") return events } catch { print("Error fethed data: \(error)") @@ -34,22 +34,7 @@ class MapDataManager { } - func deleteAllEvents() { - guard let modelContext else { return } - do { - print("Deleting all events from context...") - let fetchDescriptor = FetchDescriptor() - let events = try modelContext.fetch(fetchDescriptor) - for event in events { - modelContext.delete(event) - } - print("Deleted events count: \(events.count)") - } catch { - let errorMessage = "Error deletion data: \(error)" - print(errorMessage) - } - } func addUniqueItems( events: [EventModel] @@ -57,16 +42,32 @@ class MapDataManager { guard let modelContext else { return } let existingEvents = Set(getAllEvents().map { $0.id }) - + debugPrint(existingEvents) for event in events { if !existingEvents.contains(event.id) { modelContext.insert(event) + print("existing event name: \(event.name)") + debugPrint("Added event: \(event.id)") + print("local events count: \(events.count)") } } } - - - + func deleteAllEvents() { + guard let modelContext else { return } + + do { + print("Deleting all events from context...") + let fetchDescriptor = FetchDescriptor() + let events = try modelContext.fetch(fetchDescriptor) + for event in events { + modelContext.delete(event) + } + print("Deleted events count: \(events.count)") + } catch { + let errorMessage = "Error deletion data: \(error)" + print(errorMessage) + } + } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index c26a2ee..15f9dfc 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -39,6 +39,16 @@ public class EventModel: Identifiable { } } +struct NewEventModel: Hashable, Codable { + var category: Category + var name: String + var aboutEvent: String + var startDate: String + var dueDate: String + var latitude: Double? + var longitude: Double? +} + typealias Categories = [Category] public struct Category: Identifiable, Codable, Hashable { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index 01f0a17..b42bff5 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -19,10 +19,13 @@ struct LocationSelectionView: View { @State var tappedLocation: CLLocationCoordinate2D? = nil @State private var showAlert: Bool = false + var createdCompletion: (() -> Void)? + init( - newEvent: NewEventModel + newEvent: NewEventModel, completion: @escaping (()->Void) ) { self.newEvent = newEvent + self.createdCompletion = completion } var body: some View { @@ -55,7 +58,7 @@ struct LocationSelectionView: View { latitude: 0.00, longitude: 0.00 ) - ) + ) {} } // MARK: COMPONENTS @@ -85,10 +88,10 @@ extension LocationSelectionView { Task { await vm.createEvent(event: newEvent) print("created") - + print("new event name: \(newEvent.name)") + createdCompletion?() } coordinator.popToRoot() - } else { showAlert = true } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift index af0e506..5382671 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift @@ -8,11 +8,11 @@ import Foundation import SwiftData import MapKit -import BuddiesNetwork -import Network class LocationSelectionViewViewModel: ObservableObject { + private let databaseManager = DatabaseManager() + @Published var selectedAnnotation: MKPointAnnotation? @Published var searchText = "" @Published var searchResults: [MKMapItem] = [] @@ -20,12 +20,8 @@ class LocationSelectionViewViewModel: ObservableObject { center: CLLocationCoordinate2D(latitude: 0, longitude: 0), span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) ) - private let apiClient: BuddiesClient! - - init() { - self.apiClient = .shared - } + func search() { let request = MKLocalSearch.Request() request.naturalLanguageQuery = searchText @@ -38,67 +34,12 @@ class LocationSelectionViewViewModel: ObservableObject { } } + func createEvent(event: NewEventModel) async { - let request = MapCreateEventRequest( - category: event.category.name, - name: event.name, - description: event.aboutEvent, - startDate: event.startDate, - dueDate: event.dueDate, - latitude: event.latitude, - longitude: event.longitude - ) - - do { - let data = try await apiClient.perform(request) - print("new event created \(data)") - - } catch { - debugPrint(error) - } + await databaseManager.createEvent(event: event) } -} + -struct NewEventModel: Hashable, Codable { - var category: Category - var name: String - var aboutEvent: String - var startDate: String - var dueDate: String - var latitude: Double? - var longitude: Double? } -struct MapCreateEventRequest: Requestable { - - let category: String? - let name: String? - let description: String? - let startDate: String? - let dueDate: String? - let latitude: Double? - let longitude: Double? - enum CodingKeys: String, CodingKey { - case category = "category" - case name = "name" - case description = "description" - case startDate = "startDate" - case dueDate = "dueDate" - case latitude = "latitude" - case longitude = "longitude" - } - - struct Data: Decodable { - var uid: String? - } - - - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .post, - url: APIs.Map.createEvent.url(), - data: self - ) - } -} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Manager/GetManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Manager/GetManager.swift deleted file mode 100644 index 8023b05..0000000 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Manager/GetManager.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// GetManager.swift -// SwiftBuddiesIOS -// -// Created by Oğuzhan Abuhanoğlu on 10.11.2024. -// - -import Foundation -import BuddiesNetwork -import Network - -class diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Model/MapEventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Model/MapEventModel.swift index 6a4ee47..c2f3ce6 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Model/MapEventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Model/MapEventModel.swift @@ -14,7 +14,6 @@ struct MapEventsResponseModel: Codable { // MARK: - Event struct MapEventModel: Codable { - let id: String? let uid: String? let ownerUid: String? let category: String? @@ -24,10 +23,8 @@ struct MapEventModel: Codable { let dueDate: String? let latitude: Double? let longitude: Double? - let v: Int? enum CodingKeys: String, CodingKey { - case id = "_id" case uid = "uid" case ownerUid = "owner_uid" case category = "category" @@ -37,7 +34,6 @@ struct MapEventModel: Codable { case dueDate = "dueDate" case latitude = "latitude" case longitude = "longitude" - case v = "__v" } } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index c741aff..7cb5d69 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -62,7 +62,7 @@ public struct MapView: View { ) } onDismiss: { withAnimation(.easeInOut) { - vm.filterItems() + vm.filteredItems(items: vm.allEvents, selectedItems: &vm.selectedEvents) } } .navigationDestination(for: MapNavigationCoordinator.NavigationDestination.self) { destination in @@ -72,13 +72,14 @@ public struct MapView: View { case .newEventView: NewEventView() case .selectLocationMapView(let event): - LocationSelectionView(newEvent: event) + LocationSelectionView(newEvent: event) { +// Task { +// await vm.updateAllEvents() +// } + } } } } - .onAppear { - vm.dataManager.modelContext = context - } .environmentObject(vm) .environmentObject(coordinator) } @@ -98,7 +99,7 @@ extension MapView { Map( coordinateRegion: $vm.region, showsUserLocation: true, - annotationItems: vm.selectedItems + annotationItems: vm.selectedEvents ) { item in MapAnnotation( coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) @@ -115,14 +116,11 @@ extension MapView { } } .task { - await vm.updateAllEvents() + await vm.getAllEvents() } .onAppear{ vm.startUpdatingLocation() - vm.filterItems() - vm.currentEvent = vm.selectedItems.first - - print("all events count:\(vm.allEvents.count)") + vm.currentEvent = vm.selectedEvents.last } .onDisappear { @@ -152,7 +150,7 @@ extension MapView { } if vm.showEventListView { - EventListView(events: vm.selectedItems) + EventListView(events: vm.selectedEvents) } } .background(.thickMaterial) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 594497a..83e3050 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -19,11 +19,12 @@ class MapViewModel: ObservableObject { private let apiClient: BuddiesClient private var locationManager = LocationManager() - var dataManager: MapDataManager = .init() + private let databaseManager = DatabaseManager() +// var dataManager: MapDataManager = .init() @Published var allEvents: [EventModel] = [] - @Published var selectedItems: [EventModel] = [] + @Published var selectedEvents: [EventModel] = [] @Published var currentEvent: EventModel? { didSet { @@ -53,9 +54,12 @@ class MapViewModel: ObservableObject { init() { self.categories = .mock self.apiClient = .shared + self.selectedCategory = self.categories.first addSubscribers() } + + // MARK: Listen managers func addSubscribers() { locationManager.$lastKnownLocation .sink { [weak self] coord in @@ -63,66 +67,15 @@ class MapViewModel: ObservableObject { } .store(in: &cancellables) } + - - func addItems(events: [EventModel]) { - dataManager.addUniqueItems(events: events) - } - - func updateAllEvents() async { - await fetchEvents() - allEvents = dataManager.getAllEvents() - } - - func deleteAllEvents() { - dataManager.deleteAllEvents() + func getAllEvents() async { + allEvents = await databaseManager.fetchEvents() + selectedEvents = allEvents } - private func fetchEvents() async { - let request = MapGetEventsRequest() - - do { - let data = try await apiClient.perform(request) - debugPrint("Events Success: \(data.events?.count)") - - guard let mapEvents = data.events else { - return - } - - let events: [EventModel] = mapEvents.compactMap { mapEvent in - guard - let uid = mapEvent.uid, - let categoryString = mapEvent.category, - let category = Categories.mock.first(where: { $0.name == categoryString }), - let name = mapEvent.name, - let description = mapEvent.description, - let startDate = mapEvent.startDate, - let dueDate = mapEvent.dueDate, - let latitude = mapEvent.latitude, - let longitude = mapEvent.longitude - else { - return nil - } - - return EventModel( - uid: uid, - category: category, - name: name, - aboutEvent: description, - startDate: startDate, - dueDate: dueDate, - latitude: latitude, - longitude: longitude - ) - } - dataManager.addUniqueItems(events: events) - } catch { - debugPrint(error) - } - } - - // MARK: DATA FILTERING AND MAP FUNCS + // MARK: DATA FILTERING private func setMapRegion(to item: EventModel?) { guard let item else { return @@ -143,13 +96,13 @@ class MapViewModel: ObservableObject { } - func filterItems() { + func filteredItems(items: [EventModel], selectedItems: inout [EventModel]) { selectedItems.removeAll() if selectedCategory?.name == "All" { - selectedItems = allEvents + selectedItems = items } - for item in allEvents { + for item in items { if selectedCategory?.name == item.category.name { selectedItems.append(item) } @@ -157,7 +110,6 @@ class MapViewModel: ObservableObject { if let firstItem = selectedItems.first { setMapRegion(to: firstItem) - } } @@ -167,6 +119,7 @@ class MapViewModel: ObservableObject { } } + // MARK: LOCATİON func stopUpdatingLocation() { locationManager.stopUpdatingLocation() @@ -178,18 +131,5 @@ class MapViewModel: ObservableObject { } -extension MapViewModel { - // MARK: - RegisterRequest - struct MapGetEventsRequest: Requestable { - - typealias Data = MapEventsResponseModel - - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .get, - url: APIs.Map.getEvents.url(), - data: self - ) - } - } -} + + diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift index 6279c75..d8494d3 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift @@ -17,7 +17,6 @@ struct NewEventView: View { @EnvironmentObject var mapVM: MapViewModel @StateObject private var vm = NewEventViewViewModel() - var body: some View { ScrollView { VStack(spacing: 20) { @@ -46,6 +45,7 @@ struct NewEventView: View { NewEventView() } + // MARK: COMPONENTS extension NewEventView { From 1a9c3b80b2f42855bbff47ff8ac2f0016fc1c933 Mon Sep 17 00:00:00 2001 From: oguzhanabuhanoglu Date: Sun, 15 Dec 2024 22:47:53 +0300 Subject: [PATCH 109/126] update responnse model --- .../Targets/MapModule/Sources/MapView/Models/EventModel.swift | 3 ++- .../LocationSelectionView/View/LocationSelectionView.swift | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift index 15f9dfc..1bc6527 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Models/EventModel.swift @@ -17,6 +17,7 @@ public class EventModel: Identifiable { var dueDate: String var latitude: Double var longitude: Double + init( uid: String, @@ -42,7 +43,7 @@ public class EventModel: Identifiable { struct NewEventModel: Hashable, Codable { var category: Category var name: String - var aboutEvent: String + var description: String var startDate: String var dueDate: String var latitude: Double? diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index b42bff5..3976a18 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -52,7 +52,7 @@ struct LocationSelectionView: View { newEvent: .init( category: .mock, name: "name", - aboutEvent: "about", + description: "about", startDate: "start", dueDate: "due", latitude: 0.00, From 8591addf7e022bddc7c022d9cc8fd1bafef10bcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Sun, 15 Dec 2024 23:54:28 +0300 Subject: [PATCH 110/126] Update map region set Change model property --- .../MapView/Managers/LocationManager.swift | 2 -- .../View/LocationSelectionView.swift | 10 +++--- .../LocationSelectionViewViewModel.swift | 10 ++---- .../MainMapView/Service/MapService.swift} | 14 ++++---- .../Scenes/MainMapView/View/MapView.swift | 30 +++++++++++------ .../MainMapView/ViewModel/MapViewModel.swift | 32 ++++++------------- .../NewEventView/View/NewEventView.swift | 2 +- 7 files changed, 47 insertions(+), 53 deletions(-) rename SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/{Managers/DatabaseManager.swift => Scenes/MainMapView/Service/MapService.swift} (93%) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/LocationManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/LocationManager.swift index 91a618b..458405f 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/LocationManager.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/LocationManager.swift @@ -67,6 +67,4 @@ class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject { lastKnownLocation = Coord(lat: coordinate.latitude.magnitude, lon: coordinate.longitude.magnitude) } } - - } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift index 3976a18..e8d3ad5 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/View/LocationSelectionView.swift @@ -19,10 +19,10 @@ struct LocationSelectionView: View { @State var tappedLocation: CLLocationCoordinate2D? = nil @State private var showAlert: Bool = false - var createdCompletion: (() -> Void)? + var createdCompletion: ((String?) -> Void)? init( - newEvent: NewEventModel, completion: @escaping (()->Void) + newEvent: NewEventModel, completion: @escaping ((String?)->Void) ) { self.newEvent = newEvent self.createdCompletion = completion @@ -58,7 +58,7 @@ struct LocationSelectionView: View { latitude: 0.00, longitude: 0.00 ) - ) {} + ) {_ in} } // MARK: COMPONENTS @@ -86,10 +86,10 @@ extension LocationSelectionView { newEvent.latitude = tappedLocation?.latitude newEvent.longitude = tappedLocation?.longitude Task { - await vm.createEvent(event: newEvent) + let eventId = await vm.createEvent(event: newEvent) print("created") print("new event name: \(newEvent.name)") - createdCompletion?() + createdCompletion?(eventId) } coordinator.popToRoot() } else { diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift index 5382671..05242ea 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/LocationSelectionView/ViewModel/LocationSelectionViewViewModel.swift @@ -11,7 +11,7 @@ import MapKit class LocationSelectionViewViewModel: ObservableObject { - private let databaseManager = DatabaseManager() + private let mapService = MapService() @Published var selectedAnnotation: MKPointAnnotation? @Published var searchText = "" @@ -35,11 +35,7 @@ class LocationSelectionViewViewModel: ObservableObject { } - func createEvent(event: NewEventModel) async { - await databaseManager.createEvent(event: event) + func createEvent(event: NewEventModel) async -> String? { + await mapService.createEvent(event: event) } - - } - - diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/DatabaseManager.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift similarity index 93% rename from SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/DatabaseManager.swift rename to SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift index d4d2731..727de3a 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Managers/DatabaseManager.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift @@ -1,5 +1,5 @@ // -// DatabaseManager.swift +// MapService.swift // Map // // Created by Oğuzhan Abuhanoğlu on 2.12.2024. @@ -9,7 +9,7 @@ import Foundation import BuddiesNetwork import Network -class DatabaseManager { +class MapService { private let apiClient: BuddiesClient! @@ -17,11 +17,11 @@ class DatabaseManager { self.apiClient = .shared } - func createEvent(event: NewEventModel) async { + func createEvent(event: NewEventModel) async -> String? { let request = MapCreateEventRequest( category: event.category.name, name: event.name, - description: event.aboutEvent, + description: event.description, startDate: event.startDate, dueDate: event.dueDate, latitude: event.latitude, @@ -31,14 +31,15 @@ class DatabaseManager { do { let data = try await apiClient.perform(request) print("new event created \(data)") - + return data.uid } catch { debugPrint(error) + return nil } } - func fetchEvents() async -> [EventModel]{ + func fetchEvents() async -> [EventModel] { let request = MapGetEventsRequest() var fetchedEvents: [EventModel] = [] @@ -112,7 +113,6 @@ struct MapCreateEventRequest: Requestable { var uid: String? } - func toUrlRequest() throws -> URLRequest { try URLProvider.returnUrlRequest( method: .post, diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index 7cb5d69..a6fedd4 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -20,8 +20,17 @@ public struct MapView: View { VStack(alignment: .leading) { listHeader .padding(.horizontal) - categoryFilterButton - .padding(.leading) + HStack { + categoryFilterButton + Button { + vm.setUserLocation() + } label: { + Text("Find me") + .lineLimit(2) + .frame(width: 52) + } + } + .padding(.horizontal) Spacer() if !vm.categoryModalShown { @@ -72,10 +81,15 @@ public struct MapView: View { case .newEventView: NewEventView() case .selectLocationMapView(let event): - LocationSelectionView(newEvent: event) { -// Task { -// await vm.updateAllEvents() -// } + LocationSelectionView(newEvent: event) { eventId in + if let eventId { + debugPrint("Event Created with ID: \(eventId)") + Task { + await vm.getAllEvents() + } + } else { + debugPrint("EVENT CREATION FAILED") + } } } } @@ -121,7 +135,6 @@ extension MapView { .onAppear{ vm.startUpdatingLocation() vm.currentEvent = vm.selectedEvents.last - } .onDisappear { vm.stopUpdatingLocation() @@ -134,7 +147,7 @@ extension MapView { Button { vm.toggleEventList() } label: { - Text(vm.currentEvent?.name ?? "") + Text(vm.currentEvent?.name ?? "Select an event") .font(.title2) .fontWeight(.black) .foregroundColor(.primary) @@ -148,7 +161,6 @@ extension MapView { .rotationEffect(Angle(degrees: vm.showEventListView ? 180 : 0)) } } - if vm.showEventListView { EventListView(events: vm.selectedEvents) } diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 83e3050..677574e 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -19,9 +19,8 @@ class MapViewModel: ObservableObject { private let apiClient: BuddiesClient private var locationManager = LocationManager() - private let databaseManager = DatabaseManager() -// var dataManager: MapDataManager = .init() - + private let mapService = MapService() + var followUserLocation = true @Published var allEvents: [EventModel] = [] @Published var selectedEvents: [EventModel] = [] @@ -40,10 +39,10 @@ class MapViewModel: ObservableObject { @Published var showEventListView: Bool = false @Published var showExplanationText: Bool = true - @Published var region : MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 40, longitude: 40), span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)) - - @Published private(set) var currentCoord: Coord = Coord(lat: 0, lon: 0) - private var cancellables = Set() + @Published var region : MKCoordinateRegion = MKCoordinateRegion( + center: CLLocationCoordinate2D(latitude: 40, longitude: 40), + span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) + ) @Published var categories: Categories @@ -55,22 +54,15 @@ class MapViewModel: ObservableObject { self.categories = .mock self.apiClient = .shared self.selectedCategory = self.categories.first - addSubscribers() + setUserLocation() } - - // MARK: Listen managers - func addSubscribers() { - locationManager.$lastKnownLocation - .sink { [weak self] coord in - self?.setMapRegion(to: coord) - } - .store(in: &cancellables) + func setUserLocation() { + self.setMapRegion(to: locationManager.lastKnownLocation) } - func getAllEvents() async { - allEvents = await databaseManager.fetchEvents() + allEvents = await mapService.fetchEvents() selectedEvents = allEvents } @@ -128,8 +120,4 @@ class MapViewModel: ObservableObject { func startUpdatingLocation() { locationManager.startUpdatingLocation() } - - } - - diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift index d8494d3..a94fe62 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift @@ -151,7 +151,7 @@ extension NewEventView { let newEventModel: NewEventModel = .init( category: selection, name: vm.nameText, - aboutEvent: vm.descriptionText, + description: vm.descriptionText, startDate: vm.startDate.toISOString(), dueDate: vm.dueDate.toISOString(), latitude: nil, From d70f60a25a9571f3192adcb485c0353481fac95d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 00:15:13 +0300 Subject: [PATCH 111/126] update new event view ui --- .../NewEventView/View/NewEventView.swift | 45 ++++++++++--------- .../ViewModel/NewEventViewViewModel.swift | 2 +- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift index a94fe62..4e79941 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/View/NewEventView.swift @@ -53,7 +53,7 @@ extension NewEventView { Menu { ForEach(mapVM.filteredCategories) { category in Button(action: { - vm.selection = category + vm.categorySelection = category }) { Text(category.name.capitalized) .foregroundStyle(.primary) @@ -62,19 +62,20 @@ extension NewEventView { } } label: { HStack { - Text(vm.selection?.name ?? "Select a Category") + Text(vm.categorySelection?.name ?? "Select a Category") .font(.headline) .foregroundStyle(Color("AdaptiveColor")) .padding() .frame(maxWidth: .infinity) .frame(height: 55) + .background( + Color(.secondarySystemBackground) + ) .overlay( RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) - .background( - Color(.secondarySystemBackground) - ) + .clipShape(RoundedRectangle(cornerRadius: 10)) .padding(.horizontal) } } @@ -87,13 +88,14 @@ extension NewEventView { .padding() .frame(maxWidth: .infinity) .frame(height: 55) + .background( + Color(.secondarySystemBackground) + ) .overlay( RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) - .background( - Color(.secondarySystemBackground) - ) + .clipShape(RoundedRectangle(cornerRadius: 10)) .padding(.horizontal) } @@ -103,51 +105,54 @@ extension NewEventView { .padding() .frame(maxWidth: .infinity) .frame(height: 55) + .background( + Color(.secondarySystemBackground) + ) .overlay( RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) - .background( - Color(.secondarySystemBackground) - ) + .clipShape(RoundedRectangle(cornerRadius: 10)) .padding(.horizontal) } private var datePickers: some View { VStack(spacing: 20) { - DatePicker("Start Date", selection: $vm.startDate) + DatePicker("Start Date", selection: $vm.startDate, displayedComponents: [.date]) .font(.headline) .padding() .frame(maxWidth: .infinity) .frame(height: 55) + .background( + Color(.secondarySystemBackground) + ) .overlay( RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) - .background( - Color(.secondarySystemBackground) - ) + .clipShape(RoundedRectangle(cornerRadius: 10)) .padding(.horizontal) - DatePicker("Due Date", selection: $vm.dueDate) + DatePicker("Due Date", selection: $vm.dueDate, in: vm.startDate..., displayedComponents: [.date]) .font(.headline) .padding() .frame(maxWidth: .infinity) .frame(height: 55) + .background( + Color(.secondarySystemBackground) + ) .overlay( RoundedRectangle(cornerRadius: 10) .stroke(Color.primary, lineWidth: 1) ) - .background( - Color(.secondarySystemBackground) - ) + .clipShape(RoundedRectangle(cornerRadius: 10)) .padding(.horizontal) } } private var nextButton: some View { Button(action: { - if let selection = vm.selection { + if let selection = vm.categorySelection { let newEventModel: NewEventModel = .init( category: selection, name: vm.nameText, diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift index da25140..1bd33f9 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/NewEventView/ViewModel/NewEventViewViewModel.swift @@ -9,7 +9,7 @@ import Foundation final class NewEventViewViewModel: ObservableObject { - @Published var selection: Category? + @Published var categorySelection: Category? @Published var nameText: String = "" @Published var descriptionText: String = "" @Published var adressText: String = "" From 90e7c968ff647b5d8e035049221a01616e33bc06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 00:45:28 +0300 Subject: [PATCH 112/126] update map view components --- .../Scenes/MainMapView/View/MapView.swift | 71 ++++++++++--------- .../MainMapView/ViewModel/MapViewModel.swift | 11 ++- 2 files changed, 46 insertions(+), 36 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift index a6fedd4..666b6be 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/View/MapView.swift @@ -16,21 +16,14 @@ public struct MapView: View { ZStack { mapLayer .ignoresSafeArea(edges: [.top, .leading, .trailing]) - + VStack(alignment: .leading) { listHeader + .padding(.top, 5) + .padding(.leading) + .padding(.trailing, 56) + categoryFilterButton .padding(.horizontal) - HStack { - categoryFilterButton - Button { - vm.setUserLocation() - } label: { - Text("Find me") - .lineLimit(2) - .frame(width: 52) - } - } - .padding(.horizontal) Spacer() if !vm.categoryModalShown { @@ -97,6 +90,12 @@ public struct MapView: View { .environmentObject(vm) .environmentObject(coordinator) } + + private func createAlert(text: String? = nil) -> Alert { + return Alert(title: Text("Ups 🧐"), + message: Text(text ?? "Something went wrong, please try again"), + dismissButton: .default(Text("OK"))) + } } @@ -110,25 +109,32 @@ extension MapView { private var mapLayer: some View { - Map( - coordinateRegion: $vm.region, - showsUserLocation: true, - annotationItems: vm.selectedEvents - ) { item in - MapAnnotation( - coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) - ) { - AnnotationView(color: Color(hex: item.category.color)) - .scaleEffect(vm.currentEvent == item ? 1 : 0.8) - .onTapGesture { - withAnimation(.easeInOut) { - vm.currentEvent = item - vm.showEventListView = false + ZStack { + Map( + coordinateRegion: $vm.region, + showsUserLocation: true, + annotationItems: vm.selectedEvents + ) { item in + MapAnnotation( + coordinate: CLLocationCoordinate2D(latitude: item.latitude, longitude: item.longitude) + ) { + AnnotationView(color: Color(hex: item.category.color)) + .scaleEffect(vm.currentEvent == item ? 1 : 0.8) + .onTapGesture { + withAnimation(.easeInOut) { + vm.currentEvent = item + vm.showEventListView = false + } } - } - .shadow(radius: 10) + .shadow(radius: 10) + } } } + .mapControls { + MapUserLocationButton() + .mapControlVisibility(.visible) + .padding(.top, 100) + } .task { await vm.getAllEvents() } @@ -151,7 +157,7 @@ extension MapView { .font(.title2) .fontWeight(.black) .foregroundColor(.primary) - .frame(height: 55) + .frame(height: 44) .frame(maxWidth: .infinity) .overlay(alignment: .leading) { Image(systemName: "arrow.down") @@ -168,7 +174,6 @@ extension MapView { .background(.thickMaterial) .cornerRadius(10) .shadow(color: .black.opacity(0.3), radius: 20 ,x: 0 , y: 15) - } private var categoryFilterButton: some View { @@ -176,13 +181,13 @@ extension MapView { Button(action: { vm.categoryModalShown.toggle() }) { - Text("filter by category") + Text("Filter by Category") .foregroundColor(.secondary) - .font(.subheadline) + .font(.footnote) .padding() } } - .frame(height: 30) + .frame(height: 24) .background(.thickMaterial) .shadow(color: .black.opacity(0.3), radius: 20 ,x: 0 , y: 15) .cornerRadius(30) diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift index 677574e..696fa28 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/ViewModel/MapViewModel.swift @@ -20,7 +20,6 @@ class MapViewModel: ObservableObject { private let apiClient: BuddiesClient private var locationManager = LocationManager() private let mapService = MapService() - var followUserLocation = true @Published var allEvents: [EventModel] = [] @Published var selectedEvents: [EventModel] = [] @@ -38,6 +37,8 @@ class MapViewModel: ObservableObject { @Published var selectedDetent: PresentationDetent = .fraction(0.9) @Published var showEventListView: Bool = false @Published var showExplanationText: Bool = true + @Published var showAlert: Bool = false + @Published var region : MKCoordinateRegion = MKCoordinateRegion( center: CLLocationCoordinate2D(latitude: 40, longitude: 40), @@ -57,8 +58,12 @@ class MapViewModel: ObservableObject { setUserLocation() } - func setUserLocation() { - self.setMapRegion(to: locationManager.lastKnownLocation) + func setUserLocation(errorCompletion: (() -> Void)? = nil) { + if let location = locationManager.lastKnownLocation { + setMapRegion(to: location) + } else { + errorCompletion + } } func getAllEvents() async { From 6c100021478f258a797354a4428e1a204f018106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Thu, 26 Dec 2024 23:52:03 +0300 Subject: [PATCH 113/126] add cache --- Project.swift | 2 +- .../MainMapView/Service/MapService.swift | 8 +- .../BuddiesInterceptorProvider.swift | 10 +- .../CacheReadInterceptor.swift | 119 ++++++++++++++++++ .../CacheWriteInterceptor.swift | 111 ++++++++++++++++ 5 files changed, 244 insertions(+), 6 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheReadInterceptor.swift create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift diff --git a/Project.swift b/Project.swift index f9b6ac1..9cd5319 100644 --- a/Project.swift +++ b/Project.swift @@ -26,7 +26,7 @@ let project = Project( packages: [ .remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0")), .remote(url: "https://github.com/apple/swift-argument-parser.git", requirement: .exact("1.3.0")), - .remote(url: "https://github.com/darkbringer1/BuddiesNetwork.git", requirement: .branch("main")) + .remote(url: "https://github.com/darkbringer1/BuddiesNetwork.git", requirement: .upToNextMajor(from: .init(0, 0, 1))) ], targets: [ .target( diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift index 727de3a..e1ac0ce 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift @@ -123,11 +123,13 @@ struct MapCreateEventRequest: Requestable { } - struct MapGetEventsRequest: Requestable { - typealias Data = MapEventsResponseModel - + struct Data: Codable { + let count: Int? + let events: [MapEventModel]? + } + func toUrlRequest() throws -> URLRequest { try URLProvider.returnUrlRequest( method: .get, diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift index f064a4d..e70f7ad 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift @@ -10,9 +10,13 @@ import BuddiesNetwork public final class BuddiesInterceptorProvider: InterceptorProvider { let client: URLSessionClient + var cacheStore: any CacheStore - public init(client: URLSessionClient, currentToken: @escaping (() -> String?)) { + public init(client: URLSessionClient, + cacheStore: any CacheStore = URLCacheStore(), + currentToken: @escaping (() -> String?)) { self.client = client + self.cacheStore = cacheStore self.currentToken = currentToken } @@ -21,9 +25,11 @@ public final class BuddiesInterceptorProvider: InterceptorProvider { public func interceptors(for request: some Requestable) -> [Interceptor] { [ MaxRetryInterceptor(maxRetry: 3), + CacheReadInterceptor(store: cacheStore), BuddiesTokenProviderInterceptor(currentToken: currentToken), NetworkFetchInterceptor(client: client), - JSONDecodingInterceptor() + JSONDecodingInterceptor(), + CacheWriteInterceptor(store: cacheStore) ] } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheReadInterceptor.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheReadInterceptor.swift new file mode 100644 index 0000000..ab10afa --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheReadInterceptor.swift @@ -0,0 +1,119 @@ +// +// CacheReadInterceptor.swift +// Network +// +// Created by dogukaan on 26.12.2024. +// + +import Foundation +import BuddiesNetwork + + +final class CacheReadInterceptor: Interceptor { + + var id: String = "com.swiftbuddies.cache-read-interceptor" + + init(store: any CacheStore) { + self.store = store + } + + var store: any CacheStore + + func fetchFromCache( + for request: HTTPRequest, + chain: any RequestChain, + completion: @escaping ( + Result< + Request.Data, + any Error + > + ) -> Void + ) where Request: Requestable { + store.read(for: request, chain: chain, completion: completion) + } + + func intercept( + chain: any RequestChain, + request: HTTPRequest, + response: HTTPResponse?, + completion: @escaping (Result) -> Void + ) where Request : Requestable { + + // request == .get else continue with the chain + + switch request.cachePolicy { + case .fetchIgnoringCacheCompletely, + .fetchIgnoringCacheData: + chain.proceed( + request: request, + interceptor: self, + response: response, + completion: completion + ) + + case .returnCacheDataAndFetch: + self.fetchFromCache(for: request, chain: chain) { cacheFetchResult in + switch cacheFetchResult { + case .failure: + // Don't return a cache miss error, just keep going + break + case .success(let graphQLResult): + chain.returnValue( + for: request, + value: graphQLResult, + completion: completion + ) + } + + // In either case, keep going asynchronously + chain.proceed( + request: request, + interceptor: self, + response: response, + completion: completion + ) + } + case .returnCacheDataElseFetch: + self.fetchFromCache(for: request, chain: chain) { cacheFetchResult in + switch cacheFetchResult { + case .failure: + // Cache miss, proceed to network without returning error + chain.proceed( + request: request, + interceptor: self, + response: response, + completion: completion + ) + + case .success(let graphQLResult): + // Cache hit! We're done. + chain.returnValue( + for: request, + value: graphQLResult, + completion: completion + ) + } + } + case .returnCacheDataDontFetch: + self.fetchFromCache(for: request, chain: chain) { cacheFetchResult in + switch cacheFetchResult { + case .failure(let error): + // Cache miss - don't hit the network, just return the error. + chain.handleErrorAsync( + error, + request: request, + response: response, + completion: completion + ) + + case .success(let result): + chain.returnValue( + for: request, + value: result, + completion: completion + ) + } + } + } + } +} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift new file mode 100644 index 0000000..db6b717 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift @@ -0,0 +1,111 @@ +// +// CacheWriteInterceptor.swift +// Network +// +// Created by dogukaan on 26.12.2024. +// + +import Foundation +import BuddiesNetwork + +public protocol CacheStore { + func write(for request: HTTPRequest, response: HTTPResponse) + func read( + for request: HTTPRequest, + chain: any RequestChain, + completion: @escaping ( + Result< + Request.Data, + any Error + > + ) -> Void + ) +} + +public class URLCacheStore: CacheStore { + + private var cache: URLCache + + public init(cache: URLCache = .shared) { + self.cache = cache + } + + public func write(for request: HTTPRequest, response: HTTPResponse) where Request : Requestable { + let cachedURLResponse = CachedURLResponse(response: response.httpResponse, data: response.rawData) + + do { + let urlRequest = try request.rawRequest.toUrlRequest() + cache.storeCachedResponse(cachedURLResponse, for: urlRequest) + } catch { + print("Error while storing cache: \(error)") + } + } + + public func read(for request: HTTPRequest, chain: any RequestChain, completion: @escaping (Result) -> Void) where Request : Requestable { + + do { + let urlRequest = try request.rawRequest.toUrlRequest() + cache.cachedResponse(for: urlRequest) + } catch { + print("Error while storing cache: \(error)") + } + } +} + +final class CacheWriteInterceptor: Interceptor { + enum CacheWriteError: String, LocalizedError { + case noResponseToParse + + var errorDescription: String? { rawValue } + } + + init(store: any CacheStore) { + self.store = store + } + + var id: String = "com.swiftbuddies.network.cachewriteinterceptor" + var store: any CacheStore + + func intercept( + chain: any RequestChain, + request: HTTPRequest, + response: HTTPResponse?, + completion: @escaping (Result) -> Void + ) where Request : Requestable { + guard !chain.isCancelled else { + return + } + + guard request.cachePolicy != .fetchIgnoringCacheCompletely else { + // If we're ignoring the cache completely, we're not writing to it. + chain.proceed( + request: request, + interceptor: self, + response: response, + completion: completion + ) + return + } + + guard let createdResponse = response else { + chain.handleErrorAsync( + CacheWriteError.noResponseToParse, + request: request, + response: response, + completion: completion + ) + return + } + + self.store.write(for: request, response: createdResponse) + + chain.proceed( + request: request, + interceptor: self, + response: createdResponse, + completion: completion + ) + } + + +} From 04da3109fe5d62e90f2d655f4fb22bfaae017665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 16:14:50 +0300 Subject: [PATCH 114/126] add contributors flow --- .../Sources/ContributorsView.swift | 10 +- .../Models/ContributorContribution.swift | 15 +++ .../Models/ContributorStats.swift | 6 ++ .../View/ContributorDetailView.swift | 101 ++++++++++++++++++ .../ViewComponents/ContributionRow.swift | 24 +++++ .../ViewComponents/StatView.swift | 17 +++ .../ContributorDetailViewModel.swift | 50 +++++++++ .../View/GitHubContributorsView.swift | 40 +++++++ .../ViewComponents/ContributorRow.swift | 42 ++++++++ .../GitHubContributorsViewModel.swift | 68 ++++++++++++ .../GitHub/GitHubContributorsModule.swift | 35 ++++++ .../GitHubContributorsCoordinator.swift | 32 ++++++ .../Navigation/GitHubContributorsFlow.swift | 25 +++++ .../ContributorActivitiesRequest.swift | 16 +++ .../Requests/ContributorStatsRequest.swift | 16 +++ .../Sources/Models/Contributor.swift | 23 ++++ .../ContributorsModuleProtocol.swift | 7 ++ .../EndpointManager/EndpointManager.swift | 27 +++++ .../GitHubInterceptorProvider.swift | 63 +++++++++++ 19 files changed, 612 insertions(+), 5 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/View/GitHubContributorsView.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewComponents/ContributorRow.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/GitHubContributorsModule.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsFlow.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Protocols/ContributorsModuleProtocol.swift create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/ContributorsView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/ContributorsView.swift index 54824ba..49fff4a 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/ContributorsView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/ContributorsView.swift @@ -2,14 +2,14 @@ import SwiftUI import Design public struct ContributorsView: View { + private let module: GitHubContributorsModule - public init() { } + public init() { + self.module = GitHubContributorsModule() + } public var body: some View { - VStack { - Text("Contributors Module") - Text(ViewEnum.hello.rawValue) - } + GitHubContributorsFlow(module: module) } } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift new file mode 100644 index 0000000..72b6a31 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift @@ -0,0 +1,15 @@ +import Foundation + +struct ContributorContribution: Identifiable, Codable { + let id: String + let title: String + let description: String + let date: Date + + enum CodingKeys: String, CodingKey { + case id + case title + case description = "desc" + case date = "created_at" + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift new file mode 100644 index 0000000..c1950ed --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift @@ -0,0 +1,6 @@ +import Foundation + +struct ContributorStats: Codable { + let repositories: Int + let followers: Int +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift new file mode 100644 index 0000000..78287fc --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -0,0 +1,101 @@ +import SwiftUI +import Design + +struct ContributorDetailView: View { + let contributor: Contributor + @StateObject private var viewModel: ContributorDetailViewModel + + init(contributor: Contributor) { + self.contributor = contributor + _viewModel = StateObject(wrappedValue: ContributorDetailViewModel(contributor: contributor)) + } + + var body: some View { + ScrollView { + VStack(spacing: 20) { + // Profile Header + profileHeader + + // Stats Section + statsSection + + // Contributions Section + if viewModel.isLoading { + ProgressView() + } else { + contributionsSection + } + + // GitHub Link Button + githubLinkButton + } + .padding() + } + .navigationTitle(contributor.name) + .task { + await viewModel.fetchContributorDetails() + } + } + + private var profileHeader: some View { + VStack { + if let avatarURL = contributor.avatarURL { + AsyncImage(url: avatarURL) { image in + image + .resizable() + .aspectRatio(contentMode: .fill) + } placeholder: { + Circle() + .foregroundColor(.gray.opacity(0.3)) + } + .frame(width: 120, height: 120) + .clipShape(Circle()) + .shadow(radius: 5) + } + + Text(contributor.name) + .font(.title2) + .bold() + } + } + + private var statsSection: some View { + HStack(spacing: 40) { + StatView(title: "Contributions", value: "\(contributor.contributions)") + if let stats = $viewModel.contributorStats { + StatView(title: "Repositories", value: "\(stats.repositories)") + StatView(title: "Followers", value: "\(stats.followers)") + } + } + .padding(.vertical) + } + + private var contributionsSection: some View { + VStack(alignment: .leading, spacing: 12) { + Text("Recent Contributions") + .font(.headline) + + if let contributions = $viewModel.recentContributions { + ForEach(contributions) { contribution in + ContributionRow(contribution: contribution) + } + } else { + Text("No recent contributions found") + .foregroundColor(.secondary) + } + } + } + + private var githubLinkButton: some View { + Button { + if let url = contributor.githubURL { + UIApplication.shared.open(url) + } + } label: { + Label("Open in GitHub", systemImage: "link") + .frame(maxWidth: .infinity) + } + .buttonStyle(.bordered) + .tint(.primary) + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift new file mode 100644 index 0000000..5a58d5d --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift @@ -0,0 +1,24 @@ +import SwiftUI + +struct ContributionRow: View { + let contribution: ContributorContribution + + var body: some View { + VStack(alignment: .leading, spacing: 4) { + Text(contribution.title) + .font(.subheadline) + .bold() + + Text(contribution.description) + .font(.caption) + .foregroundColor(.secondary) + + Text(contribution.date.formatted(date: .abbreviated, time: .omitted)) + .font(.caption2) + .foregroundColor(.secondary) + } + .padding() + .background(Color.gray.opacity(0.1)) + .cornerRadius(8) + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift new file mode 100644 index 0000000..afccc81 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift @@ -0,0 +1,17 @@ +import SwiftUI + +struct StatView: View { + let title: String + let value: String + + var body: some View { + VStack { + Text(value) + .font(.title3) + .bold() + Text(title) + .font(.caption) + .foregroundColor(.secondary) + } + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift new file mode 100644 index 0000000..19c99ba --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift @@ -0,0 +1,50 @@ +import Foundation +import Network +import BuddiesNetwork + +@MainActor +class ContributorDetailViewModel: ObservableObject { + @Published private(set) var contributorStats: ContributorStats? + @Published private(set) var recentContributions: [ContributorContribution]? + @Published private(set) var isLoading = false + @Published private(set) var error: Error? + + private let contributor: Contributor + private let client: BuddiesClient + + init(contributor: Contributor) { + self.contributor = contributor + let interceptorProvider = GitHubInterceptorProvider(client: URLSessionClient(sessionConfiguration: .default)) + self.client = BuddiesClient( + networkTransporter: BuddiesRequestChainNetworkTransport.getChainNetworkTransport( + interceptorProvider: interceptorProvider + ) + ) + } + + func fetchContributorDetails() async { + isLoading = true + defer { isLoading = false } + + async let statsTask = fetchStats() + async let contributionsTask = fetchRecentContributions() + + do { + let (stats, contributions) = try await (statsTask, contributionsTask) + self.contributorStats = stats + self.recentContributions = contributions + } catch { + self.error = error + } + } + + private func fetchStats() async throws -> ContributorStats { + let request = ContributorStatsRequest(username: contributor.name) + return try await client.perform(request) + } + + private func fetchRecentContributions() async throws -> [ContributorContribution] { + let request = ContributorActivitiesRequest(username: contributor.name) + return try await client.perform(request) + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/View/GitHubContributorsView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/View/GitHubContributorsView.swift new file mode 100644 index 0000000..83bb996 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/View/GitHubContributorsView.swift @@ -0,0 +1,40 @@ +import SwiftUI +import Design + +public struct GitHubContributorsView: View { + @StateObject private var viewModel: GitHubContributorsViewModel + + public init(viewModel: GitHubContributorsViewModel) { + _viewModel = StateObject(wrappedValue: viewModel) + } + + public var body: some View { + Group { + if viewModel.isLoading { + ProgressView() + } else if let error = viewModel.error { + VStack { + Text("Error loading contributors") + .foregroundColor(.red) + Text(error.localizedDescription) + .font(.caption) + .foregroundColor(.secondary) + Button("Retry") { + Task { + await viewModel.fetchContributors() + } + } + .buttonStyle(.bordered) + } + } else { + List(viewModel.contributors) { contributor in + ContributorRow(contributor: contributor) + } + } + } + .navigationTitle("GitHub Contributors") + .task(id: "fetchContributors") { + await viewModel.fetchContributors() + } + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewComponents/ContributorRow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewComponents/ContributorRow.swift new file mode 100644 index 0000000..4089501 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewComponents/ContributorRow.swift @@ -0,0 +1,42 @@ +import SwiftUI + +struct ContributorRow: View { + @EnvironmentObject private var coordinator: GitHubContributorsCoordinator + let contributor: Contributor + + var body: some View { + Button { + coordinator.push(.detail(contributor)) + } label: { + HStack { + if let avatarURL = contributor.avatarURL { + AsyncImage(url: avatarURL) { image in + image + .resizable() + .aspectRatio(contentMode: .fit) + } placeholder: { + Circle() + .foregroundColor(.gray.opacity(0.3)) + } + .frame(width: 50, height: 50) + .clipShape(Circle()) + } + + VStack(alignment: .leading) { + Text(contributor.name) + .font(.headline) + Text("\(contributor.contributions) contributions") + .font(.subheadline) + .foregroundColor(.secondary) + } + + Spacer() + + Image(systemName: "chevron.right") + .foregroundColor(.secondary) + } + } + .buttonStyle(.plain) + .padding(.vertical, 4) + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift new file mode 100644 index 0000000..15684a1 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift @@ -0,0 +1,68 @@ +import Foundation +import Network +import BuddiesNetwork + +@MainActor +public class GitHubContributorsViewModel: ObservableObject { + @Published private(set) var contributors: [Contributor] = [] + @Published private(set) var isLoading = false + @Published private(set) var error: Error? + + private let client: BuddiesClient + + init(client: BuddiesClient) { + self.client = client + } + + func fetchContributors() async { + defer { + isLoading = false + } + isLoading = true + error = nil + let request = ContributorsRequest() + do { + let response = try await client.perform(request) + contributors = response.map { contributor in + Contributor( + id: String(contributor.id), + name: contributor.login, + avatarURL: URL(string: contributor.avatarURL), + githubURL: URL(string: contributor.htmlURL), + contributions: contributor.contributions + ) + } + } catch { + self.error = error + } + } +} + +// MARK: - ContributorsRequest +struct ContributorsRequest: Requestable { + typealias Data = [GitHubContributorResponse] + + struct GitHubContributorResponse: Codable { + let login: String + let id: Int + let avatarURL: String + let htmlURL: String + let contributions: Int + + enum CodingKeys: String, CodingKey { + case login + case id + case avatarURL = "avatar_url" + case htmlURL = "html_url" + case contributions + } + } + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .get, + url: APIs.GitHub.contributors.url(.github), + data: self + ) + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/GitHubContributorsModule.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/GitHubContributorsModule.swift new file mode 100644 index 0000000..ce7c383 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/GitHubContributorsModule.swift @@ -0,0 +1,35 @@ +import SwiftUI +import BuddiesNetwork +import Network + +public struct GitHubContributorsModule: ContributorsModuleProtocol { + private let sessionConfiguration: URLSessionConfiguration + + public init(sessionConfiguration: URLSessionConfiguration = .default) { + self.sessionConfiguration = sessionConfiguration + } + + @MainActor + public func makeContributorsView() -> GitHubContributorsView { + let viewModel = makeViewModel() + return GitHubContributorsView(viewModel: viewModel) + } + + @MainActor + private func makeViewModel() -> GitHubContributorsViewModel { + let client = makeNetworkClient() + return GitHubContributorsViewModel(client: client) + } + + private func makeNetworkClient() -> BuddiesClient { + let interceptorProvider = GitHubInterceptorProvider( + client: URLSessionClient(sessionConfiguration: sessionConfiguration) + ) + + return BuddiesClient( + networkTransporter: BuddiesRequestChainNetworkTransport.getChainNetworkTransport( + interceptorProvider: interceptorProvider + ) + ) + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift new file mode 100644 index 0000000..df40bf1 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift @@ -0,0 +1,32 @@ +import SwiftUI + +@MainActor +final class GitHubContributorsCoordinator: ObservableObject { + enum ContributorRoute: Hashable { + case detail(Contributor) + + func hash(into hasher: inout Hasher) { + switch self { + case .detail(let contributor): + hasher.combine(contributor.id) + } + } + + static func == (lhs: ContributorRoute, rhs: ContributorRoute) -> Bool { + switch (lhs, rhs) { + case (.detail(let lhsContributor), .detail(let rhsContributor)): + return lhsContributor.id == rhsContributor.id + } + } + } + + @Published var navigationStack: [ContributorRoute] = [] + + func push(_ route: ContributorRoute) { + navigationStack.append(route) + } + + func popToRoot() { + navigationStack.removeAll() + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsFlow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsFlow.swift new file mode 100644 index 0000000..564597c --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsFlow.swift @@ -0,0 +1,25 @@ +import SwiftUI + +struct GitHubContributorsFlow: View { + @StateObject private var coordinator: GitHubContributorsCoordinator + private let module: GitHubContributorsModule + + init(module: GitHubContributorsModule = GitHubContributorsModule()) { + self._coordinator = StateObject(wrappedValue: GitHubContributorsCoordinator()) + self.module = module + } + + var body: some View { + NavigationStack(path: $coordinator.navigationStack) { + module.makeContributorsView() + .environmentObject(coordinator) + .navigationDestination(for: GitHubContributorsCoordinator.ContributorRoute.self) { route in + switch route { + case .detail(let contributor): + ContributorDetailView(contributor: contributor) + .environmentObject(coordinator) + } + } + } + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift new file mode 100644 index 0000000..fa2a5f9 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift @@ -0,0 +1,16 @@ +import Foundation +import Network +import BuddiesNetwork + +struct ContributorActivitiesRequest: Requestable { + typealias Data = [ContributorContribution] + let username: String + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .get, + url: APIs.GitHub.userActivities(username: username).url(.github), + data: self + ) + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift new file mode 100644 index 0000000..787e23d --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift @@ -0,0 +1,16 @@ +import Foundation +import Network +import BuddiesNetwork + +struct ContributorStatsRequest: Requestable { + typealias Data = ContributorStats + let username: String + + func toUrlRequest() throws -> URLRequest { + try URLProvider.returnUrlRequest( + method: .get, + url: APIs.GitHub.userStats(username: username).url(.github), + data: self + ) + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift new file mode 100644 index 0000000..328350f --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift @@ -0,0 +1,23 @@ +import Foundation + +public struct Contributor: Identifiable, Equatable { + public let id: String + public let name: String + public let avatarURL: URL? + public let githubURL: URL? + public let contributions: Int + + public init( + id: String, + name: String, + avatarURL: URL? = nil, + githubURL: URL? = nil, + contributions: Int = 0 + ) { + self.id = id + self.name = name + self.avatarURL = avatarURL + self.githubURL = githubURL + self.contributions = contributions + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Protocols/ContributorsModuleProtocol.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Protocols/ContributorsModuleProtocol.swift new file mode 100644 index 0000000..e130f3d --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Protocols/ContributorsModuleProtocol.swift @@ -0,0 +1,7 @@ +import SwiftUI + +public protocol ContributorsModuleProtocol { + associatedtype ContributorsViewType: View + + func makeContributorsView() -> ContributorsViewType +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift index 043e47b..e33ff26 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift @@ -21,6 +21,27 @@ public enum APIs { } } + public enum GitHub: Endpoint { + case contributors + case userStats(username: String) + case userActivities(username: String) + case userEvents(username: String) + case userRepos(username: String) + + public var value: String { + switch self { + case .contributors: + "repos/SwiftBuddiesTR/BuddiesIOS/contributors" + case .userStats(let username): + "users/\(username)" + case .userActivities(let username): + "users/\(username)/events/public" + case .userEvents(let username): + "users/\(username)/received_events" + case .userRepos(let username): + "users/\(username)/repos" + } + } public enum Map: Endpoint { case getEvents case createEvent @@ -66,13 +87,19 @@ public enum Hosts { static let baseUrl: URL = URL(string: "https://swiftbuddies.vercel.app/api/")! } + struct GitHub: Host { + static let baseUrl: URL = URL(string: "https://api.github.com/")! + } + case prod case qa + case github var env: Host { switch self { case .prod: Prod() case .qa: Qa() + case .github: GitHub() } } } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift new file mode 100644 index 0000000..0ed3caf --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift @@ -0,0 +1,63 @@ +import Foundation +import BuddiesNetwork + +public final class GitHubInterceptorProvider: InterceptorProvider { + let client: URLSessionClient + + public init(client: URLSessionClient) { + self.client = client + } + + public func interceptors(for request: some Requestable) -> [Interceptor] { + [ + MaxRetryInterceptor(maxRetry: 3), + GitHubHeadersInterceptor(), + NetworkFetchInterceptor(client: client), + JSONDecodingInterceptor() + ] + } + + public func additionalErrorHandler(for request: some Requestable) -> (any ChainErrorHandler)? { + GitHubErrorHandler() + } +} + +final class GitHubHeadersInterceptor: Interceptor { + public var id: String = UUID().uuidString + + public func intercept( + chain: RequestChain, + request: HTTPRequest, + response: HTTPResponse?, + completion: @escaping (Result) -> Void + ) where Request: Requestable { + // Add GitHub API specific headers + request.addHeader(key: "Accept", val: "application/vnd.github.v3+json") + + chain.proceed( + request: request, + interceptor: self, + response: response, + completion: completion + ) + } +} + +final class GitHubErrorHandler: ChainErrorHandler { + func handleError( + error: any Error, + chain: any RequestChain, + request: HTTPRequest, + response: HTTPResponse?, + completion: @escaping (Result) -> Void + ) where Request: Requestable { + if response?.httpResponse.statusCode == 403 { + // Handle rate limiting + completion(.failure(GitHubAPIError.rateLimitExceeded)) + } else if response?.httpResponse.statusCode == 404 { + completion(.failure(GitHubAPIError.repositoryNotFound)) + } else { + completion(.failure(error)) + } + } +} \ No newline at end of file From ee686d6696a0b83bd6f20f3051dca74791ccba78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 16:37:29 +0300 Subject: [PATCH 115/126] Fix endpoint issues and errors --- .../View/ContributorDetailView.swift | 4 +-- .../ContributorActivitiesRequest.swift | 3 +- .../Requests/ContributorStatsRequest.swift | 2 +- .../EndpointManager/EndpointManager.swift | 28 +++++------------- .../GitHubInterceptorProvider.swift | 29 ++++++++++++++++++- 5 files changed, 41 insertions(+), 25 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift index 78287fc..8a66b67 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -62,7 +62,7 @@ struct ContributorDetailView: View { private var statsSection: some View { HStack(spacing: 40) { StatView(title: "Contributions", value: "\(contributor.contributions)") - if let stats = $viewModel.contributorStats { + if let stats = viewModel.contributorStats { StatView(title: "Repositories", value: "\(stats.repositories)") StatView(title: "Followers", value: "\(stats.followers)") } @@ -75,7 +75,7 @@ struct ContributorDetailView: View { Text("Recent Contributions") .font(.headline) - if let contributions = $viewModel.recentContributions { + if let contributions = viewModel.recentContributions { ForEach(contributions) { contribution in ContributionRow(contribution: contribution) } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift index fa2a5f9..6c02359 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift @@ -3,8 +3,9 @@ import Network import BuddiesNetwork struct ContributorActivitiesRequest: Requestable { + @EncoderIgnorable var username: String? + typealias Data = [ContributorContribution] - let username: String func toUrlRequest() throws -> URLRequest { try URLProvider.returnUrlRequest( diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift index 787e23d..1982e9a 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift @@ -3,8 +3,8 @@ import Network import BuddiesNetwork struct ContributorStatsRequest: Requestable { + @EncoderIgnorable var username: String? typealias Data = ContributorStats - let username: String func toUrlRequest() throws -> URLRequest { try URLProvider.returnUrlRequest( diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift index e33ff26..40d6b0b 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift @@ -23,35 +23,23 @@ public enum APIs { public enum GitHub: Endpoint { case contributors - case userStats(username: String) - case userActivities(username: String) - case userEvents(username: String) - case userRepos(username: String) + case userStats(username: String?) + case userActivities(username: String?) + case userEvents(username: String?) + case userRepos(username: String?) public var value: String { switch self { case .contributors: "repos/SwiftBuddiesTR/BuddiesIOS/contributors" case .userStats(let username): - "users/\(username)" + "users/\(username ?? "")" case .userActivities(let username): - "users/\(username)/events/public" + "users/\(username ?? "")/events/public" case .userEvents(let username): - "users/\(username)/received_events" + "users/\(username ?? "")/received_events" case .userRepos(let username): - "users/\(username)/repos" - } - } - public enum Map: Endpoint { - case getEvents - case createEvent - - public var value: String { - switch self { - case .getEvents: - "getEvents" - case .createEvent: - "createEvent" + "users/\(username ?? "")/repos" } } } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift index 0ed3caf..717e9d3 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift @@ -60,4 +60,31 @@ final class GitHubErrorHandler: ChainErrorHandler { completion(.failure(error)) } } -} \ No newline at end of file +} + +// GitHubAPIError +public enum GitHubAPIError: Error, LocalizedError { + case invalidURL + case networkError(Error) + case decodingError(Error) + case invalidResponse + case rateLimitExceeded + case repositoryNotFound + + public var errorDescription: String? { + switch self { + case .invalidURL: + return "Invalid URL" + case .networkError(let error): + return "Network error: \(error.localizedDescription)" + case .decodingError(let error): + return "Failed to decode response: \(error.localizedDescription)" + case .invalidResponse: + return "Invalid response from server" + case .rateLimitExceeded: + return "GitHub API rate limit exceeded. Please try again later." + case .repositoryNotFound: + return "Repository not found" + } + } +} From 07d66e2f776dabcddd790d4fa5ea3b9cbd424db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 17:09:54 +0300 Subject: [PATCH 116/126] WIP update models and add filter view --- .../Models/ContributorContribution.swift | 58 ++++++++++++++-- .../Models/ContributorStats.swift | 19 +++++- .../Models/RepoFilter.swift | 13 ++++ .../View/ContributorDetailView.swift | 67 ++++++++++++++----- .../ViewComponents/ContributionRow.swift | 52 +++++++++++--- .../ViewComponents/RepoFilterView.swift | 59 ++++++++++++++++ .../ContributorDetailViewModel.swift | 58 ++++++++++++++-- .../GitHubContributorsCoordinator.swift | 16 +---- .../Sources/Models/Contributor.swift | 4 +- 9 files changed, 291 insertions(+), 55 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/RepoFilter.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift index 72b6a31..74fa6ed 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift @@ -2,14 +2,58 @@ import Foundation struct ContributorContribution: Identifiable, Codable { let id: String - let title: String - let description: String - let date: Date + let type: EventType + let repo: Repository + let createdAt: Date + let payload: Payload + + struct Repository: Codable { + let name: String + let url: String + } + + struct Payload: Codable { + let action: String? + let ref: String? + let description: String? + } + + enum EventType: String, Codable { + case push = "PushEvent" + case pullRequest = "PullRequestEvent" + case pullRequestReview = "PullRequestReviewEvent" + case issue = "IssueEvent" + case create = "CreateEvent" + case fork = "ForkEvent" + case watch = "WatchEvent" + case other + + init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(String.self) + self = EventType(rawValue: rawValue) ?? .other + } + } + + var title: String { + switch type { + case .push: return "Pushed to \(repo.name)" + case .pullRequest: return "Pull Request in \(repo.name)" + case .pullRequestReview: return "Reviewed PR in \(repo.name)" + case .issue: return "Issue in \(repo.name)" + case .create: return "Created \(payload.ref ?? "") in \(repo.name)" + case .fork: return "Forked \(repo.name)" + case .watch: return "Starred \(repo.name)" + case .other: return "Activity in \(repo.name)" + } + } + + var description: String { + payload.description ?? "Contributed to \(repo.name)" + } enum CodingKeys: String, CodingKey { - case id - case title - case description = "desc" - case date = "created_at" + case id, type, repo, payload + case createdAt = "created_at" } } \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift index c1950ed..56e85c4 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift @@ -1,6 +1,23 @@ import Foundation struct ContributorStats: Codable { - let repositories: Int + let login: String + let id: Int + let publicRepos: Int let followers: Int + let following: Int + let bio: String? + let company: String? + let location: String? + let name: String? + let blog: String? + let avatarURL: String + let htmlURL: String + + enum CodingKeys: String, CodingKey { + case login, id, followers, following, bio, company, location, name, blog + case publicRepos = "public_repos" + case avatarURL = "avatar_url" + case htmlURL = "html_url" + } } \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/RepoFilter.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/RepoFilter.swift new file mode 100644 index 0000000..16bfefb --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/RepoFilter.swift @@ -0,0 +1,13 @@ +import Foundation + +struct RepoFilter: Identifiable, Hashable { + let id: String + let name: String + var isSelected: Bool + + init(name: String, isSelected: Bool = false) { + self.id = name // Using repo name as id since it's unique in the context + self.name = name + self.isSelected = isSelected + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift index 8a66b67..90c297b 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -13,26 +13,34 @@ struct ContributorDetailView: View { var body: some View { ScrollView { VStack(spacing: 20) { - // Profile Header profileHeader - // Stats Section + if let stats = viewModel.contributorStats { + userInfoSection(stats) + } + statsSection - // Contributions Section if viewModel.isLoading { ProgressView() } else { - contributionsSection + if !viewModel.availableRepoFilters.isEmpty { + RepoFilterView( + filters: viewModel.availableRepoFilters, + onFilterToggle: viewModel.toggleRepoFilter, + onClearFilters: viewModel.clearFilters + ) + } + + recentActivitiesSection } - // GitHub Link Button githubLinkButton } .padding() } - .navigationTitle(contributor.name) - .task { + .navigationTitle(viewModel.contributorStats?.name ?? contributor.name) + .task(id: "fetchContributorDetails") { await viewModel.fetchContributorDetails() } } @@ -59,29 +67,58 @@ struct ContributorDetailView: View { } } + private func userInfoSection(_ stats: ContributorStats) -> some View { + VStack(alignment: .leading, spacing: 8) { + if let bio = stats.bio { + Text(bio) + .font(.subheadline) + .foregroundColor(.secondary) + } + + VStack(alignment: .leading, spacing: 4) { + if let company = stats.company { + Label(company, systemImage: "building.2") + } + if let location = stats.location { + Label(location, systemImage: "location") + } + if let blog = stats.blog { + Link(destination: URL(string: blog) ?? URL(string: "https://github.com")!) { + Label(blog, systemImage: "link") + } + } + } + .font(.caption) + .foregroundColor(.secondary) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + private var statsSection: some View { HStack(spacing: 40) { StatView(title: "Contributions", value: "\(contributor.contributions)") if let stats = viewModel.contributorStats { - StatView(title: "Repositories", value: "\(stats.repositories)") + StatView(title: "Repositories", value: "\(stats.publicRepos)") StatView(title: "Followers", value: "\(stats.followers)") } } .padding(.vertical) } - private var contributionsSection: some View { + private var recentActivitiesSection: some View { VStack(alignment: .leading, spacing: 12) { - Text("Recent Contributions") + Text("Recent Activities") .font(.headline) if let contributions = viewModel.recentContributions { - ForEach(contributions) { contribution in - ContributionRow(contribution: contribution) + if contributions.isEmpty { + Text("No recent activities") + .foregroundColor(.secondary) + } else { + ForEach(contributions) { contribution in + ContributionRow(contribution: contribution) + } } - } else { - Text("No recent contributions found") - .foregroundColor(.secondary) } } } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift index 5a58d5d..31966f4 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift @@ -5,15 +5,20 @@ struct ContributionRow: View { var body: some View { VStack(alignment: .leading, spacing: 4) { - Text(contribution.title) - .font(.subheadline) - .bold() + HStack { + eventIcon + Text(contribution.title) + .font(.subheadline) + .bold() + } - Text(contribution.description) - .font(.caption) - .foregroundColor(.secondary) + if !contribution.description.isEmpty { + Text(contribution.description) + .font(.caption) + .foregroundColor(.secondary) + } - Text(contribution.date.formatted(date: .abbreviated, time: .omitted)) + Text(contribution.createdAt.formatted(date: .abbreviated, time: .shortened)) .font(.caption2) .foregroundColor(.secondary) } @@ -21,4 +26,35 @@ struct ContributionRow: View { .background(Color.gray.opacity(0.1)) .cornerRadius(8) } -} \ No newline at end of file + + private var eventIcon: some View { + Image(systemName: iconName) + .foregroundColor(iconColor) + } + + private var iconName: String { + switch contribution.type { + case .push: "arrow.up.circle" + case .pullRequest: "arrow.triangle.branch" + case .pullRequestReview: "checkmark.circle" + case .issue: "exclamationmark.circle" + case .create: "plus.circle" + case .fork: "tuningfork" + case .watch: "star" + case .other: "circle" + } + } + + private var iconColor: Color { + switch contribution.type { + case .push: .blue + case .pullRequest: .green + case .pullRequestReview: .purple + case .issue: .orange + case .create: .green + case .fork: .blue + case .watch: .yellow + case .other: .gray + } + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift new file mode 100644 index 0000000..94a44a8 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift @@ -0,0 +1,59 @@ +import SwiftUI + +struct RepoFilterView: View { + let filters: [RepoFilter] + let onFilterToggle: (RepoFilter) -> Void + let onClearFilters: () -> Void + + var body: some View { + VStack(alignment: .leading, spacing: 8) { + HStack { + Text("Filter by Repository") + .font(.headline) + + Spacer() + + if filters.contains(where: \.isSelected) { + Button("Clear", action: onClearFilters) + .font(.subheadline) + } + } + + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 8) { + ForEach(filters) { filter in + FilterChip( + title: filter.name, + isSelected: filter.isSelected + ) { + onFilterToggle(filter) + } + } + } + .padding(.horizontal, 4) + } + } + } +} + +private struct FilterChip: View { + let title: String + let isSelected: Bool + let action: () -> Void + + var body: some View { + Button(action: action) { + Text(title) + .font(.caption) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(isSelected ? Color.accentColor : Color.gray.opacity(0.1)) + .foregroundColor(isSelected ? .white : .primary) + .cornerRadius(16) + .overlay( + RoundedRectangle(cornerRadius: 16) + .stroke(isSelected ? Color.accentColor : Color.gray.opacity(0.3), lineWidth: 1) + ) + } + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift index 19c99ba..1ff798f 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift @@ -8,13 +8,18 @@ class ContributorDetailViewModel: ObservableObject { @Published private(set) var recentContributions: [ContributorContribution]? @Published private(set) var isLoading = false @Published private(set) var error: Error? + @Published var availableRepoFilters: [RepoFilter] = [] + private var allContributions: [ContributorContribution] = [] private let contributor: Contributor private let client: BuddiesClient init(contributor: Contributor) { self.contributor = contributor - let interceptorProvider = GitHubInterceptorProvider(client: URLSessionClient(sessionConfiguration: .default)) + let interceptorProvider = GitHubInterceptorProvider( + client: URLSessionClient(sessionConfiguration: .default) + ) + self.client = BuddiesClient( networkTransporter: BuddiesRequestChainNetworkTransport.getChainNetworkTransport( interceptorProvider: interceptorProvider @@ -26,25 +31,64 @@ class ContributorDetailViewModel: ObservableObject { isLoading = true defer { isLoading = false } - async let statsTask = fetchStats() - async let contributionsTask = fetchRecentContributions() - do { + async let statsTask = fetchStats() + async let contributionsTask = fetchRecentContributions() + let (stats, contributions) = try await (statsTask, contributionsTask) self.contributorStats = stats - self.recentContributions = contributions + self.allContributions = contributions + + // Create repo filters from unique repositories + let uniqueRepos = Set(contributions.map { $0.repo.name }) + self.availableRepoFilters = uniqueRepos.map { RepoFilter(name: $0) } + + updateFilteredContributions() } catch { self.error = error } } + func toggleRepoFilter(_ filter: RepoFilter) { + if let index = availableRepoFilters.firstIndex(where: { $0.id == filter.id }) { + availableRepoFilters[index].isSelected.toggle() + updateFilteredContributions() + } + } + + func clearFilters() { + availableRepoFilters = availableRepoFilters.map { RepoFilter(name: $0.name, isSelected: false) } + updateFilteredContributions() + } + + private func updateFilteredContributions() { + let selectedRepos = Set(availableRepoFilters.filter(\.isSelected).map(\.name)) + + if selectedRepos.isEmpty { + recentContributions = allContributions + } else { + recentContributions = allContributions.filter { selectedRepos.contains($0.repo.name) } + } + } + private func fetchStats() async throws -> ContributorStats { let request = ContributorStatsRequest(username: contributor.name) - return try await client.perform(request) + + do { + let data = try await client.perform(request) + return data + } catch { + throw error + } } private func fetchRecentContributions() async throws -> [ContributorContribution] { let request = ContributorActivitiesRequest(username: contributor.name) - return try await client.perform(request) + do { + let data = try await client.perform(request) + return data + } catch { + throw error + } } } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift index df40bf1..c1324ba 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift @@ -4,20 +4,6 @@ import SwiftUI final class GitHubContributorsCoordinator: ObservableObject { enum ContributorRoute: Hashable { case detail(Contributor) - - func hash(into hasher: inout Hasher) { - switch self { - case .detail(let contributor): - hasher.combine(contributor.id) - } - } - - static func == (lhs: ContributorRoute, rhs: ContributorRoute) -> Bool { - switch (lhs, rhs) { - case (.detail(let lhsContributor), .detail(let rhsContributor)): - return lhsContributor.id == rhsContributor.id - } - } } @Published var navigationStack: [ContributorRoute] = [] @@ -29,4 +15,4 @@ final class GitHubContributorsCoordinator: ObservableObject { func popToRoot() { navigationStack.removeAll() } -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift index 328350f..726111e 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift @@ -1,6 +1,6 @@ import Foundation -public struct Contributor: Identifiable, Equatable { +public struct Contributor: Identifiable, Equatable, Hashable { public let id: String public let name: String public let avatarURL: URL? @@ -20,4 +20,4 @@ public struct Contributor: Identifiable, Equatable { self.githubURL = githubURL self.contributions = contributions } -} \ No newline at end of file +} From 718054f802a386cae38ecd8cb480d5bb8e1f0fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 17:51:44 +0300 Subject: [PATCH 117/126] Update github events --- .../Models/ContributorContribution.swift | 95 ++++++++++++++++--- .../ViewComponents/ContributionRow.swift | 24 ++++- .../BuddiesInterceptorProvider.swift | 2 +- .../GitHubInterceptorProvider.swift | 7 +- 4 files changed, 110 insertions(+), 18 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift index 74fa6ed..729ea8d 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift @@ -18,20 +18,80 @@ struct ContributorContribution: Identifiable, Codable { let description: String? } - enum EventType: String, Codable { - case push = "PushEvent" - case pullRequest = "PullRequestEvent" - case pullRequestReview = "PullRequestReviewEvent" - case issue = "IssueEvent" - case create = "CreateEvent" - case fork = "ForkEvent" - case watch = "WatchEvent" - case other + enum EventType: Codable, Equatable { + case push + case pullRequest + case pullRequestReview + case pullRequestReviewComment + case pullRequestReviewThread + case issue + case issueComment + case commitComment + case create + case delete + case fork + case watch + case member + case release + case sponsorship + case gollum // Wiki events + case `public` // Repository made public + case other(String) + + private var rawValue: String { + switch self { + case .push: return "PushEvent" + case .pullRequest: return "PullRequestEvent" + case .pullRequestReview: return "PullRequestReviewEvent" + case .pullRequestReviewComment: return "PullRequestReviewCommentEvent" + case .pullRequestReviewThread: return "PullRequestReviewThreadEvent" + case .issue: return "IssuesEvent" + case .issueComment: return "IssueCommentEvent" + case .commitComment: return "CommitCommentEvent" + case .create: return "CreateEvent" + case .delete: return "DeleteEvent" + case .fork: return "ForkEvent" + case .watch: return "WatchEvent" + case .member: return "MemberEvent" + case .release: return "ReleaseEvent" + case .sponsorship: return "SponsorshipEvent" + case .gollum: return "GollumEvent" + case .public: return "PublicEvent" + case .other(let value): return value + } + } init(from decoder: Decoder) throws { let container = try decoder.singleValueContainer() let rawValue = try container.decode(String.self) - self = EventType(rawValue: rawValue) ?? .other + + switch rawValue { + case "PushEvent": self = .push + case "PullRequestEvent": self = .pullRequest + case "PullRequestReviewEvent": self = .pullRequestReview + case "PullRequestReviewCommentEvent": self = .pullRequestReviewComment + case "PullRequestReviewThreadEvent": self = .pullRequestReviewThread + case "IssuesEvent": self = .issue + case "IssueCommentEvent": self = .issueComment + case "CommitCommentEvent": self = .commitComment + case "CreateEvent": self = .create + case "DeleteEvent": self = .delete + case "ForkEvent": self = .fork + case "WatchEvent": self = .watch + case "MemberEvent": self = .member + case "ReleaseEvent": self = .release + case "SponsorshipEvent": self = .sponsorship + case "GollumEvent": self = .gollum + case "PublicEvent": self = .public + default: + self = .other(rawValue) + print("⚠️ Unknown GitHub event type encountered: \(rawValue)") + } + } + + func encode(to encoder: Encoder) throws { + var container = encoder.singleValueContainer() + try container.encode(rawValue) } } @@ -40,11 +100,22 @@ struct ContributorContribution: Identifiable, Codable { case .push: return "Pushed to \(repo.name)" case .pullRequest: return "Pull Request in \(repo.name)" case .pullRequestReview: return "Reviewed PR in \(repo.name)" + case .pullRequestReviewComment: return "Commented on PR in \(repo.name)" + case .pullRequestReviewThread: return "Reviewed PR thread in \(repo.name)" case .issue: return "Issue in \(repo.name)" + case .issueComment: return "Commented on issue in \(repo.name)" + case .commitComment: return "Commented on commit in \(repo.name)" case .create: return "Created \(payload.ref ?? "") in \(repo.name)" + case .delete: return "Deleted \(payload.ref ?? "") in \(repo.name)" case .fork: return "Forked \(repo.name)" case .watch: return "Starred \(repo.name)" - case .other: return "Activity in \(repo.name)" + case .member: return "Added as collaborator to \(repo.name)" + case .release: return "Released in \(repo.name)" + case .sponsorship: return "Sponsored \(repo.name)" + case .gollum: return "Updated wiki in \(repo.name)" + case .public: return "Made \(repo.name) public" + case .other(let eventType): + return "\(eventType.replacingOccurrences(of: "Event", with: "")) in \(repo.name)" } } @@ -56,4 +127,4 @@ struct ContributorContribution: Identifiable, Codable { case id, type, repo, payload case createdAt = "created_at" } -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift index 31966f4..9fb907f 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift @@ -37,24 +37,40 @@ struct ContributionRow: View { case .push: "arrow.up.circle" case .pullRequest: "arrow.triangle.branch" case .pullRequestReview: "checkmark.circle" + case .pullRequestReviewComment, .pullRequestReviewThread: "bubble.left" case .issue: "exclamationmark.circle" + case .issueComment: "text.bubble" + case .commitComment: "text.bubble.fill" case .create: "plus.circle" + case .delete: "minus.circle" case .fork: "tuningfork" case .watch: "star" - case .other: "circle" + case .member: "person" + case .release: "tag" + case .sponsorship: "heart" + case .gollum: "book" + case .public: "lock.open" + case .other: "circle.dotted" } } private var iconColor: Color { switch contribution.type { case .push: .blue - case .pullRequest: .green + case .pullRequest, .create: .green case .pullRequestReview: .purple + case .pullRequestReviewComment, .pullRequestReviewThread: .cyan case .issue: .orange - case .create: .green + case .issueComment, .commitComment: .cyan + case .delete: .red case .fork: .blue case .watch: .yellow - case .other: .gray + case .member: .pink + case .release: .mint + case .sponsorship: .pink + case .gollum: .indigo + case .public: .green + case .other: .secondary } } } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift index e70f7ad..fc94985 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift @@ -28,7 +28,7 @@ public final class BuddiesInterceptorProvider: InterceptorProvider { CacheReadInterceptor(store: cacheStore), BuddiesTokenProviderInterceptor(currentToken: currentToken), NetworkFetchInterceptor(client: client), - JSONDecodingInterceptor(), + BuddiesJSONDecodingInterceptor(), CacheWriteInterceptor(store: cacheStore) ] } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift index 717e9d3..e33efba 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift @@ -13,7 +13,7 @@ public final class GitHubInterceptorProvider: InterceptorProvider { MaxRetryInterceptor(maxRetry: 3), GitHubHeadersInterceptor(), NetworkFetchInterceptor(client: client), - JSONDecodingInterceptor() + BuddiesJSONDecodingInterceptor() ] } @@ -56,6 +56,8 @@ final class GitHubErrorHandler: ChainErrorHandler { completion(.failure(GitHubAPIError.rateLimitExceeded)) } else if response?.httpResponse.statusCode == 404 { completion(.failure(GitHubAPIError.repositoryNotFound)) + } else if response?.httpResponse.statusCode == 304 { + completion(.failure(GitHubAPIError.notModified)) } else { completion(.failure(error)) } @@ -70,6 +72,7 @@ public enum GitHubAPIError: Error, LocalizedError { case invalidResponse case rateLimitExceeded case repositoryNotFound + case notModified public var errorDescription: String? { switch self { @@ -85,6 +88,8 @@ public enum GitHubAPIError: Error, LocalizedError { return "GitHub API rate limit exceeded. Please try again later." case .repositoryNotFound: return "Repository not found" + case .notModified: + return "Not modified" } } } From 974422519af014367b934aea539ca20036c57f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 17:52:18 +0300 Subject: [PATCH 118/126] Add a JsonDecodingInterceptor to check and print which fields are getting decode error --- .../Models/ContributorContribution.swift | 8 ++ .../Models/ContributorStats.swift | 10 ++- .../Models/RepoFilter.swift | 10 ++- .../View/ContributorDetailView.swift | 22 ++++- .../ViewComponents/ContributionRow.swift | 8 ++ .../ViewComponents/RepoFilterView.swift | 10 ++- .../ViewComponents/StatView.swift | 10 ++- .../ContributorDetailViewModel.swift | 8 ++ .../View/GitHubContributorsView.swift | 8 ++ .../ViewComponents/ContributorRow.swift | 10 ++- .../GitHub/GitHubContributorsModule.swift | 8 ++ .../GitHubContributorsCoordinator.swift | 18 ---- .../Navigation/GitHubContributorsFlow.swift | 27 +++++- .../Sources/Models/Contributor.swift | 8 ++ .../ContributorsModuleProtocol.swift | 10 ++- .../BuddiesJSONDecodingInterceptor.swift | 82 +++++++++++++++++++ 16 files changed, 228 insertions(+), 29 deletions(-) delete mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift create mode 100644 SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift index 729ea8d..00f140f 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import Foundation struct ContributorContribution: Identifiable, Codable { diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift index 56e85c4..b0d5af1 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorStats.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import Foundation struct ContributorStats: Codable { @@ -20,4 +28,4 @@ struct ContributorStats: Codable { case avatarURL = "avatar_url" case htmlURL = "html_url" } -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/RepoFilter.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/RepoFilter.swift index 16bfefb..2852fde 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/RepoFilter.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/RepoFilter.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import Foundation struct RepoFilter: Identifiable, Hashable { @@ -10,4 +18,4 @@ struct RepoFilter: Identifiable, Hashable { self.name = name self.isSelected = isSelected } -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift index 90c297b..aa0e149 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI import Design @@ -12,14 +20,20 @@ struct ContributorDetailView: View { var body: some View { ScrollView { - VStack(spacing: 20) { - profileHeader + VStack(spacing: 8) { + HStack(alignment: .top) { + profileHeader + VStack(alignment: .leading, spacing: 8) { + githubLinkButton + statsSection + } + } + .frame(maxWidth: .infinity) if let stats = viewModel.contributorStats { userInfoSection(stats) } - statsSection if viewModel.isLoading { ProgressView() @@ -35,7 +49,6 @@ struct ContributorDetailView: View { recentActivitiesSection } - githubLinkButton } .padding() } @@ -130,6 +143,7 @@ struct ContributorDetailView: View { } } label: { Label("Open in GitHub", systemImage: "link") + .font(.footnote) .frame(maxWidth: .infinity) } .buttonStyle(.bordered) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift index 9fb907f..0faed7a 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI struct ContributionRow: View { diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift index 94a44a8..a57a2a9 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI struct RepoFilterView: View { @@ -56,4 +64,4 @@ private struct FilterChip: View { ) } } -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift index afccc81..b8d46f4 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI struct StatView: View { @@ -14,4 +22,4 @@ struct StatView: View { .foregroundColor(.secondary) } } -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift index 1ff798f..fdef5d0 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import Foundation import Network import BuddiesNetwork diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/View/GitHubContributorsView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/View/GitHubContributorsView.swift index 83bb996..2895232 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/View/GitHubContributorsView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/View/GitHubContributorsView.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI import Design diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewComponents/ContributorRow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewComponents/ContributorRow.swift index 4089501..4791baf 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewComponents/ContributorRow.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewComponents/ContributorRow.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI struct ContributorRow: View { @@ -39,4 +47,4 @@ struct ContributorRow: View { .buttonStyle(.plain) .padding(.vertical, 4) } -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/GitHubContributorsModule.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/GitHubContributorsModule.swift index ce7c383..e819c12 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/GitHubContributorsModule.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/GitHubContributorsModule.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI import BuddiesNetwork import Network diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift deleted file mode 100644 index c1324ba..0000000 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsCoordinator.swift +++ /dev/null @@ -1,18 +0,0 @@ -import SwiftUI - -@MainActor -final class GitHubContributorsCoordinator: ObservableObject { - enum ContributorRoute: Hashable { - case detail(Contributor) - } - - @Published var navigationStack: [ContributorRoute] = [] - - func push(_ route: ContributorRoute) { - navigationStack.append(route) - } - - func popToRoot() { - navigationStack.removeAll() - } -} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsFlow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsFlow.swift index 564597c..b01c4d1 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsFlow.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Navigation/GitHubContributorsFlow.swift @@ -1,5 +1,30 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI +@MainActor +final class GitHubContributorsCoordinator: ObservableObject { + enum ContributorRoute: Hashable { + case detail(Contributor) + } + + @Published var navigationStack: [ContributorRoute] = [] + + func push(_ route: ContributorRoute) { + navigationStack.append(route) + } + + func popToRoot() { + navigationStack.removeAll() + } +} + struct GitHubContributorsFlow: View { @StateObject private var coordinator: GitHubContributorsCoordinator private let module: GitHubContributorsModule @@ -22,4 +47,4 @@ struct GitHubContributorsFlow: View { } } } -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift index 726111e..c142694 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Models/Contributor.swift @@ -1,3 +1,11 @@ +// +// File.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import Foundation public struct Contributor: Identifiable, Equatable, Hashable { diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Protocols/ContributorsModuleProtocol.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Protocols/ContributorsModuleProtocol.swift index e130f3d..3cdf7d2 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Protocols/ContributorsModuleProtocol.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/Protocols/ContributorsModuleProtocol.swift @@ -1,7 +1,15 @@ +// +// ContributorsModuleProtocol.swift +// SwiftBuddiesMain +// +// Created by dogukaan on 16.12.2024. +// Copyright © 2024 SwiftBuddies. All rights reserved. +// + import SwiftUI public protocol ContributorsModuleProtocol { associatedtype ContributorsViewType: View func makeContributorsView() -> ContributorsViewType -} \ No newline at end of file +} diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift new file mode 100644 index 0000000..22e676c --- /dev/null +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift @@ -0,0 +1,82 @@ +import Foundation +import BuddiesNetwork + +public final class BuddiesJSONDecodingInterceptor: Interceptor { + public var id: String = UUID().uuidString + + public func intercept( + chain: RequestChain, + request: HTTPRequest, + response: HTTPResponse?, + completion: @escaping (Result) -> Void + ) where Request: Requestable { + guard let response = response else { + chain.proceed(request: request, interceptor: self, response: response, completion: completion) + return + } + + do { + let decoder = JSONDecoder() + decoder.dateDecodingStrategy = .iso8601 + + let result = try decoder.decode(Request.Data.self, from: response.rawData) + completion(.success(result)) + } catch let decodingError as DecodingError { + let detailedError = handleDecodingError(decodingError, data: response.rawData) + completion(.failure(detailedError)) + } catch { + completion(.failure(error)) + } + } + + private func handleDecodingError(_ error: DecodingError, data: Data) -> Error { + let description: String + + switch error { + case .keyNotFound(let key, let context): + description = """ + Key '\(key.stringValue)' not found + Debug: \(context.debugDescription) + Coding Path: \(context.codingPath.map(\.stringValue).joined(separator: " -> ")) + """ + + case .valueNotFound(let type, let context): + description = """ + Value of type '\(type)' not found + Debug: \(context.debugDescription) + Coding Path: \(context.codingPath.map(\.stringValue).joined(separator: " -> ")) + """ + + case .typeMismatch(let type, let context): + description = """ + Type mismatch for type '\(type)' + Debug: \(context.debugDescription) + Coding Path: \(context.codingPath.map(\.stringValue).joined(separator: " -> ")) + """ + + case .dataCorrupted(let context): + description = """ + Data corrupted + Debug: \(context.debugDescription) + Coding Path: \(context.codingPath.map(\.stringValue).joined(separator: " -> ")) + """ + + @unknown default: + description = error.localizedDescription + } + + // Print raw JSON for debugging + if let jsonString = String(data: data, encoding: .utf8) { + print("🚨 Decoding Error Details:") + print("Error: \(description)") + print("Raw JSON:") + print(jsonString) + } + + return NSError( + domain: "JSONDecodingInterceptor", + code: -1, + userInfo: [NSLocalizedDescriptionKey: description] + ) + } +} From 17fd067b92495111896e829a9bfd0d5c808ecb7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 20:26:35 +0300 Subject: [PATCH 119/126] update design --- .../View/ContributorDetailView.swift | 55 ++++++++++++------- .../ViewComponents/RepoFilterView.swift | 12 +--- .../ViewComponents/StatView.swift | 2 +- 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift index aa0e149..a702e19 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -21,19 +21,24 @@ struct ContributorDetailView: View { var body: some View { ScrollView { VStack(spacing: 8) { - HStack(alignment: .top) { - profileHeader - VStack(alignment: .leading, spacing: 8) { - githubLinkButton - statsSection + Group { + HStack(alignment: .top) { + profileHeader + Spacer() + if viewModel.isLoading { + ProgressView() + } else { + if let stats = viewModel.contributorStats { + statsSection(stats) + } + } + } + .frame(maxWidth: .infinity) + if let stats = viewModel.contributorStats { + userInfoSection(stats) } } - .frame(maxWidth: .infinity) - - if let stats = viewModel.contributorStats { - userInfoSection(stats) - } - + .padding(.horizontal, 16) if viewModel.isLoading { ProgressView() @@ -44,13 +49,16 @@ struct ContributorDetailView: View { onFilterToggle: viewModel.toggleRepoFilter, onClearFilters: viewModel.clearFilters ) + } else { + Text("No repositories found") + .foregroundColor(.secondary) + .frame(maxWidth: .infinity, alignment: .center) + .font(.subheadline) } - recentActivitiesSection + .padding(.horizontal, 16) } - } - .padding() } .navigationTitle(viewModel.contributorStats?.name ?? contributor.name) .task(id: "fetchContributorDetails") { @@ -69,7 +77,7 @@ struct ContributorDetailView: View { Circle() .foregroundColor(.gray.opacity(0.3)) } - .frame(width: 120, height: 120) + .frame(height: 120) .clipShape(Circle()) .shadow(radius: 5) } @@ -77,18 +85,20 @@ struct ContributorDetailView: View { Text(contributor.name) .font(.title2) .bold() + githubLinkButton } + .frame(width: 140) } private func userInfoSection(_ stats: ContributorStats) -> some View { - VStack(alignment: .leading, spacing: 8) { + VStack(alignment: .leading, spacing: 0) { if let bio = stats.bio { Text(bio) .font(.subheadline) .foregroundColor(.secondary) } - VStack(alignment: .leading, spacing: 4) { + VStack(alignment: .leading, spacing: 8) { if let company = stats.company { Label(company, systemImage: "building.2") } @@ -107,12 +117,15 @@ struct ContributorDetailView: View { .frame(maxWidth: .infinity, alignment: .leading) } - private var statsSection: some View { - HStack(spacing: 40) { - StatView(title: "Contributions", value: "\(contributor.contributions)") - if let stats = viewModel.contributorStats { + private func statsSection(_ stats: ContributorStats) -> some View { + VStack(spacing: 8) { + HStack { + StatView(title: "Contributions", value: "\(contributor.contributions)") StatView(title: "Repositories", value: "\(stats.publicRepos)") + } + HStack { StatView(title: "Followers", value: "\(stats.followers)") + StatView(title: "Following", value: "\(stats.following)") } } .padding(.vertical) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift index a57a2a9..eedc130 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/RepoFilterView.swift @@ -1,11 +1,3 @@ -// -// File.swift -// SwiftBuddiesMain -// -// Created by dogukaan on 16.12.2024. -// Copyright © 2024 SwiftBuddies. All rights reserved. -// - import SwiftUI struct RepoFilterView: View { @@ -18,7 +10,6 @@ struct RepoFilterView: View { HStack { Text("Filter by Repository") .font(.headline) - Spacer() if filters.contains(where: \.isSelected) { @@ -26,6 +17,7 @@ struct RepoFilterView: View { .font(.subheadline) } } + .padding(.horizontal, 16) ScrollView(.horizontal, showsIndicators: false) { HStack(spacing: 8) { @@ -40,6 +32,8 @@ struct RepoFilterView: View { } .padding(.horizontal, 4) } + .contentMargins(.horizontal, 16) + } } } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift index b8d46f4..a2f241f 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/StatView.swift @@ -15,7 +15,7 @@ struct StatView: View { var body: some View { VStack { Text(value) - .font(.title3) + .font(.callout) .bold() Text(title) .font(.caption) From 698e8c8c4f8109c19dddf9823779c5c188b4410c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 21:28:08 +0300 Subject: [PATCH 120/126] add pagination --- .../Models/PaginationInfo.swift | 23 ++++ .../View/ContributorDetailView.swift | 115 ++++++++++++------ .../ViewComponents/PaginationView.swift | 37 ++++++ .../ScrollPositionIndicator.swift | 37 ++++++ .../ContributorDetailViewModel.swift | 104 +++++++++++----- .../ContributorActivitiesRequest.swift | 7 ++ 6 files changed, 256 insertions(+), 67 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/PaginationInfo.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/PaginationView.swift create mode 100644 SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ScrollPositionIndicator.swift diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/PaginationInfo.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/PaginationInfo.swift new file mode 100644 index 0000000..69c763e --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/PaginationInfo.swift @@ -0,0 +1,23 @@ +import Foundation + +struct PaginationInfo { + var totalCount: Int = 0 + var itemsPerPage: Int = 30 + var currentPage: Int = 0 + var isFetching: Bool = false + + var canLoadMore: Bool { + !isFetching && (currentPage == 0 || totalCount >= (currentPage * itemsPerPage)) + } + + mutating func nextPage() { + isFetching = true + currentPage += 1 + } + + mutating func reset() { + currentPage = 0 + totalCount = 0 + isFetching = false + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift index a702e19..4b6ca80 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -21,49 +21,39 @@ struct ContributorDetailView: View { var body: some View { ScrollView { VStack(spacing: 8) { - Group { - HStack(alignment: .top) { - profileHeader - Spacer() - if viewModel.isLoading { - ProgressView() - } else { - if let stats = viewModel.contributorStats { - statsSection(stats) - } + HStack(alignment: .top) { + profileHeader + Spacer() + StatsLoadingView( + isLoading: viewModel.isStatsLoading, + content: { stats in + statsSection(stats) } - } - .frame(maxWidth: .infinity) - if let stats = viewModel.contributorStats { - userInfoSection(stats) - } + ) } - .padding(.horizontal, 16) + .frame(maxWidth: .infinity) - if viewModel.isLoading { - ProgressView() - } else { - if !viewModel.availableRepoFilters.isEmpty { - RepoFilterView( - filters: viewModel.availableRepoFilters, - onFilterToggle: viewModel.toggleRepoFilter, - onClearFilters: viewModel.clearFilters - ) - } else { - Text("No repositories found") - .foregroundColor(.secondary) - .frame(maxWidth: .infinity, alignment: .center) - .font(.subheadline) - } - recentActivitiesSection - .padding(.horizontal, 16) + if let stats = viewModel.contributorStats { + userInfoSection(stats) } + + activitiesSection + + ScrollPositionIndicator( + coordinateSpace: "scroll", + onReachBottom: viewModel.fetchActivities + ) } + .padding(.horizontal, 16) } .navigationTitle(viewModel.contributorStats?.name ?? contributor.name) .task(id: "fetchContributorDetails") { await viewModel.fetchContributorDetails() } + .coordinateSpace(name: "scroll") + .refreshable { + await viewModel.refresh() + } } private var profileHeader: some View { @@ -131,7 +121,7 @@ struct ContributorDetailView: View { .padding(.vertical) } - private var recentActivitiesSection: some View { + private var activitiesSection: some View { VStack(alignment: .leading, spacing: 12) { Text("Recent Activities") .font(.headline) @@ -141,8 +131,17 @@ struct ContributorDetailView: View { Text("No recent activities") .foregroundColor(.secondary) } else { - ForEach(contributions) { contribution in - ContributionRow(contribution: contribution) + PaginationView( + isLoading: viewModel.isActivitiesLoading, + hasMorePages: viewModel.canLoadMore, + onLoadMore: viewModel.fetchActivities + ) { + LazyVStack(spacing: 8) { + ForEach(contributions) { contribution in + ContributionRow(contribution: contribution) + .frame(maxWidth: .infinity) + } + } } } } @@ -163,3 +162,47 @@ struct ContributorDetailView: View { .tint(.primary) } } + +// Loading wrapper views +private struct StatsLoadingView: View { + let isLoading: Bool + let content: (ContributorStats) -> Content + @State private var stats: ContributorStats? + + var body: some View { + if isLoading && stats == nil { + ProgressView() + } else if let stats { + content(stats) + .transition(.opacity) + } + } +} + +private struct ActivitiesLoadingView: View { + let isLoading: Bool + let filters: [RepoFilter] + let onFilterToggle: (RepoFilter) -> Void + let onClearFilters: () -> Void + let content: ([ContributorContribution]) -> Content + @State private var contributions: [ContributorContribution] = [] + + var body: some View { + VStack(spacing: 8) { + if !filters.isEmpty { + RepoFilterView( + filters: filters, + onFilterToggle: onFilterToggle, + onClearFilters: onClearFilters + ) + } + + if isLoading && contributions.isEmpty { + ProgressView() + } else { + content(contributions) + .transition(.opacity) + } + } + } +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/PaginationView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/PaginationView.swift new file mode 100644 index 0000000..7a32f7b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/PaginationView.swift @@ -0,0 +1,37 @@ +import SwiftUI + +struct PaginationView: View { + let content: Content + let isLoading: Bool + let hasMorePages: Bool + let onLoadMore: () async -> Void + + init( + isLoading: Bool, + hasMorePages: Bool, + onLoadMore: @escaping () async -> Void, + @ViewBuilder content: () -> Content + ) { + self.content = content() + self.isLoading = isLoading + self.hasMorePages = hasMorePages + self.onLoadMore = onLoadMore + } + + var body: some View { + VStack(spacing: 8) { + content + + if hasMorePages { + ProgressView() + .frame(maxWidth: .infinity, alignment: .center) + .onAppear { + guard !isLoading else { return } + Task { + await onLoadMore() + } + } + } + } + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ScrollPositionIndicator.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ScrollPositionIndicator.swift new file mode 100644 index 0000000..0c4b3f2 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ScrollPositionIndicator.swift @@ -0,0 +1,37 @@ +import SwiftUI + +struct ScrollPositionIndicator: View { + let coordinateSpace: String + let onReachBottom: () async -> Void + + @State private var isNearBottom = false + + var body: some View { + GeometryReader { geometry in + Color.clear + .preference( + key: ScrollOffsetPreferenceKey.self, + value: geometry.frame(in: .named(coordinateSpace)).minY + ) + .onPreferenceChange(ScrollOffsetPreferenceKey.self) { offset in + let threshold = UIScreen.main.bounds.height * 0.7 + let isNearBottom = offset < threshold + + if isNearBottom && !self.isNearBottom { + Task { + await onReachBottom() + } + } + self.isNearBottom = isNearBottom + } + } + .frame(height: 0) + } +} + +private struct ScrollOffsetPreferenceKey: PreferenceKey { + static var defaultValue: CGFloat = 0 + static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { + value = nextValue() + } +} \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift index fdef5d0..844efac 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift @@ -14,11 +14,18 @@ import BuddiesNetwork class ContributorDetailViewModel: ObservableObject { @Published private(set) var contributorStats: ContributorStats? @Published private(set) var recentContributions: [ContributorContribution]? - @Published private(set) var isLoading = false + @Published private(set) var isStatsLoading = false + @Published private(set) var isActivitiesLoading = false @Published private(set) var error: Error? @Published var availableRepoFilters: [RepoFilter] = [] private var allContributions: [ContributorContribution] = [] + private var paginationInfo = PaginationInfo() + + var canLoadMore: Bool { + paginationInfo.canLoadMore + } + private let contributor: Contributor private let client: BuddiesClient @@ -36,27 +43,72 @@ class ContributorDetailViewModel: ObservableObject { } func fetchContributorDetails() async { - isLoading = true - defer { isLoading = false } + defer { + isStatsLoading = false + isActivitiesLoading = false + paginationInfo.isFetching = false + } + + isStatsLoading = true + isActivitiesLoading = true + + await fetchStats() + await fetchActivities() + } + + private func fetchStats() async { + let request = ContributorStatsRequest(username: contributor.name) do { - async let statsTask = fetchStats() - async let contributionsTask = fetchRecentContributions() - - let (stats, contributions) = try await (statsTask, contributionsTask) - self.contributorStats = stats - self.allContributions = contributions + let data = try await client.perform(request) + self.contributorStats = data + } catch { + self.error = error + } + } + + func fetchActivities() async { + guard canLoadMore else { return } + + paginationInfo.nextPage() + isActivitiesLoading = true + paginationInfo.isFetching = true + + defer { + isActivitiesLoading = false + paginationInfo.isFetching = false + } + + do { + var request = ContributorActivitiesRequest(username: contributor.name) + request.page = paginationInfo.currentPage + request.per_page = paginationInfo.itemsPerPage - // Create repo filters from unique repositories - let uniqueRepos = Set(contributions.map { $0.repo.name }) - self.availableRepoFilters = uniqueRepos.map { RepoFilter(name: $0) } + let newContributions = try await client.perform(request) - updateFilteredContributions() + if newContributions.isEmpty { + paginationInfo.totalCount = allContributions.count + } else { + if paginationInfo.currentPage == 1 { + allContributions = newContributions + } else { + allContributions.append(contentsOf: newContributions) + } + paginationInfo.totalCount = allContributions.count + updateFilters(with: allContributions) + updateFilteredContributions() + } } catch { self.error = error } } + func refresh() async { + paginationInfo.reset() + allContributions.removeAll() + await fetchContributorDetails() + } + func toggleRepoFilter(_ filter: RepoFilter) { if let index = availableRepoFilters.firstIndex(where: { $0.id == filter.id }) { availableRepoFilters[index].isSelected.toggle() @@ -79,24 +131,14 @@ class ContributorDetailViewModel: ObservableObject { } } - private func fetchStats() async throws -> ContributorStats { - let request = ContributorStatsRequest(username: contributor.name) - - do { - let data = try await client.perform(request) - return data - } catch { - throw error - } - } - - private func fetchRecentContributions() async throws -> [ContributorContribution] { - let request = ContributorActivitiesRequest(username: contributor.name) - do { - let data = try await client.perform(request) - return data - } catch { - throw error + private func updateFilters(with contributions: [ContributorContribution]) { + let uniqueRepos = Set(contributions.map { $0.repo.name }) + let newFilters = uniqueRepos.map { name in + if let existing = availableRepoFilters.first(where: { $0.name == name }) { + return existing + } + return RepoFilter(name: name) } + availableRepoFilters = newFilters.sorted(by: { $0.name < $1.name }) } } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift index 6c02359..c270545 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift @@ -4,9 +4,16 @@ import BuddiesNetwork struct ContributorActivitiesRequest: Requestable { @EncoderIgnorable var username: String? + var page: Int = 1 + var per_page: Int = 30 typealias Data = [ContributorContribution] + enum CodingKeys: String, CodingKey { + case page + case per_page + } + func toUrlRequest() throws -> URLRequest { try URLProvider.returnUrlRequest( method: .get, From afc18e8e3724195b6f4d192941d94f98e9c4e38b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 22:29:02 +0300 Subject: [PATCH 121/126] update wip --- .../View/ContributorDetailView.swift | 54 ++++++++----------- .../ContributorDetailViewModel.swift | 1 - 2 files changed, 22 insertions(+), 33 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift index 4b6ca80..0249323 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -37,7 +37,15 @@ struct ContributorDetailView: View { userInfoSection(stats) } - activitiesSection + ActivitiesLoadingView( + isLoading: viewModel.isActivitiesLoading, + filters: viewModel.availableRepoFilters, + onFilterToggle: viewModel.toggleRepoFilter, + onClearFilters: viewModel.clearFilters, + content: { contributions in + contributionsList(contributions) + } + ) ScrollPositionIndicator( coordinateSpace: "scroll", @@ -56,6 +64,15 @@ struct ContributorDetailView: View { } } + private func contributionsList(_ contributions: [ContributorContribution]) -> some View { + LazyVStack(spacing: 8) { + ForEach(contributions) { contribution in + ContributionRow(contribution: contribution) + .frame(maxWidth: .infinity) + } + } + } + private var profileHeader: some View { VStack { if let avatarURL = contributor.avatarURL { @@ -109,11 +126,11 @@ struct ContributorDetailView: View { private func statsSection(_ stats: ContributorStats) -> some View { VStack(spacing: 8) { - HStack { + HStack(spacing: 16) { StatView(title: "Contributions", value: "\(contributor.contributions)") - StatView(title: "Repositories", value: "\(stats.publicRepos)") - } - HStack { + StatView(title: "Repos", value: "\(stats.publicRepos)") + } + HStack(spacing: 16) { StatView(title: "Followers", value: "\(stats.followers)") StatView(title: "Following", value: "\(stats.following)") } @@ -121,33 +138,6 @@ struct ContributorDetailView: View { .padding(.vertical) } - private var activitiesSection: some View { - VStack(alignment: .leading, spacing: 12) { - Text("Recent Activities") - .font(.headline) - - if let contributions = viewModel.recentContributions { - if contributions.isEmpty { - Text("No recent activities") - .foregroundColor(.secondary) - } else { - PaginationView( - isLoading: viewModel.isActivitiesLoading, - hasMorePages: viewModel.canLoadMore, - onLoadMore: viewModel.fetchActivities - ) { - LazyVStack(spacing: 8) { - ForEach(contributions) { contribution in - ContributionRow(contribution: contribution) - .frame(maxWidth: .infinity) - } - } - } - } - } - } - } - private var githubLinkButton: some View { Button { if let url = contributor.githubURL { diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift index 844efac..4646f35 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift @@ -76,7 +76,6 @@ class ContributorDetailViewModel: ObservableObject { defer { isActivitiesLoading = false - paginationInfo.isFetching = false } do { From b55296895d819053d74a72d5d9d527cb785f2483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Mon, 16 Dec 2024 22:53:56 +0300 Subject: [PATCH 122/126] update contributer detail ux --- .../View/ContributorDetailView.swift | 101 ++++++++++++++++-- .../ViewComponents/ContributionRow.swift | 42 +++++--- 2 files changed, 116 insertions(+), 27 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift index 0249323..8c59a58 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -35,6 +35,7 @@ struct ContributorDetailView: View { if let stats = viewModel.contributorStats { userInfoSection(stats) + .padding(.vertical, 8) } ActivitiesLoadingView( @@ -44,7 +45,8 @@ struct ContributorDetailView: View { onClearFilters: viewModel.clearFilters, content: { contributions in contributionsList(contributions) - } + }, + contributions: viewModel.recentContributions ?? [] ) ScrollPositionIndicator( @@ -65,12 +67,17 @@ struct ContributorDetailView: View { } private func contributionsList(_ contributions: [ContributorContribution]) -> some View { - LazyVStack(spacing: 8) { + LazyVStack(spacing: 12) { ForEach(contributions) { contribution in ContributionRow(contribution: contribution) - .frame(maxWidth: .infinity) + } + + if viewModel.isActivitiesLoading { + ProgressView() + .padding() } } + .frame(maxWidth: .infinity) } private var profileHeader: some View { @@ -175,20 +182,92 @@ private struct ActivitiesLoadingView: View { let onFilterToggle: (RepoFilter) -> Void let onClearFilters: () -> Void let content: ([ContributorContribution]) -> Content - @State private var contributions: [ContributorContribution] = [] + let contributions: [ContributorContribution] var body: some View { - VStack(spacing: 8) { - if !filters.isEmpty { - RepoFilterView( - filters: filters, - onFilterToggle: onFilterToggle, - onClearFilters: onClearFilters - ) + VStack(spacing: 16) { + // Section Header with Filter Button + HStack { + Text("Recent Activities") + .font(.title3) + .bold() + + Spacer() + + if !filters.isEmpty { + Menu { + ForEach(filters) { filter in + Button(action: { onFilterToggle(filter) }) { + HStack { + Text(filter.name) + if filter.isSelected { + Image(systemName: "checkmark") + } + } + } + } + + Divider() + + Button(role: .destructive, action: onClearFilters) { + Text("Clear Filters") + } + } label: { + HStack(spacing: 4) { + Text("Filter") + Image(systemName: "line.3.horizontal.decrease.circle") + } + .foregroundStyle(filters.contains(where: \.isSelected) ? .blue : .secondary) + } + } + } + + // Active Filters + if !filters.isEmpty && filters.contains(where: \.isSelected) { + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 8) { + ForEach(filters.filter(\.isSelected)) { filter in + HStack(spacing: 4) { + Text(filter.name) + .font(.caption) + Button { + onFilterToggle(filter) + } label: { + Image(systemName: "xmark.circle.fill") + .font(.caption) + } + } + .padding(.horizontal, 8) + .padding(.vertical, 4) + .background( + Capsule() + .fill(Color.blue.opacity(0.1)) + ) + .overlay( + Capsule() + .strokeBorder(Color.blue.opacity(0.3), lineWidth: 1) + ) + } + } + .padding(.horizontal, 4) + } } + // Content if isLoading && contributions.isEmpty { ProgressView() + .frame(maxWidth: .infinity, maxHeight: .infinity) + .frame(height: 200) + } else if contributions.isEmpty { + VStack(spacing: 8) { + Image(systemName: "doc.text.image") + .font(.largeTitle) + .foregroundStyle(.secondary) + Text("No recent activities") + .foregroundStyle(.secondary) + } + .frame(maxWidth: .infinity) + .frame(height: 200) } else { content(contributions) .transition(.opacity) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift index 0faed7a..385e357 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift @@ -13,26 +13,36 @@ struct ContributionRow: View { var body: some View { VStack(alignment: .leading, spacing: 4) { - HStack { + HStack(spacing: 8) { eventIcon - Text(contribution.title) - .font(.subheadline) - .bold() + + VStack(alignment: .leading, spacing: 4) { + Text(contribution.title) + .font(.subheadline) + .bold() + .lineLimit(2) + + if !contribution.description.isEmpty { + Text(contribution.description) + .font(.caption) + .foregroundColor(.secondary) + .lineLimit(1) + } + + Text(contribution.createdAt.formatted(date: .abbreviated, time: .shortened)) + .font(.caption2) + .foregroundColor(.secondary) + } + + Spacer(minLength: 0) } - - if !contribution.description.isEmpty { - Text(contribution.description) - .font(.caption) - .foregroundColor(.secondary) - } - - Text(contribution.createdAt.formatted(date: .abbreviated, time: .shortened)) - .font(.caption2) - .foregroundColor(.secondary) } .padding() - .background(Color.gray.opacity(0.1)) - .cornerRadius(8) + .frame(maxWidth: .infinity) + .background( + RoundedRectangle(cornerRadius: 12) + .fill(Color.gray.opacity(0.1)) + ) } private var eventIcon: some View { From ea717f3c33b1b9124c64db6eafeb4a95263112e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Fri, 27 Dec 2024 03:18:28 +0300 Subject: [PATCH 123/126] add cache --- .../BuddiesAuthenticationService.swift | 23 +++++--- .../GitHubContributorsViewModel.swift | 28 +++++----- .../ContributorActivitiesRequest.swift | 8 +-- .../Requests/ContributorStatsRequest.swift | 9 ++- .../MainMapView/Service/MapService.swift | 16 +++--- .../Sources/BuddiesClient/BuddiesClient.swift | 56 ++++++++++++++++++- .../EndpointManager/EndpointManager.swift | 14 +++++ .../BuddiesInterceptorProvider.swift | 14 ++--- .../BuddiesJSONDecodingInterceptor.swift | 18 ++++-- .../CacheReadInterceptor.swift | 52 +++++++++-------- .../CacheWriteInterceptor.swift | 43 +++++++++----- .../GitHubInterceptorProvider.swift | 24 ++++---- 12 files changed, 199 insertions(+), 106 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift index 73dc4b4..8b07cfa 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/BuddiesAuthenticationService/BuddiesAuthenticationService.swift @@ -32,7 +32,10 @@ public final class BuddiesAuthenticationService { ) do { - let data = try await apiClient.perform(request) + let data: RegisterRequest.Data = try await apiClient.perform( + request, + cachePolicy: .fetchIgnoringCacheCompletely + ) let token = data.token let type = data.type debugPrint("token: \(token), \ntype: \(type)") @@ -65,6 +68,15 @@ public final class BuddiesAuthenticationService { // MARK: - RegisterRequest struct RegisterRequest: Requestable { + func httpProperties() -> BuddiesNetwork.HTTPOperation.HTTPProperties { + .init( + url: APIs.Login.register.url(), + httpMethod: .post, + additionalHeaders: [:], + data: self + ) + } + var accessToken: String var registerType: String @@ -72,12 +84,5 @@ struct RegisterRequest: Requestable { let token: String let type: String } - - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .post, - url: APIs.Login.register.url(), - data: self - ) - } + } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift index 15684a1..926a81a 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift @@ -2,7 +2,6 @@ import Foundation import Network import BuddiesNetwork -@MainActor public class GitHubContributorsViewModel: ObservableObject { @Published private(set) var contributors: [Contributor] = [] @Published private(set) var isLoading = false @@ -14,6 +13,7 @@ public class GitHubContributorsViewModel: ObservableObject { self.client = client } + @MainActor func fetchContributors() async { defer { isLoading = false @@ -22,15 +22,16 @@ public class GitHubContributorsViewModel: ObservableObject { error = nil let request = ContributorsRequest() do { - let response = try await client.perform(request) - contributors = response.map { contributor in - Contributor( - id: String(contributor.id), - name: contributor.login, - avatarURL: URL(string: contributor.avatarURL), - githubURL: URL(string: contributor.htmlURL), - contributions: contributor.contributions - ) + for try await result in client.watch(request) { + contributors = result.map { contributor in + Contributor( + id: String(contributor.id), + name: contributor.login, + avatarURL: URL(string: contributor.avatarURL), + githubURL: URL(string: contributor.htmlURL), + contributions: contributor.contributions + ) + } } } catch { self.error = error @@ -57,11 +58,10 @@ struct ContributorsRequest: Requestable { case contributions } } - - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .get, + func httpProperties() -> HTTPOperation.HTTPProperties { + .init( url: APIs.GitHub.contributors.url(.github), + httpMethod: .get, data: self ) } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift index c270545..02cea08 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorActivitiesRequest.swift @@ -14,11 +14,11 @@ struct ContributorActivitiesRequest: Requestable { case per_page } - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .get, + func httpProperties() -> HTTPOperation.HTTPProperties { + .init( url: APIs.GitHub.userActivities(username: username).url(.github), + httpMethod: .get, data: self ) } -} +} diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift index 1982e9a..c2d3ee6 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/Network/Requests/ContributorStatsRequest.swift @@ -5,12 +5,11 @@ import BuddiesNetwork struct ContributorStatsRequest: Requestable { @EncoderIgnorable var username: String? typealias Data = ContributorStats - - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .get, + func httpProperties() -> HTTPOperation.HTTPProperties { + .init( url: APIs.GitHub.userStats(username: username).url(.github), + httpMethod: .get, data: self ) } -} +} diff --git a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift index e1ac0ce..1404224 100644 --- a/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift +++ b/SwiftBuddiesIOS/Targets/MapModule/Sources/MapView/Scenes/MainMapView/Service/MapService.swift @@ -90,7 +90,6 @@ class MapService { struct MapCreateEventRequest: Requestable { - let category: String? let name: String? let description: String? @@ -113,10 +112,10 @@ struct MapCreateEventRequest: Requestable { var uid: String? } - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .post, + func httpProperties() -> BuddiesNetwork.HTTPOperation.HTTPProperties { + .init( url: APIs.Map.createEvent.url(), + httpMethod: .post, data: self ) } @@ -124,16 +123,15 @@ struct MapCreateEventRequest: Requestable { struct MapGetEventsRequest: Requestable { - struct Data: Codable { let count: Int? let events: [MapEventModel]? } - - func toUrlRequest() throws -> URLRequest { - try URLProvider.returnUrlRequest( - method: .get, + + func httpProperties() -> HTTPOperation.HTTPProperties { + .init( url: APIs.Map.getEvents.url(), + httpMethod: .get, data: self ) } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift index 473cb9b..69e0fef 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift @@ -8,6 +8,7 @@ import Foundation import BuddiesNetwork + final public class BuddiesClient { private let apiClient: APIClient @@ -17,23 +18,72 @@ final public class BuddiesClient { apiClient = .init(networkTransporter: networkTransporter) } + @discardableResult public func perform( _ request: Request, dispatchQueue: DispatchQueue = .main, - completion: @escaping (Result) -> Void - ) { + cachePolicy: CachePolicy = .returnCacheDataAndFetch, + completion: @escaping HTTPResultHandler + ) -> (any Cancellable)? { apiClient.perform( request, dispatchQueue: dispatchQueue, + cachePolicy: cachePolicy, completion: completion ) } + public func watch( + _ request: Request, + cachePolicy: CachePolicy = .returnCacheDataAndFetch, + dispatchQueue: DispatchQueue = .main + ) -> AsyncThrowingStream { + AsyncThrowingStream { continuation in + let task = perform( + request, + dispatchQueue: dispatchQueue, + cachePolicy: cachePolicy) { result in + switch result { + case .success(let httpResult): + continuation.yield(httpResult.data) + + if httpResult.isFinalForCachePolicy(policy: cachePolicy) { + continuation.finish() + } + case .failure(let error): + continuation.finish(throwing: error) + } + } + + continuation.onTermination = { @Sendable termination in + task?.cancel() + } + } + } + @discardableResult public func perform( _ request: Request, + cachePolicy: CachePolicy = .returnCacheDataAndFetch, dispatchQueue: DispatchQueue = .main ) async throws -> Request.Data { - try await apiClient.perform(request, dispatchQueue: dispatchQueue) + try await apiClient.perform(request, cachePolicy: cachePolicy, dispatchQueue: dispatchQueue) + } +} + +extension HTTPResult { + func isFinalForCachePolicy(policy: CachePolicy) -> Bool { + switch policy { + case .returnCacheDataElseFetch: + return true + case .fetchIgnoringCacheData: + return source == .server + case .fetchIgnoringCacheCompletely: + return source == .server + case .returnCacheDataDontFetch: + return source == .cache + case .returnCacheDataAndFetch: + return source == .server + } } } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift index 40d6b0b..1890ad3 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/EndpointManager/EndpointManager.swift @@ -21,6 +21,20 @@ public enum APIs { } } + public enum Map: Endpoint { + case getEvents + case createEvent + + public var value: String { + switch self { + case .getEvents: + "getEvents" + case .createEvent: + "createEvent" + } + } + } + public enum GitHub: Endpoint { case contributors case userStats(username: String?) diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift index fc94985..e634897 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesInterceptorProvider.swift @@ -22,7 +22,7 @@ public final class BuddiesInterceptorProvider: InterceptorProvider { public var currentToken: () -> String? - public func interceptors(for request: some Requestable) -> [Interceptor] { + public func interceptors(for operation: some HTTPOperation) -> [Interceptor] { [ MaxRetryInterceptor(maxRetry: 3), CacheReadInterceptor(store: cacheStore), @@ -42,9 +42,9 @@ class AuthenticationErrorHandler: ChainErrorHandler { func handleError( error: any Error, chain: any RequestChain, - request: HTTPRequest, + operation: HTTPOperation, response: HTTPResponse?, - completion: @escaping (Result) -> Void + completion: @escaping HTTPResultHandler ) where Request: Requestable { if response?.httpResponse.statusCode == 401 { Task { @MainActor in @@ -89,16 +89,16 @@ public final class BuddiesTokenProviderInterceptor: Interceptor { public func intercept( chain: RequestChain, - request: HTTPRequest, + operation: HTTPOperation, response: HTTPResponse?, - completion: @escaping (Result) -> Void + completion: @escaping HTTPResultHandler ) where Request: Requestable { if let token = currentToken() { - request.addHeader(key: "Authorization", val: "\(token)") + operation.addHeader(key: "Authorization", val: "\(token)") } chain.proceed( - request: request, + operation: operation, interceptor: self, response: response, completion: completion diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift index 22e676c..7155498 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift @@ -6,12 +6,17 @@ public final class BuddiesJSONDecodingInterceptor: Interceptor { public func intercept( chain: RequestChain, - request: HTTPRequest, + operation: HTTPOperation, response: HTTPResponse?, - completion: @escaping (Result) -> Void + completion: @escaping HTTPResultHandler ) where Request: Requestable { guard let response = response else { - chain.proceed(request: request, interceptor: self, response: response, completion: completion) + chain.proceed( + operation: operation, + interceptor: self, + response: response, + completion: completion + ) return } @@ -20,7 +25,12 @@ public final class BuddiesJSONDecodingInterceptor: Interceptor { decoder.dateDecodingStrategy = .iso8601 let result = try decoder.decode(Request.Data.self, from: response.rawData) - completion(.success(result)) + chain.proceed( + operation: operation, + interceptor: self, + response: response, + completion: completion + ) } catch let decodingError as DecodingError { let detailedError = handleDecodingError(decodingError, data: response.rawData) completion(.failure(detailedError)) diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheReadInterceptor.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheReadInterceptor.swift index ab10afa..9b6252b 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheReadInterceptor.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheReadInterceptor.swift @@ -20,96 +20,94 @@ final class CacheReadInterceptor: Interceptor { var store: any CacheStore func fetchFromCache( - for request: HTTPRequest, + for operation: HTTPOperation, chain: any RequestChain, - completion: @escaping ( - Result< - Request.Data, - any Error - > - ) -> Void + completion: @escaping (Result) -> Void ) where Request: Requestable { - store.read(for: request, chain: chain, completion: completion) + store.read(for: operation, chain: chain, completion: completion) } func intercept( chain: any RequestChain, - request: HTTPRequest, + operation: HTTPOperation, response: HTTPResponse?, - completion: @escaping (Result) -> Void + completion: @escaping HTTPResultHandler ) where Request : Requestable { // request == .get else continue with the chain - switch request.cachePolicy { + switch operation.cachePolicy { case .fetchIgnoringCacheCompletely, .fetchIgnoringCacheData: chain.proceed( - request: request, + operation: operation, interceptor: self, response: response, completion: completion ) case .returnCacheDataAndFetch: - self.fetchFromCache(for: request, chain: chain) { cacheFetchResult in + self.fetchFromCache(for: operation, chain: chain) { cacheFetchResult in switch cacheFetchResult { case .failure: // Don't return a cache miss error, just keep going break - case .success(let graphQLResult): + case .success(let decodedData): + let result = HTTPResult(source: .cache, data: decodedData) chain.returnValue( - for: request, - value: graphQLResult, + for: operation, + result: result, completion: completion ) } // In either case, keep going asynchronously chain.proceed( - request: request, + operation: operation, interceptor: self, response: response, completion: completion ) } case .returnCacheDataElseFetch: - self.fetchFromCache(for: request, chain: chain) { cacheFetchResult in + self.fetchFromCache(for: operation, chain: chain) { cacheFetchResult in switch cacheFetchResult { case .failure: // Cache miss, proceed to network without returning error chain.proceed( - request: request, + operation: operation, interceptor: self, response: response, completion: completion ) - case .success(let graphQLResult): + case .success(let decodedData): // Cache hit! We're done. + let result = HTTPResult(source: .cache, data: decodedData) chain.returnValue( - for: request, - value: graphQLResult, + for: operation, + result: result, completion: completion ) } } case .returnCacheDataDontFetch: - self.fetchFromCache(for: request, chain: chain) { cacheFetchResult in + self.fetchFromCache(for: operation, chain: chain) { cacheFetchResult in switch cacheFetchResult { case .failure(let error): // Cache miss - don't hit the network, just return the error. chain.handleErrorAsync( error, - request: request, + operation: operation, response: response, completion: completion ) - case .success(let result): + case .success(let decodedData): + let result = HTTPResult(source: .cache, data: decodedData) chain.returnValue( - for: request, - value: result, + for: operation, + result: result, completion: completion ) } diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift index db6b717..ff41f0f 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift @@ -9,9 +9,12 @@ import Foundation import BuddiesNetwork public protocol CacheStore { - func write(for request: HTTPRequest, response: HTTPResponse) + func write( + for operation: HTTPOperation, + response: HTTPResponse + ) func read( - for request: HTTPRequest, + for operation: HTTPOperation, chain: any RequestChain, completion: @escaping ( Result< @@ -23,29 +26,41 @@ public protocol CacheStore { } public class URLCacheStore: CacheStore { + enum CacheStoreError: String, LocalizedError { + case noResponseToParse + + var errorDescription: String? { rawValue } + } + private var cache: URLCache + private var jsonDecoder: JSONDecoder = JSONDecoder() public init(cache: URLCache = .shared) { self.cache = cache } - public func write(for request: HTTPRequest, response: HTTPResponse) where Request : Requestable { + public func write(for operation: HTTPOperation, response: HTTPResponse) where Request : Requestable { let cachedURLResponse = CachedURLResponse(response: response.httpResponse, data: response.rawData) do { - let urlRequest = try request.rawRequest.toUrlRequest() + let urlRequest = try URLProvider.urlRequest(from: operation.properties) cache.storeCachedResponse(cachedURLResponse, for: urlRequest) } catch { print("Error while storing cache: \(error)") } } - public func read(for request: HTTPRequest, chain: any RequestChain, completion: @escaping (Result) -> Void) where Request : Requestable { + public func read(for operation: HTTPOperation, chain: any RequestChain, completion: @escaping (Result) -> Void) where Request : Requestable { do { - let urlRequest = try request.rawRequest.toUrlRequest() - cache.cachedResponse(for: urlRequest) + let urlRequest = try URLProvider.urlRequest(from: operation.properties) + if let data = cache.cachedResponse(for: urlRequest) { + let decodedData = try jsonDecoder.decode(Request.Data.self, from: data.data) + completion(.success(decodedData)) + } else { + completion(.failure(CacheStoreError.noResponseToParse)) + } } catch { print("Error while storing cache: \(error)") } @@ -68,18 +83,18 @@ final class CacheWriteInterceptor: Interceptor { func intercept( chain: any RequestChain, - request: HTTPRequest, + operation: HTTPOperation, response: HTTPResponse?, - completion: @escaping (Result) -> Void + completion: @escaping HTTPResultHandler ) where Request : Requestable { guard !chain.isCancelled else { return } - guard request.cachePolicy != .fetchIgnoringCacheCompletely else { + guard operation.cachePolicy != .fetchIgnoringCacheCompletely else { // If we're ignoring the cache completely, we're not writing to it. chain.proceed( - request: request, + operation: operation, interceptor: self, response: response, completion: completion @@ -90,17 +105,17 @@ final class CacheWriteInterceptor: Interceptor { guard let createdResponse = response else { chain.handleErrorAsync( CacheWriteError.noResponseToParse, - request: request, + operation: operation, response: response, completion: completion ) return } - self.store.write(for: request, response: createdResponse) + self.store.write(for: operation, response: createdResponse) chain.proceed( - request: request, + operation: operation, interceptor: self, response: createdResponse, completion: completion diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift index e33efba..7d9d25a 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/GitHubInterceptorProvider.swift @@ -2,18 +2,22 @@ import Foundation import BuddiesNetwork public final class GitHubInterceptorProvider: InterceptorProvider { - let client: URLSessionClient - public init(client: URLSessionClient) { + let client: URLSessionClient + let cacheStore: URLCacheStore + public init(client: URLSessionClient, cacheStore: URLCacheStore = .init()) { + self.cacheStore = cacheStore self.client = client } - public func interceptors(for request: some Requestable) -> [Interceptor] { + public func interceptors(for operation: HTTPOperation) -> [Interceptor] { [ MaxRetryInterceptor(maxRetry: 3), + CacheReadInterceptor(store: cacheStore), GitHubHeadersInterceptor(), NetworkFetchInterceptor(client: client), - BuddiesJSONDecodingInterceptor() + BuddiesJSONDecodingInterceptor(), + CacheWriteInterceptor(store: cacheStore) ] } @@ -27,15 +31,15 @@ final class GitHubHeadersInterceptor: Interceptor { public func intercept( chain: RequestChain, - request: HTTPRequest, + operation: HTTPOperation, response: HTTPResponse?, - completion: @escaping (Result) -> Void + completion: @escaping HTTPResultHandler ) where Request: Requestable { // Add GitHub API specific headers - request.addHeader(key: "Accept", val: "application/vnd.github.v3+json") + operation.addHeader(key: "Accept", val: "application/vnd.github.v3+json") chain.proceed( - request: request, + operation: operation, interceptor: self, response: response, completion: completion @@ -47,9 +51,9 @@ final class GitHubErrorHandler: ChainErrorHandler { func handleError( error: any Error, chain: any RequestChain, - request: HTTPRequest, + operation: HTTPOperation, response: HTTPResponse?, - completion: @escaping (Result) -> Void + completion: @escaping HTTPResultHandler ) where Request: Requestable { if response?.httpResponse.statusCode == 403 { // Handle rate limiting From e5b4eafc5721422262b2f462bff5571332d04a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dog=CC=86ukaan=20K=C4=B1l=C4=B1c=CC=A7arslan?= Date: Fri, 27 Dec 2024 03:58:50 +0300 Subject: [PATCH 124/126] update contributors details --- .../Models/ContributorContribution.swift | 13 ++++++++-- .../View/ContributorDetailView.swift | 2 +- .../ViewComponents/ContributionRow.swift | 2 +- .../ContributorDetailViewModel.swift | 26 +++++++++---------- .../GitHubContributorsViewModel.swift | 2 +- .../Sources/BuddiesClient/BuddiesClient.swift | 2 +- .../BuddiesJSONDecodingInterceptor.swift | 10 +++++-- .../CacheWriteInterceptor.swift | 6 ++++- 8 files changed, 40 insertions(+), 23 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift index 00f140f..2d13fc0 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/Models/ContributorContribution.swift @@ -8,11 +8,20 @@ import Foundation -struct ContributorContribution: Identifiable, Codable { +struct ContributorContribution: Identifiable, Codable, Hashable { + static func == (lhs: ContributorContribution, rhs: ContributorContribution) -> Bool { + lhs.id == rhs.id + } + // hash method + func hash(into hasher: inout Hasher) { + hasher.combine(id) + } + + let id: String let type: EventType let repo: Repository - let createdAt: Date + let createdAt: String? let payload: Payload struct Repository: Codable { diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift index 8c59a58..f8eb935 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/View/ContributorDetailView.swift @@ -46,7 +46,7 @@ struct ContributorDetailView: View { content: { contributions in contributionsList(contributions) }, - contributions: viewModel.recentContributions ?? [] + contributions: Array(viewModel.recentContributions ?? []) ) ScrollPositionIndicator( diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift index 385e357..93834d5 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewComponents/ContributionRow.swift @@ -29,7 +29,7 @@ struct ContributionRow: View { .lineLimit(1) } - Text(contribution.createdAt.formatted(date: .abbreviated, time: .shortened)) + Text(contribution.createdAt ?? "") .font(.caption2) .foregroundColor(.secondary) } diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift index 4646f35..71649e0 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsDetailScene/ViewModel/ContributorDetailViewModel.swift @@ -13,13 +13,13 @@ import BuddiesNetwork @MainActor class ContributorDetailViewModel: ObservableObject { @Published private(set) var contributorStats: ContributorStats? - @Published private(set) var recentContributions: [ContributorContribution]? + @Published private(set) var recentContributions: Set? @Published private(set) var isStatsLoading = false @Published private(set) var isActivitiesLoading = false @Published private(set) var error: Error? @Published var availableRepoFilters: [RepoFilter] = [] - private var allContributions: [ContributorContribution] = [] + private var allContributions: Set = [] private var paginationInfo = PaginationInfo() var canLoadMore: Bool { @@ -83,19 +83,17 @@ class ContributorDetailViewModel: ObservableObject { request.page = paginationInfo.currentPage request.per_page = paginationInfo.itemsPerPage - let newContributions = try await client.perform(request) - - if newContributions.isEmpty { - paginationInfo.totalCount = allContributions.count - } else { - if paginationInfo.currentPage == 1 { - allContributions = newContributions + for try await newContributions in client.watch(request, cachePolicy: .returnCacheDataAndFetch) { + if newContributions.isEmpty { + paginationInfo.totalCount = allContributions.count } else { - allContributions.append(contentsOf: newContributions) + for newContribution in newContributions { + allContributions.insert(newContribution) + } + paginationInfo.totalCount = allContributions.count + updateFilters(with: allContributions) + updateFilteredContributions() } - paginationInfo.totalCount = allContributions.count - updateFilters(with: allContributions) - updateFilteredContributions() } } catch { self.error = error @@ -130,7 +128,7 @@ class ContributorDetailViewModel: ObservableObject { } } - private func updateFilters(with contributions: [ContributorContribution]) { + private func updateFilters(with contributions: Set) { let uniqueRepos = Set(contributions.map { $0.repo.name }) let newFilters = uniqueRepos.map { name in if let existing = availableRepoFilters.first(where: { $0.name == name }) { diff --git a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift index 926a81a..df0bc13 100644 --- a/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift +++ b/SwiftBuddiesIOS/Targets/ContributorsModule/Sources/GitHub/ContributorsListScene/ViewModel/GitHubContributorsViewModel.swift @@ -22,7 +22,7 @@ public class GitHubContributorsViewModel: ObservableObject { error = nil let request = ContributorsRequest() do { - for try await result in client.watch(request) { + for try await result in client.watch(request, cachePolicy: .returnCacheDataAndFetch) { contributors = result.map { contributor in Contributor( id: String(contributor.id), diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift index 69e0fef..49c5dd5 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/BuddiesClient/BuddiesClient.swift @@ -64,7 +64,7 @@ final public class BuddiesClient { @discardableResult public func perform( _ request: Request, - cachePolicy: CachePolicy = .returnCacheDataAndFetch, + cachePolicy: CachePolicy = .returnCacheDataElseFetch, dispatchQueue: DispatchQueue = .main ) async throws -> Request.Data { try await apiClient.perform(request, cachePolicy: cachePolicy, dispatchQueue: dispatchQueue) diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift index 7155498..b011b58 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/BuddiesJSONDecodingInterceptor.swift @@ -25,6 +25,8 @@ public final class BuddiesJSONDecodingInterceptor: Interceptor { decoder.dateDecodingStrategy = .iso8601 let result = try decoder.decode(Request.Data.self, from: response.rawData) + response.parsedData = result + chain.proceed( operation: operation, interceptor: self, @@ -32,14 +34,14 @@ public final class BuddiesJSONDecodingInterceptor: Interceptor { completion: completion ) } catch let decodingError as DecodingError { - let detailedError = handleDecodingError(decodingError, data: response.rawData) + let detailedError = handleDecodingError(decodingError, data: response.rawData, for: operation.properties.requestName) completion(.failure(detailedError)) } catch { completion(.failure(error)) } } - private func handleDecodingError(_ error: DecodingError, data: Data) -> Error { + private func handleDecodingError(_ error: DecodingError, data: Data, for model: any Decodable) -> Error { let description: String switch error { @@ -48,6 +50,7 @@ public final class BuddiesJSONDecodingInterceptor: Interceptor { Key '\(key.stringValue)' not found Debug: \(context.debugDescription) Coding Path: \(context.codingPath.map(\.stringValue).joined(separator: " -> ")) + for model: \(model) """ case .valueNotFound(let type, let context): @@ -55,6 +58,7 @@ public final class BuddiesJSONDecodingInterceptor: Interceptor { Value of type '\(type)' not found Debug: \(context.debugDescription) Coding Path: \(context.codingPath.map(\.stringValue).joined(separator: " -> ")) + for model: \(model) """ case .typeMismatch(let type, let context): @@ -62,6 +66,7 @@ public final class BuddiesJSONDecodingInterceptor: Interceptor { Type mismatch for type '\(type)' Debug: \(context.debugDescription) Coding Path: \(context.codingPath.map(\.stringValue).joined(separator: " -> ")) + for model: \(model) """ case .dataCorrupted(let context): @@ -69,6 +74,7 @@ public final class BuddiesJSONDecodingInterceptor: Interceptor { Data corrupted Debug: \(context.debugDescription) Coding Path: \(context.codingPath.map(\.stringValue).joined(separator: " -> ")) + for model: \(model) """ @unknown default: diff --git a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift index ff41f0f..2f8c383 100644 --- a/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift +++ b/SwiftBuddiesIOS/Targets/NetworkModule/Sources/InterceptorProvider/CacheWriteInterceptor.swift @@ -46,8 +46,10 @@ public class URLCacheStore: CacheStore { do { let urlRequest = try URLProvider.urlRequest(from: operation.properties) cache.storeCachedResponse(cachedURLResponse, for: urlRequest) + print("Cache stored for \(operation.properties.requestName)") } catch { print("Error while storing cache: \(error)") + return } } @@ -60,9 +62,11 @@ public class URLCacheStore: CacheStore { completion(.success(decodedData)) } else { completion(.failure(CacheStoreError.noResponseToParse)) + return } + print("Cache read for \(operation.properties.requestName)") } catch { - print("Error while storing cache: \(error)") + print("Error while reading cache: \(error)") } } } From 6fdc593ca303c5fb4db3d0fc66fcf9ee76332912 Mon Sep 17 00:00:00 2001 From: Can Berk Ulucay Date: Sat, 11 Jan 2025 14:21:48 +0300 Subject: [PATCH 125/126] Add dark&tinted app logos --- .../AppIcon.appiconset/BuddiesLogo_dark.png | Bin 0 -> 132809 bytes .../AppIcon.appiconset/BuddiesLogo_light.png | Bin 0 -> 123803 bytes .../AppIcon.appiconset/BuddiesLogo_tinted.png | Bin 0 -> 113754 bytes .../AppIcon.appiconset/Contents.json | 26 +++++++++++++++++- .../AppIcon.appiconset/appstore.png | Bin 246463 -> 0 bytes 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_dark.png create mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_light.png create mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_tinted.png delete mode 100644 SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/appstore.png diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_dark.png b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d78ca63cbf7566b57373956f8760ad4c90c01b9c GIT binary patch literal 132809 zcmeFZghEASc(gcNT7a03$XjuiM00wL!ifsldkNWec(9{7Jg zg@E#q|Icg0FHSA*Qh-2EkfMx~wl~u6Y;->gozuaw>!z@8Q?LFtoNbIN7+tw8JD;V|0|j7*Z@KEj41xk?KmjF?K1g9Wyt^Co~#6__Ge4`IHjb9!&8!H8)#Qv za5WUJ0ghX{p)#K9P|O^t-eKbyOL&+Jm`^4NL;;$pB7Q0R-M+ zc=V7|ly4F8$%#}#Ne%~up{^nS2RLaJfq4~lpQO+}+)EwYjJDKn9>JftC#G^L`9vO7 zCgX`N@kM+7Y4iSoihS~Ek@J5O$Lj(jD{9=b7kpSUv;mz@@WVhnE)#2UKv4djsEpC~ zbGz3cH-xr_k|XbZ#-39CTORNgEe4QPe!gwbe?yInB2^aqcQ};o9me0;9k9G`YcR6+ zuNH@z&}WP+=-a6NUs?NWmLrO6*~;!6dkL4rDe9TZH2m7bNz}xfNUyy0$_w zjprw6@!S9169jq700^kok0tv*XYrWU+~#;NI&nC`+gs}CdaA-O#^9%JmLx`TV!@em zuKzSZ9||l|v0QOM>OrA6>fq{2>fBEv5t5^E)kXBwh{M=3_GAB++iu~XC zh8ThQzN4}Hk8@I@9-q{-d>ZmiKIFm|?MTn$?YnuK;L*4YrQ9VGvu2?tIhfmjx{IJe z5&^x?x7W^iSS$4pNR?w3QSa?Xd1>zhZzIjvvmulaGf}dtgRcpebIEj(Z~k}I$8^A~ z7Fp?0|Lt;!iQD(Asl@U{PPYi|=L?J<3MVM>LNn!KOL`LKO8={iooJAm#8pAB$A7w5 z#Yd{=zqgm^?Z)c8T{%elQWV)brD0;L;D38m^i(^o*6S zd_ReIHt!sHF;AvgPb--H1>}&Ic1yK~{xdElym^HnERZQWVy<`_@aSmCdlDX*wzf9w z`C3llL--%Qjl)H+XLEmbPA={-+?­gqM^dL_GknvOHebQNW@&6!pD^!?>8N<$8v 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

Ebl3@EH(~4_BLKi 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 literal 0 HcmV?d00001 diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_light.png b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..289eb6e63f68b67242bb412270458f4b000ced12 GIT binary patch literal 123803 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

--o_w0wb{^s?KB@@f3Q&} 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

EpP5!7PF@soVr)TUTvBGdh)W6Lw# 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 z≫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 literal 0 HcmV?d00001 diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json index 44ac9cc..77336bb 100644 --- a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,7 +1,31 @@ { "images" : [ { - "filename" : "appstore.png", + "filename" : "BuddiesLogo_light.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "BuddiesLogo_dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "BuddiesLogo_tinted.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/appstore.png b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/appstore.png deleted file mode 100644 index 0ee88e28d5236bd73ca1ec15fa5561873b07cd04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246463 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⪚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 z�Pzv+yM-i3P$&0-2o+WVgCW_C^W{jt751nH0yRoi3Apx;@c_ZFc`RA7-lS`JGz? z0W_W^GD3PH;(N>aF+#IKu3u^dAZxLQUK`4ay}|UF3tMDZ)Tv^(f!?BljYhk z3bvARXqZuHI5%(Ak0xGC7I?5k?x?*l?_oFD_vI+Xs>DNPQt^eGURm)oZ^;omXFzE( zgcqL*b$BaCAqpr+cyh4d#sqJ~riGlya*UVFPm}Z>Zaj;NcXA&r4*s6&T(sFa3tp_= zuH8GGfevm27imk-JBMNP$`RkEaTclzp_bz#l+GZz@a|4FI$ec5`^D%tVA(2V2Wdgs zV>;pYLnho7q%dY6L@;)6$hl&n2ej$Q1A`N%ez$ux{g2Uzsl;&2{LavB3Ra!?eWIo}Nmhk39|y%9lpT&OoDj2O4J$(PeC^0YvD3le zUoA-1*%^h9oV?GwP3WX7fCq}SE6IN=Wey)4w0hiT<|!EQ;u$|&?j9^uQdm3uH6Nj} zaS}ny;RJp36K6I^`i$a)FXrOH-3%=ph>xExMsfP(X8$6F5F2^M$;6f94)U&ukKc?D z3vhS&psCfA-FMtrRWC+U0#@MbZ`@l~;L-L1Gwi@Uo!6ewD}xNCu%_Z#EpZ~mQeva{D*b3PNUezgIrTo|Y?&wsYj zjP}6>j$JI5QSfdnINQgFo!F2CJxG2w@o^JWso6#^g;djTPE&~b z3%SI%rl;PsXxw36z~S+~OpCq=6|SbS;P+$)(rdiOg2LekBcL1asHOvqwKe~i3h6*? zfLJd9Yb{O>e@kYKSRs_|9~fgc)Fep<_|eq9t5%~ z^+wE}5wXrsou60c?!$>(z$BQmNPRc%wPj?M5MC2dd}OSId?EZqtCFOI*s3|!%{nD? zZ0mraPCXs)X5#vaE;~BaYXXDhOed?(5XDTaBo$!i?KP|@^H8I0x>`oLC*TurLBxGG z?B%XTXxX85XSGS`Ek;~*Cm2X1jiz@Oci$b{0`7HIX6j^UL{4W2B2bX14)$=|Y-vFN ziO%}Dj3wrt>^HJ3@@d#2MiGPTTc~q>(IbJUT~2W;M`_JsTvhmHo4fH1g97OX`2b`6 z{^Ywa;ZuM6o)Ixko~G92;D48^aB%eCG{5)+^4Gu4`Y^~-LjLsfF))Plk0^>f(#U-) zOXADZ__}R0dI|D}QmZ>wpwyU8W{T$(?(X0d0`i`@exaPgrJ=q&-&-{7=`>o8%Hl%A z;$^$klRtEr!;Xh)ty+-Bx*H*Bm>NECB*48Mp!QH_Bjl}t`N{nChc>`g2%f5E#rDHc zwQ#Vgii_4D;7KZZJ4(s=E7w~tjSD<5ZV|ng^mJ#dbe?K@-;@?aOB$sEw_Jq&&y7Qw=bfZyip1PWu?_3uPNk~{77j5N*(%cZbR-~+~_lLcE zvwA29kUZ%x;^wCOr$x23HNDP`&|k=V;s=R=%)xXinqyY)RhprxBUabh8ijB{#mHH( zBx2R{t3WJa(+Q+x9V14gf93>-N8pFDSND@3woz&(k%UEC2+|@j2s9{peG= zTj+Ac#=p|;ekwklBb<B6yCMf$cBs@Wr)*(4E0#8b+H6TizDnZw> z@9^;%84=2bQh#6$EF&l#FiV9ya^tHm>x3<7$eRsGgl;`7I&RXm z@t;v_U z(fstwu^e#=ol9dO(B2PA#?!^FmN#=yz>V-63P?8y^}Y3C&+`u*stL<@^uh0l?o<2w ze|mRgv|Nsu8>HaKaQ?ne_R5uA1J-h#n4=~d7qI`3RCWD{Gx{sC)>sw<>+^;Ve4y38 zM*&dfu$Zmm3McIj%mjCE?VyyLt;OIEtLAYK6VDxt1_zO$@BK78{`TjbVQBoz%AS?(x__T<}v=U|2}PYF<0EB&qR>OdS3c9OCTNz8{D+ zKxt0SJRYL4VhTV;`tm0*Xdx15_{9CkEK5b*b2k0$^@rIfZ&*3C;1Af7F7*f}JR4?w zb3MjCU^N`O(_40X1-a5CnToUPr<<2Me36DLQ9gFw-uT^kDW>A`V8z31Adf-G7^_A( zI?)%tIJ)feDs=PuTC93S%cDPL;&&@a^^(Xi`&JNo@c4G)fhlwWn1_cMeOpW*0Ffo% zdg5RN3@|br0n4c7kvzk8h@=<*$Fj&3D&qIFrp!o8ohkcQrnX0(MJXBn0=5J-x!fK+ z@k$GV@1eGXPk2@okT9{`ks0A6#02Ca$LGX#>j&#r!YNh>#5kzdb%H?bcY%O!f7LyI zn9&UJL`sw_PJ-gs(CM9es$36sFrlwMos@A?+sXoaUq*;dw*F$_%*t6A~ILpW)hu?C%|3Wk0_129(A56U&Xs>v3d*S}d6*g$9b>CCa~hPEm8`B-5P3^+(A;C2$;aC6g#6HdKRGNI?h zPA4Qp=5jD4dA`xP!gpT88DqwqI2ULfXv~KUuK1zbinHGCk(PYhKLF4Jg=%6Bwc8b9 z|0xYy+#~R3Q7Alz4_tcWMI5RYiaA#_<5Cj4V8?}~Ay#cy51wGm5@~$^Xff@+E1&P11XJY{Qe$XY`h%h^vztoI3=cDJ`LZ);wUI3aOj>Pu!K5({ z4JLwUiJx>NU#78^E^jYh>eCgjBP0Brl7IU_q>@WZ2#+$o9Y4{ehNT-k5M z;P{Prq>svN7i};>vFBKpY7)?5NG4n=U0-*(4*S<^G9etj6|bDFu?(DB>yuTeL{ABV zyHH-`CDP^5;H9^Zy7Bifj`}xmJpVNdLmUwkP`{bv`ZzkeyLUyx zZ3%@Ta8cy5c+C>Ho_qw9o~=LVkX)=fbPvL4R=_- z9t5^Nn9>^V)5eQ=nm4eQlO0|-ZIA!%P0$up$5yNo-Q9mO@XyG5R17|QKJefxZ-10L zj*$oQ%&e&AiWseLXspeRk+<8uNJqN`rCN06{!}Tm`iB|*o}t?w4;R@*$uF$N)DRt( zaZ!4vrzL}c$#lSiuP~0D8eY5#IYS?7vl^gF!&jGP;bHRQrs2cIpAessw7~Sl6Un{i zNcb^pVCCZ2hLOo|Y)TIN7T$%aF<9S*Ts^&8-xsMTyS{R%j2MQWeq@{w&E7%K6Gj8E zmrm2>xyMudcZnW9gy>GDwFpstwFJ%(zuVOhX%iR1MOffH(*=M$-=6h?)kLMOn32JTmFl>JYy# z5Xw#an+*fB7>!Pe1s^hbc1o(=M8+DQ6G$E_1|bgg>oEbKVd$)Tr;#Xbx{W%u7YkOt zju%L=`eV>u({GJrg&7~~1Pl51_6ntc96c21*+>w@pxrXZ9wsIqe`eEg{uhyb@i@Da zUgsvr`GXh9?1c#XB^R$MjTM;sk8TeS<+%hCNiv`D%AnKRjUa@Tsbufi)fH!Te0ti# z`k9fD@g!c)8YAO!X!IU^Wsv3SUf1+u>H*cE@x1-B@1cah4o5+kGb! zbpoBPHo~RArBu*R5uV#%6%5m7o6HLEf;0A4)4&}Y%V28Uy^S+hqnoRw^ZerpyQ&8^}l3|FGRaN6dS62xl1I^I?{^s!X>szi) zKM3cBJhdqS2&>ku`Ix(u;XgOkY1+A}%Nh?@OImd|zI*+2hDV6}E6guUmsJU{KN@;_ z;axw3mR_nd3>g^3VR1!I!hj45ye?4iS$< z31`-$-ojQelY>+XAUX;7@EMa z<0#Q^TiJcNz7@*I4o*1cH6CAa*+%9iNCm8+`Cbo-CSYOOVaOnEDRWg|K+HfdFE4%+ z;H}wS7nHXJTXZtE%n?93woybX{kJr!%dvM z)9!nFCMY6N=Ja7b85#B_E}heX%+N^CDONksbIJH7UNdTc%XFREd%@2aIr8PrTXR&( z;|%@!!I;HG6lX~}F(Hv_R+-?gnzkpFI*0Ax9*G+OqDc?6*>hmp3#2)O*F*fGlzo+~b`| z0(ql3Yb_e_tKbnkUbwdl-Fh7k&s*;*{uGp$UO=hV@rbxA)7C%!GW`suC+SW;pH9n$ zfUDh6&;1Mw*oJ%enhF3URg)?=3B&lTpuif-*m0LtUY;985|JSW-5V(?Md z`au64N2aERR279o*t-8E)}|e<5VkvIcUUGNP`ZZq0&w6aU=|F+S&jruIdF|oJMJgK z?4CB)`qlS@tM%<6?<^Hu1%qWmEJ#93WIh;_AVxW^#*{jwPHh>j5ggwleO1sX8C5X#xShjx13Hwtvl0 zU-^76s!un<=KrR_w(2Ia0bT^Gt&53uglUVBsmjU^ZJ%rwFwhg=ujDp0Gy@MeqXh2_ z36w9uKvtYd?CXA6SD!5ObUq*x+w7v(hNxsdy<9pp0++tPda*);4efJm&)@mdgyiIJ z(a~ty-P(~T+#;6)xKvV75)$7)pb_uI0`pJUbHqVv(8Ah14=W{E=zrm;n|VXAY0rje z6sfLBN&HCR86@z`r;+Kiyosw#acaVxRt8`=+Cb!O3NW99`&#}(1R}|whE?1F}R#7vP zv-%z$t4@ubw^-+oZwKYf(433H2S8M=BbU5p!w$v$MMQ*s(W*~ZP?yQsiO}SB6&F6& zdVWfiRQ&$LwtPwi!$Z$!@`QG8yyPdK-UiGUyGCnuQj}+8Y^%IQ{RH?eH|oemmIo;! zVnXcge`-n|e8yAI_&@5I~!So}{l$rnG#*Ko$bDYp2Lfky%bs7XSNraxtU zrUjv9N)K&0C8a%t;+>Ybj-nIJUtB!N^EsVnl7bnW6q~!C{Levv|Bz;|11^R@-V8TA z-y)=`KlWz)u+EhDDqCSl32POBI%{EPox=|^27$K{T_+nuk+&>(*3CNKyrx|R0QArK za(nr(;P(^?ds(mdcG##$%u^?0fBYp*Z!;lu&+Z0y&h}6b6i7#y*(c4R#VNnBXt@3$ ziF<2O6!$d*Jdb$p_c&c+yJX@OJKyMck+iewejCaoWIKNoILLi+p!!mf@LvI9t7>b})0GOzv2yX3gc7G3ekSo_~lGXIbTEEK`rdhyeD?}Nz zxrv=GmvI(>!U^FIwp zykE0a>LTN8fQeZnj>X7>f>z>tLL{@ zS;=QbSwlN}I`!N`qb9L@3a4{zYK~l)xCOFZp|MnXF1FmMZs!v-?(LJI4=sE}#lYYdfX z^%N3p_0R6bz-pp03WPso(K(xlTLnRNdIdU`L`XVu`VyGL{L}v53t-h$Kj&{| zClu+mXe(I>KkUS~sr-vo*0nS1>68_lug)7w-wYu~4Ip zASk<&rj1Z>zSK_sH7=M_bwBBCf5u=RqQFH+Htet#C?$?w-st{l9R?l`64B@WJnt}Q zZQGf?Z~hXVox>O?+__jBI|usQ9|;)xR^iz#k2(Mk?$J`Z(iRFI`pVV8byf)gaOw^h zU`ofX$A*+Dm>k`$wbLKyU)jD$ zrjTuFBVri+KJy!?(*njwWj4CCDOHN|@!tN8FbvKKq;xgZgITFm1Jh(iDrhu5RG_k( zjp5PBS#Xoc&V|_e%Qh81!T`mHu-cz1WMKd&h2p5?MhAb_^O@j6ner!IUUh^5Er>k< zpUWNd_RfwrNru|F5-S2tsAa9$=BuznFNTh&1RPO$Qn=!QQBza&j$A=>s z=$0MTNUkSm#-QKW3_wzCK7~r5BK7G0pyz99_o&}rNtZ?A!74cEi>X(*n%}n3XNt4Nj0~EbSzTrQMg@H!!x`%f>2v!k z1;&*G2+)DID^|_8WQX!Y&ABnjb9$uT3Cw0N9%5LC?ee>+FZ^inRoxgsp5GVQxYkz2iyBq?f-l2L}gX4&5)Q zj5)Z4V*hh;;MGE@3>On64}UoT7OaicBi>Tzq;uQQ)!?{(s}H4@%(kRjn5df!SQmXT zoGZV)4Mg=ccM+&NH4cce7giBTQVJ&d8oD5^22I%0_i4aJicf=cb7di-^o7f`z6Hu0 zUtD?h7V@?XPI{U_ceGbp98M8VXgaB7w37{?Olg2dsTfKDj{#w1C!DqXUA-&F1%5#z zn?VG*6|wzH^{!sZ_y>m5g)aqr-sCyfT9`Y>3*u%0qSc5yV|&JUaymeOX~UC5y^h~2 zHJ#mhU_Wu%%6JN6Y$O@}-B@xbq>v+?$;zIh>u?1gbFre=mN9HXgnkw^Up%e&L(S_1 zztnSD5%zNatf6tgw`aQ<7lCA(_8CJ8)aP$;8cktss<}TIxJO;$HW> zCGmFui=89!=^eet@#6`hrlqm%kGd@rw^~l0aW%8iHFn{J1e|+`pIPcIAKJ64G13D*}u!22Vkd@a-%*bHyG@7wXz1L&xA3^Aq4cR-LdBn=^DZ};QYkwknyeTFCOErp>U zFBX-?`@OII`DdS0`2~f0KQaa-mPKEONTZR5w+dd3;p5?p`Dj>^|5qZZ>2G7ABYHm} zMv&HfpFoP9pkzFuS}VjkXXpH1RyuEI%URJDff+-b@ld?pSweCngHm{s9BC zjSFfTd@M9_Q%;_RtmYSwl@znKs38HWso?{U3L7*i6HH*(jS;3&`dmD1_n2^bUtJiH40?K*N7R0uX- z#P{PSLs`4uBG%KYJ;`XU*Q{lI=};27IS^Nz(Xo*ad$>39 zzmIwic-FAleF5P>M_no#W9N9Omka$UKQXs_;f0ZqVDmpmtMAu{E7>tznqkp?+g?AL zq}rs_U+4FciD^=^Y4}p(a^*b28BBqc{S>$*j!0c)!pp33LzL7fT zJ()F+O~23dSY>%r&D9fu5JF?FXksn|*uM=g%*IY!lV1e?FowdkliUaTIpI1%I!l1b zD$FW*Up3vw4P}QDIl_xcRS!zAa1noBKtx3;#D;0<-Zt~LWU{+Ia_AjOisvKL%Rz;jYX#86p!AK5f^$Zp^zb{Ri>1F88kOehO3h8oAWw?yZbXL?0Dyv% z*W-0_*#&TZA_!%!*LHf9Y!a4SKGpa@;jn-;pY>5JPoEz3NL1cM^T}-O_JFDAVE>Ew zi$&O{Qe5GRp+9jHdg-5ZaSn3X;Q7mTbume}k-A^*vPM48*n4nK&D5}0={KT8L_~PAqWrg?i|Z)3dEu=LC<+!at-}giqm!%gc8#_5KbEO~ z2^simWTkpm*`KOpI~4uq@BS_lEHFJyCbIvNO#awuc7&?=#5wAw$*KBEG-C#|!05a;YAmWD%P|SM*Q}>CV5$YulGy z-AGQ@9Hc)uw|H_(XW>_b6A_&UkZ1m$To0zw z0~B*Ky|asC6!h51Cih9F0QgN0=+h-~mTWJ7McjxPf`xu-J5uJh6F(YlT;k0hFlT-7 z_NFT0$k%w!A%qujcNEKB7?>@OPX*}+frZ2_Z6B+14)>(P{KP*$GaJM#9!#|xV4&<7 zxK`GWgs%s}ueWdKfW4I83^p4HVOkPm*!)WZUOmUGXcjt0@4NKXR&oK22xjGtx0s*O8tj zc4R;IWK_|i(>;E%z<;jR9nCvvCFgBHx?!u0*EG0Pkix#M=c9te?x|~LfIV6k@zJ3U zyYM5inizH@gJGba=TBb#zBq@K*y%fRSPsUJ7EaQEm2g`;xVBi)LEmZXJfxcw)CzctXa`66+?*OPTPY^mTS?anUaw(V$DARyADSmoc)ix*zJQB%Qv zT}m`aUum-duahxtZ49L2T#=1|R;`XJfr+|!?C_X)At4Ev`uFhu7L7uy899TX^6QK8 zfYg*I8HO6##jxOyOs-i`6^CDuj+D;ZWy+(?=UvaSv+a8*pbIi@(SU$xzZ>O_%OTPb zjI!_7bE8AtB6Dz_r;SVT*{3BK&m>4a#OOvwMi0}ax!XCt!AA8fc}vHVYo{`rk?^MW zuxrh}2W6kjwg2$65Fe?r7Xw{YHn}f@@hLVEm^XO$ zuO27oU?8%XnAS$SAa3BU+@hd+7e!_|2=Lj^@>QF<_)ULY!`MS7boCLJ|LH^Tj9;B> zw$x<7o6i|BRO(ND9Ts}N&X`1$&BZtlS+}#g>yfD6NjRD$J|;z#CTeb@-DK=1S3bO* zPb1j^IOWGP`EW3l(g&Mb0Spk<%fHv>b42C2QDBM-cc$$Gk+{1c3>Y!QO~`-`ed}Zs zi5?jE&*je!+Xf+kX1p29Kz>fNDI96bAXY+V)QzD(n_W`%kHa)BirQm@vT!qhb}%?B zDM^ELvsCf6?loM@@uQa~^$y=wovON$F^3@6jw-M95$`-}-GoS^#*^^C_GG>ANUWAw zcTlGrGy-3!6gE7~^-QZY9R9122SyyMHc3@`1uFHvje!b?u9Jp3{&XWg%-~@K;g}Mp z_1~{WTk^9#-P>yfW7&xENzl5D=UF(4_GDv&Foe5yB}G(`tpxJJPk z3N;l7;07$e94_`EFYBVeDaS-$Fqj?7@ZZBF8aVF}_9%;MTjwgHnW>N*Z6AnJDN74q z?h$L~$0sv!+VSP#Jd3sAg;sefw7qx_KT|=rrIhsxHG;<|-({&j*ooI0%97^VI1h>;F6GDa>~6$mRrS~37ULC9c7 z8x6)EuCRzLbZ+IeL~|B(X4^4u`bu5PMS*1YV?x+T{dxlK#8GHy$o8~|Fg9z_KPmwl z7CtYO`=4K4OH&iWHA<2Z!xke+u(2QVWu>`)U}@}kyk()sNzWK~?cx8YQNX0!U)V$T`n8^y&xB@?LxrF&l@k*OjEpRUzZScYi&!aLFyEUu&fv40S$=! zmlb5#;lbI!^2BcbjruIQ@As(}24c=e6Y3kRqTO2**B0LDn{g*>T$-|KHu*ex^iZW| z13qeCUZzI$xM;O&=WyBdzvs&5D>G){|N0f@`6mHcH2RBoeq?TL0kRUpF%tkn9PRN^ zd{c9O+p~W z8_!FQTe@*RLgw|=6PARDuFB}afY1anNWTA;LZUgbl0_(4%-p;Kb_5 z8!UZh-3s|()nbjC7uv&w_j&#BRDRCc?mgN=z5}{Mx+|Jx!ak~JOC?d6H~VYC!oIE(rFyNGe~;pxt{dM>Kw?t}Zj zw<)G!d+GjM!W}vHpB_X^#w6P2ezn&j{ek-_AO66SDp-352etP(6LQM?e;5Fe4Ee(| z=zJHw-Fn3R-I->*VZw=bz5U@%fm7?n=g!}r)#@(k4La5D1AQ@XUR`)ni;Md7sy}x~ zQSwB-uCfrUE#*;kS#D;Mdp9sO79C(vCirQ9w;|I5;8S13h}hHXm827rmL<8B!Rs_KR_{ZD4$byJ5pnm9 zL27YIz#hHkHF6;PjDLoYL>hTU$wJJML^W5C#dxBv6J z;y%->k3}Y6nuuRLO-+0eR17>#Q$j~=bBD%`IVDc$jJ7e}cN1U(wq_h2bwT0-gx>{X zl#f65>gMI?pLwKxLzuDRu35F?6R>5s4grsE7b}AJx^rX(^@mnoUH)+uH%fpl+{U z9qqNkt+G@(Ox}3*(`9BoNqV5xVh_au^17q9x+H+furA@`;PX6^!+?^lVb#_xlSJb# z$!AmQ7AE|E+#rHmd5B61gf9Yv;YqVOoy(~;&+Zrbkn%Z5juJBKXWX8nWeeEY2*6VP zXdBpT3Q9r2tFKi9WT6Xx!7O({{C4;Sb954Np;5?>TecbInm45fuL7wSMQbGWwJ7!H~ONzEc^z=?LAs}E$=@8 zYpudVi{-SJ>yb;sIJz(sCCpDA^n=1-zE)2?L5+hRc)VlD@!bbX^Z+3Q zQb_=f3SWI}4e>Wt$6HUesSM$q>sl#)#MIhmyh`^E2 zDvBx#Du{Ruwgx@FKMv8eyPk>}pe*m0A0^ZuS1Sdeq*nL+V;ze2pUlb7x79khYYd9e zDNCr{u0_x(e>-{oYV%;(@5Ovgo8{(V(y#f4iMb{@`|#>}{(*;8dUCMzUt9gM$KW;x7St8aS2lTQZn;JMkLjzw!Pwv-|M&`9{I%1!>`Fv`5BJ5iL14e;6ayUClZJnYbHxlNp zz=z~%pY7D_hr_LRyav6WfTRX%^u@$nCIMP@hY475x$W-XL>~=g%%H|uDzGWSu7dO} zzM$rqttkIEu~^B5XQN#9>k$9L+#Z^$W@T-SEaFXE+^uE9PUse<@;g0NW*OnA-f<1F z!uiO|9jSZMzZj2?M9ST)B6ewDSdu(FHYfV#qSYny35Ixaf`zGf9xiu8RGVVSlz;xD zBqR)j^(*83*EadNYRbHsD_?-0`|LzD*%xN#N$0Y_sOMPG|JfJST>n*>4zS{Xv`|hY z?9B}a{2V97xaT5>%Jg>jfdGrleODOfy0a0{U-u;-p(>x ztlc5!Ay|AIKyf)8-_|#roK4?^2oNW>s#P83tHp;Jl^#~Y{f6qG=VNtKGyn)*2sxGz zV`T3e6E%syVgQ`_XLy5^y2RL|CIEkb1BGaD(e{SAP5!Jkv5CsWX|GlyFX@>~StOfa zgA{x)GN>a91@bDEx)@3jl}f$$nvxmTgkjb6Fu&D}oixq==dO%;We#43n z$V;Z%Q#KI4{mr5sYL_;L?^>PQ#C&EZ^b`9AYkW#mZEPt&-dkj%0u#43ZvM_= z%b6O3K7l{yPqoaT_^}ZV6htBxf&R@v;xHjx#zuzTX zo*w7wWs6K2@M0(Y1`guxtV)$wRttu&dg`-6oB)Ebs1&*z&%&=dEU=tgkkQGrl2t<_ z1w?ES0cB%G`)|f+JG;dJ1rZ2jh_B5S#m#6-fa-s^LjDPNn;2;?27{ZW;PXfR|Aw~xK$ z+e{k+Y=ct$wdd-Edztq&2!KBGuo}F~rc44r1Z;yE9*R`C+lE5lZT>OUyG!Hze=mTs zZ;rh#Ce^s{@Up1lP8t_~6;t3kTqDp+dmuJN?x9YaX8=qZZ{ZPmvU4fL5YB`7)Ps@!T)O-?c5xm?Y}7$4&h%huz6d#g?Qi%s|wAa}+6%->XjuF5>zi-?dULTf??f zM+2Ir*xcc4&sX>q$jP;FyoO<7vt+8?o9ylbGynIT+TBzeTo7t^^#@|xeEid#j3;HJ zuGFbQR8Nz}_dR`~0o%O6RwuDi;*G_?qExnLdx49n!4=*WA^4ET{+0yY7MAqfEFj*n z-$>_w^~OAS*_`nFUXqiMF=~0EM&7eTy&$Q6l*MBc3TswI_ItiF+d_CD4TRgU)%8sH zhH@~K9rY!Nj^hQsu5(S6ePhag?G8*W{Q9utd3w9_$AXiC>I=+HW+A+{X=W8jT~_1w z;;Ti_1-HIw>{x9pH|T>{P6B->GS#dM0Q7PBM8e5etik<$(htXz8k zaT6^?$_N<#=ud6rC_qT79x=eCCs>d;y6d(jJ@NQuF%6c=>Z|)Fn46d#C57rQCL&oa zQDvtS`ELC(Z3a&NJpEze=9b#PEVA$G#@KYFu*&8#W zMY7Y9mH@8K=CXUa|@R6XDNi{iv#?1@5Q6(V+SKO#i*oIz3*- zm=lyDD81%``IY83TD~|d8dh@vEq)lI;(6><>thw~&pjV$L})d>Isl2s>SEkL^WvfH zy2a4F?sLb21&si%B@YwW8a#1~9d~w_KXRW+MU|}triTTGjJ%&n%lbbM4s`puNk?(n zKbg<+N8I&Ehs7Chx5>|BMb|`Vk;LBx>KBW{`iQ*N1qwB78<%CX(oCxkbLK|VMY-fs45qoo|3^>0);s}1ruH<&8CZYw8cWLsfgdV+;6 zDKd3=ubU$mYhN}xytoR>bA`O-4lIxGh_{OGsHv&{Yu^1Ys#T_xAHT;0o z_y@L-^_v>{=wk`9Wdg}zfjBsIkuvqlROXYjMZy?om)s_3ydS)ms!xwqW1r>ByFXDc zd=Bn16>v%)7NEJ_LxnnJ5rKpHqk$F>KIE=)t%cj2PQuHfpRT+7z_58eT>Y_q1zd2Z zCiiyM*<~5Ixp>oLdpY2@#*2~fE{jKa&j(j9Ba8l3*CX*$7GvF&xj+`TSUxx=fXzU)RM977 z{0sxB)%%{EoY>~#!0!q+TcY%T!W8~yHD8hs8@1(%V#|&;Y%$u&VOBdtObS!msQ1#b zYaCRN*&{T)HdiC&uz>*y?dA0>o1bf|VJutD)DF%c`8e6$&*b&TO9uRD=JG0t8b}Oj zv6cx}2(e;eGS*G9G+ia9q96Gh(-lFNjX=;2_tw16-6fJbIfoOT$mX`gh&W9bY9v!> zNrZxT&?ye2$A)CVKLz6EpI^rN97WPWj9lFnhw#@rUEx`^f1r`!;8M-m@YL+>naCUy zcyiRf3s?U;sRo!E$*W)c2J^13WW=V*45KwwR?+IK&16$vF5{4S2M<-TR($O_;}DZ2n$w zQ6kKXHb#%mPuCzl`=N>oGqgyAZ%nf0;~};3MsDEXLZMJtog3VF_nXMLa%uN<0&%a8B{x`j}!)B7` z)Avt4)nprz92Ik4yc(g8!A>=AjrcT5_s5sxp0+RWrn2wAJrKZCF4Sld?o#hfpe4~R zq!(2H;QJ$k0xAoE842DKdl9vtG4tw8T!&Kt3ZXV?NOLF;9X3KwG~eDW?cd~(bo@qN z&w4%Qvcw^2)dq0B=J;%TnUw>Q3AS-Aa^DYMNL-m8y6PyqC6ByYK!!*LV;H#ojb@!q zsg6SO;obdgL=6JYT}>W#+0w@9b`{hB2G(qu*t40_218?lpWl_Mz^~+H4}SNzdQySu zaa!m-N2r9ex21zKj~NnvRw>SW9w%lu9F#hpBwc4S2sCHgEFaT{SzwV45dmksY1`ij zFd{;js?bE{ci+O8`8W`QckQS=v0t|nMCiWe_Fb>zg|-zWQk)kxMdlcLzX-3NmkD+rS%Zihax5k{?f zlfjnhk!}V5+Tt)NdXq?-AwL$G(4Z>IHCky%AT$Xd3fGSnh=};dIOYBWq8fzG*R$IP zoALII{k?VMgI3W`)hc4rQ+lg3(dDZ1r#GI;olQktJ8F+`h#3E+uc~abtJM*R{5*OFh=vJ z&!z!uqIKq;91{+92Pr86;ROMP>+5Gb+YnQUm)f}3tt zZ}e~I$HVI~a`RE^fTcTfsHgNxGR5y+!w**jCMa4H2*|C#LCYB)ug$BlM(?Hs~ z7jeE}2t_B4goW#$nP;5q{WR3b;+HW@DE#om0s~>_h2My(ty4P$HRoCg#~o>Z8gvX7 ztT-(0y*e7+!+BxgjN%f4sigSHKY<#UI+nRXNjihn!`p`Z!yEQ^r}y*L2^P(NR&FgW zHVd^WzQE^Q!>Pj~EdnV$A_sdiu}A6zI?@!R8%J5p)9EGxOT^j(DnQ9Qt^kBk<*{rk z!~dh{EaReTzpsC0VCe1!5s)tF9J)gqR3s#&K~iAoZV&`%knRTQZjeSAlx|U)=iI;N z^M5z5=EXH<_Sx53Yk&9S@JzGgoQPnZmMjS{)8izBPfHXIzTWdvQop1iOHX^99-6;6 zTl`kR{kohzo|&I*;O8ksVDb5bUQF=h>}Yk%0ipCgM22n-RhM zg$v!q4CgO$1<9yQ$nxyJHFN{Js0JU9Zu7hqKRmrBL4)~yND=&WxJ5^-D;BWWKWAGZj-;1>rvT9GgC0oh9m9y4U^Eysn* zO#PC5F=EsHNMbwHR4&r*QLzGSlAE!E=0f-S~trGbVbWQIJR(M*>ijz~#~eX^)!e7~Vak)?L=H4IG(T>}QyxF^&DWoJ;{ z0nqZrrP&i6%jP%Ywpla}uky0WSbS$cCxxMNq;DOQ#F(;QfAiVi&#_AWgd(smsc#Nq z58(Ouy1?|d&ub<@26tSDa?1UE^>=+ihS0D_NgsU(?c8}q=M^*lO5kgPH&H6p8xAlG zj(Sby5DZ--Tg~oV_1C3}&K{WREGGnF>UJJ=w`*Tkm9!rN>=N7lIV6g9rb<=~r+j(o zdYXBedHSgcept9G<8wIOduJ4)oXv-Z*|6u&7G>`>kOO<Pk zQQ8SaKDK%kp6eh|4@d?TD%jw;I=tt?EMFyy`KpVU;6I%i>Sfjt(!0lN-K6nlmyAv# z&+s!B9Hax6pczvvp8@4PzO?m5eiWS&2A1ALG8~;Ho6}4mvRWTWv&1B7b_A67UDmQ1 z7*flT?@spx-I$MGv=S%kik2h(sh|KZJThM~{GRh;^ZUPph`J)LW{-Z3;v|WbVYz+B zK?f+@{*~p)l&{^Bd}7A8_^`Qz>G`Y6v{;wbbl*mqkzM|IXz2Vvp58dV4!qm|C>04H_MN-tp-1LmL$0p%Nkm(>FqeXgp~chfT6IUFuDD+kA>w)hKx6Qa^d?PQ*0ip9w68ojbAOF9WY*r(97@RvNAhc z4!BbkSXxO$flmabVtBUuIjerqCTF3^L+Y}ZgAhtqV0dWpa(mC{9>wCb5W`DMY|xHJ z@64pyB8%VlklGZW(#b_4=ld__FzcePO^yfDsuBwmceTK+AHJoJhp*Hky=ro(nS93ct`7wY5bw~A=sx$}6rk>P`r=kzC(a$seY#(R-0Nq9!ensntZ zZPnsZyk^$_K_S+3x`uG-77g>d`g?sn->2C|V&f9Z5#=;Z!tC4ZnX#RRQz~Sk$A9Z& zd`@(g?>dc{sdSbV;{||MC!p*X@!ulmpT%x#9J{w)s62(-kI3ksKmS4lOlEpKu)?+# zaiCMz9k&N;-v&24?T3h=7z0=&3C1pf$!1h_*6JZM8wM;fnyKE%ncU;YSYQ#v=|$*Y z7GJg-Gu=)RMc%Yr=dh%V)bEVDvoG<$2u#AA4O#s;#Yw^IT%Be~VtBrb4y|X4vGb=N zjr3#c*Pbt`r-MV8lyI%i^k*vuGGy z|EQPqbiZgtThPr(BtgUbRLPp2==>yHY4m;&vAuU?`RioB(pAsLenJw!(_kwUi2S7N z5V=Yn*O83{?3j8tu6Kk@l+6zVa2mURi`si~<$Bv0dK_mu#}tY4X9a2)zX&Q~Izl8q z2ukg4$6%Fp_4r%9v`uD@+*Ll=oZA{s*~8ZPQ?xPE|{~92v8oP78-s3^FxK5G2pR{dmnPU8))nh=D*kbyAi@61jp38CU`RhnJ|Q)gy>gly6VfIt#+-ve|o zXE$f3mbsT$dRQW&?uO6{#)V$IeflU2nLKWVMP+Istz@Vxt-JEdF-j8uZmb9&qUb+| zJAR&!prDTbj8*0QGS@-fn-}A+|HKo^1}=Q9ZITUXOxPDk`)grih+AX>E2FB7ceLXQ zo@%IB#)PM(<+f@j|C7AF>>@bm!%wt2tNfdwl}ttE;PCGeQJN~?aN6L{MOX)_vk zi3qmlV~rfK9@je}o5CDd#`j(Mg2CK}Ep|k)B2`Fz3bxlV`bDayUI*-~Oz~=kRJ?J@ z+K&&l7Nb)gzCK`-Bm5x#0s|8z2;$g&MS}F)v$LQ+rtM_>2RItk7^`S~0g{EK_kR?w zeiXfFt%bSRKorJ?>u*rg1U_M>WdaEGnAE0s{dt$efxa5G?$Ka0_PiEMIGWB%+a4@F;Tz`rMJnFJ4fg)NHvJC_e z)8zh9=6Zijcu}#SHhj|GFLV;fauc`ounr*>0+2E^WP3cwoMAIQBCX*wA?zJZtjZ1)|!0yQtgFq+)6OpfroF&EV% zMMHrds;Sk>yE11~eh}L6Yiu%GGF#4>Me8jY9H77yF67GsM}KRnuD1H4qD+^^e4Ji& zH8%@=ruD!5V>6(cBSAd>ZD!x#DhQ<5Y>aYs$~M@}@h&70;b->PT6w+kszdymLLu|d z#!17fX3;5UU!SLpAZxnBF$K5F`=bZDm10fohuABqRk4A;3y~fDH#Fv5Ha#>#Ae&yZ8JM|9d#b- zf8yvN|3>T_z};kvrLZ+?%{bW49U{ch?rZRL&!~pLA`$%=34kklR%~?(NfvWy%UC3{ zn>t=DmYtI#KcRh9SM3`*_Hh!}haBw`V-S@v*=19$(b3Z0&s2eUj~nH`oA}e;V{u#S zc;V90&@8XtTrwgU;Aic5tJvD#L-u}Hrk$R>yC}QJ-L1IKi4^S&+ z+wSe<)osm}2jV`k3^1^S9A3cD3{ARvPGo< zio6CZ`6(MCa7ElMyU>4qH=1EhC`Wqm{V62Yk(eTA^l}4k=i3feW=up!M15yLq;|IW zG*Q(owt3*%ju>dm%ON6Aakkt1C%P*2c!0ikjX<4Hu*{@$Bf{%FW)&RcwIOLerZW{-itA7Azx z*1=qVHok{4iZpD?a4{`DTMUX1!*s4`th1U7JZOE_;sS2l6_TODP5slXEp*jkP-AA$ z>c-OQe#~m*_srvuO;DZlwmcRYH^K%&MDndapD80%((XqAIthnSFxYX7&>;rJ$>pkK z8b$R@uFd$4Zi(Q9mKHaG4-M9TFKwt|1TB9bVcL*0@j9Z~qIzwP?Qt_uvPXMuM8xR! zYqKUKnhx+O!-TSX_OA5=eI(xFCXL7PGz6V}+#TUgSDKN_JFV7&wee6Nv>tEpU-&Wy zjt;Q{yJm&$i$T#?!If{~((3u7Qn@Qc%euq=f=#N@paApfHd5q($}94~0VS137cGpe zl{(zP)0GrM!0W4h7POi&n*Z?bg9Uz<*y72i zcDReh%P;swwL%kE2cyNtW(rSU+0AF`n~OrxD>bP4+CS1t6E!WKtl#KG5zE->^*7lY z<)!Im6s`Do2wseFyq$;&R46H7r;GTF|2(HU0Oamj(bBY0t9)jcsxoeeBM@XUAK38t zAODLWONNLOBaTJ_Nd5i&@2fp|Zm*6<{a%pVNk_M&oW4S^!!x{PDE^$v_hh9bYxxyv zxj~F=RoA>>@7^g|##YK`=`;^O5Ey% zoQElR&a(am%f)&4N5u>%L6+CAF8oh-lPuk%kFUOUDi`*xt*uVizmK3Nyz=+_=!BZ` z)h|*DMBr!3l|;Za(~1v>LSCRI&mM$fQ-&_pSw%7F3?8Q?CicKT7Z(>xqt?FvH$QCj z4Dkap5J!t^hB~Cyh}a{k7G1Nt6%^^o`q~8m&@b(?tacrr!>v5lrK8taJ^29~W@Oux zw7FU=`QVh$Y1<@*&L!Op(I3fni_UE1K>}-t@spt$53BqY6X^Tp)PMcBnbMjaX@b#- z=ulp1ks093&s{+0qfxc@l?y8ZiRz_6g*E6Ds`vGwr(?jS$lLk@Spy&jQ@7}DWd>Ol z=uOEJW2QWp@R^EwH?fuvw0{-W14mSL|L%5WPNoqp{06!bhd9X$^V6|_AppTW8jl2| zCTVMa7|xD{#J>aJ)_>lmB}BRsEBsjxZY@;a+Ub%=lz;NVnLpL9GVl9LJ!RdXdaY5+ zffn_c!Qq+jjP(6yv&5%aTg#n5ivGz{j7>VAWPb9iFdbsoWoJ71GF zkC;M$yPXT>^kOc2sA0iLyr0370$A6!PU*VL4Y>Yp&R_6_J+WY}MdUD62Y~%h)%#v| ziqg>%PcOuM;q;D*_#f3Rvm-xq1g@yAv`Z;D#fVgVUIGX?rQ%y1=>E{fhL|5s7=4xk z&m|J@>=PfxvLZ;Dvb*vovx%e2QDfea%^S-<2r+g3`8oPrY5#xR&NRO*qHnaq6MwVa zzrf}?BybJ%qm4Vrn`BO=tx6%b$;yCy9IN+#?GJXF(#1~ zj%e9a4vjHtJ-x?WH?d4Ax$QCW>qr4mBBN zE_V$(jg=%P&SJ%DL3V>`x;kmZ8)|s8?u+%HvKC59G4#V2ZQ!m^IBz1rh&UbmjTN?6 z@{zhK))^Kt6%<0A4{r=hBc3XW3HI7jz6Q+u8^g;(S|lCbDzZbdL~T)Rd8*W4Zsk-w0VL|(m7C7Z_k)pyaT-lDgc4(Lq9!uvV}beE+RPPdP6`&mdkHaXQ0W!3|zhz z2LJZ5Ed3O8^O(9N;p%F=d#iWVg11bw#>NgTpeMB=R0>oeOxvGmM)ID>nP$1PF&N{I3%BDRu<7aP5WR*hEt+P5t~=UK2vR0B z=&!Q2wgle@Ln#(Ca5&rIFNbPgR9qdc)w_C|8I*UvSHwL%J&TJroI6afyDCVWc-?v_ ztNt$w0AO7*b$LJLZ0lj50(d+5-N7-bXXE|Js@w*}r!kiTV;)%N3tRU|A5Chd2*Q|} z{xWuE7!Zg$NWh{?AGk^(96=YmCt)A@QI%TJagj%5m$<6KC(6rR2g)XOL=t+df% zj2Op-dhWjkKUJ(}ew%pws}PU)pDN}>m}`U*S?4JoPW)}D-g5&MdZwZG4W=dy ztOhF`*!TRl!naT1N=&c1<||&;p?x&1d^_2HfPzgC47#a#c1yK+>^`h1f|g@s_nat$OCt9D`1J~S^~TRC!c9;##N@A$=(2qb~uGT8jd^hhvRyxtFF}RZ&is`1aRZB z;i&1QCKb@^dgh?>m=TrHG|dmDah=$!)lE6a!qezfJO+a^MH9yl`Qq0-GrQcs&Un(w z^}68zNqnu*X4Tx*wq?wjv?ntrmJ*mvGXOAP4h02fM_J5Amh3>LiH}y3Mq;p_$)$Bu z-No`@n_P~uQ#=+RW-0L=pd*b+K?2YRu%Z`RNMAdwx}$w)F)U{yeans)CIUXi)&`AO zvHwmP4gW}%r9bW#O>A7r3@%2c{wl(JuO!d)GQ-(TQ<9I<@J&t`$;4>fKWAAV6&HnV8sDx!=#}>1Dsnw*5QFm3p`hkBTDv<(K6`7&eraS>w}jf1&dItOxT8 zUHDgm4VF5cq1$c*sHzVI!e9l({fEY3UZsZJm_EEW( zAXtn0=Ou5MPUNw=ElSq)F%?1ii8`{=7%JqY{pgLE(ylV|W|=wTCPPiC^e{3&EYY7s z`G7xrwG7q6oQY>Xh@oLg8jt+;L2%2>?z;(S(9Gq+Ok@w0pBXF_K3DeMUtG)j8+_x~ z!X}$)+E8PQO#9?YaY`iyEv!qA(Y*U{A2;~2s_PSG2KGmgpRK=(Q%p!kw?XCoJMD6Y z?LQ6p>iYRtTLJTt-2Cg4BN#JF6L>j$(?}opcz5WQw$=`=Z&_E$EFImb1R0{sfJTOCzfhD*d5=Lm_U!2CKXQ(1M7KV;3gS)f@m(9P(}ZFVoR z^I)p-LJS!X^uGYCTe$1XCfKoo8Pe3ELJUR7q{JN-qjIuIEXx8Wp0}8reO`~o*S&&N z3|}PN4jPX?`|r#kcvCxvhir#X&$F+@iBmZ`=Q@L8Sbl!*c^6$m^IMu1@p)dBW!P0mt&y}`g}(w*QU&$ngSfAv4$s~W;>~g# z$6-b3rr(>Ad~B?{_g|fA%CQlY<;2{3qaen*?)X!^yu(jh(7pdxbnk)GC4RQG8TNdqRWD) zR7)X6Lt~DN*?kgpT%!VsH_{;9B269GhyB;H(vf�dV{dI2XT!gcD(QR=AAFFcMn1 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 M%SaRRhePE50Xzs?wEzGB From bb33b9c3202782a7f1b0f6703764411fe641f8fe Mon Sep 17 00:00:00 2001 From: Can Berk Ulucay Date: Sat, 11 Jan 2025 14:33:19 +0300 Subject: [PATCH 126/126] Update: minor changes to app logos --- .../AppIcon.appiconset/BuddiesLogo_dark.png | Bin 132809 -> 133362 bytes .../AppIcon.appiconset/BuddiesLogo_light.png | Bin 123803 -> 124112 bytes .../AppIcon.appiconset/BuddiesLogo_tinted.png | Bin 113754 -> 113758 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_dark.png b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_dark.png index d78ca63cbf7566b57373956f8760ad4c90c01b9c..57bcc7c48c1ca2806156aa79fa8e89ca0f55148d 100644 GIT binary patch literal 133362 zcmeGEWn5I>7d8&h3q(j_G_bT^XH(%m36bV_$9-6)dM-5}l4B3+V_|1ssp&uB<49iB5tJ0)a4Pq{UT1ASmz=3PMEze)y3y z1p+_7&Z<(PpwHjQc7PLcQ!N=Y1qILx;4>-+9BTRZ1~70&0{jJmkg~xbB;Y3)_yfv@ z{O^CEplqc7`x$ZJNIufcLW=d6V^=_pR(7%G7lfe!~$334%pkw^Pk_ ze&!mJNq5km9f#KVF`&i9isG;YNm|I@(#)4>0KYT!y9 z_J=uUT^bJkcXYxGzh`F23%bHpuR#^2%|x6!mbDd6TUe$RNw%8!9`Ynw3dA2Cefji+ zB_{pziNz@UC9zDA?b{6z2rcaIfkOjv0d*I1TB85m_^<%9;Y|MF@;Rqci*sUJJ#4%@ zjKZ9E72m8{HLiU%hactJt?wZZ8B5|(f&U)sDJRNQYwB>tNel@jE`hY(MTbMEnL zZWYx?+}j*aSt5C-58{5~vP(N84U6vv6Wvh~!Y%)=6jE?3`0+Fv&$IuYd5>087tP_a z>q6J7$-dC0_7LvV5^0Kb&Dy2hHmIN=yjJ!Oo#x-QU_8`J5IM-7#ti(QM63Az$@^Mr zJ4fL}McFj^YY9`G-3&XT^8S$rjk`8RkkrWklqa1%1>FWQ@Hi$*{ilsTcoy~#-*!@0 zx(FT;;&_tmFW{4-QYPzoO{_~44*Ud4|I?Z>Em!~)0qx)apB9Py)8^MS5lo`QN?d;Oc^n$=oR(21lD6+4BZk8yZxl zb|pRY1Eu_&oJI2;g8zv|t4sw<86DbZ^FK8)`TyGQlNb9OJZ$2fq$_EZ+Hp)4@$do( zIr%G|7WaQ)z&i{Wkusno<-fa>ogfMdg&f9bX;&hx1g7@dzkkcAX16XmRsb@rSH%V%z_qNr{~PZ#Y`SaA;;vMgLkw>^q2=+=aS|(-R__gm+jzbB8@h zS06S$-(i^{mG9GFvL*a4v|hpBSRhI&Rp@^@K9kL^wazSAB6YBL`f}-c(gsbu)qQ*C zTGaY$^r59+^FP(YAij9nNbO4Li4uqbRi4F;=qS6(?d%N5NJ!M@Pr4;eVb^|Mp7HIH z%Bo28uedv_RNf<=&nVamN}^-4b#m zcl;hrzb!Y(cY!0S=l4v;=s*-P*5}jhP*B~);;d^A>A7(6r+3ZM!v6I*Ol#hD#B;*= z*oS7Ei#m-?&1FB;LR2aHw%ny0O{KgWg+sXW9NvF##im^HsD4a&WjYso@}^?S0JF=p z`>^DyjLh|?E~R4s>_3&9JUdJ(R#$c zJY(x8(P!+xF(_K1)b=xBe>?J|?xJj1FGBH2-330^HA-*?}i#nR3xBnZ_gS%d!QY+@_S{z>~f!tZC^J^#!c|$>)u3KHb$QJ-$DH+ z0JodXovHoTZ9}CDXKrnohxoB+?#**zSpu0X3|&qQ=u`|6o}P|a^QocFwa7~C`9 zB3Q5MkEdxbcQ%(3B#y1jmM;qDQcR{E2%>sBw>t9Fp*6)lA#QD^v$Ml2Z_@lzCa2Vm zYG(x1lur5qrqGYEQPPi?7oRwPxm@ZWedNCZ%

a4o3Vgp|-P;zhM~&b{iZHIhgUV2{A%5IXON62$ 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 z zK*Z8=7Wqk-x!U^o6IP3WG`J#~p#0g{6Vyi5W6e3TvKyOW#~;JdkpPQ2zrMT&5)c-b zewN-rXhGdZ&rUwk5ks=8Hr9EH~+Y^gh%2y(Xq`A z78`5)nxd;RTAmfe3KzY}{FG(idkDAJNVyjdKueryTYHK-r4xb04 zls!`Vci{Mqvz#Dgj#u(hz!psj>V5v@7oU;0HTc^PZ(Uk(8g<_PER3f_nvUVZo}^Un zP98i*3%|2$g%(H@x=_TavBOqtJWkqk=yDmF-zq7638RuUnm*GioEcVLoEV_%DI^2%+JJl-lJ_U%1l{R+l) zOiQHMx;OSit*En5S!{4l+GE}vfIN7(NWPUD5fB(3Mj-Ny+o)QiTr;OXuewC$M_y4D zz74)7!zbVI+;lG<6{({H8$5jzIkO-jFV{c=IrmczJ~~O0VR<-n9U1o@T04ciid7jf zpqyG|_nUOL(x2r&n>$^6>eid$s|%Y!7NAJa%CoZ$4loX`%KvD(3brb{VEZ08lyr9^ zT`DQv-3SQM-65R^B&3n}0%1n+9ze(GcDILs|)6Pdtw~)hvEDca3KufpR~%wiqX{IeLMXsVt=XtFGN5vXng)SC|_BDSsZIbpds_*C1z0$XiSd@k*(LX0nj;LVK z;WtA33U?1f1m9626zon2dq`j>fW*}JnNLEBOCd|ZNiW>S3UivrZmuIrCQJPkrDSb(t%kvU2wYb3Zq-}Lc_wRQ*3O>%?$?6 z>DTv2;eCt-xR*tYOSIC7pc~TW^-O-y<0}WNboZm_Z4XM8UFZsT&V9O@zf!^@Z|Ngs z1x6QvZ%#rR3p5X>uaJ?IEb;p9rpx3uv#T~pfE4lI3%c|`cEOWN9taCm2#F{ zy$Yv(v_2vFM|4!^6!qPcaEb~G6Zd#iH8#(Q+W$Q~#ESju>usv9PQ_Q(^OKUH*NG2P zXyG2=48Cw{o}4`5YFdNPP3X|i9=yBqB(xoC3y-V$xx$0?WoRr1Xv+&Ll5^SgMf6rG zT`#vrHfSeEaC7dAKF$;QMfZFP@4Oy89MuP)kzUcLd-cb9X8xM{@!f5Lcj{A4 zJB}0z@Fn>D;mq4Nj;)B1NEI9fmr@IBYqrI5bZ+K8xwAYp℞-$|PHGC+P0nt$4d| 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

_!P9Pt$+>SG&gdvQ-gbSyY< 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ξ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­gqM^dL_GknvOHebQNW@&6!pD^!?>8N<$8v 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

--o_w0wb{^s?KB@@f3Q&} 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

EpP5!7PF@soVr)TUTvBGdh)W6Lw# zbs9Pywl0xyoyM|<2djRpd%QAzInPvq8pP5$v+L;QfmZDzVPptj9CRDNZetP?9`AkG9~`^!MAYGOHh40>LgS~ro+hVK#O!Z2 zGGmG4iw?KXrHK|v-fw5%fz*}o{KRw$ue{`J3&WhHcq~dZki48glj%6;Ff$rA2 z@aZ7R|Ik3Yn$yo`jw)JcA1YQ!IVu!L6FJ4}>VTXLSMT zO+Tj**V4b=qgu^QTx|HAtF!QRG71OX@?{`d^_*`%05la+dlyXS+kg~Mu56vLixO=Q zn`6#Bn3}{_5fV^PH*=&#(K6tcaHYEG zjXX9$N(aQ^x4I90SqT1EU67mrL%(s|hdXDzLeL-NUT% zBA^XgQwKrIrcAtU4`$WxeI-;7gns}|tcQyRD)SBtXk_u>!5UhF>S8N4 z<^pb@V^t(N^QWxWf@$N4mVwZ>vC1waSL_J)a_hq?5YYe{7vm@G%#K}E5XX8$n|MR0 z&e9j%C?!%4tdIWi%3wgGqq4oP(E0W3D+Dh$EqtGgb%&cI`?oA(YH#a1^ACA6T ztQbx1-_r$-I_$ zQ=#}0z*UE!r>Frbka zxyO%3%_4R?r*^0s(j&*`xLDP*ko4zd)0XM!%PYF8S?6vGKs%uDYI2-R#XT#?T+F?- z1$^C&H%}JBO z)if%qaRJ*oMzl;JPG2;ie=S>cSgz)ylqN?)`vu3gUJtl}wO;Eg{h_gu9toOMVlngZ?>6RF}$ru5;)SyS<$*!)l4}8&DVCu?*|;^a%~J14saEvnQ$>|kB`a{ z!8DEmQQXenK*@PMrc8HgtF7RY#W{OrP+3A=O=Qmo43$2=9vAZ|0FFPCB8%0PRPTO@ z5(4*(YTNgSoyRY2S#OE(Xk;d)pc;&=DUz8CMn_xE1fHja8IJR<1S25(FfhygS+_~P zdB@ZerFL3|Wb6SY!uU6V! z=eDAlPf~2w=jD7pE=Nn8tK0Ywfm*v9bT%w9M!5v`ze=-0u6X9i<`IP*T9 z$syMM-uV+!K>U9efa3UW(3@7Tb#?#VkZyN!wF@h8@`&fA{2xQk$rc~HhG!PrA);f* z0_?2$r7B&d&C%v}o5|g44LgRi}Vr^`-O! z#)KYc37BZ_$;jO`Jt5gx*%i)rEu-;Qy?cJkJWn@Ib(`MgCp|6R_Za_1IDqywR#egz z(>->0FZ%DKJ`-}s`!2&s(*Fg5!L5M zS=lW9l&MdSjhDXhKjbL%26wbZzdQG=ngp|2pGtW}yI`4U<>#}p@~S!<3VRQ%D4u#C z>9De~IWT4Y?mhZ@{J6XPPCp^-tMfT45eW(1r_lm>>2dz`a5Q((QIPvdh9w)}>qKkF zQMTO6C8$w_vj*V-f?GC2fuY0ZwP)T|;&o<@YDj2;a{UtM^&g)qhM(*^=l7YHt0HI! zTu35FI&j{Da}glP>U&4{x+!GVUBsrSBF6pZbEB`T%FRp383B;EUUNo^J$mP$pDyBWXm+-4SOOPfz$h zJ=$KO2NqDmjJwD1+7CeK-11!z{f8aD$-8W73J4$7Yo&pkZtC@2c6g-JYtQM&rk~TT z2slli8UQ}8gS&mdkCi~GgfmW_D_%95O(|00aSSEbCn;`Ph5CA)D|StUBbcQHaQ_nG z-Q5ORWf-YSVo@3kNLgStIZ(fdm0UW=Ye&5;b&$F_SDRiVjnz1i_|~on2|;i%95UnQ zt0m%1h}n4X`exBlzFw$>Q)*?D&~7vD*19wq=$i>AI_e(L8E_}wY~QL#ncXBKB$@ua z@zO9Db3VY{sT219SIa4nsU>|oQlZ!S2k~7h0zo7eBtMJXJ>di{wrwa z)k1DZNSkOS<`~Th(?wpJ)qx^fNmxk_KPdh~L0t?FQN44wyuMdQrwbZ zM$5iUJ1e$Gz@P)i$tns^RdYp+U*UU+TD%gX|D7`ihrWI;RVq!1_WM$A%AZ4Q z!=^iQ4yuSe9{;K#e*9Au!|B@ucXutkTN% znIKwT5o-&nl4HMNf5Z8X6dI`g;&ky?=}2hhFY>8tPM!0FcigM6b-1&o%>K9*yCMkQ z7pkM;93C1%lVP@EC}k~{aAj?_rnD?-3s9} zS)*SdVwW5M6TnD2HpPtL$bBpzr-7Keu0Dv&e$N-OI*}`Z%=T2jndHE!p(WpduP$)-uIwGS%#EioNHnh zHz>F*i(vVAOpK>Go|d$@J-bpQi&GE4Exva@lION2G&Oqr{jKk4I^(x!HsC*%_WsV{ zPAnfl8w;%E_ARc2bk+z<)*Dh%`m8b{JhpithKlx2ej2t|K1YPuC{Z`{KpM5}de^L_ zCqmbb0*B+_mSYl?vE%uMh$jp)Z}o|$LSap{BrmU8rB$l>t1ywWx%u6jO?|lzLQsXL z$QKN-dwM-HIKSC@GNz*SClHzrUheH_?-?u>KP0=BtW>b$o-*}(M=Rv{6Z+|JM_AuF zTcfVR%Pzw=p3zoFPPU^O()aHrxCL;*T$0s^BXlj0q)z&$!6;yQZ#iQVw5^FTrBSb{ z`AW!JjSU%;uiwT#D6=f?06{3~f65hln6WwPfFV72^~wmkor~1Tvg$L;;1h8S1-8vP zmiiD4{_LE(0Ir)mP^&cA67B_9d>hS|w3YaFF-&mYR6Sw#LzGhP6Y$HkDufsXaS$B> z>q+Fn06k!zDmiqf=%q7(zKmNE9%jeI&=FjB69_LafQ;FyMQQo8ROBh@#&(}t9Ol04 zUI(MZNqZdew}~%!M9_@&q~RY9>%<%P)Je6pY^ghBya>s=rBSlhKYGb_yWnW8hKMtw zUFtw#)gi-*44DCK{QuBZ3vIT4G3}Ws7Viq>!ZsWoAh|6G`@z4xoxv*q1}HC41lr`T z%u4g?AI>(O0YSxgtm7CZVQ&@-p=LbTE6j)ks;~+* zNY>RM7Iz-xn#)9GvwdWXT+`OLVU9hWLW(b?;XLHn-b$}i=~G&cR0Jers?XdNn>+#U zKEECzcS4Q?zDHpW$Xp_JpcdtLDzV|FuTHXST;V>Kgq@x@_;1C^UNXiiKoKOy9yiNMez2Be9*<&?4ka zn0jn`3?iI^Yq@QK|96R4eSBX(^c2LfaLIy9>ihbfyinPq-c!kKhpY2~X`XUhBFKdV z6Hm&_W4T6Kw7+iI9U)8q8sG%0s&~;^)@@P@)^oz=bmTA`=XjQ$3BIa;+_^s62Ge_% zrMt(~e*!FFOXq%*jOC;_iu8@JdYWZOtD~ZgF_U%vPy|1ooc(gQbu@V*gXd8|bdzze znjc7#QU;h+)K#%?vY02qh#^J%u3`m0=I1C#C^%{9M4~nJpzY( zl+SBtL~pKpazT8wkc`qe^;_Pjh4OR8I|fsCA7|@rgXqAD@!>t&EVO_eJ_rv-occ{3 zFgT*aMaVw*L&3`GYS@ZLG~VYRt(_MaNVFe!$H2d?jMDYPvm zbta=(a4~clX(ig|x*A*<;XqXqP1tk!8TwDy7saL!#W(C}&ug*J3%jbch1gr~)TrdWNf{$HI zhmWFI<2L)eQHpODvQK;~Pw~e3V&<_w z(QMu<=uMI@ss5gVa?XG@$t2Mdp^(lGIqk#jYycG+tGgt!8v!|S$3?o7&Yv`k*Ffp1rH_^b>HgA>vT0#Kp)gwGs=-dj zqqGt(x4M0OYdw>46$w30&xQ?3wLaMzXld7BDszqCranIHqZR<78d4Hu*Al(m7DqtR zGUy97ep}FbP6LYdQ=HV`5!MCpUr`j;czl0|a>3 zZu20pTY_xvep5om$(_83yWB-a!80I2wWap2G`>CkF z_Cw>pElxM(+017xZI!Vs>u<#5c}e7JAWX7)mbtgY_iyPHp_Baa9n^fTG1NtO!%^?p z$S^4+h~7+Htst4$IxhFFBYx8<8lbs?q8LJ|`@T{>_}EhlI>kRgmo7a|7mO)E0_xrb2pRe>y+(g-+Sc zR{DWy1<+!}92(pxpD8}?MP!=GqIu2%zd`@{VRRLEt1qu9r6a=T+qH@zJii}-O{+aS%!`44zQly($@uiQY7PqTDC+q;U*}kXX)< z*oW8K9>t?#Ns2s@iQB61vhT!DT091b=>7vOOU@9j+n6ax@z0Qcz6MGt0K6#}p*6`c zZ}~a{^B-a;58&ZKBr@S8A)SO}7>3^Gb3)|t%d(Ca#kp~#R3bS^9Ee*P3FP0>N(JwsS1Cso zzyuavcuEfLcOMxKA_p(feU1)AeC;qw+5Or07Bp=UD%cSN0QQ(fdvpja8`X*)<}?|Q zjZe2Sq1L>9T7Bv`7B`!cs(>)Rp;shK@B4EKe(nlRjv_5qXMOeKL(gw;q%o3QdocgE zn+^gja##2fbBWJesWBaje%RA;NsN+bIlbSage zvk%+Zkr3;FBOQ=TcV61;a#s)>t|p9j9Zw{HCfJ+n~2(ZE5zOWx_f8<@nN-( zwv(6%q^bXSCnbX(zgq+YQ88bfCz-qYh57{KAM2Uu>n~4{fpmZ) zpu0p$J+c9~9RF4mgi7$}K-ft8{sOyfJnZ_GgLM4wr9**2uO5c*wwc6ev^pv%gZnBa zsOW}SGR;stLP59QK6_Ra%jm;M7JO@K+y;;YlB{*^-k>PPz~V93AC{O%C}@NofKPpT z`$m5+kEO@{M!Y2TJWth~kj>|B6dShf7Ya0(_SF(B8!(uD&q;sR^Y~qNM+bh*-$V?F zIppk5AbKZ^5JX|AzPJ-LU^K3unEJ*|5KflDMZwbhIi=YDcFI@ECDaZ#pADrscT zD{!}RtdN|ul^+7T!^EKZmoH@R3ozP40X}24fbE}fH`tKBu&+P`H@Ah8Y{gb^s=8}$ zBpxs}k~8#E`~`bS3OfaC3~boqSXmG_ z)DQ{D37`)>V18f)m;#mXEFRr-|{FR&~+!*aV-`0Gq=)-xQJ0z3`;MjJ&za%6eFq{(&Sm@xSi=aT8 zxPcMZJWb=43HPv&4HNG>TaQkA%XH6-C^ii0c%Y;f87zEg|7j-4s|qaiA4bksoLL@G z;dFoKXX+h@%~4>KAHNjE-8Sa?9K8n0s`?5^FD*ePvLXhc2IMFMRC2%pRn)pZYzHKS zu!$y~KmHsk?lME754$xF!%P4vnrQD)XQP)LScU$hwb6@gLLoB*#DlKg{%J2=@NgxU zng9LufxJxkBdj}Yd@vpHZCU{feJ677eIxY)2cCVF1&XcrQMeVpSr}$bE(&;D+i(L3 z==yZdJ+*Xkb}(8+)mf+HC6lz@I~{B0o(vvCmCe{%8`t?3(mfOIOlAvmDZecbf`%So z$prJda58xerRHe@_1|EdVIF`k5*TPf5hv4vjbnuijQGq1d>UE&>XrVLIv94E519H* z)h>Pr4RNSqT9-e>WMob1Lx9r?d*&wIsr-0aMFy|can-U;r)W}pOl~wbB4=X6Ma>2^wr;^FLJzb_M78=7e91KWwc&K7n-Qf zuWI9^LlS=9UOLupeJJXiCtHyTmM}$VqW*<;TMp^y%44fFd{lVW9fqPe=?FLkr#bCr z1+HEuXCeJ!Olt#LC7Bm7qMgzpaRPo=k@*L?FWbLak$iU=XoGY)b;Bi1FOU9g=cK#l z$-ce4eKelZkHSA2vlARx*YZz3t5^W#!_M9w#gcuFr~T>d1ifw6)gaCp*nuud{zTTv zro#)F+xMWny>;6wZircDT&7bZrqsoxW@R-=^j7a7zU51w0j))KQA@vf85@HEX|`Lq zZGOa;iEWDAR9S7 z==2y#M4*38@u_^H9R8e`6_gGy<0?OQW~+#`}pJ4x0j+PoBj7qcqoRI z3yMK|fl<<{4@&eRpfx_3q2(w23tV8#!fSx(Q8$@DO~d*Xj1s;EZg6y3(8-P$%a`U1 zktGi52ZBAHDo!}!H>_S)?o&c8{{kH2g2~0epV#2Q%`og}N|} zLo+Vzj*8&UG9zREEI}KD^pwAs-(In7E7f)n9f3paNXO^Q3@WmeI``KJiIe*8o?P)% z4Hy7HC{pCEFml5N(E;KIz+07bjOp#=MMCb9OKF*#$bALOi(Oz`=&ivVQ$=;5_$tz7 z3N#ILdzcseCrZ?DV{!nd{TPXTzOp&Y{SkDmzFECv?`pL9f)I4*GAIS(TtJ@V&%dg1 zEGYi`$q*P)Ri@Me>sAnv(1UzrpyFsmJdsX@Fhd^E=L0Mp%g}!(pr`jBi1*;8K*UDn zaJ9b_r!Jn!s3>R;Fm1m!uKfG;_~vJ;clm?6AdXDA3;Lx5Ptg%4y)@;7&4MZ}a!Odw zsC_K5)HAtL%edr;HBfJg?-2}FD=Sh%+^aD>W?Sno5i1fk18Ro&8}(4zz%2umz)hGv2;uUKra1Ro^*0oq+0 z_7-MtQ=?d);6&sCF1BRRfxy-)7y9lex{ZU;MHX$}41JZv$2@kSwi_u$^HH8cYNB!^l8$Du~dq%1AxE zC&#V*CdP&atqGU-0?3ZYk==~H8#mVMj|}cV{-FRi$~E~A2%7K zyMaaU+z?aek+2XiB*9!0^6|gSs4~qN3YNYM&EnPc?X6-+_}Sj0U$ zC&PE15x)4X9NJ^;8EwYR7;p>~3e)x|cf(W=-Ml}+VFwuTL{}3NhW<%G0|lZE2sp+v z#UyY+R2r5GKK@9L_h8xQ8k~k%T-tyZ30M%pKs*C&B`W_UOBcZ1u*()~2JU)Au@E@5 z!$Dzh(s0!9hX5KINF!@<9Uh6Q{d+`x@GCy@KV@nR)Tkb+pUc6R%Im}0Qu9%sor0rJ z-bFXAUbT4}UF?%`g=4%j?xkah+0POS7XuL~;j!Ee!;CKW;KzKdUtmRXKHvOwI_V>6 z`~==hnotaELK234z+eCu)!AnzV1Q@O3j@S^F0tfsA4Hn!&A|pbEZUOHymBv-1aX$5*FwLI2;f6%o_MMO+4PIrGu;86D%Nj0p83o@ zX6NYf?S|nYm`SLl0Kj?mhXINq7)Y;S3`lFzDNoinYC%DNP0mwzx})@Aq7EbRrS}}; zzJ>v9z2CL@CoY{nFtxrvt;5-WhJ_Zyj(sl5B1d{eF>B^OZmHLHy1yAn9qZGk21Am} z6)DMZDzX~Vw6hIUu{CiUog)kuW!rX`lywh8m(iFwdXxlG(DY#uED97)&GgQ!c@Kbi1Upn-u!zqu zw0Nff&K&(!|3mOI(H{9M9^C$5DV&ftZ(>G{vH*a&|l_XXpW0N z52W_*N#nU)0Owu@Nr)d06KC7XXg(ov#UDPL+Z?~6g$gYz=^MQ$tJS`^VzWoZMd_^! z)+mY7=^SDYJR0fK^pSk`$91-GA|=NQFGVBPLJ4H-g9E{j=U6Ud*|vSA(C?#Y-Qua* z-r9u*0@Np4Xw<#3;pn*5FA}}IcKW}j0yk&nUmnbA_Sc!f$g;hcfhM4;5==Bm{D?LD{UzW6t9kr+<=9DKi9G^Gu!YhC-5Un* zLRehKcWmV-X7GKWAq~@=S6sS_e>V6`cHmaKWgw^(SgzAN{OauO)JLE5#;4OgSg}c5 zfx`51-)Jxjd2ngou3ZWPlsi%~K`i82Ig0!Hcp!{W5AzLG5SXA5v; z`nH}}OL0SB(#KQE8i?~7Ooadmj1m9w{tFi*%=0h!SFdJx@&A6f$<^C<$ZDDgvN{{d zmnJD1`s!a^6Zc4z+wXqc#6E>)geL|<>$O~`&6lJ*_prAh;PNY8|A|laH3I`U;rJ~( zT6l6qx*MF97QMc{2lcox_F7wl+DG@U{E;XD^@Ey6P`sl}?!EP&IUv5K65ON-1?}p~~5_a1a)c|EV3iNrX$_hDD$9UpFYQ+&WJl5{(-T z5M2OKMJ1~&t>BTtN=z75rMzibqGCO;mi4kFAOENc`IdhvYHVSa)%pw`=O6&djbdt0 zV{?z-mL*q5M=%=RF@fd*SX#XmkiSiFu})P_aK;_7|NIz#|D68=3eCQZc10vI$zOv3 zp^XH` z^nXESzSyv}fVrm7ToEO6uWUiW^$~$BID1fhl`EdrHHiPkHmy+LcmZn%{b+2KUS7m2 zP_FzoT$BP2+r9~>fddZ*^be-qo81?z>_s~PjQ~g^xjMC<&@@Z)8k&5mX=%N343qbQ zE`PItqK|k;wT2C+7c6ShWPbc2)cF!cX`WGg6go1e$RS>!kY@nXCiwZKuJ%ky}N!7>F15;L8XpAR_M0&}(XJ>nNe9+)ZSWcn- zs$L}=Y6`@%Rii;EKR))_N1(H}UhY-zf0WMXw590{6+bVa9UXb&-%0@uSG9DJ!^Wdv zL#8F$>HNH?mq{aV^q+^^Uj5vVDGcX&9lI2@IF|XmH4rNY z17Wh-9ZSl#*Lh}1B!!H?CIZYM>7c%<(%HY1G!yb4j&%9o9Q;Lk#SpY$3Y{@qL`p-*HbI~9%$0x$twdonOj&sdT@1qs&$2(x)PDMu3KjS8QRGV>+@wBt!vLghtF5sj zFpX(U*ay66EE>S)sPf4~j&3#2dt`8MuqgPWi>NI~R)caKG}>dpG#eL;L9o(~TO7Z2 zi{N$lU8#c{pFaoKi8TQ^v(l_FP<)Mb}Js`vM?k(&$PAW45{y`SV{JsCxR@@8PMDn!{GF$}@sxbdG+&vND0mDo z@zHDEJ>%a1>sZ>a1MlWlyxai_paJ_p+m_zwx>zVrRREG$jNXWs3z@bqOu!7oV%}Q? zFj+RYcFjAog-|zo)t++5iUorJ4f75+gW;@82-^;%fGIFYL?{hF)^Pfu-|_eOWUbV8 zJcp68NVms7!{nLV2xBO;Xg>w|_FRLLVa97g`ZxM2R=~jmXmn2|E0Pbt|GM(W_y-!X zc_WAA-YVCp@M38!J##XxX?>%Ny9^8W(3cD*n7^85|9fPls&)hJ3JjL>F>1dIjaRAG z<9GA%UHbQpm|M#W(E;@Q6mcA4M*iU#V66aJLphLa0jec~@$2_vqgPHP98cwt(4Ej>2TW1^~Y!VA%@?d*a$AEN~ ziW4v?!um3Ni;KaE(**O|^Jzbe$Dx2cLeKW{Esdb-zpBCnB>k)Z>4*G0eMaM>rGvO- z)kts#1LsRgd9tI`4D7a(b~`JiRwlm7XZtST2)S`G;$4H9ZpR)!1Uc7rGiml= zJ7@;SH!?j;vhO%%|9cROkdMWgG?BA-@$4E~P!9q5V~4qg{2gv*@v;v0?V)7;| z9BVoB`QiJ2%AaKV6;wq`1?IrK-t5hPm@xs$a0}Szert z6TzeTPcRdRF>sxf=$N_p1aw(lf!Z2fDI0ob)=QnSr1i=gf5T^eFT-ol8Z<1G1PncW|4>2PuE4`QJ zy*r)3BZMQV@lXU|aq$K_x*w$0iWB?)w=tBAH#S*#-3 zKR1JO_R?plpyd)or5{vfJSarMboJ;+w)t_e5%e$MU=NF3!=GL zotuk0+CNmWC3C|tY^aG+yut|*C?=mM@ z)G4=u^vCh35Lw;wZSH|}B30%98qv0_T*MtHARA*02Gq6E713}UGRaurgIlw(1j9a@ zs=YSoS>E4fTMZz-ZzI!mB#f~|uU zr6&^$p)41Z28;KXOrRu2+3+ugj^oy}3Q44AUBr8ZBwm4F-4)-0a`u3BaRr!Jtu~8~ zD$)9gGD-brtM^BE*fy)(lAASg^tpELz^z^3>glk*5Lv6P;I@-$dw~9T*|~BP5m?*# z;$fgI@uJxis5q4`<7`-$3OyEKRHiixG`QJk72%eHpThu-X&$&Kg6?I4NQ4X65(e#y zh6XF)-_7e}jeCN%!HdZ{CTg5(K!*ppX4P$~6nm|RgRj6Yse-%zBmJK44O2ngCI#ef z3Skn2>4&33Y+&6iV{znMin`tpA8zzU5yZUSU1nWI!*JvPtQ|O^wo_TGJkG%&igYf6 zQtSRi5EP;lmT$>yptt%4FPVj-Ih2CC9#bd%@6$G{4&ug!`nOXG`g~LbVFx*Ibi9?r z2(HFd$6MANd!#3<`0Zs!VzCuLAPj~vk_EV`|E;-;MQJK5nIM8Mw#)A?2E1Vufe(G| ziz5e-KswFn(MMLXfU&aRkd9yWsXweEFmP8f$a1d2^l7yWiFn(VZkrmCR86a#lUL(q zk{e#PncEJdA#^~`+}%47B!SBh{&FsrU`uGOlf|O#<|}M^zCZ`ez&LQuNCf^66}MU*$)+p#%By0J2!;SLGQa_Eev#8 z!7zz`^2nZKG)A1HFv#bDc)+JlVG-Q9d@v6c)DidD*dmDDNR#w5z6m;E{+%pM^{L;; zV=B^b0KP06sD5a=OoF#dz>bfKk2kp>aQQ`lA+R?Zj^3e-a^_bnFg zGix0Qtb2taNW>k%&4`Bg73yo@J?H$d8<_0J03%R#FKTvn_Lc?*bY`;jwOZ*|_iD?| z=&mF7AQ$y{4MBi*QzJxIylSuKQ^|h74UgNN-v**;4;*qgAjYb+9$NhFsDG7dS1HDP zdrsJ=i)s517Fwl*iiSmAW(b%eZhGY-5&-R#9<8?sY;T|kMgv-?0)}PZ0I-Qp+_^7& z*pwZ&wGzO5v#mCF&BMn_CA&A^K0A|6P6jrImp{Q=o0-3loQuGp7XvJ@WpCbMYhJ)r-u;EQZxS_Yt^3P# zUoSSfntiBe;JE>AsMQlw%;TrakS(ejWfBBGdlRs_c1#Ag4kK9XBi!k08Q-C>F$(Gn;T7CwE~tM=XGBN=YU)t?X)^c z?-Z+-ruE50QOT$(BQq_HH&O=qOB7LfkKS%BeqF`^CVd`<7a%X(ee3;W(gyISznx zpcHXh#zw`50<|0i4XJU{&A0|q_*1RDixyZyYzm{K4W}E#H@(!wr#YENiE!R4* zj6(9$0v}?_R{jPVzz*VbH!{obU5N#ptuFUOR?nR~8^3+Xb^yjLt?rZugVXIT3$MW` zy`bpwRoe2qP|v%(Pz*v+4>9mXp_`vLf1dgqUvY*p>idD$ zGXt0vKNq7t%D`fvvqGnKT*8msRKt0)f^rMed7ni6#i9#14bk8wG$cL*@8tpDP8}5P z&?ZS}fW+h#8!KKL7adMY;mfB(Nf~BCnP1cYq~VX6qTnB5w|NO`an@S7NpHfe zc{l1XBO|KHgk9qN%VDU?voSJ{?i>sr9$>~`eXVN)kM$4Pg|B<1B6TuY<;e6GWX~c4 zz#|)yeEIbCqiHg#6DiXRCl^eJcMB4KitPt!YH9l|18gb_CrxSlvG6Kjp?;98x z91}X&WB|)|@5z$NmqN|%ut}q)08dqZNX`#tO^O%0nT9QdOAv^C-s%>(;UXpTSeF;F z)UQXqel+y;KQCYTE1ySg!nhc?YYOj+bHzvfZ&;q@EHC$ZBIsoT4u<$XNdI;dfX7N27Wz1MkqA8?P0G3?d_J3sdI@z_Jt^24`SS;{u*J9K8hwyvr}iOzwoA zeVf6?4)%q&hUExqMJgFEo}$W#CjsjLnq5+|+wrGY9~O5FByl!hur@zNrJ_=7MldD_ zofN=R01$@yKsydoU-DJ4$M>m_(!am36tM;S*T=#Th5mL|!asq4bBhd5WmDaGsa0X* z0T5Xygbq^pTZ2PG_pk^cID*E5Sv+&NSwIcLx!ZxRd5aaM%q+rjPVYW&bMrc;$br9Dn6+s1#CxvH_;m4fB9Dj&7S5U7?|}^T@+^@Uv}2 zS|)%0P~H`ds1KF>y0@uMBLE>vVJDj(;~c=gipvKrjzNX0fnRZ#U%c~9Wl|>QfdbyM z@@#g3gECp55y&M({!tfqp2Tex0_|=Wpk#s$>0>YjalenKh6Q0FE05;`^Tk%dm-pej^Lg)4JfbJ@R5~}fSK|M>=^U>@AmtLE zF+`wZuAs7caxAbTTnnfd6>|4$-ou;(*2RO>j8Ff`VgY1Xuh;H!|L&u9N{fYLTO-gJ z0wh&+3H2}94WKwMkkBDylB3t5NbO{=z6m`Y!T9)g=jz6lGNsc2ZkvjQ_lzwbU0lel zMAAIfrfTMz-{}1Q?Ss&V`lOy_Z~2umm9g|^U$L{Zu!ITs;xgYw(cjz;4(-~%nPXq_ z9c@{A_NO<%dtY)iaAY&-NM_R%xFw{XU*WKZu(2nhqYx>tyT-Hf$Vl%xi^@-`;tg9by>A9}x3@5^6b&!7@`q|#gBWJ7|Rfaa$zye;+&Jk@Q#3-C*v z-Xo#Ld#=xOBmFR=DrlNS@9g)S@kxj1Xv?>f{_6J${E)_dLX@0J9nG30^E`0)fH7`| zQyMoi$6)unxtQ+q^71;C5Cg4%`&IW}bXZK{xq;-PQK!}#jVcs%3J}xdh2JkcKK>cv z+x+%2!Z79D%(yFvaJ)GFK;$t>-1l9R)t=}3e7k=#g;aDb6U;LeiDEviC*4Knby{VV zz6PDSRG-`(+%_$k2X%|a>z}taoj*1#cAI3zuR+)5vG=fes-C8{Hb?3zfl!BDbM>R< zX9Q0%u7IJh*@@hNR`n{*K zqvIRCa|-%GW(E1@zb1jZ9)J(vo3ASZT0qHA`4)T?Hx)t3Q#mN)519ipGP1waQzm7e ziEIZzQMH+#_)q@xFO?v@UYCsCq{muQmf>q+9WvQT2x4qLvp~DBdC}uoq|I%WknejKS%px029Y6RiBg% zI(xON!Y)*0)?9G%%suEc4cyMoZUzR$&^yT*0HPbEvAcM9akf_!fBCmwHq!QY z;;Q+=>b}4W#l~NB`air{paxshh=sX4o^<3qw%hD`zZY=5uICv3e{T+CctV_&t=&*G z?Z6DX@sT%x{5_C3}0f}WT@=LRzplJ0lJ6hy-5i-nyCGEvnwMWseN=Z0X9+9s0cTiF2ShZ!k z0d6P^y{5^pUw~J_e>NkIkNldo_g3|dn3r8Wwt?p;^yES$bud5`Yw+`24~m zrS>xeJ~U_KCQ^whr<4Sq=2cVrXgv=AMfXUc4y)k z_-|;vtw?agpp&56!Ii;tiVdmHcw}Wm02)n#Sy`D%_2cgDh%e>zMr=IC_nEi2YR5M` zLd{%QV}oXEvtor=%J3WVw=-~$_)z9%dNA5&=$vT)RU|h$GCd)#aY!SdI6lV8(e8rrGz;%n%$bbW1Pp zFIM>I6ZW+N`X}fL%~BehlLp-F6Ooe#qfsg~`{}G5y?L-n)zln?p8hzcgq>%`d`HLc zd&J?gKY2~`zwi0IcsCr)(EaGKYv+6slv1Qf$4Z7{;0yz;ptUU1_xhi#tBGYtZYwY# z*S3PxBEN1*5;)Xkn-p!A)T16IQ0*Nlk@t)pQ!1d_rh#JK_%Lgvw?*x!h4J6N{ZQh6 zX=$re zK&Y#8n#Om!XTDN-4d{wVu2MEsw<85W2k&)ZuJe=L@EC!w690?|k|Zk;VSp@e+Na*k zk&sceriz@0gZ1`&7T2#3T*JMJ^FYPN^dCo8!8LHX97;bS!18=Ag*nHH-@MU$>(H9} z81f9adfk$>;I5ERvJuyh#p3vQ{9VY)bTyOHZNe9?ay{ItLOBUCb>kr|)b@@RA#|je zbNgQQ$AMhBs`7~P?+Z}@I~Me%o1$VkzjJ^8E4$SAtfYI%A027Q-Q8#TX5<@Uk*i!} zyU0pzN*BGuBMHQE9*>SH16Da7nDDnibN#FRi3Y(?Joh~7hwlJPHYuC*fQP(Ft?mef zW6R3Q9(LZjAYA%o(QbPO7X0Z++Rj8NpC?a|>V0D(xE!XQH7HS3(e3w;w-GB74-k0` zVJi@`EKS>9dQsi*6Df+pqgV)fK3UCqytR=^3&1?Un?HG4K7qRb(_a5Kl9e?qxiA)K zAfOq>1?*KNWk)kBm(x1N5a5Tnx}F(t$|CM%-7bPFDu^0-qZbZ3HGiw5<$=Kgn3z`< zNd!vT{dm-A!<@5ob3eMAxhbtH#-T~(k+NEgV>Z}9DY|>K!A!En8oHS^kcyJ!||B%nCNTV(4iK(Xw zHkDgnY<4ptrU*2R2aYQ;z0)Lf8*S`8rIXLv*PcmYeR4ls?Yj2%+g%TDUsunXN@pa}qH~q2^-knIn(@BVreZ6w4k-yYpc7v>K~WWol5x zS7qBW+JJ?(%IT3?B4SM|lq!Z70{X(C%5tv3v>BZM)Pct?aXSE%zl*F+DlO-Aw}wVE z2PY@?o47D9(0S^q9+DkRGR_uUSY2J!HbR?Qb*j2vU;PDo^t34}^lAs>?jU`bhCupa zyP>^G7U{sqNZow1f$Fp7n*M>2OWzec5t)p+l{mu_q^7p8Ok=MTXA2>NUr1kbc#3xJIP{T1R@&f;R zx&CW%5DB^iWm75bvPN3N}5v1|Dh1W;aj#u3xadCUfn+J3B-C>Vkba$67I)4vmA za;%B7I{)>vvHjDpFdUo3yy*ytRJ^a2g!Y|-#1gmb+-JZT)C6v?G06&AzA}p{auYPzK z8y7pXz@E!F<3Bn)Ow?0;t!ZT5+qw$k?4?v`p~oPdnHIZnQ{IG;)!opLczmqY?9ez7 zZ9<4ZJ=F7xxZd;cGHlC!h-V_#1YEFZZ>!rToGuMA&&5L9C}45d^0#3EDo8mwtR;gL zTu*+6#Iq+cV?US$M@;`B8OkAvdrztwRZ-jZd}M)!Z?hVPDAcAT;M)}DtgY0s3+ucB z{QT@@sY2_dv`;TjT~m)AjAJ)a8A2SN5>-?113DFsfE7ayfB-6K-?>V~UQe4J&8ad5 zN|+oZ-qZPpTvP%`LbD$wpePl$^&%L4uasw@B zJePGcuN1QS<(V6Y!Zg3&ZM2N5ScolJt-X2f0a$STe(g89oAf{@vBjFsKi?0VEW^AyK(U6`g(+` z)&Nu*-{!$QC5qgvxC1qI4vuu*2KDr^thk&cMin&D&j3RJ z%wFE4uY9LkS_2H+TlABO8&5DzhB-dVy?^Xp4@bjh)2SdHYjhzu*@b`}FDi=hQU4Th zTu5_$>5QO&P@#S*518H9v`a??U(E(*@{j7wA5cq(y@u$+GM?kYW9mJ$thzxKf+=XL z2h>cDwgj6A7^%0nY4fG*Ub-ZDg`HqGf{~t}oQ#E2OO<~IX~6P=3ov&~_x9EO`WCma zZz%W9h!Zp?STJ~~~Od`Wv$h*|{OVN~kvMnvW`#L@p7pn~S2sFPR~(fHU+Z~20Q19$bY z0ibhtir(96-)dJ607akZ=vd}UH3Em^JJ%lpWgrL7Cn-sL8S&darpfeGm=UwbSAqM6 zrTSpVLUHlg(reDB3_Dh!ye!r`G;i!B{Z{kHEi{&@8V8+*N$r$kDaNB5P(qDVTWmCa zY4G?;UjhN+#^8{4<(_F`)?H#jIWE@A<094d-;FN4m)DnXCivb8S$5>~g}0DL+RrV% z&9MX888GKy&FA;_YBxReBctilz%vFP(P2sE?Bd+-wsDXto-b0m^Otq(w{f+3l;uLR z`{VqNsp}IAVq4z;8;D85quY0jHaZ`TOrRQeZ~y(!)N8Ic>an0{@f2G%Z}d`#zsJ(Y z_^Qo?=Vf3gJ=wvdd}qt0pYMzcR-9}4J&*9>xDFIb!Sm&OR?&yP(JgO*R)|A>IyL@t z3EVEUAAYn`ro5f(>)#=6J48-7XjKwmYH zCh60sGHvD4M;pk*6iAK;6EF4b=eZRsfLwMASfcH7koxeq0(oE-?uc^2$DO%mVz-N* zoC*I{zKM=@%R+pSo%>NuJg>rRSv)o}jT@eFxvqgpFt0yhs8YHA*xFrak0~8~^qA|+ zI@Chgfb`QqPsH7jIE)og(OVw-_E+2}iel{}@u-iL9W@_g7kQ z{oG+C=>cEMEk4IIzn5xsV5S#SWj-Vmre+NA^^E)M-{$!C3bFHi@SR`y#q3mwebf+4 zj0T<@j}NAcKu{aMP;_YjWO=n+epFvq2Yd{)zqwg|gF&!BVr~U6vpEjoRMVV~QlwUP ztsr8E*{>o02^gFK_OkL?{d3L$_+MF+6gMMpdO#zKlDb7 zcXwt36p}hSy7Nj}5ymVTR5&Iu1Q3tQwNDJ!`e+dW@CAzfXpiNX# zlG=VZfz9J=f64v)U?rG1A>sZUBOS7WgryfWLy!V1s{O8a#eOS7EOD>CR?F|ZM;4Qf zLbEQqKk*HG>t19Zv~D8U9@&3EL=`=kaV^ui<`KvvSi|V%Sf}?p#lwypyT9kN# zG?ExD3+CR%o_~0LlAxwh2`U@jpH`eXzQFurwBnmj%;XH|D7;a9JfNVij#n))v}b{e z#KU8rCLfHzqq8Q^us{Z)=5thfaY=R~XY++0|7dbF40!VD0)!7lcoi087+P-+c!UYxC9J6~QwQ>Vt7{>NGOS zePS$?lqGdT&qXQs>eJNWL~r zbMmGRUx%8oZ6-Q5XU&^;6?b2WYm8?JlnxzEO0{rVX^mXxC+i=>x-Xe1 zs+7ObakaMdTD$&RE|gQ=Qe56&mGAywTm(hug$-$2mit)xL!@b0vGN+QBteZ zGJrr85j#IOHVP2tDAr-`l%l$pw>8NUm);2-&Ji)B694KmhRhIL&7vjWRr@KD%FdcN za;JoXR!(B^D`LOvDgV}hRmsii>+xW#dU*GQ+BMTxx|!Ubx_k7B>-RDnyLGbQHQWyl zPOF-b0CE%x8q{P@d(GMjSUUsc$jQk8$?A$xw#`PEhmWsb-|kF1QacquPS)hEUoGYJ zY8yF(QT7ZUE9=_8G}X7eHF=-vPA2n8s{c29SrT&TSMvMp^`r-o?PPm5^dWo#0&zlz zXb)<5`D;0lmahx=44LWa4R9G#DLnN_nV5We_`a6Cl)618ymSlC(bKXs~=_{WE(u|LvUC#F+N;w~+~k2DOR0X!DaMCcd5 z_455;>Ojh&b@kk7n`(~ednCF(^wYBnSx$#;SjqGGT8cp(?Iz{Q&{G1tvYjCz~@^}97}NHDs=W``B!Sq-WM&6xS|j9lL`LW ztXmi_iqllm`4eOvfD`JIW#xatL+a}4K&RkZ%ErzcCaFd;i;AX?QMA5WN=YKlbapiarG(k6-FP&`#v9rtbFG_Ti-n^^F*4NDGQvm4-Uqvgy zA-n>vU6ms%=H%5ayNM>X(3u&xFFU6aT3m9j2zT*dw`6s+3 z{+0gQE0npU!@6(&&86>d4sC$tiHIOmy+de;4nl9Zt4N3x_Anif{Ie$e7S~j}|Lalt zW-gk-hK4>rj1NpWrZ|1car+GA`q=U68tkh$sX zy%@E*NCGx$15}o3l*@64Kd=KNq|UGgR|mAtR9Q9i^YFYB2-V7NI{%C66|f!x?gm`# zZ7_pE*M{AqZ?2HykpI1Dy-Hq2(Xt;Vf=Mo%?+$Erf~(h88c(Cq>giT?5Wuwb%xIiWdL{u>|CUPoNOJxsOxv0sH+NW6I zarzNwQo$Ujt2>)42)7SZlv9jV^3&CDbzBUgn%$bR=;d#k*#WV$ih9lNVT_NFHd=pR_q+&vC%^B&gOib{E z5rsKZ6=D8Agqmhp^C1HC0WZrj2y!7nY)o&UabDtC{^fg?h{hM|arx2?RnTQwXO9?NAj0SYIq;G zUMZb(TGJlXctV2(rr!RK8XT4T1zpnQin<;O7~}uTbQ4>gSqiSt>Ft~eG41=Wa$jhVJrjU5x{n)`vPfvP)8y-A2*Qkj*&YY&H zCcfkIyyOnm8?~7OB%ND~fSbMI#cSL>RAGXTzs1sbowx7z*jRIl5?!r^)ssBq0Ql+~ zaK2FzJYc>W<&7@9<_evW_qH?Kn$hK*ma?c-@*B_H&kO(5{!5TkQo9J;%zyivG9fh)k&1TzsrT{h?yM;E;1*E%O4aV>U`xZ!T% zfkb@$!_2mWdDvIF-cTV(BE|S1VE{N90ssb2pfym@_&uZ6VwxmfV`3TaYe?-p?1pK3 z&QKMyomOuTGKD_&fnMM3c3&#OSc}uQ3E0-_(7itWC*`^OI?5PWtv$z;sZV~-sn)xJ z;ydJnqVs=turLr?ex0*WKg#G_JL~1vvJ&n5 z;dAd`Mn;C2d*{YyI(I9POR%^PEQP!LzKXjn*+w!wo{u!))W=X0jek2gh_Q5|dsR6S zhdasv_rBSWd6OHkfBxK>{Zr13)02<5X0g|UgQx7q|A(ft46CwhyY-^GOS(%zM7q0? z?ve%(5RlGAcQ+DJ(%m6~fOI!VBPCtZe3R$h`@e^a759vBjd70gA3lF_+V~t8V1a%P zUkLgU5;Uvb`pEqNCYXFygP`Yub79S)s%uIlvJ`0}QkW)mQd^ji`y=cznl!Xi0Qhn4q6hw>2?x2a+lqf?-_I*}1?#C-v`QYQa9?il+JS1MTVaRAd_0T!8{YhE48 zFMZE&2QQFsU{Mb%$ZzZDjvwxyllGpF*$VUKMPoG^QTTm^Sczc!U5 zk&zdh@c591K{@35cr<3Lc5o}xsxYOe*Fff+Kj%Fk=D6;w1jXn>L@d{50Q2+fNm!Cd z+dw?#-{D|efIboX0vKxoOe6+qY%c6~ZF~n`ec06LkFLUeRpsZi8_r0vNlTR_q-eC2 zbO$8tLiH;=js5K-N~tIRX3@OqCnQmg;Ft2R@9N z_^tU#waJdTrDeo;{Cw&loaB`Powck7qCZG_DQ4a7bIsjr^+p|m^aPpz^kIVgBy6V> z+iUxXFfx-Icrp^4^q<@u81OjNBUqvG{x#bLUTdAcrQN72)yB(?8Q3LdP{zXOTqSVU zVtw@r7$-HV7kUpo8b>xZHxbcy{Z4!FWPSS@F;J?7S{Ql{SYy05ii4-MTh~MWf|ta+ zkPt$7q%{ZE3ZjUJC^VHI>t2I8Ap8{;7J@BB>vovgMFt~LDpErVu8#Y|5YJ2UOk;Rb zPV4#dbZd{e!=<4&Ye=NxC*GivP!m6qa7+HfKhVCmm)ZrsRQC_663MXpoEvm%g3hwZ z0!WT2r>C`CsktR&W2CSAX%-?g z*lTg})FL83%5C+-xMyFV%BH5I==}Y=WhDEwA>}Umi>S8H^c%c8JVUw)d(f11N^0sW zjM7Tijz(hL_99K~$WLo>j#X`lxbf zeEX)MgX^zkxC;8+Dr4N=3^wXQWYNBwa!}0+W;tXht9@v&a`qf@~5( zL3^9<(*C5(gdFw*D+foQA8!Qqmj=(vjKmcGKLu;!10lpiZ()CT#gKDMY=9q8q(Yzt zKfge&0kF3$-A_Ghv@^&c=ZWyu?bvA2irx2K3Rn~qzeEfgHRWhp!`T14nHV+=5}uJtaOMX1pIjzHs&ffR+I_ zsNMI$Q!yQsq^tvyegNfX5U6A6Q`M0+GVB8%aQ;f%+p`1(222V;URKry$4%)1`;!7g zee$SD=DI!+(;f#KW3UfZNJ=v>GPVt^JoFNwF`XoR`SOaKSYrGfc@05BPfs4zZ;!)n zp%&qzjF?z1{$O$QpFaYHaZdR0+avnGd7hkXr%H6yU5k(y1N)APgV(r>yHrB}VTlFe zkeHcClh9JTc*A>7XK%FBG^DJxmgABm{J?@Xvg+$a#lzF5Ja`od41=x!Brm^U>=qjR z1Tvm;BB(}}+J-JOAOt7RTl-Y-53`>N{8_1qiQU<{Mn>6_QKKsoV~bJq$Nk`nJdrQ3 z^bj++Mm*!(|LU{`m`T&i3(V_y z6_oPFYs`v5FoNYn>b%;V_e@>RBO)Ui<;BQ-kkpJ?oLX8lOR2X%7QsRX+SH2buY2&6*D`5?HQvzJni+VX_5#u}nl04FxF-y! z34Fx5R#^n@D~WyHBMWgu0|U!Y?zlt+F+>?5xT9V&Hks-Ea+Y%Wtm{Lg+*LO;>{140 zUyrMUSa;*!Uh3#Om|_r~SOCJ}V`i4)7oqe%S;tcrWLDBDNsZ+7nq{i42a17AHR_8y z86c!J{1T=6uBJZKGlVbsHcn!3zWJX`5iI0(x$U2G>Y@Hgc-Jkc7kMd0L*2^A=msVo z7Ga3FY(T?HF-6E-+HH^Ef}6PiiN>bE&!kGcMUe#}6*H=UzNHH1ARUoal;oV};XxXS z@=f4IU9Yt_B`du2-%kRolTTN2_s9=>dmmQ9UW&tQ@pt-@goN8j*^WQiO?fowk{J*!GVs^C zr{4fChOzpud@}$pwT1;TVboa$!qI#d@LbMR;ezvTH8nokOPCyH{DYvNt9v>IpjMi> z6&{7}-xxI7-T;e;=_KE)*yNMx@Ut1)SGjjQ;qfcLOhSm10u@w0U*qqCG5(%9A*1YU66jVB$#Qp8qh^Xj3ZE7QZfdNF5Cs-(U>18q zAj#AM8xL{5GSX3Xkzt%vy0Kedoz z?0>-*!ffp)lg})zdiGRwST*cU&nvKw>loDqoOUu=Z}ccE%%aRvU3e7uIYY3Qz9EuBrxTN6YtC)IF`lN2>@)Ef6Gp#`$JMTry+!gBK7D6ML@I9wDY|Bdu?{B+yxmR+0xSb0=?pRuWPYR1cpi+2I*si->DaHY5g zQk!npfV^fHjst0GwW-n*9!R~dv>3LT<;l)6`dxp7FBPu#i95V`tP* z?$@FBn_fQiJ4&Icl?N>uCJ58F7ceZ0)kHt=_?aE%26Bf!Nd=;|j<072B_`0U^bEw1 z@i~EQIY4*#XRZG(A1DXNj1g}-m}eh)uZj@=`DCpw1WTj}%+zwd(#sHGWT-`{!{&^< zXb+~2n6fcAC?uf!$AEYl;7knd-6$!_4kvsyv(TFVM@H+epkPa@Lb48jYpdLOI$nKYPD#2sZGd{uP+P zurM*rx4OKtf&M{}e#_NP*B4D1N;}?Yms{GX%9}3l+94JB-3E7TB>kM78s5FJr?)p9 zV_Wtsx1Fsd)SMak9D2Z`D|w1Uy6{GV6ux*(;b9I$2?v8|xVSE-ly}UOq9RyweDnuv zrF#p4e+6;O6st~&%lHv-zgCdvF8ke4PD$HqQuCGo-?o1F_dYTLv@cQ{{|^6~=u`go zI-Kz9P)wlb4~6@!{pF1y?Jas>0_x-CvK;HaFF+Jqwo`%bjsJIxEP?RK%RdhqUTL~KT9 z^JcNi;4TF`d!=?}N+j@{wAJ>@x8O4P6;YNfb(xrE1DPT+li`z$qvHhI5BG{i@}W3) zSd}e87ZlMJ8DxJzqKmn=Y-ytRCEO3{>^E_YfQ9s#uSCboLfX?`y}Xk4P0X_k$E%mE zW}zwX-pm0Y<6$x+^cUEyZ&e#)yg^)c8yYKF9kc6Htf)B!Qxj1gebGzwemIlwV_!@b z;NQ{)$E%e|y}=yu2!v9?to+3i$$S7^Vw)slqK!}Od~cBFV<6HR4?CQ#_%gXZ z&-JV+0TUOPz!Te235TT_1pLv08@|8yHVC|y;nmyxWh>j;gDLZ-dDufAd;YuE7*KL< z0Ct$w;JT2X$VmU2CE_JI>@=C8f`T1LZ1)h?98QAA7Tg%Z;}{CxWL0yKQa8o(&@Om_ zU4{13dpm_K!ordzS;)ReAfLSmDbIG^kyd2&b|R)4B#qCB5tAU>4SoZs=&Y`l5i)2! znUX`dk$Cu0k(^-c^Y(D=RcQpxTYuYX->4Vtu%B{_J^benWRQ#lMV#SD?G?cJq>oC} zWV1UoRz9305rSsSKZg**s!qJ`_*tpN1j=&}89tC`i zLX{3xO`&5JvFvnO8B7_MGMZ1ruU_J+bXhibcSF2YPU?pX7Fu!-Kgo` z$3*4QRcX_%PJdSMGBj7n0SY`yxlT>OauTR4=#!nTD=p68*vA%Kzu(R0>$wKV8PcAb zliFg^Ar)@qesQR^DB;)FhIBh>9|56f9yM0cUy9Fp14(ykS}}B_q@ciDtR`Z{=I%;G zmmQvQra(^p5e3)L-Oc;QK>j`%LslUKisq$Jt_gnhPMFd!d8xIrTA&&#R}CF45S`aE8o39DC|sl_GOzRs(#%6+qUW z-kD>2*A=(QjJA9rR!6S>ql{7j%uCOxmpmI~#gS#jSvcga?QPX?siQ{Z$GoH_v^)Nj zcdi|GWx@K25XfCAAwQz4m?;XHvGJXCteon;T^a9VC-`w_z7mm)OfJ8QQHP|xXn?xk zd?!Z>kX9np(RHhNnWe5=L7k^qSLm}QI(?~LTARC$PO=G<^Klp^>PpY%gM$MKAy4oe zCXyLx_Wi7sL4-rQNv(dDXpj5_(q&U@ltyy@2ca~^bo2#$sT71ff%OR_NitcVfMq4y z*{s-gW4oXadu_rZ-+BBi$Dh$iL#f)gLEm)s^!DX=_y)Bij$a@CZoz9awT4JlGSI~p zPS<%*EzGSnv(J6l(Fx4z45XC_ zYYVt$fvLAVBZK{CH zDsp!Uzr;18QO_mD-wK?Hej#F+bonz9kne15#Z^`=lI?HZfSQ;juGei^z-AzYw>wi- zRKmi5rinE!mO=fAUyS*^cMTLugEic**hPgM26;>Y@@j+u%o>OnJu^_?WKaYd?yMXg zRo93=k>TAfRp?`NwN$rMoA$nazDAh+Q&LWCv=4dFpQ6y5LO}GX)?#-&kY5`H`YBUq za*9J-x%0brlijPOR+mWrM}MUrwElF|kJin|#ZpMS;9c!ns#Vq|2Cd@E_?4;UubF0w z5`HU%=L>w@=c@y1bW{*I;RQ8@0{Qmf;h7X`jJw45ztk4<`crlXiizUDx~)D~*;e3& zZ~6+E{FF?H)>6QGvMu!Yn87Svr|Y1`9R~s*S}gzr}oq z--kmd<+cSOq2z6Ge3!l$U7CjZmpJ7Yj4hL%R|gZI>~W9^`@nFo^k&KnnX1{?nI`xN zsNFBw*#51+k3^xvYT~S!J%YS|fKGUF=^-uO`E#Go?e3%2|B1 z0+!!D3}co2nSA-gFs4CTRYuX{Kdj>icJhh6I5KImoByPIVN`s<7EiEJ0_vsf+|cX8i37=g$&wCjn zCWs&zF)_JN`U~go5SO%2_)jKbU~l_ZAD8q?`3)OeXvWN=h@ta%sphMov-)~Y3_(0* zM-V+ykN-NUW6o)&EwLmMjqG0;UDfRq6|aS5#BEQ)52u+@f@JK(YewRT z+FCko-?;v4F13ThGZj9;FL`MAka4Szi8~TU+MSESJ|^7CqtY&`9IA>e8t)%(O2-$e{>;4bQqkH|=HYa*}@-y&E;xzLGr5oEeOTa+ATx(BDPSTjvRaI40s@dni zs$^_h9YS*G;feeX!2_5_DX)UD5)+*N#S$=6Qm%5JL~WZHk^K%*LF|uB zN>8WG#?a$H}VGRg0zU#q6 z596w9u91oRb+^QLB5?^2P7%M&4j+PzVfcKiv}(E+x};-eN~bg*Z7NkEX%0Y-7H}Cn zOZXJHKdq;ubn?_4I(W8OYcn%w*4NSWd-*EH(a{lJiGeY4TQtmp255j^-k69N>Lq;m zK%B%J78fvSDTo4(?RF3*9oOYYw|Jf=U4bve+%thCxA|FZ_kEl1_xxpv!r?h=cH}VH zH$X-NwM3D;d6Zz87SD}_KM;wkRHJ-#O^om@LUuQt@yOGx?lDQkVMy1|Zv=~_S zl&CIzp85vs$WOwgLxjQgM%x9si}kP+-cBT+f7utD8kykiJu>VS5%oUQhPBVb)bBxV zZf=MS9K?)0Ri@trz-(zXR&mOF^rLy$qzM)lt%i3^0G){8sc-6jg*SPv+d?_4jaI^+ zxNZ9#wLLICt&(sEXj65jMmUR_yT$b%u0CG%|86;_l6^tZ<&MiN5So+(|CLFhr3H10 zKrI)YBlxo@-WGf_a<+4%K>83q`H5E(2%}=@IzBZ!!g7v1ow^SJ{*`-Ek8G+SeQN;7_4{xdifSlrNRmetZ6_If6QG}m{rP)e(!bYa^VtO)!4wN zrdKA1Hv#{ZS7x2YBHCZp6U09gxEK>sMn8SN*p0^^olX1z0%y0p&N;AybK%$S=ez$xc$fC@P?osfDwFd)FATqBgu~N1Myb$%P+!tl}=>4MW4B1!RxJ>2Q>=&1dR*#m(-YRaJ3L+oYs=lfte#Uzr_M ziFNWJ$EkVTUi|CrUFak>^tt4+-g~9R^0db|Cu{3}A1eH79S_O)U@Z4b@b^+q7^Zx; z-MGbekH~6U-XC43n+5mpWq#4^)a~z_XgtM7Vyeh3sL}UEM7m@CvH^&KK*I#5$NqR) zk$Z=7;9s3BKD_~*zw1q_t#65~*OJ&R&?yA30mzz+(^_TCL#pq3QV=6=p zbI>*Rc^>ZS^50QKr_d)rhOrjwzmvVc2bR^jgQHNXF-}mwB?CPkh$5b%pB0udP*6~? z5>e$ZQ=&>sOY3=zqGBw?gKk*JyUK_$*d32X#O36K{;fL9lpKQU6F{~H7+%#RH#bWP zSQRy_wl?5*iIZyw#7}wC55$+p2#q9p*gg}h0hh;yl&A??1G5pyn^vBAxH8%!-e08& zWKDlz4R(eu?3#Ao) zYhB-uURFf=%N87AoB-cDU$bGbjC#H@Y3WeewQ^5{|^} zaH}fuY3CS^(f1t4pg*tVd!%MoulJ4Hr3ZJKjyv5H?Uob8pPC-&po5tyNdZ(s_I}kSS zwerJ{604$&KwGFeT@@V`5$0J8Fg;R*R6pK~AyXLpdjr)HA)L2DAe^h0h{!Z2$^Jfm zYG5XTG{nb-u5Hnq?vS(#S5g5@ z6*!2CtpktZQ&Y>F{pc@#k7x!$!FRF74_{nbV?CjbyFkHiDhWD?>2T|_@FN@Wf9%2` zO-na$+tBIdcS;xQcA?zQFbfu^l@kHVT&@a&qt{Ewq=dQ)LpiwTqIn7`uru$&aFnVV zflo!HJKQW;5r&6aT&uT0?&F6QAA2z}Cw;J%8#@N_0#y~{dki5sAXZ`_7vVd^0 zCOT*u-RW?BVp3=g7;&=9J}y1+cW9_*J}4bC(Ru#0GWd`<8tgl8(i-4QUO~UO1RV@7 z$;HQ!MJb3fb&{N{iB8>CJgmU9ke@OeIPQHPF6T5*X-QnbrrO3}|BDOx`2nhw0BQS% z0@;DYkcOCF&xadIfHS)9MFovOFRb5|}qEo-=6up-aHX4MaxeID6z5h3|io?}Fz$llRm# zLPd_z9+?DunusvR)S}4SnS7KAnR7s@6Rd6>IC~P)P-%^qhgDHCQ)u_`l+7hlCC14A zp1sZ)wZVk|=|@J^%4n0HFkGLpn^&<@9A5b@E-hrFH$(RFC%02AJ`yj`yjFlqx4$i{ z34UG%xQ*UFdCumG5pEz8qdq?(VrxIJ)7Z_vNm3_Ar@_D>-p@f^-v=UO%t&TBim6hw zz@6+#yPzTA{Z{-rIx2->@E+-_UOCQYe?1esrb9!%tcaYN>}0nB<6lOwGxmYFE~}~4 zT439!9C6Ht@%*;T)el3*>Hj{C_O5!2#<9&nNjOh=M(w0_M zeZ39wy?nJcmvzg%^@gnFdMIe*;T3cJY-W~c^gSI9j zAt~edlaf+p&q#$0qczYopFetS+LQCKADJHC>g_UmdL(f}DT$^Qr{pQOaM9Mpq~jl<1y(EMh5}QtR5P_E?hzm0OUi({J2`-ei;oW1*nK`Dw~!zf37?Sa#M_|_QgJ7 zU&Bj!vC#K9)CVrk_=0HWGX(=Yx||&2V2B31z71e1pV7zFP5j>*ZlV%ps{WmcQ8|i0 zXYoN=P*hgs7SjCs2`gJ<)#qQ9n&JV?kp%*@3J#{rmHMNd0mgBNv9~f{DfdQ4&34ul z&Vl)~99FCSGXF?^UDo-S-{U42&wWlU(cqA`s~ZaG8Fj_hbM~AR0k1rd+-6{}mQ0 zxLB@xUTQAnZ3)sC^DvfU*%cl!*Um<+3x$BAOonrq5z77l-qQ|kCt|cDnjN^Hgxxtk zmX|s8=doCn$u>M;Ne%Y98zuYoWsBVsv3%W{FX>9-34}g`;nj=TkTYl0CdW(FAee2t#yD#SxXK|1qwd`xOU*u~O(dIbI#q5%Jao;7Vgj zd6Z1&b$4+dv}@1+4qhR)Bp2Q%D3^;~}!Rb&PQe{G7H zV;9whx7_1YwMqB5UFPTHR%}~Jflx|CnM!Q`+Oy;5xgr*;i)2^8*XV~!x0Hh_H#ZYutsn4Z#{`Omu!B1|YP6%P?M0x`Mp zs_2zYm~PDTk4kz)GwZK(gRz<2Mwh4RS^v_~lcFF4xLW14aq{hW!Qhk}1we`@}7 zPC!5amc>zyF+sERfIl(2q2M|sn=lSi!p~{Q|9y@e$SgY5DjNn&Pc-ovHfk(AYPg{X z%VpdTBD~hvw&uBq{J9g0J!axC5E4L{cZVsdOro|wNVIURzgk;diCjBdeR}){hW_-V zjJN6Gv9URvdpAJZ7i(xrdn`%E!FWEOh-x4o{BEiH`t?oeYibg+HJA9}mmjGKiBQBv z2kG}S3__DQ_Zvc%rAw6B!4({{hf9q`zGAwR1#9I#q!4<)trAw`S z9|sW|B}r*Pil2bD`Qy<1S#%@;0t5=KyH>;u59D0!z+Rq;HafIbgw*+GC>4*h(R=_` z>`jG>vZA8*ULg^HofF~_7-NV|Jum1d5Ll4kisMBC^qK*^0Isb|t?xz5r$?Jlb$(C2 z;qc@NFGKJ_Va^O;bBb3idy2{1M1?wBF4KGjGlTxUzpYUpl11ar7(XzL3Z4%GZa6et8URqsV!R@&MsQhx&os0C@ndJJ+2ROmjk+ulFL1{~;y7H?~Kbu?V7Hihc{ zX90M!gu)_;Bc*|97tQM7Dx zC1#_F*Vkw{1}>Uk+}=h;Mt{&+AHQjJ0_-lIdB3qCT!!QS4zsk_I<3wnlERskh*U#Q zR)DdA>sXeO1e(w1>6{hQL4*L4l5=jXOD1&(%%qov%aN4WS>#^J08qAK$QFpGNcF+A&<&vS4%Uo9K7 zLuIjS08aBBw5=UyxvjJw)G8DfgjI5iofrMLd^nK6zPQmY*I|x)W!s|k=su|Dy6{MZ zj)0ElUS~Pd-RP(RH-{3DGQoigwb*rbb`FL$7WXgn!FNFViEj-4)jd&Vj~k?0>0RIpyp+&>QZkW8i6}`( zpxm=bIsKT{FT}i|$Kf0QciO>9<6p0AQgGhVe;hQ*3%vMLC4g<*_-XZV!RiUA=qnh! zd7|iZ5dHV_!w%~NHkGG`V>eiEy#PtY_i+JvM?p{W%mgow;K*D9fXTBGu=KzY_`}J= zKW>ey`j59Yg^>H}O~*E9qhKZCdAd83!x!$;6vo}d7$pZJSiqD4n=g57FuzDsR#OfV zhX8mbAd>g?N&%u1A0J=s?!Uit%7n}<&WrWoiQ+2Wdsssuh%gK+SgKsSzQ29cOf~S( zZOQaep`@$=B*RwbFx>|P*E*73itV+LrQR|E0;gAvZE)-eEQ>%>8=5YuGPkmd9P3wk zKIo#uj*3BaXSMftz}YmZH<^PK!qULfwDDPTl3*B)0tJf%K23H$tR1wb^z>V4mso(0 zPvl{%V*@j7414+IGIxt#b~#+Few?L2W~LB|7&qC{GRl!CG%+CoIFiOhF2>)3jMyKY za&)ujH8vV~%~Z)l%=fq2PCVxoFvSY@fZQP+S}Q0Wq@$zj&tr&;DK8{E_M2J%0nS0a zaI&*Km*Y1;y0}2!3Q|>afyG;Nci5`{9vV%#@OqNanY@uJIfKkNQY@qJpjXYW2lMne z@v|;k-~d_{m~iFj{%UZ_)0qQ~xMD&Zm^(a=TEjPO=?oP~pTAJ>_gsed%OYd1W-`3H zcG(Cmt^n%VO$;-`pVZ6vYq(%vSBV=NAJ7l>HlLFJVi{b>N+^|A(h`5TZGP(3WHhez z_BOY7e&*GcM1hs$lT ze=SczFJPrXi^1h*5O@K8HqvmYx=}|WRt<9Si@hPwd*F@%Y4qu<8!e54F93_(M>(eX z;JhHL-VIJ!gxI2@wsV!Nce9dDj0|T2)WX6_hWrYg{v%%$u;T&$J~Oo`9&YB#pynr2 zsa^ooxbHj<4h{x2Qpkd4H`kzNs~L1CvAU(Muro8aXqL@xm;;qg)V{LbINat&tn6T- zd!j_6%))DDl$<`|pMDwnTuLG^aCa7bKpPAQJiC$JTLsA+s;u$lg*hAzNI#OERwLIp zQ)_Vvl7oG)iHz~>WPSl&D}cD6k`u4CBpKzgTLhB9F$tKA*Nr`X1hW_tX-=jSBULppN33(s@)$djHbqBcX>`Qf#|pfcnYbT;QHwTwDPDTph^OE2T|?IS^Xu5;djrGNjwp-n_?Ge*}0Wt z00S#aOmd}>@6DfDn;J8c3hk-GM!UWr@`(*6MHD#!K#u|TZ)1NUueP;KEsgpC zBZ~TH3Vl>a8(;;v&LLL*_6M__lErReYU-M39bfiFZ$O(cxtF8)amlg*4Af6T|9)=< zX=bWr)B&A<|FQw3zxs=e^`7rIr8vf?`(S@s?f8CbYPY;-Q8`mss4skXPHP8o7@+T+k1|=MuIq^8HsHtML1{^c@ui$4 z&SIp`YKKn{uR{94bLey^o9ZVPOvAtcGY$T|&s@1~;o>*yj`ZCft@AE0ytug`<-)R= zb10hUs%G6((`oWJCu~G#6=s^`TW8*I7FX$fi!6zbpZ9KF!I_bS*Op_73L8doOT9?R zqBqaUVa-E7rbdd&E(+igC(uw)+0o{Ih7eCvVSfSe(FFisQFxv14)XN|Kt4RcjEkKl zrN4JD`WeIykomwy5RN|cZV#JQ8^={mi6$Ex?U$ud#S|~V=rK|J4(ePnhoW`m~U7#G9%7j)D!VED+Mn*D| zDx!)=!VH1p-U4JpP&prhPApDy0=QiHh_XGiac_~Yv8m$RKnbne^5qT)Ou8M+tGfJ= z+3Aca06k}W;G1|&s_cDBqXE~?QDdc?Hkb^KJ*|K*S1_D3Tnd)udVIB%a5_deW0_x0 zZhkWD{3w|xPbIrl?CdDx_&D0{2oIh0UHs`w`x=6MZF?bfa)Y@ahbqo6{*?;5OeOiYi{`NZ7Ooc|W+pZfTZ}Dk<5no9HT0SvcAu%N27c1TPQ@htoOk2IBi; zB7Q;TnaP-$W?L+(YHK4rs~JLfw6?I+p24mU|J>+Y12E8@asrTettfaMMB~E#9D%#s z*yxdMipuOAy)8e3Lz*Y&V+8r{A=gvcgYIEf=A>J705LHmi6traCKTV9-ul=ZC07 zd8cO0%2{1g7Hg&eW4+9;6hS`nOW&yN>VtsWK5`9#Vs2+@s&bWw7eS(e z1DJLGV8$Y34wJi|MPA*04|TLSar;SsA8QVT!YZ(^r8wbv8V|qgM~#m1+j|4gum&?D z*b{PBc*8?kV}FK1iap|4)ZdW%Ajk2MszU}LT+CVL7c_&JzPC`5?vV93%W24YISITt zEmUUEW$xh!a0D$9mk#gpbFE(fu_@E4K*nLPPywpc>K|~{nJgAxo9D@O3c&XTyioBF zMCO7#`T!B3lAF9k%?6<_j#5&=&s3)w1>CVXa|98zaCkfF;4ce6;<6*wJO2t6V{n3^ zNwW#jxpjDUsLj}Wdozr4!V|r`a*Dzc9bC3b^#PjGG3aI+fCS7oU{EOpk&d*+J)TUsM8Y8FQKR|8IMr~)aii1Tvbt$*de9nH1% ziJas692S=d)O}CUTdUd)T~8XZ@^m+4rKtO9U@hTeO!`!oAcx0 z@Hq>#)9L>(5!2zAU+<(;YY?876;O_lRA?Y!qi|n_AQYP4E2HYwBoHBksele{^kXtH zk%{`XDb}*JL-zLb8XrwmX@>McPiZ%ZjL}F!kFP=ABq=_g9l$1#+pIrIr;*5^KX1VX znTd&s_0b;@-y-v3z`*_i@qrP*V`5?*!D;xO6{1{!k4+5z35U~G_+(K0)7GCqQY*a9 zL)X{W;}{wS7JKF}$>QmS27w-0fjTq@(bbYl0`H0mZFFu&KVXAhuSMG#>Mk>i>`q3jNT zJhN@LF%s>7R;1AkuD>li*^%wi7!&HXrbgjCGdUq*8?j@yxhwJO>e}GHTBNg8W zdJsh=;5Lj2--!St`7MC)dKgIXa06r{g(x)YyZSc}vhRcY?6{2&&W8+nxinQVxOVfR zVY)KH*2pyR?@cGn_oCW;!ctf^;)|3}#TYN>Z3w)6eg39ZF(vu-YY^g~sy4Xuo}}Re zOJrsUqud}x9gB=K#<|NJw)x9u5L{*Ud;*0z{E6qF8C~GGeKQct5*#^L8`CDTP$Jg{ z!EYw!Fv&Qbo z{(^m1>^WdK8UD^p?Ec?D^CSOrBzD5v{ZY@z?ht zFMQJ{l1;^vgA%3@R7d?04K_SHTv_<0hw|~nD{<~U)}#Bcu`fKw;9!g?kSU2ET7&?l z8>-Fwus~;ugN2r44A*gjLBfeow^4j#boK%Z#umL0hF&bWj}B{=6eIi!tZhYrP$Ur# z#Gn*+S;w%Qd4rd)UuO$?yuD-t%IRN4b(T+*kxT?V$njefg|**8nmNynU%=x7dTN6B zSsD0r&LWQkTCDoF}h4deh zJcm*yX=Rd%>Qgn#cv;>qlEhtWYC*!evsuycUlBrqnayLYq)fMNJ6=Xo*PYkfu$YhP z$N~s_`5_oW4HCx0$}Z$3Mvv3#$}YR(CLp~`O(^ApE-6d=o=Px4_}+o=CIC2aXbvoZ zzDgD#s-;zAmF=+)N`dGVd_X>j?58Grts{tk`JQwk;b)?7yYc8jbeMEs2aYh6p0oT; z+6XU=4F2UloQSe0F2m?{n$|7*rr1mh=49*8oT$L%FL#%HMfrJH0+{xMt0(SGGmS=t zG9RpbziayOz?xmFkowx?jB~*c-U~+b!K!hLr_#?y- z7PdPS>wU9>2_SB#5nHgAup)|Xh!6a%FkvhP-6j<06>I6?I7DCPRe|3*G$>)uUA_PI z7ec-S!LR29czyl|vy60Q=Z+4Zj9JU)}tW9riAGF3S0ln^O!qq!9(PCn5c*ICv2 zAqH#?ux@su+{XABUM4Y)fxW?#MSj`ui@bsYr}>TDN;^VK_@h__`I=Uf?*sowpLc8@ zk*n(-0Za4-1dXvwn3|+@RjU#b60n4?9ah?vO}h}(aY91MCE>9j{O*>@zSsYWt)gNh zTF>R>r{s6u_&3nqE%JCxyDrf|nb-Juyu;~qBCtC30Yne+<#*iHD*6&1cPH}wtyn0J z7wQ<(vbx@ml#z@044uCr*J3~MHc+eWm=9kUGVa{SJxtN;bC`9*PtaClww?1~N zm!KtZK3-9mpfatGlKb$(ewif6oVkEZfldn_3QWNLsAXjfTCxEmy^>O@RbuD^lGB3aKGV$})}2U`*Kn$g75vz4a3 zg^q`ZhmnzyhX<=Aha+OGmsR)+>)+9Z>HA;uU#*jh`}5$8k&vAqR_j0D-DKp^;Fhz~ z1i1@G8TZ^U08@yRmdz(28kkWLW@hq$k^aLSG*oUa4UJ|W!rYr!0)($X`g)D)DZW}) zs$H{Q`Tj@azQ>*wh`qmj3|?$+>A#8Do6P-;*#+oJf}kb|+{iy;Dwyzf@tG{t{&{A! z0b?BN&^Jm~l_{!OY$|mF@YMiOWe$MBiAKmvK!@M6NG5T#+U%Im$|fr>?*xwiNa(xD z+wZ(m^%~K~VaC0^-A+LNHZ_U-;IiaE{0j}0aQdivIXNeMg8j$Zhxg$f5h9ML#p*>d zsDnyhOZr+CSJHn0M%o`tiRAC1WfVd@Zg7oCGx;i+fGh1U3bRFiV|B_7cMWb-92mIA&#zjgC$(BboB0x}Vax}{h zku&)QO!e7oqLQrnMrgR~%e^=N_A^ZzE0~bZ+;^&xnbXgV-F!Wx9l1UB1S&5yv$19( z$Oxz2g80U@Ol*fke_U5>Pn9)sSgFvXpzWm@l76juiC?0?OVmXYx4lVX{lQNEq9rx| z(BEH^Al;5nz#bHc!Cc3%41Anr1#zX4bYeycxEn2wwH1=@dvm~mH9@mV6v1nQQUGyEnf~?(hom8t=f&JFFOUiNzUikmz7h(>}6fL}LB|WqI!07?GM+1e{V+8- z$$~erz|QuG7K^Wut?8P6GoeQ$p(mEo4`-HOgxy^d?#I>Q$5aC+l*gJ{`@|&UjnZLk zW7e8%W#fB^nHuvf>Y~i1LO~k+c>eC;#e^?ZPX+4OTISdqs0C;?O+Lr@3D{c;_Zp+_L zZlq7uX=>PvUIX$cN$KqMC#Lrt!kF`l#SyzA%ub!Ia=yMD$iX&uuDfvz*+yeB#Pv zG?3Hra3#4FIGK~dg;IL3exE8!29H}FnJP+PB|#pXrUDT>F5mVOmc59IjCoRaLCWH< z(PYVh&sb)`Xo;BdU(*~s@P5wUf_ZBbsTmyXCsf_cRJQjuX>SG!hZHZvMa@lj(n8ad zgl(@jql~JutxpmVe|vj;+8OyGlN1@U?u_YQ<9NQk0VEiuY{7H`bNE1Uw$E zgOg&B-_|GX^9$P`VflVZtP`X0>XNN_IG(93P5xFclUvGJJSqZadb`_uG!Xw-w7V?O zxTc+Yy&#fO-n^fXFarE3Cy880qhiqBJrJ^O2S>~{m%rO&mF12BTdFE5(05S37pL!v zp^6XtPZ)XqXQ(-YtSO6*zuESM71!cq0|x~Oyp9G zjw?6;@YN_^vDVyjKU;I87{FI+skZ$q#}f(6;I@02+RSgWbq>bid%U-JZ6)^jOU&TV z5r#hlTo5YBc-#r#RP_kDamNS*26ZG`bTzF^4i(kZoXWH&Ba}dStx~tTGqAgDJg_Nz zs0sNpYLq>uedL1x6@=_A@Kcg3_0gakFEu_@1QsU|M+B&nC^{hDvxB9~Yb$Jy%m~56 z(efW?vswN;CIoiij?p*57%D1~u}Q)ACtl!KN|L$DsrY~Fz2#q2QQI~=Gjs_kf`D|F zAg$EU-Q6J4jdZ6?cXy|RbV`SGcPS~-4e!GH`aSpce0cwZ$B!d3d+oi~I`cS>qyJcR z<>SY6ML@|0VsBX(z1z?^u&ba6j5JIvR4ApcrG;}9^7{5<96-5ADmh-=JbEmA*N#Fa zWn8I{+MqTe>=-M86~S;v6QX88xp!*DDX!YQp)MvUY%za-R3 zQl62M<6^QzCj=MnQK%oov_tUOuS-fVB6;`lGjXPUVq;kp)fO0gZrLd+)?3vlVfoI> z2Lnff+67yP%kE8Z<7G_x_|{RM7$#*9@9h_E_n5f@OCnD1E;^!4R`Y? z8V5D%n|JyeEkC6ssz=N~R}@eeWQK&PH%iILbvz=nt0sz?tTw?NIqXnhgInh*X?&0MBSN-a7NmHg(D5@gZD*4R@+p;~w@~Egh^}3I z7fWso^8yjK#VFLf8(Iw;L)RvM(|}6ZhL7-?uFo6is*sgQD_AUou>FsRhX>FQKOY-o z33PtGL{eB?9fOF?NA){;KL>P=l^U3iUL@(hxdg*r;hiX5HerW)DPiF-g&j|)`vIL@ zQ+YjvRGKo51feRKp43+jw<|O_U09MA62Mhs#je4QQr_n>t)L54#74)^p zPmX`spE(xUu4hGiuNnAypr;9?`Pr}~t?~xwriL_%W{d*RI1dI1m-7Q#bZ!C?N{5;F zj$$>5@avX8b0T+IYqNK5+3oU(=C0mgGg67Pulh8XLpZIc__-!Yx|TKtndZ2W0ex#? z%7So;#~S_#-b)2B?t%a6>jhd>}e;ZtHtE5 z;fVCJX=!P3cYZ=3XF+S)Su&x%15<{H{FkPBpBMSQpuXy{hHV>Ce_wr=l>p;ZBz4In zpg;*a@{%7#E6ki0w*W~iz|S$wXgwZ|E{n;@eT>!+h)3AqQ0|0OJe6<)04LlkGBQP6 z&U%X&RFG|dF~QDA#dP<)1{d)!dkGdRy-+tB*)?`BzGOv-sHZPG18YL{0L%uLG0=1k zc#ATI^P3`!m(+xWbQ?ZRy}TAn3#I{0kqae&a@P~k>Q<15kIhWlUih!OG1A<3KJb0J z?5O3}C)3f=#sQAT1*-aQt)O;JX&ZnlgnO1N!tZ*gHGhZl{LJ}p&PN;?9`0kXODj!_ zH#YEimWUnGYG}SisT1sh_+xi^_af_)i8XyN+&}jXV59}e*mXeQOA<8j9-Ao%wBh5DF6AQ|WW+LPA+8!chv_udtN} zV&l|Mu%GgBq#TsK{S5FCn2qg3&7cdFwzBdBo%7D$MWqpmyv6TDv>s6BW%a*^Y+$9j zvIFiUu1Y=JZPpe&ePrNy%CsFE9XSb@y-uwl-=$iJo_Q%K`13qj4eID<`Jt|t>gdKIp?_G85>>7u#jM8B^ zSDGxy175lAdEMg;2F&A<`#neF^gVA}?y3|fpOF`n>*Tr#4lwEgh-(Z2qQ{&9fW}k4$v|%&n49t0HRz=;e*WyEP{-xz-nRdtjm2eB zxZJn3#QfTsa zkAELqCW;<3LO|Hf%TbkW>c6lQiOnei5ims8UX@Q%Y}q~g(9eEf=cfmxh464J#%X`8 z^)dT*4}2MDmo{DTQ-_852>H@L>!bC}pI)}i9N0`0tV$oYylf>-znDZV_ql(GqNe?6 zsIebno4rQ&XFhkP;}4s1pQ$Nss?+*F#yC&x z&5XF8)AH(#(gQhp&1I6oBT4_}RUoNrghT$WpsufXHG1*~DPLe6eFhqk0sFLk@8y1U z@qsMNaeL;a0%<;>0`L9pJ1fv%v7T5-n<&tZzE8av!uC7P{@`&Q7T9^8e&597bLH#| zIse%~^c$dF=fS=S`K2A3E*(u9NmQ`ok!s!oV0V%*A{Qo;k) zNS#Kv-Cn`%WW37|K&1iTMsl|AN?u278re-)##I#|vZQD3#glHg0-p76%(w4?PU;l2 zd>?o6-ASYb|6q7#?__fVI>F=blK-0F4@R%7M=wg&lgSH=^JI&Kw1J96#X&YQ=pI@D zsr5ZY$;m~4VcwF282-&q^EBI=aRl|YgJ&^!VE(;KyGkejWSB)_^BIp_iV?a(yJX0m zA0UQ_kmk($)?`%`T5FvzZBv0<^4>rKIs&PjqxhSBdZUl|g?w_vYPyW%dtwYS4NY?H zNWkyzPyrP*DRgoJnvR`^cp?SBxN~M(fc6%B&F*Akl1Due6jnp#wRiaCMUww8w%xO` zv@b}%5}kbSx&s5fpARxS6YPnM5r0Q37-W>{adNXphsZv|NZb@Ic4cOXt!mQ9)!W9T z!H~*O*?wDcyX`SLdi@f@UkUV~a2xThhwXsQ#{f}xUFCBWkK2#!(?A6v z`hCc`1GKEc=Gnz`lpXwb3ILUv620=kiO~o^^c1`CjBa7Ux18_?Dhp;~E`saC1>!g<>})W5TrPwuOvQkh6evF1#fNnZQLk(%mt zMdz3J7Qgryj_b;(P|9Jgx=I-Uno?*W0kea$N40UPYB!5s;hq67d3C! z7@AaRp6W8S(HG6c$oR&1$}B7im%Mfu01H85`-1P!#W-lh?9;bva^ShoR~-k=hmXVI z%*nitS!U)rSj607Awn4V0~%`jB0Od#hGy<~2wu=tZHQocflSrXw7`r81@?72Ob z+ce#YCF}gnCoi5>fr;kBQT>^^n> zS~O>E6EU>b2M!x+2O_pq3zTC%Jv!k}2h;C6(w{@uUl3~M)*VPZis#U^TQ-nL6gNMj z{ZgFZ0EIEXfqX=a2uUj5HX7SZPh*JiRntHoYifF)jj&a3{elRoG;N0;)PCtcDOnX& ztMI)LX{%riYy-UGpw;-w;0}O0o@B0vwxA|~L`R#1^PpT89^RQ$UXR`A#$#@%^KPcqI{$)7)HWQ{(YZscPkK<^Eg>;JwnjRU*8JG|4vu@@L zGCzXQIv`1fgn{pS*cAx669nH%W7Hqttp9ytn^LS2C-UT>7;6T{TFPV=aK{l#2*C5= zl1&qH3!;(?tN6PeDW=G`&pC!~>CbtR>e8Y9yiA6ghSROXIq(n^Wg*9Ok3bA(1n-=< z1YseNK-@~K?9?joxn`6SEB#>0@!1QvK)3eKN_&tp@`dI6_fjvqH@xv*AoDl9w;(m9 zryq%tReo{*xnR{$!PP^XLick*N!%U)>55t?)x=Y$foc&e6{`rdfETR?U-heOS#yIm z{Smo`!rTY!U8%$Z4};kEUnr2^4aQ}UWBy#J{x%nX!(F|$M)~I10#eQD6fiYmzo*3I4M3pU#G7Xj4hD* zoQz6cQ2b(f^@=7c4)^!{u8~=4q=aM@;D5$n#aQ_kRTa{gQ8d!1dboR zmT`2&c6!oZuo`2ZdRv5vl0Ihr_8=eq&7>#I?+yvf^S5UlG< zBm=byAw|>8A#=~VVYt2Y=IZ9HyvGV)C%$VvTSAnn%x*Z=u&;66_i|BZoxE<5?na1$ zQXoXZA8Q3dsSu;Oj%M-Gd(3QX$bQh7g#K=8M*u*p!NgZ*Y(XrDBB*Rp78IZ4F-2q# zbXl6!H0^5+WHnirTNxW=Ys^}_30c{f1`N}7_TpKoz=0QUIbV}ls54erVvee&pZZd) zWoK8G;)fZ=KC^)GZb94agX?{2?p>lA<2%Z5^EfE^GDJTs@!Tt|xjQuUw6wIe%Fq0& zq`mYR=gV6A<)sRtS~&!XG) zlmmvT9bwXDM#)Brq^A>*($}{@6|5f=uT!uL63;Y7N)5t=x<;y>Ks$7N9>^6zyM6$w zU%!0O&C{eN7EWE&>?iP|^z`njN}pPVAZv-90@X2Zb^|`)dG)xxel!FT?UR16&eQ1y z?~b2Hg?~}`+?L4iBtG-GJGAmOjuRK+itIfZDQSiwYO1Mq)BdS3@<~2xTcFT2nt!O| z-D>PlGd+=+2*Y7*EfKsg22G7W2V}j$jMrt^$k&_u*|t7Z96Lf-A!{egpwu?5kawqS zOVn3=V{;gt3%Hk)g{R=1`&&?wWZc`GfiLL|X;_~}WHOQKkfE5~lE zBeFk^h3EpveULeg*q(eFFz0mtZa!>1CDK}$U*lSuXtYn%ITj>TG|Un2$1yrCpI4aX zmxP$Uus;2)9U$jSq7eW#ll^f&x91k~^w!Pg@jBHl$p3bj=4z&$wvCw;jwyCV=p6!6 z6PKJRRCt-)5-44zkh%Aom+OPJ}_@2-TA`= zJjp3?UR{Od=~-u@1*BjI(@yE>nW4XFc&+@eDP!F!{ynVFyF)aKLQh};nGIrD^TrnkY9W74w((D?xcb)xG~HEw z?|^{hp1F{v2l;{Gw4yI^ZTxPf>`nsC6A_xHxxm16cw~hJmMKO`H;h*#L<|bYb7Koh7}2%z*K1m6LTdN{gqE69^c+eLmy3)8DD;pZ}z3X~^Ir%QP=b%v;uT>9H%0hZt zY7Qr?S?mGuDNC_B5h+Uy+*{stsqvP29YqT(HYSY`z&MPT&7hEp+^Rw#^;3w0jvosj z7hSnBI{dkETW*<>g|$ZCAQz-lIsQ)^%RC#MTC_wT+%tXNZ8+vW6EH0y$vUHK@S~WB57(Qj%hJ+F z^@*1^k@2U9Su~4kMKgc18&${C$Oy;il_F!DDx7NEfI>{Q?kdd&O#Aq7KfbwkO=x};amIa5!p-ZntVaT*>52Xx z&mZqYp9pp0VYA<`D@2mc3OpXENXLJquFj&|rWCIInD$Fw%*zaEgdvVCbrtqA*ZmAF z0Hchd#WUpyXga|Apvj7*>*^MMyF58r8j55>;zPp5K%n=IZG-GXsq5Jc=mG+Iv9+AU zU8Vq^t;`QCXEo(RvE;4>KLfy`Kc&;o+5@k>Fq=reWKqe!o@2gWPD{G!RbZ$1Tqg1! z9l@yN)2a8Qj_=T^WJ~k9=E#wN)Vb24^m_5eq3&WG_VbzL<>lWm1^UP%(4nt>GUk=u zG4Ii5HAcrVhH4{g+9GJ9n*0jDM2Jm`t&uvm^kmVA;X1S2TiGEbp?khMK9T;Ow8u~r zyF7LD5(5DtX#Mv3@X=jO*xf}UY5me_Lv+7luc5*Fn`Vdcn7iz7K~JD`=`PJ5Y3AVY zHvon7Vyd=<%h7Bq=;j6%g3DtaJ>Vm2qE&@Y&?&v&3rL}^$f-Yw=XJAA%#T)xYvDbT zQpEHxHrm{4d?TLPv<8Ebpnps9TWG%KvaafD_|T8rJ3&dkk6Gb%K`Q4xU-A782 zMi%bT9DpXq-*4eQK!(QT@X0RaT#L_#_%_Jlrre!IWckKTHf@?Wd!5OvmsXNLx9Uke z>A2b1vzG4L;H~G(%JQF}Y`LbV%+nRs+UveD(4T%4{CHp}x)oGuv<)TNdU1tuV+a#C zVNWQQ(6+)TP|`ksW(;q}I*5`^Tt&p2k$iFIetCUOXwe#`=(D2=^bLE~FLsM}?{isw zwzu=s6)sjr-u1h0z@IkQFB>GMD(`m{`i2Rm;r8Y#`+3~4DLu26;UFnTylKdFXaDzerw)^3d?<8Xp`GKX z1H7yPGNqvRhNnB zQ;wdx@V35aI=m+X*|0*oXoA%|`9$Ii!$kzBqQ!RZ&sWTk*&t??42!Is*cq0$+ARbA zs&VGj;?BpvN|AZqj(pD~Y^kI}@XaaHR94m1`C4EZAV(_W&>Xoi9`4)fW$UC)b&A5t zZlNI{uT92Zw_GyFJGPNmpwG*397Y}9)7_1nJW#UE8O&#xI2$pUdi88nY{~swCV~7` z@{z*JtOOE@mk030^-Bq?8^U_Ot3tDJt#^f9A{cVmr)usY# zMpx}2xjsVhD9XP{vmi`jOGIK;i{R2K;Ev=3h#)0-igXp_z1YqaMX~)}W5&jbu!5(> z*Iy7sv1}xNJ;U%qEY}D!IIHC}5KTxPPL2^E_)Cpa-Vng{TwUjOMR#cnnly_fQ(*=9<%{rOk{e zWmRZV$sd9uFaFmOt;9q`F_|q!X1E5XdTWw z4tJd!_2n}oU`sH4qmfj`>vC&*raQP}uS$drcdF*nsP#OZ8~k)uYAx-vwec)BPRHaa z2(YE(yLaok=D@Kg75HQ*)P;-qoR%EH$mYj#R8&Vt)*zv^L!EGxs(d4Tn9GG%_tou! zYm~`vEi3&`fLW1^i%LNGReervbxP8O#j4RjoNc#$0&~HBHmblMt{-OOF0&t^6inM8 zf5)GHKGxT)Wf$%6v?z_jpSWt@;28!%*d+8Q*~_zKb(LbjI!pJ*3F`$W^aENigA})a zH<2?-@BN6eJcmA4=~hH>PPcPSw`in*j<-V=11%rKkT)KgAe!WbKC4(1Z z8{aFeCU-6@vkq+~B|l6}(%02Y4%EXujbCTG;qn9}kP35!ycq6tJfH{( z{5e%s<{vBK+E25sG6T&r9ZaJUTV>pUo!#)65}2tlIVub!-{7B8hCwr4(ZCAVy*y}_;iJo# z;G!4Mlrv7vTv)>}A$|)6!?`FG3sctC@e+JtA3TTSvaR}utpMpsd62@Tl<_nkA-U;G zRDXXaMCakr1`jOJUh)X(2nvNyu3Oekt_}`LKW^6jZn;tH_SGU(%xE%r$vl&Wuhbdo z_PxgX1t{hM?oH)Ev~EHBBG$F+-I4Pt;`G-)VRP_h*09#WHY{i%RwC zJ^P|)kY#PGtkf>VgJ8HwP&ZTyMj*CsSY`grZ4VkQpS|kcg{kc3=b(ge`|Te2@Y#tJ zt4v=}Q4v?JeUk*3rV;RM>Z_aKg>Ax%dxex;?nY}0mHk3*IdBPn^Q>$#VM17An({um zrYNyE@;Ml_YU0z5S^B>N4@Ba{h3{}NOP!$%505wPJMQ~qu)~nm3b&NRI zO}&=(nUq+BCtzmlPR!7-*|*`EbX%M^acbUvp|0;ju0eMA|U3 zP*4NRLz!PQJC9YZ(eS07h7fB+Qg?>;LzJyFgKYC*anZ* zLUox9MaZoXIiD9Gb$VJhsC4^xqf)g(6MwNxDt~OQR#Ce3b-9{cteqwPGB-@0bvl}x zsZe!D@eV0>7EF0d$YF>w>VM9=j;dx!8l@1)Z|_E{rBl z_i`rBHLlA9M<0wEDy87}iFhZfL2hQdSv{NWLDwt?66HO)u>0iFj~HXs^%5o~%`e^& z#C-bt=ov(qD>tn~=SR`0hw#$~+Ik|f@rd`E;^(q)6D4}}{YIfRzFTbpK5^E@N`7L( z37y%EHdCZ6)X*g}sUz z7l&ux?Yy)$8?1v7mBpnuIDT_PWDNYSckgoBE&ZgS-1&*p$)f>kQOUmaj%Sd&I**|m zHC4v}jT!H^o|DWW&N`Cw6B7x65Fu?awQH!Xyh```xyOc#`$jKC3iMao4@=ZR1$gRL z$9bc{7bDd99U1bTg*;q`+dGjtTa3hh`Ylf4J)W&s4g9XWX9qwXFPiWCNe|}g@Dg$g zml!V1LTQym$+srv|Q#L_VNC?_JEuTrF5Qqf{b5DfWlrxMy43roJx6 zoo8Cv8vQZn&g$SAjjmKHQdMo{CM@%XhNDp7xd;S?;}4%h1(RQS4GnYdhdL&-tf~XQ ziVxdnyT4J>D6PX-Sn^NugL2rTX7~b-mZGD^$e@==*0Y}_2Hv7wM6VdVK$5etwyxP0 z$!>(Zxz+x0tVEQ9Du3A`Ev3iGL!?9j7l0s&2xolP;5hjudN&}nztWBnCoo>^ElKee zQ}FrteBcfjiJ*5yX(>yyl~{{2CWKhN>6;ewV6>)(;o{Vl0yOto)i=njR|rHPaJKHQqA$dK<#_ir=>Q*1qOO88Aj=Qs1fvNl9H390QH21Cif`1M$^iOX4^HJ(7#2n*zGloutvz| z&vGwHH3l^nt>5Y(zDI9=xC`LFKx3SAB0TUJgu7NF)Mz3#_cyaZFijVv6`Nw@w`2#V{fB z@~q>o3&`|p5W9KPU9=;L9n=1f9}2;dfl0qi`%vTcUAO=R!Vj|QI8%O?x|zQ4VV02<9~xX1L*jWbi}M@ z{Uk=csxw5&QjiJMI&J*Z((F8}a(|l(7yf(r0EgY>J#JLr{<|wU%qeg(to1CN$n%E9 zu;q0`u{O3fJw5 zo^tW#ctGSWv09i?oJgAJ>j8j(S^LzDbygny2rR@S? zf+7Bx_;|WP`=*U)8-E4DXNO~lBoD6|l~)lyz6Zn*v9>6R?~1t#z74{$8HUWB=^>eG z-+x*QBeAYrwoRZFc<%X?JAR?&J)4^$N3WS9A@ z-E-o!L8K5)EX9lB3s*SIK77l6YWzDpg}Els)ySw#!SPA11uHD{j|D?VXW|4lKC@QA zEwozUN2Q_aP7)RL-|-fM-};{3ArLWW-q+M$=J@;s)_7tnX}N92Nqj=FpuCoZv(JfS zk@XQm+b8ZZw(oZ8J8-^Cd2|^Itv3q+OJ|fi@*SVkW}i+vJ)8Uqjw`2ZH0*KZKjY+Y z3nO}}a5tLBb7_Y-6zp%JzI6?ncb=5T?RT!-+1~zE;!lfj z@`S;x)-w_-;}lW})xtKa7iM?_9z9$I(YZ11w<6r+-V?FlJUtF;9gvSd4LAf|a*Z|@ z$w;L&3sd?lbVWmyDaAouy+-%-tZpnlDnjG1^$WCX{jE)Lnh*?6;dx6MQYx_*pS_Q#nD$)(9|R+o3cM`p^$n3 z`?qtt(K^>|QSgo>X*fA2tTB59Z7$huXDa&kBI0g!I%Pl%7lEzbAd|mfiO2@YgG%2^ zh8hnnD7KO^Sd$Aq-^VHGf)MdaYil{dI3p=lWqkSiOl4zqz6o>HW_%P4W|a#5d_VzC z!VDF8diu)RZ84FPZf$FY{HE24^e!PMk}bBW5sl^1#zf(-woWQuOV~4rG!@2cQJa(3 zLiZ^sm$fB=PZu0cth zWu&99`a=Hf{M_kr(JFy@HQhZKl@`vM&k$sPhA7(2uU|2zCnl0&5;U}T0`rR-7v|^r?3cU+ zC|+lm0^UXi4UJ*o&3iw{pQp$@yFJdbeWWu=*)Ul=Op`mzS4Lhef}>q+Lw6xw1M#DaX_s zgzLyKx!b`A1aJlNCPchMc~W+>AVI}E$Fn^`k5V~7lYK44d(ehM(d4pznn=HOaY%b( zMrXn61PrQ_sGO##X3HU0$vBWU(Wc@gdT(!SUDZmiRWp$n1Z>}2+MrFS3AaBj^eu8i z?AL!!2qk}|&rIfel)EKSE_ zQt!V{R>z*%K5UME2LIu>LYEPLUH_Dp_^(gE@}0rX6PbQXkNMw!c@I9ksiLC$_xAtu z10s?T1afEj_Z|P-)qj5YuOb9+xAHmtGiLuT^8bGF|2@lxU=jkoN5sDxmQes3ViB>Z zi1DED;D@@pI?&ybRgP!UEW^YO$Nbvb(AY>!oV>G3JU2hDibqU$eZAy1jK#Az*x#ST zHPqI&67E~Q+eP5_YPa@K@r8Ef#t*VPCD3v$(E@Wi3u9wPt@r0VYC{)JYu>;HG-3N} z1%aTWuU`j`F0rSaw*BB>5AUY?>gwv}&llmd(ehv*$oc-3tgy6HzoM<}*$7~PLP7a( z@?-npz~0t2`WF^fsHmuDpVj8eThPH1I*P=$2ReeIS=woal(W;*=ZgovU?%I96zON| z9*^HK)&W5F9UUM4l8LzTu$*69JOTL7VyNF8XFq}sW3+N>6*N+ z>#c38hZ4_$c=k0CsesP%?c~0gL zJv25l@;8Lln_*V(UGDJkFqovX_ZZM!D)GJ7v*b?`^1HhU_q(}a1uNa!D(GRR4uT+d zh#1A;##9u9r2$V5XtpzO012DW-+*&~BX9Kk8$<>OJ;Jf#HpP!aFbIlx)=g4ca;RU% zt*vFL6{!LpR2f%RkK*EDu&X_)cWg}>izF~ z@AZqrCk9R)a_gmzPwpXW1o>sHsY|UBY?IF$43>`58tv*ge*q1Mi<;w$(mZ^?E9_(`oV|3gj1=GcJ2ikPD-lZMIy6-ClH4jwg1aJNgyS1# z{VxCCHc6qY(Qsy+w{6q(8fmHNq5V27-m~U{$N4Rgl8 z=}M9uXzU1rmwn;H@%+k&C?K8j0nYj?QI!%=L>gX3kbXIsu1$=OMU&kY<9nQJe|3_7 zuO-?P5Q`IIv<-yimc51r+)&gZPUVdX)&YX&^{qP1p6U*4OMl-lUwmo3kh8P1a{#C` z7*2&Wu-LS={ekd0G-iFBYoO1fMJ)7)hk1MsNKELE3g-cK^Zdwdo|eO9Ek@=apCje( zMnwITl$3Csn_VugU9jT)Mp7cNp?ttc>^bD&p^60qm=NF6VOXtX4!d!2w>-~cL078r z_*GF0+3l83O$`@?`jTnQQ^4I@zGqPfxLM9y&R_7EDx)Kkc>~!K$2@B<^W-D{?KENOy(hsKAvGSdHd$mRD&twd9_cKz{HS&HF(3R zFc8_3{9&J4PfMA1<%aFy)`816zm{bbXBpy)%Bv$r82(pJ(IN-uM@P5I z4UTSrOkGuLQ{hGw8PPlcLI^c0q8>R;OTyz9N}?#J!5{t4{*L*ofbizsE`NDNMMg=9 z≫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

Ebl3@EH(~4_BLKi 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 diff --git a/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_light.png b/SwiftBuddiesIOS/Resources/Assets.xcassets/AppIcon.appiconset/BuddiesLogo_light.png index 289eb6e63f68b67242bb412270458f4b000ced12..5dc3319291d95368d6e84eba06cc4b1b66a8e395 100644 GIT binary patch literal 124112 zcmeFZ^;=Y7*ET#1LrQmdH-dn4cO%jz-6bV8G}0l`-Q6J#l2U?{bSp@A^X<8x=Xv8l z_zuuwhw%fw$xRyQc(f10H2XTa1pluxd9INMgsf?f#CDtK=8mj9Pkg62mYVmLO^-& z|NArS!e6Tg@^_mp60lu95KbuOAOXq5j zmX^4RX6;Ikxh@xK$we&W%uu>eaYU5gz9)Ata8YncF2h164~=&#YY*Ljg#WxP8 zne>^wNV~ee#@Gy`69@mFuO%wenpmfX)c^Bmz~?{6KS3Mr|M#UNG~)2$QXvyHNg$Mj z|NTM-iNgP1cjr-qc|p9qi-#=#=Vd6s19|@61OMM1{(^sGz8b!H?^suN;(zWj8GRB#hmT>p-a=9H~}YXIMHexe3_t*LR8pYznBw2;}^%F07Q;Oaz)vIFiV?X_!Fs@!_CpW1(1 zR30keN8WKOzx&Vr1W^54TYaj%OxC@vJ^7nJh^mURPK5uw@Oc|dPPQ`_TAlnK#ri7) zMT8o+>88O(-Jv@*3h48H!0g*MQKjc_BsG(I;rg^ARk-cI#>Ub0UG2Y?gGvu9Cm&v_ z8Md4}&Y*(5J>MJhN4}oC6Pex4csJJo$DwyQnC~Ye)p22)O%w`3he~Xm62JsCqL$au zdXs|7NGX;yGy9vlhcCp=MeE(|g%-o7-%A+!QTz(PQ=t$G24IjqIMWN*m|Vy~<|*1< z499Ba6%<7=1y0|V7lnCz9v!(g1gLvoVDo@Nz9;}oc|9Dap9n&+$rd-a{$n1IY%(z- z?PfApA9-_iHx*O;YnKimA8 zKhR}1QY@Zy;(MQe*(p10?o7cTbdU@hd7#O%NdOfB4{Q}_}9h?uvc<*5F z#2(iX!scvB0!T1zNT31stwemI>(_5g3IW4q4tHpvnZ_1ZZ*9czqyLPzwLPmDy%x!T zd_U9-xQA#c_CGr-E)VvJjrBVI-BZ{mEuXKLguh|>@}r4)ECP{Lf%!lZCUg>*C<@`H zoRXn9$RDpRc|AP(^j3yeR%TWVQCJje;S2m|8c(+6k__70i=2(N2o^%o{e6}!D20SR zFKf%Y3rws|udc4Gnp^P=j7B|BqY@KTNPzWW`Wjt0DVhwugkb&HduQ~NfBxe;ehP7O zvv##3VB{W0$LGGIr z_x^pl&CC7%*UZ?f#$?7c&#a#r*VmT^`e;tZQs!pv?q*uySp2IaLW)@wmRmmm!v&rBoH8bM; z?^sk*<6CXjmbjjbokz3TW~S+0+@(toH_PK6Y_ovt>lvHL_keme!PJXyIJ=7hZW_fj z=w-Jl=BCk25fW>OqI13<(ETbHyoYpO>6LUT(sP*f`pQdp%k3MjfbjWSLAP*WQ5v1kc<(eRV6ZQJ5u(7uP%k%fo#g?xR^2$nF zDK^SKn>$Cx@#=goBz*K~A;8bgydg}P^@=2|MZvt*!X27CztNga&>#j30hdY~z88X+ zXha29j0OEZ)uWc>cktJ>o>4Z{gGgzl5&p5xu$_sCOS)WCvY4Gco9MWFMY}&n_9`N}9a9Smksu4Kfje;FKhTPor)cm=K-IQfE{jg`SGc zkn$|2^{!>>V=r!Rr*SP_!`F$qS2ftVOH7vp({yUg!X1r@uANM!V-Hn>e&=eih=UJc zOL{UNp-6yMK}ZAzomW#Lsl*!WxOKO6c?S#5w>El<`+^FEMT$_EGql%FKgsUBs9J|i znf^Fi13@-0K6)K;(P1PrAhRhqJIV~E-7wx^2=tS|^aA{H@2ejQPtNGl;e ztKFHdjyNhS;m+UFf1BK`vT~8wXDG?fPnNq1mb;&ecagWszj{}3*-(;--6z%;A_RWI z=evCu0R&lTKoO-wm8R)Tmmn?-ZbvOf=l8OtQbf_^@@!Zq|9DoXtg})}o3UL(u@D0c z%+3~ktb2qEpti-_`t`>t5U$`qp!C2YHET|FWRAy4~9kw{Dg?h0%~dl z7$kHNpw7F^@sP6Y^k$FS?@rqK9x4)AjnE$>tf-q3J^BI*zn2t^-z*9O+Cu`0JfBM8N%Wh<3$zDyw-0Xct6l3!x;^9V#;C5-5m@Nn&u=oGNwR}er z_Tb$uHy=i?oyq{LzaKmDqw89|UwuzVmkSN^X8?3uqLk5kmF&mE`^tk^sC$3+C?ZDL z*@cOF`hV{{;iH|%dM`L00OTCV5`e?P!eb7BG)aJ7y%;_$45>G!+R;F{3@^Hs^3d~2 zxC?7wdPD+piw7+;!lhu{%Gn8iebFvpo1=qs#1=5p>2cX6kjiRyG90k(rh`-wuiRRwWBaHLD%)4Y+q3u}Ou zLlCfFUGVxY;iJ__fO&D9C?J?}zz9qaXvd!uq1ccO-A=y?&yu#+VCu>w=qzOI$M~nD zVUMDc$!mFWOBjf9=q=+wk(bRY`er#=QmyUinAAKH4tOF6^=Yd4@VbDHB9;ao5KT>! zU;%rlu0e~=lr88!4rBazijR+&HS!7&(GJyVhd)x!s1U2%m_ssP7znUOnp#aSQWw)0;kNz z(V*Lw6gLz_DP=~!7XqZ7TtN~Rg!1BCU`p#hq5*VzT&{T1U_i7%S{_&SEysUN=}f*M z1s^3t3xJE&XI<2ZaT1bybCMdCy-t#~;9FFHi@|V@zn-rso_`SpvB@Ms?O@t}^i#tX z2kVQtl_Pm73Ie^N8C@O~n9^!jbZ`fRN`h4(34RU8g6aZP=YyjT4mzKo-_6`-stV1| z!=R%g2r7*uf1zTPW843t1Y`;=P(#q&iA|>;@MiPW@lKFNBBWbcFVY?{@Qs^cO?4hshmhh?2par&kAJ~V4xHkqg zaK+edV*5WkN{P-*Y`;tT%ZnR=k2mDGB1&{9y=TaI-Nj(2vgB^HsB5*MlG1p)+lm#UkteSAOAE>vsY`Tkupsr9s#)gs#1K)$}Pa zjS2!b1UpZY4uvTV1P)qnJb?z|7uf*{F@wEm^1j~c-{keN(|(4967VBbD%1JpXmP5? zcwlRAA)-Gfp9X8XRv&e0KTlgRDv0ZV-NBFDfU}$ap}2s`CI<+|4JI5>=(}9VM}|`% zYrs4dla4mAHf56slhANYFWYY?-2vGg$pKG?BA5hbt=~hYYV1Gv0@yNluiS(^R^UMq ze2)|9;kDdp5d?UvZhSo;l@a%VNycfUj0@$j9B8e}i~cxJj8(43jt$VcJP~l((|1Cf z&eYQD_DPClXbT{gpYz_0t@^a;D=ThCU&-ZIE1TwBuL0=L%LQ&BAgG;+>|thEsXM5W z0q+0b84ntDU2D^!^|EJbYYT~Hx(Bd_yviGEZHqlBB-Z9;`DTcRf+%UP0S{Ip+Iw<(_}0yDJw&92xjj$^lP?ZT^jl@>j5u83y@^pj zOb*vl^$e_Iu;%GuDTI>yg;*@{-RYvn`@M0Jf#D#Caugt^WD-?R*=-1FMn<#$Q!o2;BEOsrgv$t8mdBh0k%kG)q8CpMOoL@}e6XbVuAw~7MoWSk>>u?LECVB{ zdZ7@u@o}sB2M#n;Ln1t`{#D0bw@wLQqu&AQ@kQ|UY&7H^OPpy6_f50yT=V|ioAS9g z0vlsj&!XP9UjbqBfdRY>pi()XHd^DKHfmmeUsUk}{1^l{~wg@fWzh|Ia>uMi$W5Ll6=~ z^Ke6Tbvtcp_GoBvYiaOoXmA_Ke05S?onSvcj%M=N%6l--``ax=Q1n^PE6OSSzUo&m zH|E4jJnlkDR*VTYyuV{mV8Nq5WUK~73KVb+r0>74(1CoMb$O{mfB95@dP#qIZF+ug zZf0(EX?1RCF7{Vz+U|DG+C}~iXD6X7ydpJB@Hn@L&~NGKUB$&A#q`ETj#d7Lhkl1g zen*F$M~<{v*@Z?%lG)jldPFc2G&Kcw57FwokUss-)#Xfm?POj3mY&Y7caBC*QnXV4 zY_9Z7djLN*D+fY}p*70dURkxeeEQlM`B+&_Dc!Uo=X zRR#5pS|U+eTCnL*1;L@*3N21u-*j*Yf7DP1X=bA9#_`LGD*?CK*f#xMct$q$czI|H zqqO+LfQQ$I-P1$UDf?f%!6&c_K|A;B$FF}Qb!9m;pG+Izhj4&hVw0HH;e^W?@W1(Z zZ4yV$X-21V6-V=i5w-y$C~W8`_YXy9Kt_F4HM~V1}dx+j2_r^q^c6E<0g z2{A!vNNoyr}Ru}=zSPJVa*0Fo#Z^t z-dvcN_rTL>cWG;7YiUO*;ppB{d%MBpV7ti8!qVy=e;xjr_p=@!XPdpKC^*(;TU$+T zNANt{M5rAWOu-9sq0iQzglF)GU`XzNIlH-%azWk|J)&o*;;x3NLshd&klG zU#!cXXG^5bv7;|X!QHpNd!C-go-Jv|9lsZKE9pL=D2H9Vmk?@LpbmNS%);4e`}PJK zh1Vt9)kDVj3)7-F*lbdjlwc~})q}fEv@#L81dHd(ks2l;$W-YItG+iqDe0E#j_+yU z;E<`DH4+M?5(;UJ;m?Nps24}!o`=2T4Zys46xfTrOm=o04o)ls_PISIcdg%N13jG^8`rE76Z&&CeUDZV7<&n&| z(7@Fp`U}Pf?@Tww-~2cNYEVQFB?Old$~@Rk?khU+)_m*9;>Lnz!`439H25~!(>WBc z|Ml%Dh+6>0Cyl6l=7#HiD1W}5q_sOAe3Xd{CxC+HCC0x>dA#R&JhzIkqg>=%ae#>S z&={)%83LCDS!{Ge@q~{_=&PX1vjJv{CnEfAk_bG^QfU>?QC{7#OhjE($qaT`?PH_l zdAef-bH2c=hUAmf@Ty{ zMmS<1j3r=;W)dWV9z%xx&K!-+3nLxXn-s9b$#Tm7Lza}>eH!*@GoM?hYadiKR0W+W z#J_t-pOSLISt+1v98`snnz~_))Aps8lxI7g_E3}V(c*tuyg$lHdfGrg z-$I^>USQxeFKr#_YRKQxI14TTCNx<e<*!AT4*o40qWFSWJgXGStju4 zlBHA2*xouZshCysR74{6-;9}qLNqL zA#|U7H8{cU#@c@!OAp2EI^8!RrD%W6J21Djr0ZIx25!I^adrr{r+JS1g_Gbx6>9gm zdpp`g%&p91`$Y=;8VHtDw0?Z-L_w)Dub*8u>P)woF#J!+ zpzV>9#Y!VIGc#S~=HeTN@Fl>Q7`L<(G)d&s<HMXL&|^BKH_&?M zg@!?KVFp0Inm5fB!ozNVFOSt?y`h2| zMKNUs`GUC+8;IM*-EN0?i8i;gT%X=7Hu1_L|4V`%0s_0Kp=2(5lC~Gt|kD`J^rwH5CY9noJ;(a2pxySy?fV>rW?r6Q&+BMrM>u= z2l=qN8fVfPWdI71+)^n9Y$)#%yC5J0H|=y65pju>EHTEb>&U_Rb6h7o1Iv#=J=r&l zyeMUnpoY)X*>8nOdjyl?Z>?Bn47Dl(nq7{g^7}FlUJKcOfFYMfs9mMda#R$MCu$q` zzn5}$ZSr!0zSM@xuv3zZyAazEaUYaPgGU&yCEiaimo~g65|H=V=2;uN*myIRQcC!S z2F?iPZBp>Ym=k(CPjEa_zp$utPgLM-m zYF!fZ1QFOEm0fZM$DFQ?17$=W$o*qZe>Z7B0QNxj=~JNwjjkRQ7&)?DK;ZP+Y}(t> z1uZB~6AefW^70EWlCunT!5=?$hDQ5Q5DWQwZJ$JB~UV zAgU;G5*9upxS~0-=ifS!aDuwjYq+r>;fKxjKwstAPVqqR$LM(s1fZUDsRlY0&;7I0 z<#BKc6bzn~PAhI9^D;7>LcZ;{M|B7|SUG?X-AvakfItFTPkIAit1A4&%4~}fFN)?d ze8gTx!Vci*7>sA30dR7(7?Xpol`O8R47^uyg#Zm&PabBYyNk{3kB&|n7C5%BofQ}I z8!?$MlsmCJ2C70!x`;UtWec^>SOxQUI)o{(}*ZA`p$*Rrpz5l|*gvN5$I)3Z>E-rprTJm1Z@%0!cB{jhN%bI*r zOb3PL=k8|tFtfv>gcm!cI*JIe9H)W~ zCoR@f&)rkcTwA}-W=wk8jZMgTyOYL;XYcMF8aZfEmi$ZIdN@B$HQ(FAtw1ilZaYWc z=;Ffx$_{?G8FQ6|Vn%~{DtcT5`!Qb0W-JjlGP5f=@fpY$K= ztBa^ONK{7VOLhPbbqEosyxfOy{8t}cM!L<=lPO4K>T13|YAAZn<6~A?jY?&?g4j!jhE~M( zHxg?al^fRrs>xOVqKM_Ng-s_XVZW+ZK2@ziCab zu~xF@b4qkMst*a*Zj_5>)P+FnTNkrvP@L4bGWW>eLpBb7>NoyMW@l8E-eVvzE(b{(0u7-@@v7=@q>m~ zc_*3P*Nr*&#>TG9XW;{Hx~!@yz^%*rw5gq)4aE^)G?hs?+cryIgANh>lCmpz+B9cq zxLe)~C@AeRK+YcY+B1-h=iu5*Bl4UhR2Vlg z==3gvl_mKHOVW?YiHCneY41nzWC_$B-kIcjo1A!?F@~Hmzz|G^hmx24?c^<#B~UH60MeS z3L~U}jyNlODH)ysT)%NpxLNxBvLjAc3b#|F^zOcwF70r8_rnC1)E`9hzToGtS@*}~ z4nw7{&)3D9DwXb+=7dp9>15xhh6BFQR-h5T5V@BUe(WXE!SM^8qmHb=;Dc;j8>3TO zVM+<^JeA?pXof!9#R(^;8cX$vy~FIad;aR0`PcA}%tZodCYCXF=(`TK$s4j4g6B_c zSKq71*mnxCoU7I|dEnD=2b0xC>8S94HAyBGkzu27-NtjfY~sZ7bl?6u{KUxcRIWW| z5EXUv^$R6itvHC%+`FMh0q4}KF85$tFaYdM|BW*`KdbOO1 z@XzJH+Ip^SiI4RPTHW71O6J#m<@PXznz^yMe7 zIf}U!F9%K*0Fka~>V{?+>ab6N>0E+9doIzz@IX0q^73YG?`?W=vxgd)%H6%PXe6 zCWH9U>hp>vbj(d`L1nJ9yhZMo1_qam|I&wzZ>U@O_+NJG$|8nif|Wv!n`ez1+N=G2 zHBeNe%~S9 z8GNI!%@2Q-mfam{jRaWgxR^j1CPj{hE%R6m|E9l>0+rwf+q{Z!Y-g73d;4HA@^{5= zQsxK%!7q_GdtC8-Yxs1)PfDDAR#6!4&44WW^tWwV|5VfF-*LF_6i~!#B_J>l`CH+l z3xy2OVjb)>2?)3V056naPV!XF0z2SP{?vft9b1!NciMbGQ$$s)Pl zLd3KG)=uw@k2P{!hKP_)|G`fzT&tj`T=K!iiCq!fbF z%VQRT9+q+mZ*Kt)YOOVsVH0bj@MoBn>y=imLG=WcgV^hh7uHn39CzblzrI=4Fl?}a zmBC2=5{thEx;Ek-{SB+i5i`Uub5`k#0ld>US6b5LPleH`3XYJHa$kKbaGDZ{OajhKa+VRRx>d0A|>toV0qThs@d6x*VMw* z$}RR1b+fnUFQ%WKnak?3xpl{XySTi(y!PwY^lHeQp||d4^Ti`;&Bx1+ttNglK{>~- z2wg#iHC=@j)#zra9GzP#9tNZpHey~hnIENimd}D~bLu_o6bfct%6Y${A){jN5#yJeKaAOfjKUhSkL@svI z8+EmK>(}(5aFK>eH#F7$i)x<3HgooYYw>>x{84deUj1&3ZdeSGDv`vL~l!JK=~k zxTi5aJcCn5)JxrK^S!qZA@IEeL#@tU3Axk&)~U^B?kVT)$w!fs2a184Y9Sp+0IL&# zjq9QHPQcUco<{S*chMUN9z6+PNt$F-zI$1 zHw|;|KkZ56Xg`{BinNNkd^1yDoOL+Y%R2Km#3gZisI#%a=PK@%0B}*Dur~zh28q}U zeJ$hQUzh*ghqg`Ix|73(*MPyO@3q-zRQeb1M)Nyv&S$>zVjQa^A5E7-H-+H_zh~+TWxFRK^kU4Z=yUWyM&;XjEZrx%&dJS(*CQ=-G zpIBHHADC%2oYxWkseU~r^rrt5rT#}EW&A<0)~`12Lf(jV*=Kw}AiMFiI`?Kn z${3n)l~rNid!n@ZL)DgC5%J3YPPe?Pt|@+Bl;F00t@ePTT;E3k*>ZuuD7O`f!vSwY z_;ZEtM-3lg9RReh5s(9&T7hQ;pVl{^wV%W zMF+)-fnIx2KCjEuU)&~IB;VZ3Ve=LYb_saUIDp8Db(Ow7y{7){$v@_`S@PDrTCvbUc~0GI??t z{$cC~Hgtr@_I&=ztFDJ#@I3W<0k(pyu}X{sd8IICaklrlP1KSj5A9pSGK~0IMur#( zDAF&N8=O#-FnL%qFwpyZ1rx>qK6{?P4MbC6KY|_^JQqzE;$#9$u4a0zCcpL<5NfI& zvT$hYaI#HIU>68I1M@+u4Y)4Z@XD{D#xgJvc-4m{(DPP3puNU8HmLOU3r*=Ee4%Wa z|8IfT{Ikgcx;cNP$jeC8n~SIQ!~Ks8cqp8M7^+aj-VHx*9d9teE%vMjBFjmJ5mrln zu0M8q$;K8N9aai!f605j)fSkQ{qW)7Gk{9$_7PP7slM$Qr##u_nI3)>bT?P<_KG(N zq?tm_R0|cUtF3ypkx4mdz#2cl2_ddy5>TJ>)jG-f@!S&^@fi2y%5{ax6;ov?IVb590;g|vAIz`)!n}^us zQscL-n(Wjh*kwo*bI1d5n3Pu^boPH0h&N{n3f1FftLtW|>xO=@K%I4=N=Z<nmR=`#G9DN4a@w`97M)Zvo+?bNwWNsRKkW*;*9dTe#_}q| z74e^Cj(O4q81kIQBZoD(Lg+^fux$-ZRL6RuEMjh~!5)+7r^8XqlR6N=vgK&~H3|Ns zc^>)<9h@rI~ev%laC~!|}-PjM$ zPp$cu zw}B9A^9YC4_K?QFkn%M!$=&KHU6`x|SGPT5aC7;wxIDQw9$DLnaijU_c|R+#BzvU7 zS-s>On`3ez93#yA#e$NvCY{+mX0}FKNoV0WY35{#z&|^+_B5~HtXq@|{%aVdd@>fo zF#l_`e2P*{4o|09j0=1aUv=6lEd#K1_>=QcpV zV~u1Y+cClw{pjdjrf5VC2@xuH}9(~&!u#&m^AJ+aTLR`gHC~mm#TcEue z_u7qCaOxy3RP4T^v9yx49)}Ck8+C*{m*5d>@m;qd3Tu?cLraLsEpY|jmMDbthDL`u!+jZ^>tEN%|Y##ZC!HDRC`p1-5s=IRp~~{6 zSb#Pn1{JOv0ENYMLOds7gSOVDth0x!PZ$ZQe}0eR9l}|VOOjOZhLSN=_7(+h{|4_?L6oN5 zgO++34h!*1GOCLb>AOB=o579qC=i;7i|6rrAU2P97W zeOF3)Sc-!TIga?dbjIO$jWI!2pnGgxYv$SQP++0x@+kt6I;;2GP2}__OzoY~J*T(! z4nTBVbBS}!Cb#cbwKea}-g7*@_bJfPvD5h?bza_Tt#(o0*s&Fd!wF+NpE1`87~a)#fUcr24{*;JSSRkiwv2++!Mv{`wgSQ9H4=WMyBAZVw-r z@83!v#SIYpkj64A8*}u4Nw%bI$kNdwAK_=9JnJ}}Xg40sCM3d=X9vEuzMU`sMQORq zLKnbv=t7q*vjW!MnF=SrdMJ{55z4MUuogGotsb8sL_ngEKyN|#>%e@XJF+N<4kF$h z`^DR@RW&u?d-8E|ZRT~>^G@IpmU!Ax{NCid!7V*Y15&>y>{XLBWL4e0;SXY8AL~!2 z%0!2ReXA-x!2*^QcG@>M2?k6+i{>+q1Ihdv&ywzE5IUz4Lb>uJwVLycowRs1Y;2 ze_j0etUPe@g+B%{>tS;XRsx{8XU!s-qlIHe*%+T&PA>&I*Q@R9lN(k8mV@I3`iTrl z`I^={qS|$5SNz5%rRl8Re|gWM&G2LJj-NJsn^j*1o9$hc{#(0WAoWSz$gSM?f|1-Gl%hRAKER{f;b`sZ9!=Av z(SuVnKmWpSwR0jjbnXqkM{=*D_z5D4iK{r-^!{BK5#Qx{&O0yvZWUXGIndegurYa< zRoEE)@xzN7+ir7=mfPUi_XF$?cP|`H-gzM*1>x~O5}^9Xrj#3DO_x({=Q~Erp7kvO z7As}zaYQwz-%Ne%|4p?Xsj?LdC75CgWCa^X<;Hy14^}9m`tL41Z24?h&#Rz!QGs?q zyk?LfT@O)K!o$h9EzkqxD(_S*vyq$ zA1y5{ZEbD+{ktkF?Zw5R9UXR>mSZENl}oi*0-pnC&nY%Oe{>B9_%UEf9i{3Pd=)1~ zA$UL4gho6(c9~(!&3oItujS)1b}36BQUGUa_dSYA3}~l&5fECK6=bjv1X{~_47ubs zrvtE7U%Hc72n?~XW<{$wCHVTckr*ar`!MGIx8!y`zbyy&bZBG zGuvzJtwWliGK-15)N~vx%F7c$!qU@!S7=w}1U}!L zo}NlXoe?0LhLLiwxCnz7J9fa}i|4q_>G*ickkdrBeU~}UdgKP61=2x}meNpL!2`cH zC;>RS^Yo{_kf=k?2%f*K1qd5|3QIZ!1Y4}eRBQZ@1*~oxd>tPD0_56zhg*_cBr#v% zqmxnFqt#Wgry-%nDM~l>YqCv$yl$E@B@+=CZxF7iT?9lMMX{WSQt?V=VC4P@$it7uKwg zyd&a2F78tRgl9M^oubo%M_|%nDVMp^D6ZWrZy1ndd#dp#l+w^qO+xT!%3M6T!jKx2BMgBvMiB6|L+7xV+;{*`{HjNyA{VD7mn@y@TcR^@!0`JTq<}k7T}?LdDV&#bV$st*w;s z=HvH_)1Sjbu@ohTe<_oMsT_7#AkU`}VvpODFKvp{t4_m%gHM0NUOvaiFH{RCq5sy> zMC73=uQL2ZaJ%Pcb2$Rgi|ew^ zd3>AC^$r( CdbvzWz^XN|2d4$p@`FOQo!8k&PGHXAkT2gvHDf7MeWH(8~nr3zR{1-OxjXN!qnXz^1tc|C1O zxobG&zZNXk{#?iAnDIOuBB#9q zM_(St`Fi|0CH)xE*K?w}!daimNhSh#de1CEMq|ZK$|==j5tIRKPOE}_9@0PRtaE%2 zxx-8`kvUf0A<%#(ftKRp8{agZ=SDWE5C3e?>n?tibXWnHQ-ltDlQMv78virDYrhg#g>$#d%=IWsv;)|sJL($uUhHe=^R4p2l0 zrS}Hht5>hi^tri5b)|3F_)k95j>;1=>aF;F)?8UgMEt=;S+PqA*6_hoW*qs5`*J1wt)UmKA|u0TYhx+UO1bNepr)-N z?d~6-5AG!=i6OniE}`)Ie^a9~>gtsE*r(^`l6X}0_&Ho={T(OW(YjJV=|=Hf=+h@- zAlGkIENsdgk|%oHnpKFbEa6SNjqCC~3G!04WLDvx+YcEB0ZhGC_R>2dKu^ogxpnJ( z9!kJ_0=#yIhE>&KCS1Nw&>js<>9Uxxb`PQJ-XUBGPca(oqf5-fEebMn>#2n3r;SZ| z5oB*)U!C`gXDj*!24dHX=9nUvSlgio+`>}fUs_v$piqCK`bR#C8|_FL^xuCAK+M9? z`>#Du3D5xguecf#RzGsSxM^;v$b)k=ZLbq^eaWSXT&V=~8bU9}V;#>v8a+i$b#Hln zZrldw?LPizA5QOuzXvo_74Fk~cheFY9ji*k8HGe7tRii1>Lei+D)h z)JP9GZES{x^i6ng&y1SewKE#fBuJr9nab>V9dDQ-w%qbcOlD^MdH9nLU5(-W^om~A z6X^w8y^{$Tr(<`cv+wq7JJ);bv#RZ?{=KJO?8zBIoAqu|{GW+_!AOhy?Y~DWCpZZ` zhOb*?$vY5xhS`+}`?VE@&)GcbVf|c+83?bQeT)5!v0+D15__ZQTWSiopQ;?{i|oaZ zXA<&OSyQQYdJ68N&_vCnNY>r*ojl4;XVC?DfC+<2ZcPa6M`;te`x$8B9D_e@@vgUx>xivxWhVsaOE^})KpS? zSqT*cPhv@*fku1P_wS>KaaleHLK+$x3JMD?_c1ZxH{?MWh#THeHq^4#Y2Y|=1SUlo zV~hpq7;pytmf~4P`Ab2bc1v@$>Y{61r=*5{xlFn`W9cF3e3^{Ffe-9x1u%=~p7ki{ zcor>vxPy$$bZWyhpzjYqZ%mEFVvc{M$=u7$@=7gL+P9U3cjwzEZhzYkdJ;2K#Gr5P ze~wqaX>s74N=UwLm@bqXD~5hr9vmP-dhQnF8D;8nxtHDjQ5#{MxB5t<=Otb`{)=@))$X{V_V*G}_u;=$c&>qZu?{jsPY zs15+9GG@QY>HMcFJb@1?cx5A8xgX5aXD~y zGMO_O7U)k&`jtNhnwx84WVG5Bf`ne_3wc_R1W>wSum-1AF5{a z7>Wzhh8vCIbEoGrN0FyaL%8BE_N6(5O;P+ePpcY+Zp$@YI0MSP?Mwf7w(#e?ibW`9 z<=NP$eo z-bY(Y;K=7x>&aIJhD?t8vI6C$r8(H~@qCsP2%IdO=7c#^s-Pn(z1=YWELd!-TYKya z4?MuMypRjP%7yjTFHU^(kr#~~ziDP_F`tN^ZR=4I0k@7B-Q?=;X(}j)1YY$mW>yy1FJ^`e0vB$9uNxrslaG{-x@m zUG^hS<1mrbt@RevdL|7^3ulQkZ+g2D`E20yhLceXmX=wVO@zYBA$q2XvJmxk%Xvm! zK4VSK-uz$ru#Z`GHVNW}hAZw(?!{c zgyjf&*q!f;PKmwvIoB@Ex8`J&=L-l6Ue_2#m1WQPWp8B}Jo1xH@$#~SqPNF)a#O1U zRdKmZJF0vY{+ASHzl8g;VIGjbDbvHz0lSblST~hgvMD!yZ=(M^g(Hlf>B8;PkQ7pU z6iEjP(gLhKpjBZzyP9~zB$(O~R}hwBEcHe&9wZ30a>)zMC&f`3^$9O80x>$YS%|74x zQ9CJ!!HJ1;+_pRKG53hU~;(rWwxTnth>*eGVpSQ#w> zF6XVH&DMa*e@%#gHtlh-NSrtj!SYm7U2!PGj9AJ`1WsY~c2>84I;$qg;3vTU(gT2A zba}>-Zi7FM+OF6s5hD;sw?ss2=zrKm)3#*z#}lm~14>Iv%gf7wKmLVOY!nFQROR?Q z;DVA2xqAEiMWz0%#bO=p`dY~vTgX^>%2llhgb0n*jh_yY1~kKep>Y@1Ax4Y1avF=L z2#eOBcn17A6QaMw(dFy<(Q^@EYx#%bA6&Lp&zi@R^;9Z#;b?I*eRDKqvEu=jdXHV( zCp0XynabU(i-(O!x*M`c%7B7|8GN#B<{S%RdBI;Ay^-GiNl?Z@Asx>t3EgLA#&k?5&Yk>2TPc{n8z zrunDdJh6gMamvo;xmcprcx=7m_;x`cHO1|_S)NfqHmJ_ml7}|(OK6OT+*Pc7G&JMj zum}M&NnIJIsfgaGzFA&1MT6$m@W$p3loX-Zo98giTZeLJb-dN{qx3#8F4y-P(^m`B z>I$otOV1-!b)iSd_Mm&_Le5u@Z>ep#F&{TV=!)RrdU|>=Frf_E&D7tQmtv|FIBich zK6X_@UD+fxoHXpj%SyaW08^oQNC={nllb*Wvn|>MwXtF!k-LuM$Of3-YR}`2yN8ZD zHGgjX>1mRX#GF+aWo?dRh>X4Bx0mWP-N^rbqtuv}y$r;EK8%Zf`M;A>L7!G@i5-SU zFFzA57+fuutT$;a!8)|_$@P+HiE^w7R%>a{g<<8tL2b6XRDk%ngjSxb+VZmd43brn zwdFJo4$t$1DU&MEfBoI4XJe^rl(nWTd4Bfhwd3rZ9I`zwzo{GbnW!EFNSbOb;242xB?s+v>3rXf2eY*8I(XsHAHD`H`ZwSMs0kndxT22G|dN$|) zSkC4!Jq=HNfFlhr@kKs1jIstKPN|CaT1z~g;UZ?-8f5dZjhX!Ga^3GZZeXO{b1*_P zv~n130$X0a*G~5n);$T*nPlhhUrY>)+mn)7n8^S#KxG)D}V)Gzia5YRLf>?P}x5vC1pjuUf8Jeg%-XR%s? ztgQPsQMYgJ7hf+<*%F)y=hD+EJ%*>;f&keHk^75kH%n!;3=zW9H@B8720{Yp{xBxy zoP0g)Fu>2-OwZh21$Jzn`j>}Na&;@7ahDR+p`yn3e%uaouD%X zPGLJ08@HFO=`KBF3oFh?B#wq6y;*&Fqm7?&iG)Jh9)@4x|I6W5l|uS*r#c`PM?XF8 z6s>M;4!nWkNEyleZBC`W)QbGvz+DF+ff>PlSNvQ}WT)qpnT_qw=q=j@=ATxc|20VJ zSA+F@Gp)l?3vfhguRnK6xqtA%6Qh+&f}l~uqM{~&n@vH1E4P|mjkn!v`DkH9TTAw# zYXNj+eKjq8vhi-AARf@xQIi&#!v0cPhec&ok&#cv%rR01Hdu#RhCs={0GK~>h`;QZ zJSH@KRn`uS%)&qZJ%A$VPPD^cEZzscJ3SqUv9GfVHwz{8K-$_4(*1me1wX9Ooi3E= zUBAg%onICY&vrX3$NcoVxdW_-2)?EO1Nz{4cOVHDt(0jI zKVRU3gKcm)-%rvhGK^&j!M5oO+I9>4ww}a}yV`v;--CYBNBtSd*SV=#x5s{(-cJbJ z1djw>eY(c=>UG;<7)sRra?EW6na!WH0&o(_L@Cd47FMM{xK4k7UvAHrj0(PvJiZQu z#sInH9;t>;!1F2dqdm64PwXSBHl`fb-NU2nZcb)g12-=q+1slg=NP$VjUSZ1a0UWn-++5%eF$jXH00-_%k58qbD`ZPGm^6uE$8Kho3b0VhOGizhAojA zFFr<>yLL@G*cCw4(GONzJE5RvoTQy2*@a_aAkf^&!lt_gp*p(OW_bGmxZ2-IW`~Om zY^zVKG^`40XfG+|M9|2SKFobu!t1e=Kv~v zw>GPgzx*dJ5)?ujCb))%20#@C1wkG>mN%3M9`EpMDDWJ_}|}5ZN2*9ep5~ zsxM&&D2>upzEw+?8KgE~@EboQC#N(uMl3L@Z$GAJ=;IQB7l>Q#l^ZflO#$A>^dDO4 zD}|u_hw@F9T(Fy_{~R17pUQ}_W3<08c98vdq@b|f&#J$z>fl3N#!v700_Y6j`CS+p zzxTbHU{$nO;~0&>i$s60I&6GK$6$!t!Bc{BpdO!`02HE-`*ki}qCg2bCwMKEKT<#i zZPX^%Sy4~(w^Oi?+jdOs4I00WM_@%a3GHa}ZE^Pvt29W&=jA=J*~t7!V<_J!(?)xy z@*!shK}e8TgwfQN*t^&>#Km_+Te0tatEqx57zI&~$ z+3NoH9taS_V{>tU4i69Qy6%&cHXJrwMk0Ltq4aVXE!#bRG-sd2H$Uc>KcC$n{f3SF z`%>Mp2TvQ`^xR@9=jHN(Y4u080I<=h^lZ6T)_)(i<ILEC>^=KRXjotXBPFALZe-BmZ=^B{TGK zey%XZ+po~5!b&Ea^D7#Q$15R<;qpx;!+dlNMmSeYce}=xmX_-3>WYf9Ip1pxxKjUK z^56Wd)~V_FAt_DHj4xlU%;Kt5GPChPxe=OsLsz!wqV z^d&p140KdK08jL9BEe!A>8^1S_$^>7Mx(~FyDR5b+)YkS{w?(34&XFWQc_M%PFq{s zrKP2IkrGZEjE>p_GyqQnjp#*<<>ZQ!KUqwV}^d_5}X* zn~lwo>d8q?R@c+}J&=e4-$y$-F|l56 zf&h<+i5W#Cur?G7F2MvdI`f?z6%#XPus0NiSUue^@OXZn&)7&et10+dRcJ&cLdUhD zgu8^z;XU?}@iwo{6#M-MyR|aH!tdKn0+a|ii)}R!!^{%${SCKrknKbRg5R-XAD$Nz zuJa6cY-!TOBzO|H738G6D=*#Z*AeKdH@i||60l%5!z8ib#$SO?&Ifw`*lO$7%1IsV z_r{BCIqQdJhOY+yhbqwp<6eI-{YHvBG-CP@%R)m-tJURs4-iT&afg5ZLXsOSmaDa6 zngZo0al%GMM#jd*9v*E`ykC~?F6wkYQ;7;|mh*w}JXOA(jetQ>(NSQagI%!nul)2N zqa~&J*tu0y4{As0#qh0gJNiqtojCZ!zT!4YuW@nZ~&d$!>AJ0d?Ib$=OY*ogqiS>7c?Twz=-1Hd;K^j+*mXwR9 z)1Ir)PC<5QVqHG^tL!DCae7%DMd8$==;X$8yL`GLR~PxbwoY!qd}F58*c|?6DY@T} z4k7ZySI`i4S-iL>&?hsL@7F}QL%S>vR3Uw!pe{c4FP5ZwrRE|W!0qn28{d9iAQ^A9 zwq9hbcJpw~z<`m=@a?bZnD$4W$Wyp(kIy4ucZbs00W|h5Hm`O?`OmSjvD>4Wn(C#2 zizm_Fu9q9(w|!2BlW3iRm{K4R`WFt%1%S7gky%W6VeY85QE=G5QPkigREE5xT+-HC zbU0PqGrQ4;Dmb}*I4$#u{y&i8~ClJmStg%DR!$fR0LFY039qtsMV2^)EYSS z(3F_iC(1uAOp0G$hb=hZ%V~#WfCiw@GJv7o4diX}pl(6oH4lmIS2&u4!w@B^eJ!jWR-VN}bwac)B z1%0K>?1V7Ex-vU}rBcX?*G=U;IXs4KOBAagF3M=WprOG~2j>>_Wwl$XVu=$CAKD=kHPO z=gAh(dxPQCp+Hm%i)(vGzwWR|$4B{&MW0Th`>Uw!`4U~};TMpj#O7)N3M+o~(fC}= z?g4#!K(tGxn1~v~ix80S$3#=3Peq0043?cwe$yoJ&{|=OSxD_kB}WB-c65Wk^+=n5 zh zO58BI$}U_*AGr$0ioMj#QU`vMBqzv--0+ z@1Wq@zRWa?&aOfW`D%4!jnTAl&1&6>Qk_dMYPVWlp15%D!|}x#^Qqe5+lNXE$ErRO zg}*@HRJp<`>T-k<1T>yC*ZiQjesOEPs?lsHu98a)bbvu75MG%TkHpr==MswbH-sgz zXF#sGT5XVI!8<9DGE=zH;At8VIM3g-zOV4ebGEZn(DekC&Z*6Jd%+b{xMF1(qQ7kK z-e?FNYC%!wxEwBJ98IIVzpJ260yNVy02|)hVp_xXeNwlJg_iZ{c_$C=oLcv&@0_zr zSJmkCMg>mtU^=;R>LA1S)eUZ@8Nj21IWDBDH-(UqZsyZLQ&6nF9TAw4vwPIxwpb64 z^L>#gUN|ZbYg(jg|LLV3fJAv*0X>o6ZwyJ~d7RhVD?FBt(U}*My_M0D{Y<}peGf%} z01Woe>*aOxR@A;%%C24uUqLSo1|%o!Cz*Ru$?gdz;c|TdH5%1Cbx_`#M0qpxnG;dh z#O7jg8hioniVz2kE^K+4a7<_s=S3HDFpobyI_xNYe$Lc%-f_Q*4_EOy;j&Ghhez!P zS<&~`J1b>($l>*0uKYe}s(0{=j|0D&?<0o?l$-K74hh%O95{E7ZFh^?EE+ zI^))%;nV)8Z$3L#S5i}Jy*AfKDO{ZR`W&{$+|X4DInw*L9=z756QHd;*tR2iUtlc2 z!p4`mciF+B_NlZk{?Zosa(yL&5YHVKA2|C|$Mq+&J zrV-=1M|MH%?q?yJJ{L{Pm))|37LhGTNr)0L#V!LX+Y<} zb|%L~`H-rXz8@}tx%r%d<_ccUaM6(>B`KlZr&ixSf;Q0)jg}^+H{ZxwtIuoVA?Xmn z@s0M|-r2cPs$b9V{hsf#HIUO^%AIEE3y7QW?q-4s!B^r~%H!706h-IDo?(=&=c13h z-=Bt&sA$u97jKOTz3MaGcJZ2GxiV(a3Lj3thj((xus>x$Z=%q4w{|sK---bCJgssxdNz>D5(u5hK*Gqks~X%JUb@`k37CFS?=18-_~arBe}|ZM8V#9;*I3zR z4(Oq>H_UtKg9w$I;d=#Cf~)Arq+o7r(q!8;T5DC-OoJ!SKO2;NB8HEn{rw=)Hz$De zv!te^gu;bZulzwe!IUGFmH%U&gxTZfFV~hkgh&A7`Se(NbB=gNO}IUZedCt;ESMxA z+y~!}CDp~HCX&IS(a~FhgJ&HWuJqTC^w%J%+-6V)pm3g98Z|W4{;=N!f*{H4E%f+! z)_=d?7O%wb2ot1DVXO%(GMhkF9vIp*QU4f%d4c+t$F2nQM{$xJ-90n*Tu-n)e_xn{ z&9aSv|1^6uCWri@i#459f$mC?4DXS+w7O=wzXugx#M4+`uhrw*wF_IVehWySqwI+I zy+32Z+%@K79-Cx(PrPNTviRKK!@w{;hNmx0@~R8E&P!hSY{zTt&XUQ9ydA}5M2trE z@)(CDgwD(ZnH24uvP>3&NU^a&@k)`@1hB~V&MT^l6s;E_cLPTc5rM|3wOXlZq|C=a zuV@lT+*^Ir9GkQ0&DWS-BL$O{z-N)U;MGo#0N$eqK(#fp6JWg`U&;Q4IZL=+E1jL6 zwAr4?dsiUq%GPv9*|%Dp`~tkIo{Ox-%&g$A&(Co9hw>eD`q= zh7<SKMNXba8RSv2<_++U|Jae>91z$ z^l87Y$8U4Vr2X~2!c~0%1gOnzF3Y+s1dqf-Y&T38BjM$5!u>#8N$%Z~d~N|zRXBRt zt@=k4k3Sv}fSxrPvky(vJRoaUp`pBHp> zT~A@cyEq}uoveuHFC=LAEG#UnNM2hUT-y5Cp>2Xit(`=iQg(7dH%B;ui%yDYN1HNUI+wkcw*3)hv(RD*4{rTr&nsgxSesQm$GavM9o34YCTnfuxG&R7*6IZUb1QB-p+F*P%KSJE&1 zTnfF#29xJnZID9zpz#Hzg+LU+*Iyt>lJ#E}Jp&e*JwfmcoXD_uC_Fy$+3x=l&hG z+o}9E!@@*BZ>`giH-={xeu?ZQ4K<_sz1)-SXyu)h!qgg9ys=d-$p(yc+sgkMLud#g zJWXCOy(K3^0SN$Rdy=0)e|~pbo==^AxWb>+1t)kxN={CW8>!L@Yv4Pu4-oLX+fSu) zaJ%cLLIV9)25>v(5uu?Y8hSpIxj$rk*4w>s-oKz=`aZ9q_MUCUOMq+RN~y~0c$wOq zjWcrr(o?2gZcBdc+4a}Ro!vvC4~Qo7^5uc7EEc2TvbGqa02D`{D+b=tnSlJl^eWgO z{e0i2y<4!Lc$!@TNrZa`H26dKJHA{txZ+Zn@xlTi5#XDg7zc3z`KN9km26BZKVIj% zw*3={V_%O&fSu7!X1oIuL2n^JITaNZ1O5GYcz6`%PA_*S+kT(#!Q`pv>?2>L^zA_c z0s;;W4pa)+1f8k6ZdFrLbG8HlKZJd(x^gsK>5l-2$lTuo52?F9@5&s4%qq=o50E0BOagDNO#>(BhF^7w&;rybGZ z^U0pQ7aff+LC<(qmyu+*ezSyv!pQQcrPqGnmU;kN7DA*Bq6O@je~mf8EV?>3!9Tmz zq$eHUfLcRf@zb|>KKRAMxRmmvq+M0j6gP8)(K4C(B7_x=T9J;XdmnSf#-tqRM|g2) z{!zC@d08J?HHC9~v@-6He0Ojc1(@IwR`h~01CLM~{~%D$>nlBOI4Q`=M)fV;m%~ct z0_KIKg@t3a$Y5z<3Xr`FK8IyuZU6Q}C9Ty-r|ezl0x{)p;Dvye(Ztf6GWoHAXR>uPHOuV8lc~V_0Jri}f`TAT zV zV1GfMa>3~exNWBq5_jp>0HIs&a*d9JYVw1NG3~0fwxRZVQY4oMyo0Be8WK8-$H~;f z;^coV*c2qSjtAra_MwntZ+a%nUmh;$l2DxLRz2h3pFAn?I&fpF3(SgXnQnFu3x)Acy zdHK+^rS0o5&6xpQ3tfQGy7&Hyk|vQ^sg_6j$>mwt>+Fo`)?WRw#=r-)A^Pn1Pz?ft z>nFrV)tOGdtsP#qkf5Me1T=IIoC7KRAQ3ovJP8~e`T#lsvRlglN{rJH_rCYR>+Pji z#>Cdv`MIpy)#Um0#8ubo!R!z4e5JlfnKR09lu#O>A+%w~xa=rD~yKfx^?lXLm z=&izW`u0V6Jz@{x(O%&T8|YKUHNcUUcG!9~MpVFfHT}Sq56$CPc#kn!vyB}#S+_01 z*#<9DEgM9i%L@jIlJJGCJ#{nIA{~r7A(_wdnIy9;*{?_=frLEuwu#?b?J?-e z&(AlVOf`5K-Pt`|tbl+DxVCL2h&UcCU{_-MJZ{eOS4=Mx)&w|1p|KW>`%H zRrn1J4OM8=bl*<%WpJ9PGKDWrs`9WlfD!B*Or&6_wl_+wk8d|c_gEm}67+2mo~5Yh zdOb)$iR69NBpmB1T3km$q|&l3EdS}`+~6bC=o5yuLoX+vAY!DVvAjE#UM1Tt|Iorw zR7u~F|I5cA1J$iXNxu(=HWDfab4~0HIzTsA|WR0{1v4h z0ZA;2sW2|M9iv;2vnKlh6NmBV@m!IN9Mb%k?cUzrpr9c6EX?>6)3(J$wD?*u!?}lx zbxB1m${e=v)qFCcz?(loxRS%SX3Jbyz^8fHw$hO(Vk_G45#^Z|Qhe%6z zu3UZgc=15p-exf_GZhG$Vod~zC@P}bE4f~6O(~~EL_`REzB$e2iU7mjh(;r+NGrD+ zYHx4P_xT{@g@G)`p;xFi%`FHA=lq2bZHwE1J64X+#7{%QBI>tQ2iQCp`Y*HcF2|oK zDTgc7Jy{%J=};96rX;q7uOX16qs?`wOa_yWrbq0L_ZC-IRMxFKO2W%4Sy>4N(Las* zcryrE83e4nts4hxR^=?K3nlKMd($g;UeBLfVhCD_p@WRKhsOy7e*F-T+0uHq-@TcD zLC&CDw)t7I-MEDuC&d2|92#1q)fC|#%Yrf{D#eZ`HELuR3Yjev;jqc|xYW{?6Hm<07dyVGra*;#nBDp^s zBd@)!f2eUOY&eoCv(h20n--xA-`68n-XW}a9}NOmu0FU*%sL&f!_w~O&s_W}XYGED zI6b1+YHDh(Ece4O4`||T#>B(`ua%QQcD4Q45(5Q<^;)Aeo~dF}tvCW|4O}ft5qDGL zS|v@1GvbG-exktM7xRyb#S>yVDZw~NA~)p>PjEGmb6XkvVhZ-vF4}Gn3jVpdg5v;$ z8>rPuILC-zEvV$f0cN+2Ia@TVwSuzfdfdOp66>T~@rN)Hc>T0hEiKQ%*ybyi|7-YN zYZG}$^SzM|hUcNgZYl$xVotEvJL+x0c4u5hu|bV`g-(MhlCn;m`FgE}B?BzvFNj*7 zSJ&Z)-5YRQ^l|hSoAu;6bG1xM@E;^(WFRgu$Uhcm)v%%BFR2`MN5YTX#LH7+U;R;PNsFGUzifkP%yER%*;&Y2yMzJauq5w%@11Jp_S*O|)%1v$jwNp&R>gv4 z3*fn4;a?hvy8}7k(a%j_G^}LU|esuu5bnP|oXV&hA!Id{dUv%D zB-giCuGTp@If+`FKXJBNt{xJsbUK=j60g`(Md$@}cX!iiR8yEo$cQJ+G$A;Gv!=HB z*+6Wp!L%9#BF_?ee$sOAw&L#ZzjbCwiwQ5OTgBKlq1f3H6NoGLNjpf43dYQE6`PX~0xS6V|+K;$;#@#8*$&C$0Rxsn>o0kftOaEP}dFkK1B z-cki_M)7hX{a|q>+20{vFu-kgIJ=)?ZMa=v(gU?BG#C>=zCK<_ewzgp43n9Mi7YY7 z1RW_TiIur{N|`U@AQ4>m?^4jPu&}W}TcGq=S@cblFmV0==43fPpG;Y$H?O0o!l(vS zK@d^p7O=#k^m&58Xg`C93f7%xlR$64xIrA$WO z|92#tG6;5>wW4$HyEI&L?Gw@0(c}!Q%PpAD&|T&_t%-JO@D@XmrvpkY1G$y6YGF%5 zg8%L*Y9F>DAy{8=gF6YTPzeDy>)C>4q~v!;|BizFr49+mHnicgooqU5Zr}Ck0uQJS zS?HCLdm_RRA^<^172Oom!&l>53p=IrB-ua+LT+Oh*d!j}459eeip ze$DB1cZ9F;*tCzDCn0~ZBe3f|`<&ocLaVCkPu&V!Y&7}U5>54P#%Z){BEO=-w4y{o z5nU6?y?mI^;E+*pf9;otzh!x+VAt%4KUjZa#%wnmVG*}_*5!YR{w&sGGFE3ne-L6x zKq1gg%6#cj`1x70-7tTd?%}S;i2Zri0bsgp0k7fT#8<;h>(4pf-JdAdAHY%6X?G64 z0?T*ibGxjpsv_idrUvv#wndOBy+39mvF}q}dHFaZ;gxM>YYUvc)uxnEZHV=rkL@;riHxYf*NX(!dz?-H{)MTHpbi$#@}J?|0M_w%PV0fI{7KO7|Ng@wfr=H1VM6d&_E znJL7Fy8-ynA7XM z_}|`;fq{BOHLKN9C5=ik3H50DS4ETcR49IaeqHxnsQLt5$G-Zi-7xALEb_g~aN?Oy zFZJ~~8Qrx6iIbX&hn;P;$nC~?RL0c%D_p7Ld5x})-_bD?6|;#Dp-OI1^a>3dhmTi; z2Sap*Q}lEd7#rnP;+ivKuP6x&Th{j;((2%g;JF>_yj>p+^WhLnHisAu@)}r<8*!3N z=K6Y$Z|)AfYKo&UH`~23IZU)K+r1;#{`DQBO>I{WeDNR9VeYboLVsJ!Hz5Yv(V~Ub@<;nher}Ze< zaGJX}CWdUo&fbBbpN%Xn4c4Rx;pjZb5*AfK431RHazbF;b#DXD)<5=NJV7Apg4#f6 zqmedvU2VDN$}mIlVy9nPIqg0EGDeFYuucH~`cjEPPH8Fi-lQ~3RCF|y)MuVps1!?M z;>>D;83qOh8cQ%9RC0{ki5dcIt$#|2hNB~^EarlDyb^t?mj}~AFN4I1XqRA(c0?%biE6t|4N|7nW_HU zo>CZfQX}6bNgU%Oqw%1G{^oqWmu>=+Ly*njjHZ9pW5NNUjVfpNp6hXDz6kUtc3HsG zPYvX1mU|O+ah`lzHa>p51 z_klD-N^l&m^P0WtBwU5LG|OG6Wqy$$bwVX6=&na~!RKt(&)6V*U!Os^@h?rFomKrc z(5S@K)I|F$W|Bi0xSP6$hS1%tScBP2vn*xE0&M8h`{Onm{*+>IUFl|rTS1VhfkB=_ z=!<3(7!-o@@vOm0tpOzNk;am(JOg&Gy>rwR(|{qN#UaGP@g0g?m#sxC`e)k?damOZ zg^vf#C+SU*^~F(#>7b%neh*H=OtzknKvI#M;@>Z5a@lhsn_w^EqV*9}GO+ z+A$0d^v!*>#mqE%t5Zk%xf>cHPkto1LxKdnceZ~A9EU~)g$Rx8_^(3;t5&G-EEOp! z`0+luL{zO|uRy3K*rc7f>MZY2eM1A6?MB!Sl5ghrrRA<=*d&JFiG#XzhEQngF0x=S zclrpVxr_|&KhcmI1&c=a@FBO>G%Q@Gk-_eNhU36I)gZsbgD!@|VzNTn9Sq>_CfC6z z;0n6<3pzVL4i2PXB;tB=DFim5#?h9Z;+^kD=f`aeP+wGMCY5CL7L}mIe{HuL9toR)w?8I z!}bk4qkIbo+W{G5O!&dFeFvQELLW~9ryNm$907=sz*}u#ilG6uS`0R(h-G3IbyS4Ey8zFzzE^5X3|K>P!7-3Umu0}!CiZ`b3OYqkMrEg z$nkzVA5NC`gMDLW=sBei;)fxsW?{Db-u9>0N<=Qnze-hPOJx6RH?W=TTc)4wLI#h) z`DD94|1#hFHVEWHd)MUPJE@t@%<$7?-|KE^AxZezhsAb>s_I~%ri>}{{AZs z(ehA7v5ZGeku)`MHNcB?VvWN^axXyhy8&b?`0Q6gw{zagaEviSg#N@lUU>7DQsib9 zhQJ*MqF695D41anZD<-g({w3|(m8XKLs}TDg;6{#JS22Z?V3WH~uj^Ea;_K0oAb+|;K><<d;RDBmYRj5Qu@Wiv2h^Seun4Q&B z5ebRs%61i1V_0VoSF`c)3QP!#4Z@3-XscD4STfN-F>9FRlp`*OJnH;9O8t#&b=Qik zZG0y>TIsQ&ulFkgZVi>o+7g1CJ4)cB|<|; z)*dw8COq?^DEY};8M}HyqIF_FT@|VYJxeE&%QX3?SjYL)Gc>C!P}9d)4)t)C=;Qzn z)l#{k*Qfu20LTL=BTn7)VScx=jQLCBXO^j_d4HQ!5v-=>BNnJbfcasXuHzO7s|w>^ z(-u)~^_7_WZFtuRaw6n5$%e8WuI|s38>L6GsVmVuGNIT~q9&^#WF+)GKH49|#4fML z;W)OKqvt3xQ3$_%z{FuR5+go{fEMyC6%1LbViCB6f5URc$pRJ|O)ag6^zpgMd=f|3 zQ~NV5l5U&OU_C!gU77Ps^J#OvxN=9t z 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%0DpVHR4b8<>W3fNCXxcHu4h_5Euyi2T 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 literal 123803 zcmeFZWmsHG(=I#=69U04xLa^{cXx*%3GVLh?wSxJB)CIx*WeJ`Ex5bOx7ho6-}9W` z-`{g(a?K2^UR|rJy5z3AiBM9IM0|()4g>-rN=u2UfItx7BLoBs2HsBnTBd+EC?^$3 z5m5Ok{vPl}%tTAtR9+rL1AK-BL4{fTGXM(sh70@$fuM7sK+wQD6z~s}1OA`iLO?mt z|L61Tg_Fzs1R#(QNLox-%^m76^Q||2@73?J6|a+#RJxlL_~TYk9TYm66fugF6f8sv z_K`%0I2a-&A}d0rHW}?@SG`3!Uu`^)Sjtdxv+^RS9WbZS$h(|6-%ND2<5B>@B%|6i~4w@|Vd=9Ie9U~-}VdX3Bb!+=hp(TJh`&x?r+%mx}R zteIE)KR*M0p99t5xduh#ef*A}fv|20`A z53qPl44esO!4U0es%A19yJr0_wYpzwwZ9g0wLKOVJ?7T4kCZfL;RN*2TU#YPJmz#9 zJ^MH9-f_f3q&mFew47aBzSteiJHBonCOvRjX66HYRNLt2a%!5v+<2j%DD!>x{!TLo zsk6MhRzpwG60rVpF-~Ra*P-KSAW9deV?SPcg1^rTGaNpQ2L(&mjAI#L z5-ZH!>2a+-g5vJ!|7<)VBZxW3ytKQJ;q^Y3k~vMaS5NR??6MS_mGmYJzH}1&{@T%0 z815y3kiCAw%LUgG`R_POjm(2(n5W;LG zTXpwB-(Kzi3=#tdi5+6@i@gr=MC&+S!5SlfVP!8XY84%mjb`K+T|798_^S~Xri0BG zh4$|T$Dk5|7IN4u1=h$P@{?F;cILXE=Vw}y%2(cGynBP9TX(w(tOCU^c)NaE!oF1h zST{;G;9kxi!f_J;Kh~iR;c04Gk&*X1R}-;Ny-=r`x(#sg-zkufb#+qz;W+cJV`IVw zq=ONSnSJ$r{yGpOOw5)_p$Cax0d9+yni%<$8oqxXoSYaJa7DRS zuva9&ya8=+YHam<_X61>?nzmO&CD-qM zG#6r1d@C(`u{*zgkc_FU`-LG&W-0v79QK%iRGRB+$gg8i!h~cce_upM!(L4;%u~l| zcv=QxblDAmVeXxk96P6z_*X1!U`XV5Q}I_HZwLwqN{c+<#z<3Ewd!CG#H{^Q+2AEM zOjMxYxV~-J*%Z1DEK)i*FvQdsy7CSf(}h}SVdF#oOb+&Og)3Mv#OT^y(=<~wKz+}W z9_4}fuazPI#?}u?A$@hxhLw=Efq{qK1fw)u+_$ts;|CmK;w^kmUn_!IbMBSt|Jegn zui>PqeqICk766CA$??R(@Elc&AK=0!!>-8NjAbTw_vupU$IsKxuh$bp{eT0a04~WJ zKs;<=khIOg!a}_C;LHSCwuIEgb>4}7|LsT>x;lN?f^8__0wV&Fx6f!aEEX33;8#P` z2A5h_XG2Xl%~=#p-EDc+P6pE?DIxUN9g>?-NDh|{hC=YE%)1hko*$^L{ux{dcwa88h~Vgm;Nbes!4da(U0`O2wQqSO*an)Z@#OT6Pl$N_`0xAL z&OZzH(yDRjI*SXg<<)36cfAV>kM}T-wASVyY%Fb?NpsMTEs5TG*?Bz(N&c1=SV{6} zEx5hAotu=EXJ9o?k&j>DIr0yLoWryDZ29$xvQ9(DP0>Nx_}4) zeb%QZ)7uB}=0<%Nof^Tfygd3s$z!ZLD95TbG1x5|Klu3dGx&`{+fUZS!<{K4t^w~Q z87Ui^lAJ|d(O*B*els{ugcg>2t%a9KGb-VTlt0Zzy{gXV61KLy$F8$Z2m)NqNR9)?#VRzg{<@s@vQyDGX9l zZ(dw@w%wS^j>8SeBm9nWp!g**KY#fy&2<~=kfA|sWogNPSvr<1dqFj+ui_nYiWqLl zs~-?T25h_q9awO3%2Qv@?H^}U>&J9eOHjSsTDl`}r(w*MY;0OuL?nl2KHHaHW>r)w zoFPP&+NRDdgVS4zlav)Pu;?`-N12&t6eif0C;g1UVPiLVn#q6O!=)r>;Pm;kOjo@J z3^xhzavht^>4@Y|TdTg8VZ`JZgdrFd&u=pb1lfro_Uc0rtK`vzl_ zL#^Z!SjhAQ-KqXmRPyOW7{uWdmGexyza0?;reppD^WG&m7*(p}rnsO9d&XM=k8>&Q z4|N)anEV@b=hT2ftPrP!jyC=QSTfur zu3~vG7*&W3kG#T%ie8jBvs~lN;)mZJUi8R_`tNZO?B2=3Q(UW)p8pjbD|n)1&lG(r z@e*A%*e%MAi`2uy{674RQ^Vr={d=2szGFrVE_BwG<&|%&PJb&u_;6R_{}Zl&+%N|V z?KNX$3Kp`}d%9nKKmq-UkD8)8FtOw0WHL-`Cwh*#y8e~8fGuR44xJXczWZXMkfoIL z+fsxx*B0V)KXAI6-P6~P`W`*VSL`U7mWKc1NAJ=GjJw9@akW3Pe$19V@RL;V8|(Sz zL)th%V88&}fs}9pi&V!)xNmgyy0t!Wu4WCHHrDwMccTcWnMWsacc#N-NKI5#6*nDu zxfRt;?E|Bt$?3vF>mg65>1%&$Irt9m!z;CrZ=MHto$y=HHPz5Gm-u%Db@hw%$ZYhL zIQ{Hg`DQFI`TsM#DSY$!=b%KeW*-e zU3SHKUVYRu1n?&-E~l_N&mNrd{*{n-xVReDi|W%|=4xH8sF-9>%0Qxql1Eke7A{;4 zboR`7xL|e;r7m_1-j@L1qX-pFvh%uf*1GMgrkemxXE+t`vo%Ma9N!?96#gS2{nsWe zXU|tQ9775I9B}yb49g8SAfqYEnwvs)xDR6fF#aMr+K6!G$si6ahSet3=0;!k$V|&5 ze`ZMA$UwI%ff4zs4j}R*CE#s-J*1V9LH&Rwu01-pX?EP-k4fx`0+fqEb$T*&Nu@|h zqfbx!YIQJxG8T5JETzGN=;nL74ZgouoG{e~HAirPtD~t-<+^Y-4_Wn*C;&~Q69O0K z&lXst!bu5%{`mTOubqC+{S0TU3;~oQ134B%Yo}*4$Q#tA2fjA|OBcS#ITa02BR}nl zn9MdcEhz+*Py!n|3seWTTXH&;^9VW1{SW|ntYl#6nDSPPb)|%G|8ZVv>EtnVGJp=0 zQiObT7xxLg;z@9x3lJ8Qk(d75Y{6rx5|*_?B_(*0XaGw2;4p_DjCI#APQRd05N zGDT<*7(UJe$gFcBysrpWLF-6e&2T-jJ2^~N`CtOrNuj*I--6{0=zt2U>Q#3of`y21 zg;F`E=WL&BXba%f4%28?Y`=S>K(JHv%Q)B?7ve(rvs5?}|F-U2$V z1+Gv-&gAE^A>`$mCumJsXIlKcmqpei3L&oJ{8-NabD1a1usqMQdc@7AQ z3&OhD4*sV71`bvn5EU@rOcia4WDT`YKpMZeJgTt}Cg0 zx_^^01#q!8ur=c`8AFo%b0BT~gN+9rsMc>c{eU}f%Mmx1+wRR|Vvf*nBLvt`L9vnp z=8M3aDbL{s<~@h^t-LXm#QOcR?MqepL=FP)loV@PFZLq%x8O*1lmbF9l^mNINgKjS zyd1b4Ssfgb!vhnd?UL9RmwK|SUPAuy!^usb8%m@*{6#2~kq)xPX|D-{+CKp*iP9T2`lYe9W3yHECO z9lh?Uz(P*~W?|m+P{;?jOX+XEig$xQr)n?lrkwif#{x)1OX=vcvN`Son91OR08!Ll z^WNz!lV+)$3?UWqttP#P^n)-rXu!a}Lu?7&U&YN&>RDSOw8n3}>ie~%dKAbFB?pQg z`v;Hp;l=_*iaM6HF~i$4+}HcBGmP5laeCS22x`A>>eu3ca^|}=65uwa%8Dg^5d~k9 zA-yglQ>cG$Jc%F?`^J0`Izd@kOhUI6Fhej9nuQ9Fb6Cg?=>jJ5w|CG++dKqf&|ms; zH?IJluA;&^J9>L>H1K{7)z)S48Fy2ylGjuwq?}l3a^c=lWl&a{`pU*e z6MtLtb-MV_4kpgo0!l?KEF4>lfDowH+%V@8FpO=5U?k4_t$k7}aSR2(1c`uWI|_D7aKztU8Y7E;4h|lV zMGhtx7w2Ec(!!tezDA`&k&dAi+x+%bF1rc`{j6IA7grT=L=720VnN^z_cfoT(U>BI zX5&dTn?^|G%yiADo@?EnZ{XXy!wPa68(SLlavSqn8XI@K9E>LKii^8KC4Lm|^aATg zo&yW@)~bZbY=A_WCh^zy|49*dj3C9QRZUY*ah85SlZmH zo134P45lY&++33XQ)7dmh`hWuS=*Rdyj|Q2GgDH)?A7nkP`&{}J9)$RsfBY|YnZ2Ug#^?Lg{5yxsGy+X3@=Fe z(wA*)mKpp!=jPX&n=|PHNl59Me$=Wf8j6X1I=Kr}^rEHJrKRnWKY2FuxSQ+(ucLa! zUiL^I3b90%Gmz)+?jAl{pX?vr1)h`<5by`sq8`*yE!m8v^$j`L;Vmqb=;{KmV%^jE zg(r_Y_z5+(AeU$^%UV zm%=wd9tDy(T2>xL9a{R+IlI#KP{Ui^$S=VBVUO@&asD$~1)P2*PO*+omWO$dU51vY_H){0E{2j z-Z|RQ31@#FcWXQH=TGJG^6v}^E7#6U<1siEbr<{lsOj)iLW#H`rzAyo1W78kI5LRSSR{*rHPQUZd`rU~q!itZ346nd zvJ=V~PTSk75!&&jbH2Com*g|l)VfqG**%AcOo1#rD`tzjc=J`eAr zQtcLd_1aDS$Pm!{^FrR>yZ3o`t*=7t809Xy>&@b;-M>6S7}(h;H8m(S)W}oSzZDg> zXsJdS`#r`%V1$Xgdbf5FX?=FK1Oa#t0KHz%LEp-i6|aBvFS;y4J4(k~t9P4b z=^0kfWtkBM4+20!4xQahJ~33wo|$(m#rIN?P9E(PN;u-@ZD+q#oaZ*yr^mhr_fD8` zW7fi73}7jxcqM&Q&5w@18ZNaQs9o_6ngVx5GCPuze!uv3aXA%qTxXC1`pcgyv7R&m zD`v`g-(TW%5eKY5n7(r^b^C;7pA3Tpy+1G7p0MzJK8G-<&32%1=}g!luQdbqj8jb*>N26BWO z-VXA`xRB?Fj5g`N$yw6Zm(FaiiSX15O`mp7Sff8|#RMc2OAY4Zs&1)SR?^Shuo_pR^6Ac+iHho$;x>?_E>B%DT3ROuA@W)%i$3^ z8U(+#@o#&eOU+tBP-RMr1$0!J+AGc7gh^tc_Qoxx(eMKlmK!{i3&K*9^UKMZUb{Nb z8|%`DXdleYvF`@br0{+UFBhE?!x78M3*leLgX z0)qE%-_j!@>SN#sKYpCe+O|WBj{#jH91b!rB^WgDw#WYoHtwcNU31$WX`}Zn)Z$Ub zL&K&6Bn+bXeGp7;-%#kjvV9~{ERpw<#DCz~!nY0kk`WP3#F0UvUpgp71x6Nh0MbJA zr>G=rUo)modjm713_lyf#hbU{P1XfxF08#T1?B+~$Z@Fff?9Dyjl|A$(3CQTl#Tx8mwp>#sj1=`(CaRC3p;zq$KyN9s!EB=7=|V# zqz6bhwKcXtL3V0kdR^v)EJYa`h(QIi^WEH8K*4NeV8L(p!mP-~O!RMooFCu`j14|N zejXi|VDYfZb>@a^SXeM#ZVHGEcVx-8rT~^rDUjtLJ_EEp-RJl0;z&{OvPDTB^+??& zkbYu-g-Lk0NiO>aLk3KW+FxE0gyU~$Vm3%CHWAgdE4x-SfKHgfq_H|dCkYmL1r?3! zm8hZNtVc!+L{I#nzZdCy2gc3b_lI98qXKzwF|FtuDIpIq4ts63!Eh)=#{m4+I-cr} zv{r)mPyhfQgW6>!{l5>GN5Zs|Q6?FM^C*d%?kJ0Mv;`%YeU-2-`Xyh}b|$$36v*-rpk6O|bLZ=fEBN{iHG-_DdELqRAU_1j1^ zD@z?AmFmYcyM@^Zai;i+TRAn9N9bJY8qX(F@Iak2TVHF@&YnLX=r^3@I~Km4KhIG& zi11q81SxRrQGV{SUfMCpa7M3PX!!E%>(<-1gpG4-IMVY)=SXb7i~%b8`4e;pnm>O| zIb~@pCzQ3mO!J+DmF&f_6WYS;+fH=VSm5XXPy}P!D-_3qI%mh?;kq zIuR2)%f`a6H?tmI2xrn&h$vbmnd*SRvDLa+4|W9#@o)%yF}z@#BM)Yi`dF_K6sc+g zsJz2VXy_G+c+rt5PSrJh*F%?xlv#{oB1SK;hX% zYqjyt)}YE=**-pkGjW7f9Q+ZAsaKypjzhifSFqo$wvkt}2b*SthK`OF9THL#D~G3v z7Hq3w$N?dZF$_e9m$!Xz@X2i<1Uf|gBaC`UHx}g0@yAB7vIT8MIE1etM1SEQe?w@{ z-8t3|Uoz#CwBc$>1$yT9V$(m>BgY}Rm~QAJu0ow=9ynyzR9AKgBG&gDs<&(D-nd%c zd+p)$#>kr@i@pIB%$DICY!!+0mL@{}r$?a152hy|NO-wx`59ryEB;_;oAUzL900`j zUAE_9)>PBN8cvr0)kbwAPWCB?+RnDz+@i?VqVufp8p)eO@9d5KU#^Lj>G?nN{7Wy- zvL~6W{HFdXc_FnSCO0=j2KZ%Vs67Ln3%CaO6}N%e$F8pWuC8+zF{Ono*REOD*S9@q zv}{|N;&8v*TzxZ>Zf0u+0KbD#Hg`z7$VIpRbmufo2n}T(4X8K91$+94^Z9`J2j#sxt?CbtnLuHWPohTJs*^X}_mTOjk*Qe$zBguDTkF0~l3|tJ zhh?RPXzuzPa4ifO5PjEceWVvwOmBSrz;F1CYs6N_pQBCEnzLge|0|e+f#Ij^Z38<)Xnmt{iDx`ARcD#~rgtss@VE-B`SAFZt&eJeX-6o)#&n=b!TN0`$ESQz*Y zwWRln9KPHuXA!m&^6qbcPe9mN75v#YX87*qqxe?iV6jt5%0S9AcdZLzw8}Im4RkDz zwr*H+Q}nqr(a|3F!lco!G%B}jJpU6%Wje4SH3%N8^`7ZcCv`Td!%3Cu$#lt_AHD_~ zuJ9EN+1C?#gFseUur@JK#*5e-ns-I!@9qj@7`0r%%w<;_>Z>!UAGK4|l&7DxwIe>3 zu@6raV{se7f6BsyOYd{{?9w9myA_~#TZ}_Hg;4%G6=aRjaShr=P5M!vfJ*T<^=gid zG0c9D9BSYdTf(P)Gbn4=S-*&^Pm@}Y#F}JlWYI`M0~UQ@jy9h4n>9L3*4CZn?=<+s z-x+7&%XQ6k>-o}=%o~&mJtsci%H>Z1t~jO${9ew0pvErrmRJsD7<8+0jReEqq0X0= z)DbmV@Mt+KmDvk)#l(Q_oKUcS4$?gumxc<@!$H}7swuY~l2iX_N*AUU6%vl>DHl$W=ZUlfcmzZhP^R?vXC^@UL~ zu7`&mTH_K$oV3iSH&0SlCJrNoJXw=TAWn?)YtCn;`|PzNcG?a*ASHJ8Gccw{QByXV z?lS1i9{VO*N&GWLwa!$vWMsBe!0E3i12|o${p)8hpm6zI@zp#7s4r@1+sDQ53dCwq z&Kc&3rs`M|>|+x1o$-=D@^fFp z9#+61lboC-by|vj?CKWpO+PV{bC!3@lN%&k2hBiC-`)b5U*wg2TG9Kn-uG;5kId_b zycRe%rtzr?vBw=T$sPxuat-|?-&mxDXn;w6l1g*4pb3Fer46k6B;;@on3Vs7Z@nbV z?XJcWMfK=YF7yO^eN(>;w2J|B({&S*Sn5Sc+#?nM#r)NvWkrM1LLpCi`xlD8q!{sp2r>cel4%MZhMk5He#f{`I)!SHXXE=CWU7cqp z&s`(*KGNFa#y?U;rCr7^*DYYKJNx&OOP&S`*ImI`IBRcZK|^3Ne*T}B3~g*&L;OB8 zXOmI$=^>~Fx(;kTZ5O{XW=UoOxoDKp(HcU5;AQ21T3`=B@nXJCVyvX0|7My?6AZhH z7bY$s;NYEH5>?0}Q=w@?OZmX4mvzXvxlGD$AcM~W`Qw-t3Ztk09+s`-R2zVSviVYO z)isb}Ku<47#{@VJ_1cq{jAM!9IsaqZFzD_K%zJ0(1&D3Kbc{lk7cR=EigNg70))d- zL$y!UVaU0zj@7GlC!UzNF-sodwC{+%n~-!$@#hD^SgJ*ESu1{%oBKK>H0=4OzPggj zPk`d9g~ucwN{D2E9_ z0N-kH(Q97s`B%MDeN9bGb+C4LWlCMD#;xtc^4JUEA-9Rkoth$)Y_v4pY5mN^pZNuk zyP6-+lx_!Giuk{8j>nE`(%L^hi>-f6ojKp$j!aEG9@|ch9LgRcAn>sq3L^GD6+X!A z;uI5?JG)|*CU(~lbUuWz*51rE4kIoR;Sg&6hq|-x3-`D^7m=2za?fwmM^*XzCJ#q- z-Pqa_0d0^5sB}W3{1o(B_i7c!-gkZidEh}==FQwh)Cpf$KWwV#Z?ja-Pw`WW!YQb{5xG(37`7t!$+I#z!5dFr=XYj`*<}_s(~+ZtyKo0j zyH~V-P6pL}>qrSv0rtd$TIHV$iN#2vn{PsoeH%GL<7yI4AO4LcP7!y<){4i2qN>)- z%y+$AmC<^Hmg&>Ur%S!Unn^ckA1s7>FPQu1*x3Ai4BK5Ibh)R*zWft}p!;tNw(wAb z7yEc}0#(qIp_;)k-NgoIXvQ)E8*`;`oAh=CCQN>(DSk*&V`%lRdD?mL&DD304FA%) z!nF^QRJ2`|w{7OsO=mF5Z6B-0*8r|rgo9i2ePyWMC&L?CoqJv^mh%I7re@Zb*7bb$ zzDXywn}WAINI`svH>sY*-E=KVdQRol?;2MUX=u+Zy1Yb0zGWVVN^a6pW8rq$YQD!*glo8m0VoAqjS3{pGYW;I7vNE0AzE-!)T1X9>Ni5XHYda z5}fK(VL|L?83Kq>c9|S;;PI=$dHQ}#%C4DxdhGzLUI{LzIk4ZOLbmN z6%l@{XFh%*ej@D>-lwB83?QcZjq~h#IwMXw%dDS8`QBApXw9)On6FkEGo=#3un0{N zf`~gx5jLk(FD}`MHh!;9EC&I)SeTb8WUc0GB7QzrCFc zEpAH~agQ#$*r=6HP>abeIIP)QU5Vv?c|}V4;1qiLxV~&pDtbNLZm};p#B7@fPNqOp zAW^yv{F!<2-b7;*sK2slXf<Jq<>%Q(st+z2!J`~*D*(+v|tFe>(tgEGOTg3hl z!ffC2OU+3emh#SBkjr%nF=73ye#Siw?+t)mGr_PqjP)0jR|oR(x@`E68OfXO)R#7V z`1n5wmM3b*;K>2CMFn}D`4qQUg~YxdEc)0@9O2p2Cfw(3*XaTR*zR*z9UdMvT4jOI z#zxZ0iHUJT_tlNo5=A`izF;^*-Tm*fz5ixl=CmR7lt{kZrkinLl2$i+0kfTCzZEv1 zy1o!UMvzdg*-=Gzs#IF^_%f}Bg$}UA!1xb1=j|d2L(*UKbq@i=NxR&G;&5MpaQE!9 zOeeQZt&(w>Vz_@iy{YD0c17CNMK)8p!#cfdVXM^pg1b9_XtAK#SNnqJ$IM!}J!uc_KEd4x(Xkjg%%h zagbthw>Sm=5ZGdxU1V>jfMrg+$w6xh01ZfK#k1c)1jAj@3luZ&WL2u+sNQfE!W+T> zaNi+v?vDl;3lz@x9Iy2LAp5FHC`jc95;rmGhSOv({%ts(eV#N{FH9Tf&hV5uTO5$! zR&D_#hIfnN_F+PsV(zzeaBy9TO_iQ1%w;J4cDivC{^oTXI|SV}FKcsuE`q?n0&isa z6S!~7gCv32S~L{CyoSdI+61f$1+DUu)+kO}2>4OnqFL9}-hV zPo!5ufd1&1eCFjOYBzft&$~&-UHQYaUOXK~xPEmovy!TNYT~Nk>(k9{7IGia!7@kDLP8_rlp({cehGA_RSVE+Hv;qI+JAdCbW_8^ zgBM&bRbViznE$f~r$P{vr>CT0y2l@!W_EHVT|mWY#RDF`5ui9nMR)@IrT6va7d{e6 zK6io@Y@9k08po#gitS;Vgon%~L?KYgm*0`Hg3aky;u_`s!qy_0nS>c!$C7_U+09@K zSz%n?7`8h2>oaw$!rliPI;8Ijv1tMAH&*fvN?BRJIsD=qQNUdZfiu|(e`w?8e39c$ zvwdiQikG?G`l4zVhcok=I{^6;&GFypQo(NuJwsY->%qYyA+`Jvg3CUurarfzP zQ10BM@w;YU=C#m2*r2iP5V*DqGCMrdcazp)vSQe!`jKb9*gR5OBQqr}O23$Hd=KmI zwd(2ysNAHbU;g2#e+0;f9Vu+LdIn$@8=K|}`1&nO>oM977M2q?EElwIS4WVy$8d^^ z%-Hl>0igA{yGZO$ouKE!ydDv1-6wO1$i2B0n~^VPn@2773=8<}dIe0?5$#u9i1nkr zTRjzJi~$kmcX}tBGZ@=tFQ&$78KIwng^-h+=}+Ia(9`#Kx(jlNGjlQ70gN@TAb1>| zOhjyG7V6pX?@ z4bsJ{F=|3MVEZqNx>~`AtgFU5r2VZdDfQ1u$N}|0sfw(BnH$R&vse5~nXu zJluQN>fwZPy0hOc^3wHr6rBnkE#&O4V^vjWAKdNTnosD5Fp-)cj^y_2P>0wnDF)%} z0VCWVT8yptKL^|Uyu6-1od=tI@1!~SBz5Kf@VMFWi9CsUlk|csdqL^ zA#vM_XxEY(5u_J9e8t!G(JV6#_am=N&vd941$jZr;Z;p!QTJ#*evjNxaA+z!=c>zE zf9jI=$TBny&7qAQvMh2RC|{ZFQbr{qU0Yoqx}&s7SJJ4eFA_Ej`_eBXgUY%?lE6mk ziVf`ZY_shQu~Josho%Xm#RBG=HSA!o#texP9AC!4W9{nJtCRVV4w)jcZ!5kpo4Q1v zV5QZCERg%-duSn!kLzsV?M(VQ9g3;)y20SN;&r2Ak|d&j@DMi-m#7)Xo-s_Fd9BL$ ziN6S=4lA_!k)Z$eEw4gqsxNrBYil=*)ksv#{6OD5?x)z9CtR=D1-}DxZ?xnmDuyk3 zD=U?f3jrqT29UhV@Gu6m&(Ds(EG_(3N^p*7t<<$)iEpu%uUvsKf|V5C{=>u1$9WF<}^T5$FAr_0Lh9tqaOWubKUQ4Ba@?ZHKhJs?|0q4M4RdOD7kuNdJtE%a<{ zU3L3(Hpxgq5oIK1aZK5}0^;&te$S8beR|irsPQ;S>=Q01(QqmqWmx2s)j~5C3lmf{ z$Q5@|pUH)J>!mZ0+g=w-u0mj{)3isB@|zC@^_z+@0R>tYSVqF0i-0u2KrPndIF%{w zxNr!H?9t-47QceLzsk|2;Np_-drf58=8>5L!{9H+ zF2&%g>pZp80kRQ~AZXCzEBTjDE>{fNaBoZfcJHv=Tl{`qWXb}S&3ooWz^dt%Q8t?1 z@Pyx&RCxI(BG9CE>p^HXa(4z!!MtzI;7RhAg8&T1RcYDZMARB4CdDFtRlZ0_ii%(S zmqIq)#tYAcG$Z$txK}-w84Wzc61!Y3lZCxli_vk^Txo{>mjAbxITElC7)>)q`E5Bl zg{+HjQYg}L^ILP-QAv&25*wR{w@=mNO~8-e(=jIz@np!cIJK0da_IUh8#mPKY|>z@ zxZZ_BAi0S`Nre9+V(^t&9sMB))p)P-$8XfC1@e=3A$TF0i>*ICpAhkbQG+qczfM!j z0S>yWL%k5``3Ye9g>a)?VWq2^x6-MT4xZ;zT=cGsUNdE&1wa^G|jz z$ZUq@92iLP-K70=vg{p#CbB+#nodtxTBAMp$^B_-VqzjLF3!%*etdi^EG(Rrl_fJ% z-rK}tWoe)w!OzyL#A4eP;^1g++x?%qq2duOiWrLRJLpNzC&q#Mv{c1QG%V_oOd~JfcxBPo zzZ;Vp7Js$?r5lcsR`+!OR(R&WYk{kiZ>4<0#pBy#p0!p^2T&<}T`q6W5?R!_NZJwd zA5k?&S7dg#P}SGcKjm?Aa|=GqkGUSsF$*oy)6vb8>pkoUzHrmXu4BGLm!@#Rqo>R3uxAf>l2v_vFCa5;?r$>- zpW5cU@brBj9qsdGlHzg8#b{_KjE|0;o!!gs*304H;U%?QoyqBJ>zn4_q{ONk1A5q7 zJW1RlvjRCWCB|Ckac#z2nzGee#pV9DJSkHj0|3gtcs^`TdoTuwH{fni;Z`B*d z0V88&C7spiFOx$iI?BUF!P~#d$hhJ4&-9{XMA=-n0DwWj-H z*YxIlfWNbjBy{?B4`}~1`oTRoYMYCIB zUAW@+Yyl?56sH-hkK4Ui2FX7o|NM|_f4)CpH5*M9`#J#6t*LyqSrlxi_AW3&97OlV z&{j)swBO%%=omUIGO|}qF-qst>TFhuY{*sgG^xs#Oa3dFEy7By=LW~XM!LK-QLDT$ zvKxVuPnR&8O@H{Q)c*42DPj_!98qFgor(S&wn~a(r;wRN?U6#09G1` zgfy;0GK+CPP~tp$++!q;zj8bmj+$RAeSbf9!y*^lnTG!X$=$WL8;+ijqcBf3YD67* zytyF|hZvi%5|Lky93 zmA{FH8it&nCBXrQJCn^&Hx4fs4so=E)!Qt6EFTX)U+cY%W&2fs0Gt4DM!WSs^X>^4 z*N%SE18|;&hJF8Nmb@5$eEicU3Urhjq2Qv=FK<5&fSD&Vli4{1QQRJrhD)JziO;0T z`Q1Iw#f$?Iv>1B7dJ55 zU~{N8b{Wsdj{@3kio?66MEM5Zr*jSzKbjTJ&-zMVHc%u!GvD{IP(h(nDac7l#aHx7 zVfl}AA`9H+V6u+v$>V5OWpRB8$9C{EAdwel^lEOG%f1gXM-?qx*Y@llZ7oihnCQTi zewVx1D(Dw0g{zF^1H_8)v}FG+U$@68c(YNs!t`ymCR&c|lbU?EhHSV!YhTyh5Blqo zB)u&ClSx#i?~v6?B{Ym#Al}~IC~u^Wx8<_pX;~=lbR92<1U+!^LNINo za@TTZcZOlz95fpAGpB2vogZ&I))iT6TvCmJvmQtldcs7?naL13Kp!0ne`G1d{0X1- z(%yynPsy^%V+Jao)u>YO^V$9~*CESY6-*p^dA_yiT~cplZsqw0UzIwcz(w5u0S9ht zYcnyC8D?8tSP(etL674*hy5G8?`K48GN)U#_u|F^^&EU}VB#%JWpz+cAomEg4RfJg zbTmN!`C9<|8mG}d0PPB*%Fz~M%J2zbt(@U$M9s9Du2A2zWyAOjB#Y5GjeT$ME69&3 z{Nn0dU0>~KwsHvYT5^jJ>dT2v1as$l+GFyzTFH!vve^{oDhqO5P_Fipgp7@iUF#fG zi_t0NI#fE+nT_t%Lf<}+D=jbF5AU%8T=zPh^nyl3i+iFTm5#*=(>Gl2cIcipba>EU z$Ry&QZ9WaGKsXq6KUkkeuPmHPy`G}`+JX*{)Vc*95sF6Hi(0W|y2Y(+gkSHr{0SbaKni{rn> zZu_8JF>}zQq<1l1g&t0mZ!B8bcU#fO`o@{DM{Oun@1d$dK^m7*11qriNWXEa2iN3$ zq>AnC{a0h?gq3eU{ER$Z3p1>i7E*F!o)adZoRnuzmP&?q{TiAVQ@5f{}2YB%+;sPhr)W{a8Qr-bSwt8yTv1zt;#6x!wzzs5eNV zO6IBvwgf$FrWDrIaiV}}=u#TQY?eer^T5{|)P=V8&c9M`vf{H=DZ;}k>raludWa%| z6zH$-@RQLS!wwahY&p7$SFX&jecU%Rp(V)pzQ=etv}&+Kk9Ztb@(xUUUs=uGFBNZt#0AZWXc2tQ9Hf%u-+Z;(&?_=jkf z5WN08J6%9nGuKQ#aD8cRBMPw$2F;SeVe!TybJA?#TO1OH#$Mna@|ab$vnBbTPqk2rC}o7^5RB9w_00D=TBGCa}s zSzIgpN6ghqplo2_PkMISXoT6+uI*BKO%U76gRaxX?BU!G=DcYQtUI5CEv!c0X^l<4 zE3&4Sij9p`>7moyt@7bP=ya6|it(kT=#P2>0|T>JO4s#iX|q5~ zs5KqIH7Q{aSzzkCwCF{;8ypQSE5E>K5L~fzb3l;o|$|b&QC| z9PZEdMob`JR}sFLeB=}1vXZk_n>C$c-vAZh~1)JaV5}vVzIN}3Y zNXy-J#%pMjlVekf#nF!)5pl56Tw@LlivW*|l@|2|p~gw_kz*DrWYgr|-4SXxlP>jY zXLr#}iu#LUATGmwgc?^eL+lLwQ;94%o!D2rAL;Ninj-5R4Ce-2uOs(((x1kEht#Fh z&SB;WA;?j0eHv~#FE20O8cI8vs}hAE&EY%_vySmyj*Bkg@P!}y7d($45vbEKbE}|} zN)?7>epvqqoXSYGo=;$S2|OZhlIV~H=ukxMpHloImGf2r+Tf)r>2U%8ew@ttX?=VW zo3M_oK%Q6%zj!a4nC#MgZ8AMG@D6SOk;y15)4O^`WSu+*IUq3+jqXiy3iYOFt|~?F z2cMUx8)#@~Aj$!><?umEz7&i75Gpxf`-#9w~z>YJX|c(bwV{{T#A{Uj`buE)M7& z?yJh~@lLJ%Bg|9DV_pc%3Xz+lD1S)ujl+(5?RUtKPZ9bt1K6b)ZBm+wn|9&yZ5%RoSw|YV;3K5~K@dK21Qz0#pQtHO%b8>2Y+x^anhT}}cfv^W3nZqK7IB%WFI>L&p1% znWp#`8Se&CwdN<#!Qgx)`Zv6zi2=*W$?5YjEAHmzMsqgPab`RcA0HjNbz74b=E72D zWY5bTM{Mv#%UVL9)qo#QOduM|A1h8pSmcq7OD_oq8n?8By;f~hzYeNNgURhCNbjM< z0oo37YDO**Y3upl_zF@{OpyJ*iq!H(1}PmT_>@4RGRlp3x2jWR#23)6GU0$XFC_xK z7A<#S2le;&r=%>&;c?gV)i~6bt-2(#UtMiJ9>9^K$DF!Kz3Qf+EowRo&dKrP<;6|f z8!_F=R@+{R`v9?XYgYF4RS6F%x;rNwV70PVrZJt~srE94E&-X-`E(g{D41(UtS0&H zkAVm>>B5{FFw)lYC-17?0vm0YbnxH6`3=yfA&&gx6TPp2_+@k3nHL)~R8dMq$SVV8 zgp&TlcCF5Mgh3D8RNEYh;9`O+Ti-ewKIbJgqset;FZAN*PPHiBgi}wC2qmm^Bk~aAHJM|8Wnv(Ri;Kdq z#~CT$pYMY{Vw&w{u?D%>q+na+$u(t+x6_>mic7bKc8lFIu+wD`i`EA2HsCbv3YD}Y z26H>hhXn&{8<_rJzCJK3ygi$@zQobUZaERUs>+e6rVQ8M#hWq_h!t-d;tGCMVUL-P zZ-lGaNz2EYut=m0yMKn@f9vRyCv$Ns))M*?xW8YI8QI$5=xCGooB`_l%jUpgY)C1; z5uz0gpf%tW^ZDI1`Y=$ioY6O&9RHE?vf0zfpq-U|f9ec6)OJ4{!z2T{D!J+KHGDPk znUyBNBn3@?X>DyqAmV>dlIKT}Ec-fBT3@@J4TVGUK9A)8mNT?^N!i>)w7s^t^cND8 zj|U#9I4evHij(V#kuK4-MhhUkgr8;Y2l_9%tKwHZ}v`rG%=b);rjMc<_2A7vJn$(X{rkq#6m}v& zBI~7PMMjfPw`xFV&Gc7-4e)aeN)FJOy?Fs}iD=_fB zt)&{@WpA*3f%x202$W^4L<3bJx3}4LU9D21z^ChV`NYWjajHLp!q9G6$7uJ!jP*?{ zs|}BCBOUz-_s8-luS40%lW#aY?tyF;J5TRdG{rq1Bn-w)sz()V%Ldn6fJ6vnN8J72vnc*8o{!qtpoAar1TeLV`9SOgBriPR#;u*Zk3U3w12AA;9^(^e-Q>q9Ntv6-tQ zT!gQ2y+HL437?O_`j-Nc_ghUGL-tuoH{X+w(cHDXLyMmKb`PKZ6H;NgpF7sgmneBJ z2FU-uU4ZMIVp+M`!H^J7d^F7nx$^j?>UQ;&2h`A!Yo37Nkf!VoWGVZ@Pp zK{6Tuv_;Pe?9>Rz3m6JjVHpianNR%Wu?bxw4n`f&kyQOd$A*ayezCKG#7f_a^oI z{k7O6U#3;UB{yMDPmdi>{@EGD4F|+<5IkJA+T9ka9w)@rhZN-bieP|&KQ%SQ<930p z|J6KIUBjqmXuv@`Y8p^r>i!gPKxQk>p}n%A1u0HeQ~OU=SxMv~Sr;F_wIW}kyC@Z~ zdC|sc)Wk!|u?f-LM}gkRLuO{O6b^?V?W$vNX+>Gr{_d?Ylp_hFVho5nfDhpN7sZrt zGau|2+@rUzZikQgc-6U@T0V8s>+SmZ#K%&luaAX&bNl`KrYXAG6fnba7)e$Budb~KY09uEm{Ah35% zN=aLurlt@(p2;K!rpHxK(gxln61F#X`D(euk^~ z7j=p%Yxf%I{K*%PwzyU6^w0M2wjdQp$@R|7-EDt;w#3SAUp<0Z#k&R!>FZLJ+Ao%A zn-3KqJ?Gi@9Q}D3>=OCw2fduqdebVRcMlY4y6^HEw{KgAMeyS7EQfH(C)eig_CuHH z+4dd2VNH6R7|m4uRx@k|DHGia@B-@kT?)F!y^w#DTqGrs-3Hf6x&514ZszK3JH|7M zke(wo@~#=v-zH|s7TN7(4$TaC8l`%dms`5JK6d(owJZfCjn}a*|D^eNYs8VUaN88dn}^#yM;PC!=jo-Ma_jdP&n~U{J zu4!l7ZJSvIs!oZXIX)h%7NUjj-zuS=hz(GDUhs>Hz6_K3(xk+EDf3xN4_Y17(Q%W=f7 zug8x49si{tWMI|ad;nED|19>+t#PXLKgGp|z-gr0g(QXt0-3E_+5{o~I+sW~{oosXiNJr?O`) zCp5!0{0HKxMGFFvrD1W#B+@I#%uHfLKqo&9SROP3hV|SV`CK-mdwfVZWG#?TAwZu;M&pafiYm@cH0jY%^mp;t4q4St*LYTMvq$UAD#4} z*+uqv)6ySW5l%O{E-pVC1cUetAt51`_5D8pSM8zTYHtsW%dN=jwH&_Q*ZYwmbxl_YF9x5eSUPW$ctib<$Ej1x~M>9Exb$mF%32}>Df4Ao1s2~AnnC-I;7S`b%LXw(W;?va^>*Xl!DgG1C3=81 z-iLK+1zyMHGo_q>?`zCY#MiuZ0Ji0=MxS+HT}eqb{Na2&H90!^FYg4jr>VKw?`hS1 zX=%y%=r2w!v3w%HZrK?=Iz4Ukyf;gEWa@kksULR6kfrV4w53DDxol)>&f}ZOMK#Ak zHatDG_h|a#2I+PVX!&N=o?4|`OD71zp)g~UGgWx})F$*<8Fr7&K{hL(NIzhxk z%=Nynzg-pO>YG;)Osi60b!PpOaTd=6eC6+9;7ZZ)97pK!UR&Q}VLQ{1r2al}Xz`h_ zhpK@kEgX!TvM?I9DJU!qsJOPSB3yo#95?rm84baxaSb2;KX4B8!Vvmph&0k{E@91$lYx9sqL^+a)q2RGXXIZq0dT zg066Qsq3+i=b~wq)sNM#k-R}>n*Z$rNTaqoFh%0=`Ml7z>C@;mjZQ-834`L&rVHjB}#5}kLJrHOzHPzM4 zpW2@Gwdwi5YX$z{?wUP119}!+KM$x(Inf1|s4r(z(Tn`iYf7ACL_`b&1u>^YyHXx> z@v^v}YO16|gQAt3k9m~&^%EBEG(KQV9!ci;-q(D~rb+B;6fF|DBC%!wiiZpEJd7MA z6#O@>P8<sO z*Wd%VIEx`KeGMI*jko*+@z2lao^AJSUtN~UD!ejmMoLg*2NxHg&ljK-^1G|yyu`a< zo69~qUfg@Hd$@$7F^{ECg{g~&;J?4j6qjlrBLFKc@|525s^rPiI+O ztB;>DluhMkUElzwgo%lWeY*elHs&;QYBVYoI1=WD{zm+KPXYHeOH3q_Gfw~ zGLKywTT|8Fe1E#m{Cdf%*1Fe)>lML>SK~FH=piCTW(4c}wonfWmV2FN-F0 zRA=-bnni?&dj{kLJc>BH7QD6Z=X@yf`J1{lW;q67>&X4FPH3_md#m}c`}ZtUc;-T~ zmk%@`aB2HX7--*lJG|+>EsH1ky%XIU0raP(&tZx>dHkYBebMft=dN`BM$GJFzO}!1 z12P)lPL*+SRIP`N z1xf#GZplCSPFq`BjGZ^a;^N^Z=+(#}2S&i7wnD8c(Wl5&l;T|qESLlt9X&ZE#r5f8 zwNGbbnjMB}es1=0>-Xqu^As9Iy-C)Y?tMXj`=7Y#m%i#Qc^rqLDo8@19LQ6(*`&X$ zrr3nFwEe>Pl~vCeQbd9crFAHl{dTyx1>?CpRO-thlq2+QFHjpuxYSzPO8{`m@XDxw)GWJt--uRF4+=OyhLo}S4g@5G^6CHQoQ@ze=8=R1(=*B zr1pT66b#{i`khq1nL&gpsAy;jh6ayki;bXAo8p}c-@)ep$cjiPKtLuce7=kyWf}7> zBR(QHHE-sq!;2F@envA^Guqqf;~$xs{0*K;%zpYupZbZC>SqX7N^gKMiWRA&rF{=a ze$7!t#ILCqcVb&EGc14eBwR~|O#;Tkp;QboR|{pmY8n!J7TU9+0<;cX7uJ_nJ-2s_ zod)^m73=<%prHPHDN8b~F0#KJeG2vXniG2;^xo@wakh&lTysyEBWS9tTWz#Va=EKc zaRCH_32qpofu+k-y|w5)2LPw-9U6jEzg};dhQV3ZiwZQ>)gBp#d3NNFV+G4;Ib2|K zchS?92-}7&j`eh{n&{t*(WSAm4P#VL7in^RI3Q6|W3ixV9|h=Pal#O znLrD=`KSRUw)*u?b3$;HlGx>kR0`NAlEXwUxW;lyryD1jFOz>Y%@2^w29F83v4MHX zxKZN3Z%b;T0-d69h)z&tef`VG!0Ev*`19pON$D<9sc>&3axU@u0sHW@&UVPC)!xrt zu49SO8{8~>`}!JT zkE3g{^|Mv?-4`EF@c^y_ib^b!b>voCwSc@37S|{mM#lJvh|-#xWzD%!u!&Uqx4Q|( zOVy|utD?Kk4RTlmXkJWE78VwA8-k;q=`C)W!IvIyG-ff+9fz%s;n2%veLhaG4|B<6 z@^g^V1*-*_xAo8I{-I=LsmGBg3B|E9f{sIpqsM#2I>zbjCH<~?Liw`F%-cmwWjOHG z@4OGu6!0dYV!L7gCEEpq$y7bSsS1cYD#avHR|8Z?<|!uCLJ8YtwYxX8lCR8UpG!qD zKkv2GOPw~8%)A;D7AR+GB{IW@_|4wnwv}JjEUc{i`}@mP+TpR#VLBuAm;3u=r)P0P}A$ zQzlv_pX4t%u@R-zdF5{}c%Tm^$E==Vjr*o!GzXxxm+{$-O7emSx)&#q=X&@)!{&~(ofCV}a7 zF(B|jp!arhRlHJq*Vk>)O6ux1VaWQwX`Wv_hf9zvpjIWL1VOV9PIz!i>k;S?c|=Mu zs1XGM_!U2Pvm$;9c10*}yza@#`H=FXLUMJGkaO#wWZiED*(&ysi&-snZ2w~0SW`T5 zo~&p#{0JijR?lyCkcbW6wiYLh_}V|hR9}#yL7JPJJKQdn@}D|8J3ro@YxH|^y9ME9 z%rLlNiGM}Z)La8%vAUt?6Oy|l|2MP`GwmYSFc zb{D~p6MTC+_gtJiB^)-_eE)D~f3@*AKEoT(lwWLa(p}9O_TSdmIIuJ4Sd(eJB2RUK}m;lmxIQcdtU06P0DZznT|SOuXG6m$SSASo;s4 zSx0f9+j!WUc{pn)CDV(P|MZ{6@@b`OWAavq6VHc)$5c^Md*UA=BhTjrZ7q%^;89!i z+LoqgwCi*mZ6#l@T|cw1ho&IK^vP88ybi>-R0Cxww3O#wd3Z-MfRcch^0D;b+((Ip zZaOIE_juscqe_fkq(;UI63}ze{gqTWm6%EOAGsjo4obuk&Kn5*LC|NS;{6YZ= zV0$lwRtH~iz`Qb7M4ZB>#AxZO_w4XLn#?xC&4fRo7|@mXA5Q1*k0xnplUN+wf&)tokn-rLFo8y=t@MLqqC{Rx=t3;LTZaD9%q z-G4`WKab^N9WG6HN18`yxfY-^3`(!l%XMHvL^s1VyWJZCI*+OsP@)DiZO+G-7#P%Q zWVED#pD>l04Q6vik{>w)8@KMt6V_U<5fntHW-ZrYyJ$Yi>HeY*1>xVM&qy|x=I%a~ z>AyVPB;HiB@S(ybMAUbMVn^5s*XGV*u;BD)J=!E_)rc%__`NKTRD7kP^r6->=gX}J zm*-{J0KK3fKJfM>PjktUm<-Dyq7_VL}#BQ?L!{K;4DM7vL3e3At371YxAk1 z9-BBWqF`tu;J|**6+Pp6h0ln1A(0d%Y_QSMVWL;7rU+Y(XU=H@(+TPnSp6lpd`v zP*_a;NysF^aghFladiK3K2V@M;s;7+PRGrg8HX50 zp5mFEojM|W>;s_?B2G#TiF;z<#OXF81ck+JPxdAlv%Otjk1T#BH@{L-e*hHJ3iTS6 z{Nh9f_TB=}y)+Qb!=`iPOx{&dwV6EepL}z1qIdcbRR6S=CmTS)5Tq@|hEJo%UK0^^8{e!EMV_w!X#lZ>wqI2hQk@J8T+gdbC;TMlJm z4Z?4EdwUB}MttV}Wy1Q>^yy4)-S^@X^fOENQL?8tLs#M}YHgJ(K5v)z==M(pO+A2G z3$s~~+Gze=KdEmV#`9}z%PMfs-PClu&K0W_W{fG@>2ks~=v-`n7xIPZZ?Z9MOxzyE2Lu^{NRz zVAPxEba~3A<=rnhYcnR%O&;AGySr5XWgf8An?Ef}OTkxEtYWpsSk8jA2`Od<%tenN z*a{meR;owK6&W{W+}0onpF#D$-v3)|3n5~l?yCY*?8$o|$<7a+e(=e0xJ_c!8Nz+c z;=oS*T&S#E;BCI3>rfu)@joaiAb?rMXP4JP{t4Kq%{Ht3oTBosuIx`BHv@4|QK*AW z+!Bic8i>RQM}YH0O-;_qn!0fIJ?s9F2>onzV-*zMr4B3|uZORz$U9#=2FoxF$ycua z>WujU^g>6|goA~WBHFKYGUgkSZc4URu{HT}lEF7Qj18NsivXhZ^38ncch{KbJ7lWd7KdtA`YSQN#p0JUMB#S!Kb(>aT!ks7y{v+xC0A zT=7m1RRL8&RG0&~%>>C(j-HpY{_FJSla_A}-BMqovxDp!L9~(KLzCC3U&?TaS`Kk? zKlfLv96KPcn_v4Hd$E5tvhpVr-?@@T1hguminf)~nW@m&%kNFu??61i1kHQH;5ba(HSqUkOr5UhYL$-RhzBDcR+q7QFzoVzFEmLe;Uj^lU6Hkm1|W^)S!BHrG4n0We+h zdyo>Tijg12N-^^A=FmY#pRrQPg?w$B{Ebb%3bg&{#Ze6X4W842U+mPD5J;Q9_}rAW zhIMBX_-$$o!8dfkH#dJw2;?12o}FE0Xe#7~C$&Qxd`vQbv5sVtt>=ed(=+sphEZrr zJHs6JP^LC9dML`$qiZPWPLebk4y>8&J*flcx946Yr2|Q?kSLt))6!}n{P#yUz zT3VI+`)E2_5P1Go8scQ3dw50>K^B+(C6rErO;&VA7LkNhZfU#!U5wiB-tAUx_C|L7 zj;7+DL{&fXLVy>zphAX^B8fiY+~?@WUA5dAmHhOhvDl7SV$BWtj@6^r`%Z3~=4c?o z$X8esL>$y~Hkb3&23I9(b~emgyb}{+{=~=#B{{jtKo}y}a1>F!?fQ>ak^-p!4;30H zRq%KA06LA8kG;ozfk8SGBge=29I(q5Q;!fbg*1@o$1zcrYfw8iYoz1k?aj62NRNZS zzWfdc4D*imk%}c`eE~U^dbLiS1v>Q(u!^!^ z%iJ9ZPZBQOQ)KTI2Zs@Q*$pT9l@W!+M3g?KrRy!w;@0g$mTABspz>)>X-ceDf{e-x|OA zKIg;7Us~qVy@5_(SMBS$=zu>k5S6iqO#1LgUnB71gqhJZD;nFwpYSz2G+}WB&KK_8 z;;WH{hm;gBu*Q+(^0XapS+EAbo^h6{?8*mgR_hQ!ku6$1?~h>7zBgL*d9}>{!ih@- z!hmXxy5E(RG2mf(%YDJn_M7eOW`D7>C*}%&8>z7yl!Ka^A15Xz0^cGTKcajX%9pmb zhvNkjHSCwCKCkeUPPV|w(-urpm*b-E{@h;9nd>c@>$_iYH)in7pX+=|eTQG2+@7AC zb(H@x_Itv?v`>C}C$-N+^Kdv!X#}R2FVjC5PX@CKCNjhyqCWBg<|Yktz{xzZh%$S_ zRVd|aLUib3$zJ#$iYg6V!Zs%QKQpAILxUDm6JL)rIwEF7j=O&Wx8Xvox`S(a-8O#L zeMFRw68if35a1e)AACT~Pn^gXy>EU{R2iil*Fp+>n(rCE8C3QW&LV!AL7KYmZ?U&c z(emBw?18S!=j6w@b?7z0#HTx6o&4JUTLor!$c}*#c5&=UN_9@ImHnTmhGNuS-VAC9 zdulPl8=}Y4Sy5_?rXAdmzkOt*aT;qbUPy#Aib5Wif?c3H#orSIqZ#yb+O6%~M2jVO z=Wwo04;qa(EcBZ_krJgR?6&KZ)VGSxXaB>hdaT}# zvp5qUZD@|OAIn`q;%3fzIU#YBDzlQv!Jz#+MU%b*abnB37IGwO%@)W^4)GwA>{i|J zYOwh3mq;3__QgH)gD9{r%}mj{OwRF+vbOd_X)1g)!otFe$7P3eb?~e+q#!0|JlpE( zNQwB8#jG1O9*G;`AB^HHEwYsYZ!n+!PJ3;y4xbRVt&}|q-)MvW=pAs3R75mhaClTA z&8zxx*$`%R2RTZo`W@VZF6RrIE9ByqD+XN#0|68KGnRbq#lwGA9ZJ|VYK}iBXV2N9DxB-e1n{nf;uj$h4MZBnB?gkMxm})yXv^H%`E*pf-Y0 zQAZY8_Q6c5<sI_lRx(ug!sAOWRB@+?5u4A}K0#Oea&Ta*m%L zrB;HqP~7fUF(BA|19;y$6^mCh)i!E3ZQy+#(&A#=$aAYlLL92L9KN2=rE`*HkkdVZ zUy4}l#0i5-Jl->t(5mTZOPU|9BO8eL)aqB^bKPMw&d9afcGIbF82(w7DAL}uDjp}l zRtF7TrUJW4=i~}5XnJyYtCa82d7M-ZtJi+~seB-A0dgx74RNHIL&y{ zW;Re_j+UHoKCdD)D)@X}E41}<|5E0bpX7uYm+(VDHJeOzR%tiD0UezHdFu|)q zw?<_FAnMC`;RrBwkVaLuHeKPuCWMo%NBaPK0Z5P z^e~2&McSXTHLjOzOd*zW4IAT9KKGF5vJK}`zpE$LnykfRumd;J=CapA;jzR-MK#k} z8XFry!J+a616@}Y%GQIRM#aF0A$FE&`_p>jo1VXJnia~e#G8L(?NPU$ICLDC_3M-h|fhtkh;i~ z+>Fp@nvGZL>zy7saX#?(?aS5J^llI0@;6WnHIj{LS)L9B%x?+dNJL_K#B|P{FoU>* z6BFn00-v>Bi2Hz}1w0ps_`H&v-f8&o=6eB`i0I;4TH)kS-Tn*#GaL*L$D=^|Mtbu! zH=VA-={~C=M41rpWh9uNu?dd3uNei2sY`dmT9+p)it!F-Sb7CC6}vs};WSdp+=xlS z?V>6(Q~Y@-e!H2rqW^o)f~9;&CRB1jnBovFN%$R6;wK{X}i?HfMvka?TfHhnL_3m+sIKI+o%d@1ig0ej3hpOy7-pI5d% zA*^Hc1a=@Uk(319F^$fonl^!1rA=Ppp-r7?I!=)r1b$|okau9Qu`tHpQSdXM!XQ3! zFjNM&QgB+pU?@_OKYb`rX4g5B8;xf1K(nQ7BicccdB`TvlD^w+JHLwsYW$od{QBti z8yL{4Ke%l`q74cG2i51Z&rV z^y-p^`MAF}N~98qNOzUJ$6yp#UXV~!j8_>M&8k?$yXA6p)C6^wZ-AWIgA(M#p!=Y%SLmHosnAVZ$kw4_K;=O2B>~-Np>dF|rUy2-%T=UQ zk=IU7T_QYyrU!!U6s-1j^P7GF*3HpDgTu?insH*h*RjH7xNm^TYJI+xh5S#QPgLS`{%>2*#_i7AKD_ zArIWw9Oa`voG5!!;SYPpQqtP0J0zHN{1f-j#?mZ^&mc0slQ;sN9h8s|@}~tjl$+xb zn8-{JD#T`^AvgyMo5pc)?3GqWvd%0!Gsf4$k}S6bgmmJ_>=TKHL*lps1RZOI=Zi>C4^*|tE}9r%(UzjAnxKL%)5pX zhmz$%lvWQ{&<31E{s zH1N6hJ#sVPtUqML4k5+qf{}R^-k>Bsnv)!QjF}1U4N91l!IJTDa6sp^I7z&xlS~-tcD^2L9g3 z&tb{G6Sa)8lDt@QX-g4ouQu3wyYzVa;$QJj|2qeApwR}YWmRVBd2=o(8!%`nc06+1l(fFXHRNKKb;Q)VYqm2@b3*M{#@(<&r-Rpw` zHZ3{xu%Up|!K2o~!9TUazxBb_;Z;XO4x&*eBF3X?-5;%8HjkemuomoB1Wu520Kf06 z1kD#8rWmby^~3Ws78zDw-9#GW2p{ak1WwT3iqfLWKuh^a;)$*Da})g5;LV(+&Dpi} z(BDL(($K7O+r*f?Yo)mC;y;$`-n(ZRLfQKxWMZsD6{xUVlMs}{I9FEb33&r-0$GFB zh~wZuGe*(4%_icK=UDbeQ^FNCLDKV-HyHRlcbGcoY%f#13cb^sx6r|t&&mi*7YH|; z1uK@9t+8(EVq2C0+ayLCE1UW2VP5`%zzN8x))B_SYKJA!}E4lPw_ zi^t(>s;HP?DnSCar#|?lxa`GxVv)#Adl9KpHSy^3%SgHg7WDo#ntz>#(9#J4(v?J; zX7M2;J$k9z8)N1_c46@eGyLzTX(Zr=3KEV8;LkH#9@soeFq3Yf0q=$oB!=Gq#G5s@QH4tHMOKoz=SOWDTMq)GB#u z(kw+swdMR0QA(^mWQVP`_nt&cU6%K>>Oak|;j6D3=-+-M&$4rIqYj7W(^0u3sS0tZ z3?#1$k@U^44P`X1j5=qCfn!~DxLpWge#b+}=t)0=%16;9nQQraoh-dyl*mJ56ZQJ> zmGACu7PJ>|mC$wjvpc)>B5S?`8u~b5Jcr#H6B=ZZVFTPCHY*`PC(Y!sLzJa-BHFtS#_D~ z7+*{EXc%;r-JL!KRW)}1?{{F1y;Ozp!=VOZHtC(>&x9tYMW3g(UBVmGf5H>*=myd{ zme&wVB#W@p>eEy2{@8(h7BiE-`WQ@qrp4z5fUov&+nf$OgTHw){VjSsY=eJuhB?rL zx4*i58znId#snTe^Ub!})|2MK!eBp0sL&1Qp=3_C97hOhI`5(^qZjiWMZm=K*{zd_ zbSzv|Y4bqMm$$mSTyLDos7|ef+X7Lb| zQ6{$~DJe)gJ%{1a>J$?s-op!sy#n0giA4DCUm3}-@=2F`d^6l;DjrmQl4di}utzq4145fGo#kZe6x)Xpy_$Tm}@VjD6wDYKN>uK&AFh?R{k-gmVyH@+?Xcd zj^ZsS+H0er$N@0}e%0%X=2BuSb~mfJIIZq}42?;spFWl*Fx9LS{&d>64 zUyj;sk1a_It!5k88{aWw28l|(!nx*=T z)lV*NCulMpW&hn78A8`Hf6`dCi@zi>&UR4_j+(i0WS}5hL4Zt+Z>gCbF61K~Z1W2V z0ajSYrYTO1n!9}?sW;BcF#PV0@@JD1MN0x%UmAu(DPBNNN;d_c^IqJhDQq^KKprx&_L_Xsi9Z1T~Mi9Wi zfG9wfun1;P~{s)_v$uJ4M|NssU zRY~M-W2^-FoVu*ls+@SIygAwL8#uP#C0T zGCQ5^Qdc+n6hw56wp_%RF_$z;e z1hUQnFJKpap*Grd0-#yw`G2^kqI=G1)tf|W(WIADtJH?!);e3;5iMn2c=?KZNw$SW z)nOAIeyCliA{GD{APF?K3n&$4hA<-I2ik3Qu3FTr zm0AU8gMU-Z5esQ?a3?i8RWNsVhpK{bta*aT5Z?7FkQ1e*U}wb7?-~DTG$YDL%}Xr3Yyp&THbvK?Q@!88QnmBDEAj^^J{nj_!P7SR!Id8p2zB27bibJ0Fc5tCgxvkA~ z2421>5FEN%t0@Y!>W{>Z6hsOr7&v$qSgjGylY~TGW@@ULD51(6%VL19hxX6axX2sQ z(XZwQ)S#8Kf>%F_iYw4YC-zTIz&u?p4bR4vvQztD(!P}pH1IMAIFrrWiD!z4zvLOU zVGn9Ivv;{BP1hbm7$h`UIJ(R@{DJ#!*?||}yV{0y#RU>BH`F;E1ZlZ{`DioZ78I_{ z?eG~o(NPc6`niok5V=AvUA7#o-|6A#;^NXJ_Cy4fc7MGd{l|rQr}aK_MHdkkMusJp z4Sxet+=5^CFZah)#rP@JGVD9Zx6h30Mc9cLea$6lGpzV4)$hzdQga(V0d@HcE8@xK zjI~Cs=3l@MjEenm&>$Srq2a4ad~9*0mA`u#o5f^SpXrdwydZm^wa}wA(r5 zh`mjFs48IfO7D4b~O zU@VCiJ2jlGIPMs*_l?n%Y7|L{oSmI_i%f<#WKm~>$HPQ%YwdC7|IS*f&@#G<8x3En zH9h?#93m5`{PZV6+dmVGF;tE%VCgOFP}&_eS(Dh;^tLK7`^sZul7^%FtAO36!GbNG zF7X4bAM)gW9X+=`vgCVBTJlzpw?LOJpZt%NV8xe6L&h*s^t!7a`)5D&h-Qmqr9hN7 zo*$$!87{1Q@hTQWX4>^F4cgo;ziOi4QJQyyzQ!o?kcB7+$ABqFD1zwe>FJ&#?7+>_ zx_vx0v+#<>TA`G*G)j$)u0Hh|OZh)o>)t*TNz2+-BFP1K3u)ZVl|I5iLin&|(#oi> z0v`W{yURj4)cnQDoC@i#8-e=qcY(h%bB5rCi4hUd`!Hyd5Ew+{t=-t@sDGiAZkeE+ z?zRM6)ozWJ&}J|>Kx**$G88;2a!GCO3k$nG(muRclYBjmP*INa(%N0fH4+K-fa4Gk z(jwzDFbf%9x0aI26&P_DD2Rq5bFX0m*9%>22wNtvI-=o*B5yOT7u`p{+v)8S4*d1w5W*Tuh3B8Cxq69M(8mx#U zT$U#9_QSP^)w5A*>L4gTm$M&qWaj}Y)_gKw);frd)WpBfISgftmAiXZg0<$y?>K}b z1%HFi&HxRv1G2NaIJtcttheb2b`K$eEpd~S1&;uSk~Y@%L~|*Zq^p)=C@Y{p9r@@# zQN8x^($|uMe6)5b0x$nOltqUrtfD>N3zrNsBpm`rp!iEcZL{IQ{q`bfjW>d5OxAT1 zQ#DE* zfk=kTsBe4QAJ_*mglt6p4^3C$7u6H(cj=UFq&pYs5|9pQMN+y%Qo6gl1*N;YyIYW! z?o>cp;?3{9&)dIX_TITO=X~o(MTBn(9DN7w`bf^s;yRgpv|8MWbZ*&p{7abE`2Z1? z$Qh(wDmExWn}pOp?A8E5+ zP(kSPz_;H=;mdE)pXc(Mv0(BrC76m7U0{ya<{1}F@h#OIC`LIgEMCV&gi3G}VyS%7 zXit-Ye*Of1wmQICV%C`PcTV8g8SBr@(eH_)PhIS^$FccI9vCRMVQywSY`CzvskrZ= zo*W;l{jlh`)9gC$kP7T0BM*hh`B^4etJ+_ICPSu;ZsrzPyJ9Ismsv*R!;m!jZY{fC z^E9USt+UpJOF2Pn>~pN<%L_t(&csi@2+|urE;%+-UTSw@E5)Aw{UNu*@@3Yb2hGoa zD1Da%g1*aQiRw+}rZd~~_)dOh$GW1eUmL+*=^fL;!Ly+ytC*Miomx@LUL~E*(##){4Ay(fY(z8P`h8YZR}iJ@hE&C_LZ=~ zW~uglg{3sj#eNXHJq94|}*c>PZ;4cr|t zlM}kHcm$bd|8~5tH+J019B=W8^nsHK%rQR{zVFTS$YnmERbq+4XU_R9>XxKknvnkT z*Fbo2v7~}2^TzbSRTZT$Gomu_nV}?^pB<-OFNL4KvYEuzv5z;?Hx^#}=Lx)`0ixyq z1V|3{&mqI%O&honEolFAghUwIt@r)qQj1d&F&*6C{q1eJLC13X9B(}21=r3@fg&jO z-pa{g^Xa`bLnkf%1#uG+#z1G>L(HEeb1_%NLafaAM%0QJ8+%d6r7?_rKfA^={06>- zSy|G|YGTTc=V#sGtMnPO2Mk(74e21Js6Aaeb@RVQNE}LRKmE^)Mj~LKC7oQ$H{hI# zfFqUvHHrigvl}CpnJ2qqod`vZ$LV_`xp?Nn_B@D{S{acatkFgVPP@}^fuQ&jbF0S?7;iQy8k0R z-){-7C*mL|F{9;l_3#Hf7BRnlG?p%bzFr);RF@i;u~?aK{5!~hOFsIFS_qIfOumR# zQ5r8$XBAEIj{B{d=YG7+!qLh($ghS!pX= z<`jx!RL{{vHpx5#?de+S>B%ulCD6sjd;lqY-Ll~hJICYc+-e1j5dnXxqj8~&RO}x+ zGqI}COg@pqY$3nHE@e#Fna^F#l3oc2S8Wq65OqbzxVYvT*LDefi~I~>Zm{1dS?!cc z%|Ej_hP{J*AXnH}NBns=>)!{ars#?xmUxX+pxzb-TK2BHwM#q@x~@0rp^Ag zXr8xjWC#-had=u|KC4*$I0GMKQN~VbO!X+kI$lr0*7o^uZ6KFA!2kJaSBQ01D2)eRvs$r8plTm@sttb(O_< zxgTl6-ly|j5-V@+D*OY572a3~s}v{ogBD%I*&fAWO_&soxf|$v02a5$%*_=9!8rCUotVqDJ=@n_gox^`7ln{&&t*+adOo~tTW*G2c=Z@iLUl;~@ zYuX(NzjHI3i`d$zsobdpnohukMhr>+pSWo9D0{AjV2h;gP3mAZ(& zDF!k!sx;XB>Pa;%7g1?dhnJiv)+@-OS?WjXCUkN1>J)MMcSY^YJo1*KC>OUxti|Z| z(nqYCGUFfG3-jeByDrlaT#y>-;tlE#Hc7ZR+6F};84gn#0?&&b`B{}_$K41ykt2IE z%kE~Vp8!H1q+0KF`q0+w$``^`#O5wnvg9E4g~+mXvG1Q1B4_GyT5HWmbVn!AmRCj& z+x)%dnX#EAj6TR4ZFdJgYZR&HSAIW%o%aM_m4SK-y{9p~P{?0Fu};@?)Zyguhvhr|)a2 z???J^06aT&PhKgQTQdhj<>3A8m2?pG1|d4T^kv#Fo<#t1rB&p6*!r_eRr? zyCc)_Ktw}Qjl6x{8^3+4wX>e;?THLy{x^`Q0&-v3XmC)*@V<+F(3k55ht?Do-9}~G z@2{ese4Zr1YEnxG`N)rFeOSSmTC&WN@GhOtNv|&*98Qk@C@WNI+!5HMj9n4Guy@iE z5y2IPZuwdj@MdL>(#JI71nIoJy12=x8FgAmfxpZ!9PT_)+=Ct4{q;!mbKj-?Qq}F} zP|}j1p2+nS$ zd3q{V;l=AG8+*ygEU~P&a@`hL-bjB)ZO!TC{!I%15xHJ8DJGy|uGBP7v+AA{?oJ}? z(Gy33lVPf6b~K+tF?Xxcg<(3PPwszYE6??Bp-}d|-(A)pJK|+I*$#Bz$``S=hlkLP z$%ug(OxeV9B*dLY^VL|z-wuXe5lXtzb;!=U+FOF{yicEcR*1-=;V3bRwJaO#$cc{g z4>k{O`>4Vz+46F8-&Yx&9vlpdrw7PW(PhiVQq-3rh@%1r9U98*LaqXA$_9z1IG%P>hc@BeU>~P`YtUu3#bljfqBN3_rYhql-j~95Vf_5AKe8n<`0e;UYi1EtK|K@6ASl8- zQHw|r`udn1ouB${=KI+`)H|HYil3aTUXGgnHJ-J(m+++x#AGj1^|$(GH4I4;JfE#8 zbw6E{KXar+saN%{Jze$9~dXKT3wEI z7-Qjr0ALS5h|hDS1Wiu`KNP|8IK)}sm!n`|r3O?#xEB`}r@@TiMvKoWbKi{W!x!>H z;(~2>{kHGsm52k%3nN3MbLC*?f;y>s_1uB-i&2Gz<^!P<7z)=d2M5RS+_I)IfJyB+ z!Ic<@&Tr5{N8Q`m*h@FGi_RsA+wtW@DgBPZLWDLMFGZXO1YbRyVyoKtpXbOh&J5^)mu=ff>PyN8W1hiv(h112JP;Y!enSiG&gjZAnzEj*J;J z4##q}DP&Zg)@oO@d)#}ii65uM&?Qx`O&NiJANLkVWQ{L|Os1q`)IhwH3}V*V3!CRN_h9g$=MNIFfxyi z!V!-~TJw8ZIPRd= zVrdq_jp&X}Cfzqf7L)s0;idI{ki3@1dzfJ|Zn&V+9u>(8`knr13K6$zkTiFjDqv3a z0Q3*P>a8TzhZigw%8))0N`$X5W@Hdq&BnEW;OGd(R@ z%)9TaL-(NI*X3nbJ^Z`TSSIx9hoiT&1QA$B-dBIJnA+GNN)#BBI4^q<`mpi9w}bE+ zar8RWim5ZTu2(A-oHq!qEqs|;W=&M<)mdfe@FX8aU25NRvWz4&)&2GCXyr0YWnooVljQ!>~Q!pv~<=|{PRt(oDK{R1>RN?lEH$XW~#q3uzyJk-{=L$B@%W1`9!MtF;Thf83 zA=HGiLu?_2u1yv~_1x%%bbjJ@i(ibawVsfuy65H!9T&IwcLz9L26tc*MhiLQ8Jg&X zNK2B!(GFF2mEpQro|S3WTdGMy3swSVMbA829Cy*Q8UA!V`{d74M<$Z+1@@c)Aa~-e?K{N(u1NQmPeXf-W7mW1IIf&zV%D}4#n+(n@PoY& zlV;;`??nFah$pB8Q~doc(b&ZImxrh5&zuVFH;z!ZgPc%o6jmbJ9iM!f@^5 z)xyWTWe)93wik>OG_z z(qr<4hinF}Xb1HfIf`j$+qUdj3IYVcZ#4p$y?s8@@SAmD8> z5+~IyT*u{%BEnR=8XhDAElB}JPgk`M9Hk~$fSzIFY9b!9#QGpP$Z-}ClQ@$G4!-k~HA~tdcj@?7AI&4~7(DY=f=@$6lI_iXNIUb7 z394N9B@^bVsz1K+e#(@Wa^)h7b_@9dP;uY09^|M3D#gm`YHUFR-@9F+TFZAf^E2X- zL{#=Ov~eGLqz?O`3s!C}Hye$wcUFlFgfmM_)C1qAdPsPB6g8|7@_jKv3#ZFqbY!2B z-Psp*rb_5b!eT$}jVoQU(PtJY{xyu0?Q_llB6_&#leLnjo0IWVIk^Y+AKS23h@VmJ zUOS#yRd6)NjAx0h>&y=Pp#M&N34HWeM<)?RBS$8@q!aa4KMmY>2|AjCwB8d*nL$V` zzrg>9%p_7ZR^!bO5fribxwQ5oMqJKC>iW+`MJau1dOm{m=Z!1$uU4N%E;yNOV8O63 zsSh4ENsHYguWdG@oQ*YEU&lFyhO6H%)kNDsYyfyq&oJWKXl@#zB;Y5W+vM>j`JW0r z|Faw|xA*-QTVkv0c{7v_P?Ck2qBPXi>2`X#+t`%z1n*AGrGE4g1i9xlLYpd@!E}{S z;U*ayXpf`eF!ak|iY9oq^$U#6cb6}A@*G}^#0PE-^)nVzzwtIwKJ64EZDcJ$M2eT= z6G<~CwnX}BRJUkIg@TN#H&!jEw!7i)k_uLrgDakeP>93*wGSYg3QSEUilA$5!~0u{J(U2%Amg_shZ%~?$b?jH9x=&V zcDLa8ru~LeAWRKct(B$(>SJD*m2QQ})02sVP!J({K?=c%HS!gHm{TQSc% z)u^*#KY?$mh*DfOFyiB_t$^BQkco(4IZfq{kpqOAZukWaxPVKL+okv79@qe6GMNT|jGy?D|LtsmDvz8a{#gFVWX;U+of z-Z7oI4f4mV>CIX0sSUl&4h`ePXD@)xY`M-2f|8cd^U~doeZB-AE3emtmxcg6do zA5+}bF>mh|Khj z25uj9M-4#Bg2Y5cA24A1dwVoh&qY~2EPIQ>baYbluhp(DqXMu{&?m=D<6ZJ7tgiB4 zm^`HL5Y6IrX_)efH4gfe8=&@J2M@ z2n)R*o?X6q5IAWehmr*0rYYFF=&&yLlqhdDI>P@L98(OiOLI$6P5M`I{rSHqoIQ6e zCc=Jw5Innt#9uaZA}tPkwV5rG#%N0WRrOxnW9ApElb>{X1f{Hhe#@QNK$bOnUH?8)vdH?Wj<4$|HF4slhE zE5GqXbqoso4$|(xUpg-4&VRKLZdK=KOfnqRxB#0aIDaaIV z;`a#`JJ?1&z(u6rXhWjnMlk-B)RG1X!nTR)hi{V50rm64s=uNoK2t5KQ4D@pmKa2d z_95S8;3HhOYOkJ7exi)OQLRxk*(uFp*aafiPy<7lDowEtuU*VP%y5`wET(P?)K8e` z{Fc$9t{0D+?yI!e15ptQWtLj(v->0}5%G%j-h{>*ax%xwZK`Jw&b674Qir820aRzB zs5Fg)DM!TL7UXEdr!_V~EWK75_|J?Gxk{vX+ zPFA5;37x9G3`OQiT48DnX=l})5{_>}Ic3g5OaQ*j1gNYR;Hc9)A^Pa$u>Z|9B_*Ynu5_kW4&LSM{!a8?Y8QB_38icq zX=ikM-~5;UHrz5nZgT7u+Ah0=R_Go3UnkHHsZ-(1(-eu{o@aL3S1A;Je}U3@u}zS= z!r2&XoG0^kofQxj;^w<%aAq3e+sA*2-mVivr}C}I(WuyasDTgW5zOOZkQhX$4wCi) zOxp%Br=g9e=Im%P>uJeA6|FT1*N{LOQFq1$HBc`e{%W#we06mu+(W+n(9ICbg4zl( zOI}F%l%Iw&3~bXkFQlDe+p;uRS>GlrX4GAUkjw5b$CiWOrQA~3aMfirz*vDi8a`*a zJNq|i41;5d_$4zB5*3dY`zw9GB0=n0m!=Dyl z{KnRu78mw{pG1)r8lwaeRa`T}oRqlp7A?__6Wbss+@1H9g!;|XNggAO3$_NcO4IKI z40()%23RroJXKs`+(cH0?-7x&QE9S_QZkt4KmZXG0de^U5|xg&t`OfqSErD##P|Y6 z(dR!mrbi*vA-d)!;6a7^8J-}dspTu6P@JiVJ@RaMu(GhZ5O{(*8`u%0Vnt1l|8wTq zvWO7R!*Q~)k@H&5Vu>+{m{E6V=Y?sPeMWN+3&rb^JU<@beT$PI_ivm-f?X74pYHbF z=5+=s%6+-i>5?e!G#x#kp-@J9Wo^)oR_>p(JJpPe@?1l%QgrMr?Npqo1altHFS^_t zxH2&{(`snOr!sS?eS7dSy-a|aGyq%~_|Pn5VxZKwe=kp#{sJz7aJqNtp{na?xskm> zv$0s`3}B{1{r%Y~+Lo5Z((U2UdFzHLk-y^_Dx$%Ls9bKdH9@>TE-@h}1MY2cG{~G( z>cvc(5_>;gJ@B4n@aHV|zl|03+l$sW==x}0(?gUPF)T$(5WQB?(=jzT46~&r8Kh(o z+S;^vq-wk6s*KS=ysj@YR4h{~8`4sPmYeF&g^nExV0%6vx z%{{}M0c?Lq`wMrMV{xM3Cz%rOF(G?5oqRsPhtIj(sW{xFJ-5S)-jk}3l@YMqjew(o zO@P4^k06Y}0VO{@rTm;1=ar2!k-^PW$r5}s5yA(FK!qFR?9KbUZP_K-lAPQX$x83$ zdwk&XdaeF0iPuLDZi7X9o@Umhv$hu3q3LIlN>yns6`pYh-)E5aEit7b#>;#4yY0^l z3=9zEE4!ELA)@i}_lY}z;&BjRF5id4VAq!$9x z$A`aB98ex%Utao(b};cFP3_$AF+K?{kb?q?KV)cm5a(QbtFSkFL59XJN1kjM(kv_# z(%i=F=4qKoOh8CFy%NZmj7U^D8zDy>g&xt=S~m1-ZeGGcl~(X6f+PgR`T61R)bN)t zkN3_`w}Y{i&ugB4&O@8exv%zCT|yo+l1|Qd0YOgvcAnH+^Wn3Yk|4(Y^Iquu z^QNgpeh>-!liT*Ygf@YuAAI#tKN@1wiT(Hd@oR^t#gxyfpLl=`lc4W3zxaI(pQ^lW zRK(FB5;F2L=wT}>`yJyVEy7Vkf`Slkf0YBhl^B@z;6v6a^svbutOp8b7lvkwTd+(V zx9(RcWH;0|tFDxM6xIbWMT=-yd(4<{a5lPX;f@I;Dq?^hveas5*3c?VMAFhR_xpo2 zz7)U>@?eDkH;@R`CW;Lu>$`OM+zd6HCd*GUM5vlt_2;Ue z;~?(({22nb^K4Bsi8Rd@u%9s{{;lWi6j5!n3wSVqIp{2>pm)}41H?Ib9Tub(Tjzm$ z-#(y7Ay;ij!1d31moLbs&Fi=#J%$VDXm3AiNW2fL7}j@PO-@cm46+{+^m!1Ndz6uE zRQn2F&hpCa1DRcw1Dyh~&c{_7L3?|9@l2-D_tUiK>o*{WGWGhM zWZpw+N=olbl&jv-vNAG6*k^Kn+Z6!g*)6}hz5|g-;0CmOsl38xv)W2fDPbyaZxTp^ zZThg2sM6dsYp_KMvmAHhLu$b*i%w=v6xa}=@0t}QPKKheh!nl4yRfE~2zr}4bIjYO z#j{iv_99J_`2Bfq7|(AnV$0)G>7C91EOrIh5hjFwK!>DaMc=Qmser=B3C90Nv*#_> z-^(}qFX;Xx3{=xJ)qu1`GCrH^R2)j_lHVOS25c@kE=p4qA(F>{LO%LggcZ{*Xn54R z=5fq^dz6NVhv9dOf{$8B7E`eR{%UAaxf^!Wj~V|kB%keQ{GvXT!d~r zxW5-Z)EDjF^Cmb08s8CCj~_0<(I@}=wt%y)T;K0OPoF_X`p5g)VLUjS8j6U>f{FZq z^FI1VaAedK5$>sd_z)J9QLG%SaaO5c5m!X8wDeu!C?tkv9WG8Lze+S-OdR+i5c=OJn#&IzUU#p4LvwR;H=bf5 z^e<6(gGnsb&blQ!V88qR0AJMh>wb`o&MZRn3lj<65&BKkb3P22ix>r6=G`k3^uW+a zB2F62S>S*p{-G{UJgV57jC~^U15plX!0&AX&c@#D7ujBSxK5$OA(|K2+T0U8&JzMo z?OzpGhAfERr)iyM_VxGuh#czk@0pn1gf4}^{fc?UGXDWYZk?4JRt68=-!9BJ|7$Ip5}Zi(ByIWt+#EN*fCaf0`_YEvc$!i#9FXs(}-}3RX)a9T@(6 ze!&|rH~u2EiYV@s{MiH-=-W1=ChB@mZY1c$yEeo%5dnke=@zZrB*GO=7SeVT-#m{t z3>{~uty=>DT!`sT2k{xgt{id@G3BkAoq^s|ii$$m$2J#CYA9${ZO|a6v@%h*;EEN5 zNV()FaVEgc%|1ANK>rW&ocJ!POJ^P#LQA&+ZnmMy*njW)X);;tB{7Lv#s?sAZO}Ny zmkyNN7{g}*I?XD>Y$m9UL^hPVgE6L2m>9LvLQw$AMh4|euxe`;=A z=+iqY$!h2~HbASJ5QJUJdfhy;z;3!6}%<_tE_{RPq3(yOx;$ zmVN&Npb&3r{sV3bl@ao5wO%E_`A37ia>t}0pyJO7rN|v3yA}hA=OAXE6+tf`!ct6O zb8s;7un7CH$gM(36SWP3((G)#xwnnS-Rhf;NB7@YR+eNbr~ID z;+}hC=OM;fnr$pCevD;@lY=@6*_ zHlblB_>J8YFV`>lr%h)?Wx17zf1;u+Pv-*o68VC~XlURha+Q_)y>O4Lsw!FDuR7up zG*{ne^4n2}I$jlL_~-#M$<6OomG2@}%a->KpoXFO0=ViEZWe6*b_?yfJ35g`ZA*QjDea@r;M_x*>d*PdjKO~BvGJ!kKA6aK8?B-#+FkVx=RZKV) z?4?w>7DroLzC~esu+L@+7;h&s`2T>h#9-)&5bl)NvlsZexe16yyfu<3F~r9RF;UNh zplFF7sh56o=-0Pdt}mgu0_!%`4VaMca4DtyzbKG2(2gXr5RggP7Q^r$szrDK;eI;@ zhzRsl_-QtD-G#GTHVpD=yo|1CR~HHYGF19!DTYUar;AD>_LP-x24ytpCE#0RIJJ17xDG$$^24~R!X zu{>U)nifbIlMkv@JLjtvLe^d{#!+cmNxJv-_5zL3z7l&IInP-)JeD}wm7Iw%f-JKD z^W3MRdz^7Y$ye?drrT>#EP`YbwtUEz-zem4A=W#t@DTb9TtgjX-vGPd_jb4E#?b%n zvp27Q&>m-;ypuv!V#lbIQ#1T+bSX{4C7jtaGr)$G0+;m3tVN+-b6m)c>=(pxhrc20 z@pNmS)yBm=X6EQ>tUve}msxW%QI`xM&|(t!rw&m&LE4JeNAJ0?^{FYW0SC3nR0Bac z+KLb?fe=~$08kV0o&@-cxc1xkQ4=;8HbkEy+e#lrzY#%7!12D_3@uhxt%^L7wQ<9y zi&nKN)wDqtoT@VlFoL}5fOfNT)hS|2XfaXgdF+}erwlBW5+Xt|*if|3BPIJco;=vY zudQ5xXy8MOAd;4)X^R!nHQ(|)QnqFYKg4xN_2y|k>3h1CHvI`=Z?P)Y4XRoN0+tr? z*Ez_;#U?!^9-axIIt*fL;Cp|_xNXn&xbD9HlCB5~1>1Ahw14E8nw9kv0670s^PL;? z3S8F=QFv|!6Gc&mi&4?Q5rpBqoW|ykz%!AKIYPi}J7~~raV&8Cvxb6PB-`r(BO8sp zLs6{8@2;?JZFzqiMvH;emi=$}7M1MR0n% z<3Ft4aYxR>rh60FRx5f-w)Y1}Vv&-O;agTLsj08W_r$f#+jI%Tl`hET#h>#{B~4BO zT|m5uzTeU8h4F%+XD+{in4Td4n%7wt+IqBd%?g>3y^+g+BK6GWUn9RBxDYI|2P50} z3qLxEH>WT@%l%r0xl7jvE1DKo8d6?<*Jrejp7a%R$|1Tk|(aS^+fene3~^4XB{dW*i>pP%$d<114=|Ff=2?{y|kELo}M-r)8J@E}S6Jf}$p#q%^wBm`d3e)chPV?rK zlxK@l)HU_3u^vl##FV*FfU{N%Nd(DfK9r*&8ckT+)?feLOB1Lej=rM5@csP{4kJ@$ z#g#LUK>tSNW)j1tPoKyjtww+PEn+0Dr|7lt&Ii%=yre#i$*B}7;{<5G>lSB&l9`v$ zF%c=u{O8}hdY>K>6Jw7Za1)tIwAx{r7l4nCA4SIh!d9%Xp%t89mg}J#{obd`gHt$< zkB>FnR!1q>YRq9gy|m~psvuWD79j(ZX44&hWB*7_LGU6PTKuy+ay3A{B=^PCjSUC% z(qp1#!c;JolrK%6_+z|Y4_G}FZurtB#!A}6g&~gk^7G7=HjhF~H@NTQQhs4VPLH`) z*VmtqjSW@~kIuV@ue4uZ7o-{lP`2-G-^R!(C8Kja^NbmH&}YqlE>@ z%)u=O;fH7KWBO&#a@8@d6Z^FiWq zJU&{A?E_DIuqX6gN)7irnp)2hkDro&=Hmqxxxm@1h6?Yji>4-i!r$?)yk$m2frOb} zHwV+(AjFn$rq>LS+~mJ69fZTuFsp(wh8k&E-q+fCh_IN%%F@!_NrZf|XieLQcMUH| zH^7@vwuPq}dSiHHkh~BYls2L?@-hmLMhixSq(Eun?Xg19 zfkUg=h;GiaG~0(pK)yycjs)NkbSX)rtSD*M=VAu5@w*U8tDnn-qkA|HTj3JHdbjq& zR&x=?dj<50DPCZ}2xdCM;eQ?hd8>_}pVg@@=xnzpV`(=AA$PB--Iv+T_6M0?$qSZ1 zY%kf;PSc&wJ)~hwQ}QZNSG$E*au#mOVeUEf2!l6T1O~%aKBJ(ZcpDgYDnZSHzy2A2 zEC?0Po&qZ?Q^wPZpN5tN4Uzn{S91(@Z7PlSYtdYLFAqS<3cfm%l9JjmMu1(qS>pc% zf2ihsvCcvzufy6z6!Rb+E-b4I9&kK5FZK5$JYK2a3*IqkAEW~gK37B(ah&OyTCs{g z2Z7l4)*~)Z7pW;lH#*jXX84|VX1n}DO@M(Fi$ITwn&+O<_QJu3D;oX1G0rZfSZK_W zyo$=uv@na4k^b+aqX;t8S=2p0q9w%t5JVwlTz-E3+g)FPc@C@gLuK00ab|{-?hlKy zjBCSawTRz*e-exPYKS2oO~VIq9k@qm6~ytP^y%pB9q3inEfB4Xr22&`1$snDwgfIV z_!I*?0yN7Mr~r3g!4g~A7syV79)3ALfVVZR8-Q6Kp)CAS97%ZZmQPZbB19lc^ z4NNNbM-Uli3i@Oc4t{$-t5H;n^Qwx;g3;sm*(4@ zV`GzNd!U$vkMfR|9&0H>ST(ceGA-HHBXuQV97#4uu5Q_Mj1(TP#SPTIvg&9ma@v7Q zqezC5Iw4VL?K$_O_@n-RLBGlXaD|AY<1NQjokuOWkB|IoZrk8uC>lb^+yMI4O@!F- ze0yY4m?1=zLI5^2Gz3Dm5pi(rLnJPIN*8ecgPIj+>|ueG0PLiugHR}}81{SCJWGW9 z0PP0$P&siBl8-cmin9mkt(qYcj6a1D1aKNbw(d{vNNa1vFy<=i##-oy_%yn_@D_F^Si7L~jcu{9v*TCdU=e(x zfyvPy5k^PoB%A_9!j1e2%(#MSGG`9 zSdPs+{0WHj%LeF;BUWp(ib`tK>ccCQajrgR&2z-?g|hg3CoOggkR37jeg@aQf$$8Z zJB}DZfBpe1w$W}q=D_p?%tL>8G?v!>R*G5{Ta<+l zzvKZ_Hs-)%puOWDb6PZYN?I1IwqrR!{M27q}va!EzM!Dfh8(hEDihVA)aULvnU8*(H z{ALe;lyGhz+vyqtiO=Q#Az%j41}~5R^5vl6pCnMM)eU8+ML&!!e48ImYrl{DL@EgxP|arg|11DMX%cF%cam_B^@@&2z715qdRt`UDr03E zJXjw*Q@1z!LLsdnFeOZlumuJy!xZ4V!DP5YOD|x;-AJrMrQwqEYQEryP=0&O$go8J z?=J5pYoKlgFU^B5uxDF34IAu_W($~&;+M+%$Jryj;6p_<_ra^V4CQ>?2$h>OAsC>s z^mj>K0ZL>{!LVC7qL(kdFAt{M{&Z$w!6b--WT*mv0unP^n>OryVezGV%I+mq3shB# z;YX{xEHNYiD%Sxo6u8;+DLB8{VPpFH+CUuw0y1v6YY$T&Poya>I{dOS=Y@_46->uq ziI&|Pir)$Ce&8CmGb@=9+<19%!k{tv>_o>YrYkjvl|w z;2V8K0Y;aCDW4%I=5X(#(6J4$cHq66UygWXk5#SZcWfd20*N@SJ5Fdm9n_>zuaxTK zNNQjLnTky)9PNG^J8TImDSaOWJ#uAQESMD5ARDQ>cYQ;|51rUvFaIGTBeu5SN-bh1 z4}W^?K5)*1|M8q108@oulek$~(fzA;clS)>u(2^xsr3|KF~Meh1OFMWLCfowAj!;i zyK{RRr&Q1zdI<<3z+i{y40!n^qnXT+K{^uZ@9lNP0>+w>62A5cnqgf2y`lG;c@9f6 zk6)4)KO+7;;k}cHj3ITi z5qZ6bj&gbhjUm{-|A70BNJQlT)#v&|JHKUTTQ`8)&Mn6o zLi}Rx$}Np=#;q*XhYZ9+2O+1R*K`*bHW^JriFo&m9XEyXjL`!3)hMeQ+!%V);#B5r z|Df5tqO7u9G;7^M6lT%CRe`jOEG=!bl;}bT0|-lK)H)IVnKWDb>E`A}*581WlhY#; z{uxYy@5X!X_J@yui9+A!);oq$-rP*=cz#n89uXk~=!tjy6*3J)bJqVQ&EsPr^+m%m zwN2;Zi>o5`tbDVnU9HRPlnwKMewJe{omK6k<4Rhcq5p1NLVsOv_|+&|dS>8)>NUR# z9q#YVdLqG2=!9%(0Kie%ojsMeM|sODhNWUY8~|V@1K_P3&1G z@e$Ju-PW1a+Y{DD_&VGL?OC`Busm=npKH?cs^O+DuCc8{bOx$0@qXXl_kbQA% zw(b)KU?}R4Uyxfa)zUvxOHtM6AFg*jgX0ghKx}abPVAA85LE@;)3%8d=#bt=Ml$%w{-My*WZ# z`e-Wezsd1jqoZ0b4ITs2@Iyc6dob9}Sf2bk0)5+lAH$b~9=K4Ih;u}YpzDH5m zqNCwc_D)e($y7ZnO6ebiFiL9nch8hB5EbjunFXG2x3NkGEdO3ysFG*b*U!=r{5KJ; zSx7uYAyP)3oH#}lsL30`KrNj{n}l9%neDc5yif%s4*Njlgd3|cO8muYeg(qB ziIik;xv$Y zqm(~TA10-zN8Y|)BE+oSAM0jF_e-K?2al0$QVc0Hb9*ROl6uR%8buN$%9oN*`Q_yH z*21(Si$CBjs;c`5siwRV2fh9y76q1Es-8_zn0NbBPDU&rW9mxA)o!`c0e zG!0TUn%x2Zr5*sM)GUf4dO<1n&OWi!F^!t>8qs{vK_jTq!ra^KUQeTA#*R`^Q1Ewa z(ibiTD#se85U6uGF(&AzY!<6~-d&DhBV*Z{rN8zTLKe@{mqWV*GiU%%ifR==iWsL) z`+nvuTtT7M?b~#YWGJXmX>zbV<2U2yK%OlqpQ{<)X5>yfK2ugpReM#@m_V{~fh=*G zrbGTMrHdY!Mw%ORshhrgl?x%$d0-ZO>+ky?24`oR62us2@G7e@BIOfm8VPDb{Zh;HR+Q{b95eg`+GU@s>j0k!ry=X_y^p96F;Oj~>wljQiS+grchj_ii0cE14wAb$Da+*62#`lW<~Hk~;; z(_I<&Tci?bs@=fN6nx}Msx1~(QecNW>;BMZicV}Pgn*93My8}Y{5nuxkO7{T#YpRY zBe~)P>0Om)+#?dmpQC+1u8Hz#jMkT0K{DWyTkxVYYW%nn)X~^V2Y=XXfUC0}GSk9HsferoL7CNTD=5)^(z`;# z!2Z|~8>nYhv1i#i;0}vIiGL0)^-PG5yYH5P4{OtJvegIar-$)@Sg7QNGe3U@#}~8W z`weS~p!89FQv=iy4j~Z~M^8_WkV6kev^nznph1&*_(c$lH1?N;eTpL3i!_JC_|D?}*=B zYwn!zZftJ{e!24Z$LDlWB{%#Zn$9{bs_zT;XNGW)4(aX^0qO4UkVZs6x=X1cr5i!I zQ>6KVNH+*dNQsmnjf9lc-TdyoeURKY!gYkX4XeY5gp& zQFLSso<}B*IBgBW*3N9Lsmh~Ir(w=585 zdY3_hcVO0BmUdXc@lZkcBR05-WC;Q-YG8rRq^x$FyBBN#m~jX zts|d}k+dj6mYK+MiC_z;rJI%;8Ssp<-d;MG+t!48{1a9|!oLHn^U zu;~K|z>p*ag`tUwsNdNh=#`NWkFW(quRhDYRfvF+T=aKQW9>a7A3H*yF4_iP$2=By zm|nWwnntW?H1>i)*NpkK4C~b`N=*)p#4jijKWhlyy|Nyd4|~QW6)J~UXZya zb7ll`wM^iEgP)j~h_vjbKQeR^N_H$u1_&HAXj>u0l|XmIpq=YO+~@~A6RUKXq5zp(zdhI0KoU29`L zz{#-Rr01v5nElEhtNa(d67xKd4y81fUS6$*=Xt$fvpnT&z?N!N00|`rp07Wd@Qakm z8b|*u5{#aiW93ar_uuuR;Ln$Eby&F{y0@?h#ttpr1FPV8N*Dz=0Uv-RDZN;y6KM-q z(m=%>#1MHHMkgY}jgHmVj?K#%M=frA{}Di3ILPz34}IGj79K|Y3j4~Mqb2z#YrTHr zM-PDPEd7bdO<-LVxY!}eX>-LQBO*F)Nv86t}D*n7no(Iu}F(HSKPiO>2_5*Y2|+#DN_ z_MR#LKEoTxAIalbB?*V(!-aORES_rNN`@u?U)$av@G@HT#;~Msn~a!T7b>8n8bl94 z?lMQNFi9yG?WdXO_x#SeV-0YQzGePNBzXP4-~rn$&YjW{HYekj+uY2c3E2xs;nA>d z340cH*DQwnf&tlcw1c;SshE!YW8;rfpj7Wb9p{bmc20g|>=mF}3&?FTS$t8G&2J^o zKB7oeTJDyenV?i(l`wrPNx}6{6Cx+Z-+@Mkfy~NS=8nIYq={j=;Mxs6Vco8s_I70Zz=N zZC`+ET8=s7T2;wqWV{iSMu;!rZy$-W!H7V%^wSKQGL0O9Z|RLOD-fhqf(FCP$P6A{ zJ)&Er&+S)6x7XNkrDcOSc-mH&;thlu6yK?>9n_XS3tLPIcFE$HsH8ADt~pE_#OFsN zg@S%>EY~#7*(Fyf0Fa6hX}FnZnkg9^K>`^q<}frY#P2POYm z7`a@;zuy}pm03YQly=1XB~V)_pzV!~^7_)J9;#oy;E+9eNOyZ%{0K_S5NIgWscqa- zd>dlqK*b~nO>{NbjL|=$<>&WWY;mJBQ>6A?ft42|`}T0d!*j0q9cH)*Dz@V(D-a10 zT;t)HigN569IF#yG7m~hEPb6@Qpb|r7E5c~=f7y9#PdMr$>@#f%JDBC*TT6Bqu;h6 zEk6axI5%}$v{N|f&I~U5qgBcYJ%7paBWWdDcMIVWK_6-_;^R!TwTz^myL}oW_hh{4 zyqt}@eA6yu82P2-$x-2}iaRvcxzM+A1G+BsDD*?4f~P+X_8ekNA{%dF^hLY;uowTHhMGLNFbgI#-SRq%1_KD@9dE+P2PD5Fy^G>U*PTf7u#f z){1H0G=K2(`a$%qdl@HTNcprn`|z3L>h?fVR=K(!V}&odn=k`%$6~tU)YWKpw-x6r z6XQTI*|(2oqQWmt6a|3t+jszREdaT#MFsU9Y9$)H?E2yVWcc6NC79>Jf+X?GfltBwADVrVKUdHtXcpqf7uF5%4 z6RiofE46+r^+!Co2D{H_I@*p^H`Nx{Qr1=9r5bB%vd<36^~(yU9Pzo9CCD7OUFdS8`3kPG+E^~ZnK+yd{`oA z@pWsgP@^T3x=Ca`9?R1ycfQHR<)dprtOoaca%h*AcUjak)p;&i_oGIDJQ>WtvbYi1 z?G=6VCwv{@0OzL1qoll7M+0BVr;~0=H)#gu(ukT9fm{jsiWOjpD0|V@C#QL(@?GNT zQ$nabW3@9BT`(LGd?#4eKn!FBTswlKpqr+MjEwxTyLtc>dM zLCY7tCttbJ8ZfKAyZ=KrpjY}1bQC@C3Yn&o{fUm8uy5Z#uNKx{|NdCatlFIq8c%&E zUTZD-pE{`~9e#;;^z%M64~`te=T=02%7doHLJn`GDLJ z^#Oz2+>QC(<1xkm>hM-cVT+vfk@5sgXX-e(dz2(2s>f96eREmo5!}${Z%4+jveSQJ z$;+G7YalRQJTcx&jtRrAuc~xjZh17ZPcWjD*R+QP>E*P%I-%kHnxjXfsQE`Ly>lst zWAWvmN`<(@f}tsVyM6sADRA;F$SG1I{kgTm7vdW#d3T*68dF@%s3#a&q;1P8SQ6Hj z*o5IcUmxz`$QN0(!@U>`mO0(5B->df+=nv{aH)yj7FB;3a=#_Td=f7#)&32Fj%QCW zQRZH^nxc9QQ}jTGGJ_5|8-BqZoNdtuwa?D!AiTM>l&kS>h65=&V~Tk)=x#n}%OWt? z_E&oJ#ER7dV#N%LPP9^OgyXwh74k_m3T-*j@bB#b9esU}xs(AW)Vj64_eM!v{{`LM z67{uCp-v}=9V4FCD3P_Y#Yvr{zoVM+`Q#|p=dN=N6bs*{ z&V%aVZ%(3Q+-oo#4$w@Z4pBVJtHLvJt{igyqC&kisd80B+6;R*H$FI2CCx>P_`ORC z=IC9`qw`M_N*BU)kI=R;pv6;-^oKso&)md1q78_)zkwYTB*;8Zu4iRsCFQr*^A=DZ zy9B7G42nWLtvn+J+O%mj>TK>4IZyBe$WJl4J>Y$>_5=v9!RfbxA(ZSU2sziP<7`xx zrT8WX6Az+XWTc;?;c@m4>_ea&9vuO__L+T~7Q2#1z3!jrW1}QTy%o6U@;gbD%gfjG zQNI`%P#|YXT*vv~y}Vf23;DMwFN}!J#@#WZTqfJ8SNa487 zJG#+wwtqNkDt)6lNxU)ktI7QCY0ME}Esmvs(aAO*eLZ+L`X(g_b~td`YqS;-qui7{ z=j67T+~BX;HqbBk;PtP8G!LbwGN~0HJd^L@Vk1KQXx}c)TEUm=v+hE|Tpxt!;^7Cx zTY=1_mug{BQ+q!T8rAckm(-iv-1$@bXbb}!^uf;O{v@}c)#K+swG6<5Sw$U&EEHF+yTsE`x& zkGcmKE`6&TVKJOoP|J;2eZYT<1dPJcaYy)e*cPGvJp}Um*nz&WQ=4NywVg<~D5qgf zL!y7b2Hj36Y-1yyGh_?UYL;ZbnzF20e7%{Yge^zMSokr?m*`O&Yh+t-ROY=#QGS@) z{9UfPfwRWX)#REJ^z9OKj!x{&QuA#%YM38m7*hng(A$NZvNd1W{kYA6K410{?M+Po zP3uV`Q-%F{1$XhjCUN=@-I6{rde_?1&9lvol%B^lYr%nm?F4Jv>%xi8k(GoY+bIex znD10}S!qyfLvMk4xHlzCuNZXXy4Ax|s9XF|S>&81E`P8cI zA{zowHaYbDV#G1#|r*UJMJqT_?YyRsSbXUY!wI-A-4 zqy3L6{lYKiyW$cB7IgNPTI;c4Gs$kR`KHF7FkenLnz1HDTs5FP4)#!q6tcsC-P{;8-A zxG8Gtd*t0b`kHLnM@4$2M3k`}@3{Emi+B?AJ{__T9csQ?J}uo3;>9X*m7`TU0j*1qGjnt{@&ujd-@Z^@&~!PHg{ zPq4FI_A-rL>XopE5-QhZy+uO(&ygDf%Lu3JX>mKcJ85)z3*)#XbTiv$O^` zKm>%WH=?gSN$m&q?+T{gGv?0&d8+aE>`C$o$o3t#R*gpIb^&5BNxUO@`9-w+iKF_Nn_Yl<-O*PmEBdJlG`AcM8Y^C~Ee585E0+}f-*tL`@TI^|w zSt@qdSMe}K+0|zt9$fWup2VmSWbLKssh4nJDDvLtspFj@D*9REIsLCJXX4M%_rBoQ zzq4GDaprCLCeeCkk|-sP04seB60fd6Ij{+Smf^PgQ&5$H)pr!xQ2JzI9# z1Ne@EQs~_Y+st*0vw-*HhY`ni({6GF$Fe^g=#Xp6C!YUY>qB1`W<%NOb96sCe7Cp` zqX%PhlO$p?SChTIh6&BMTXVf0s*o<3|IB<7qDP=?2N7+Zc3Rsg^SdiwG$+Jc-u)9! z@_+u(6*m|bM{r$Ij=gRrw7?)wdkB&>df#U0O-DyRbPRlnnVlMw;|oB;^Zg%hw+yFo zo0n6E`$4_=0*6i%FGnmXDQT#u(RH;a65%Y8tvFf8{I~W+uetw`{9GWHXy*CNUVWS> z_KNNJ#D4|4j^(0i`il`S#a9^6^eLwrM0ysVX@BWY_LO^$bAELH3AB^jv94mdj1xQw861=xcpZ z#YN>9VPhi%cB4?Gx-P1T;c?RUalb=9oOar8d3=FoQc{yreHlYpnm@F@{@_w{DCG-3x~Ska(tH$? z#69uG{Ki~rFDZ~MykE@bI~}%;pxs;362IDgca3Kyq_0d*-?Em#YDL70I;3_wWbL8+ z+=VF1)n&D_YiK7|)X7r=54nkT7F*}ATa0~G1T>3`y#<(I)xh!c#fsMnFoD(`6q$Xs ze?9)mYd1e%R@Hkc_J}P6hDUG+Y+El>JOv^xolwxRe1WO87GHjMT}FaqgMJ$S#n4pN zE7caNO3$-@`$5PAUPL=Vt2G883l?->mCHrZ-}Fil%D0i4&!=cH=!c;wAX^2*Q*bm{ zQkkAYU!LvWeulFoR~&1*j3CY%tT%wMSVUG{%^!W`sGfiJ?R=<62>vRmr^KMfyx2Bd z?6o_fM?fx9v8g?w;XF-3KjnE*Rt&Xyc4()G`zb!Q_2Vl*G%pYD>?j^# zEQ`8iz@1_}5pweK1yZE$+u!OS>#%bAS7LUwjscfokH8Hg^)31Jq3Bk(;^1B@@>SyM z0|N9qh=g_UgE-+e=tf;os8dv`ZWA`O!;Br*_ML-}do15~4alCBD!)ZeD*fxi-^INy zbc6bJ!K$3SB6_lZ5L8 zSGgpC8;qtH>^5-$mV3lSdfeNj_z2M#J*YnPa>CKU4Dp~K4+8HVm8kc+(z~Q-mOTIC z1&10Q0=F_hOG|o{&aq5>4o11meWwh6fWr9hhuD@%K5JoU6?Jm2QZu^NfxKokppVEU z(IgY*Z__fUaJ)}B*G)<*dOmdDbI^*m1omqD-u+Za|HhAj8~C( zHDaocTF8|)9$x#0E3XK7uXlZi@iWmuH{xMO&|M$~N|B(`0_uU%Bm1eetg{p4y9Ai~ z;_U^!jDm*n7778l}35>|IW37QMrzi z$)L+O&hoR?{4p9~+vKWScPJg4ERZ;BKuWenp|}ncT&b`VZ~;4+^}v?q-)!ft{tp&8 zN^a2PmjqtH;C2pevaSHuy71$W%^>kVK}X0CekMx)JfDa>I{c^D^+I;CyZHy)Lk|9u z5~xy~&GZ+te<;;b_z&N%-hLh1S>}yb-pGpc3XY>$q>t*)B>`A9ZuEey7n6C0PYP;aq%K}Ew}%6JMV7&cASn~I&aP@%5sxY>p*!$CG3u> z4dYeD``bsTN$b%mq}7Fq=#V-@6rP>B^JYIkqo%I?+ZX+`CqdkSP%>jwy>+_z&H?4e z(_j<&{Fh)KFr3m2VAWlmMpvwKIGYtu#V)7xJobqy@=DK7G3B;SH6&g%a8(4CMcIyD#*jV7uT@c^~)Mf}5Lmfx9r1oYf?lf~dAh&6_63)h6YXK4_BEiRU5 zB_4(M?npkm#L1 zNKY#>LGEdvQnLqEf%d3QR*{K6r|vUu1=GfZ9r=}eJqUP9D+V91TmYLw9S=7-8jO&{ z3`B40XGd;&`h(U@>WfVwg0!of;^JZ;Nzm^ZvWVRpJYl*?r+yxw;cJ}i!Sqijv9lW@2b_~C zHjuB$q_SKSLvxOGW%jxF00HdF^?zNhjtjaj3MCJU>4{3yFsdp+i#5 zx5|q;%hNO!YX^;SIMUJX}(3L9pQ0A=XrI}_(s`7!()P&9FweVU%o z#XkUzK#I0MU_}l};?_g;jyJTjwq8~0o6s%1at#T&30+sx`HnTvGLy@3(5W`04Gj`W zX-nTyS(YfLsPHw!THW{uyg9@~QQ{!z#T=s8fi-mgRaS*reAlj0i^a_HJ0GIOc*tW1 zEdE|QX3*L}kYT;hdYub8pP0@5$B3>+sCdjV^-bV>#MF<%_W4iS9|^hAWOp|WN-q!m zM5I^&0^fTn8T5+h8(yF%)|YEi+TbQLIDwtSZmRS&FWTb)3ncVVN>3_xJQUH7@_LaT zS$9*@syp+3*Zdj_a_fOU2yZL#n!F-nzZ$xoe5EbC2%Gvr08_4K;d&2CB;7Il!MI;o zv}p9VXTj>3-aB4YeV-`}C~WoPsXGO%Z}b*~!ztnJc;nJxt20jlo04Xb8BdpUdAhyW z`ZPI=9ufih4K(_=tOarl_12?eTU|A5^^#zf!8%&LR(hkht)kZzwQ<0Nka=D45^XWM z^UR_6@@_h(<^ZF>%LU`czfvxi5VC?*j-wUt(43`9=*44hJo2P%D${$v)kmx*to$&| zkQb%v$GFdeJU%(ZX?>Zg7*-@#x1wL=HI3&=7z_+XPj_c^H^*mpPl5JS-iBJRgx)^l zx@>6l_4UR5Sb(t3Rl^&2RE$%66OW6F3%@)9UYaikwp)bCOp66I=TjxN|7(~}e=R1u#few8E`NdC%DYDX%atC2m> zm}pNSDggls&?oKReZ?8n3Yo=K?@Kso{PbNFtQrrNLZ!fdWh!UfXe%wU4l2v_QaM9* zHWHu6m&L5nv2PGZM@I*Zn{&Unw4-*(egYIbF?iw6sIX2?9U`d^2H@`NSu>v~HZ@>|;O*U$KQ|KQVg-%$$i1{khzl!Tc2{l49iCxcni&4f!0Swt1r4jZSU*y8~uv=I-1I zGE7UN)=HnWO6?hbVx74N1DwRpsJ8Q;axb(Xr>GK>kg+J*CwFzFf+x=S9`=o%x5rOR zGZEs8tv-l2X&O2f-y6@y`EtLUU+6<+Teh zUS~XDR3-8u1vq~!NuBsRtzMO+Whky&gi$J_yu}Kzqp+z7`Wz@ zf8@Iq&MEfs|4RD;A?rMxQmpKxN#aDe&mHVx=lmm4TgqR=F4p z>=)3@s(O1rM0;v8IKE|K2Uw&lflpwMUzjp6G9tE=rc0QWx86NA0Wo9BeLYn5R~{TSMsCMB zH|cQ(U`ScM*ZM2S>Rpr-WZ1Co?!Lvg;M_b|Me`7u z6-UKCYM~`bInlW6LLq;;IWaDSLsHwPb!kYTZ2P=@{OvRwb7sJe@GH8MvVGQBH<4Z* zQx4u6S>_=J%OOfw@qQkFUYim@HjvPRq2b{In{|nR4DtIi)Yy38K5;Sd$+?M2THtg^ z*bw$V@DKE=Y-{wU0;LW}f8L^*T;n&NB1vM*qh7#R{i<&G!XQPG{0}NgrYG%mI2mRz z+Ee&30ZIPE<4pd)CHTK`Q_-OT!2)#-9tAdj+{qNqcP)o0e2}MRE60f_6r=!Dp0@Bx3nRs1`}u!TqA+$ zSyb03KBipi&X+}<5iG|KH;=u-8Z}3URxE-fW+vnx%x6;`6aVX?;0>abM(ol`D4QwhT|*7+SKYoNk)FfbXpX_B<8-Wpw0a; z;O!c@b*ppBY6Qrte7MHRNB5|5v*Yr2*5@8?7R_8RX?#hXB)1i#R}1gKM${XPwkXzwp!y%4K$%|l zPD9E%j*c9TeKsS819#dSMEZ@ju4F;506Z3itW$2a*-+y%(F>h`8orKP`a=MaY2=7} zpEA#FmIO5Q4oYg8+sXBr9;CRB&u|6W0WWp4e|oV93zNAG#FGy1ORT{xuDhgFokLzT z;tKrNLr}Bas-##(r z74b;3Dmel#u!+|0Bt)dqR=(nh;vGNOekt6biy0@JjT0qYIrucapb9xYNV- zQt%3wCZ`|7X`yvbxLQo1r3}Dk6@0AgB4L?URS2*RlhZ8=-{A0evd{S?^D;#LW5qOe z4RY58-yaLARS@Qe!4X@Q+J52|-e|~vSa%MY-8g0G9u5h{kHz_q)nSVzf)MrA(A1^A z3@cR~vst(6%XTd~)3g`hgu-XP-w}Zc;r%Yn8>`*;x|03E)^y#b=w?SBS8zxx8x$Q;$MN z?)*Z|KSF+qR$-;{lpND@0)gOht?bGprie)ji0WlwjqXFII0R#J{WDL%VH`r2hkQkvzIZt9fAEOpShGcW+`TBglbj8iwi@p zoFj)N<^G1=KzP?$#0r7oquJh`l@fdouGHInAWD@jEByt=n-)}C$mJ;>!V{h`}F(A0$i^!no1ll z7Bcg`AEGoZZmhuNj4)$GVm|3jU8p5E>(qT5GvGpptlm7Mj+|C_dn3Y0OUuihm=n+N zkkjj8?&~e3a>>tGyp?bW{^A7+pVLAriL|08o)zHJs@lAci&(1zt?(>{7gwe^9Hw*Gc`|}RLbuDx)eeCS4 zcwB2-S!`9(Kgx%)Oa#(Hzwq)xZ~6wYT{1ZzXbFvcV@>^5N7_b9LbgLzmvu`SJgH=d z5R!rP>numWgX%5r^$5TOU2dnAWmUG|}on1#AnBDkW*Co+` z(W%FUqoxsMjH{`79P8{s$q0MHcXl=7Y}LNEwk)$fT~lwO;-mm#fL~2PL!&u%0Yt15 zj*xvK)x>|<61EZ-ZAE4L=c4@)j=A5C_N%hG%NAd&;^%tDVs8_a3G9dA27)T{P0rFXmIpvyLt6HwqX;f^ab%~4F>gF+(B;}+`59RfL%`v+B{&-liMKD_M z!dPgvli;=SYDqaj<(rAvtz1b*$t!J4iN)Z*#ahcfbDB>tlHx{uO8Qjuh}VCYu|`T7 zYF5y>L70LVvbh4>5=kP3;KyU=cuwMUXR{Y4Vw&?WdbbLkqptpJy^+PlczEO;gBy;S zSjOw;aV3N{09kZ=Kx5ZL?K{9S9jYbSKBkb~QCLkDT}Jo$&xNDvvqJq-DCFiQZ-*-& z0M)!fW2a-l9o}`Dvx%0ZpeWnLfcmlh3}~cg(I2EJ*5-?lIznS4Lq+rWGlqA)qOQ%v zGbF=I1_^eOcmJMIo~rsVwze_6mWvj(WG%-YBt%-)Swc|Fju~>!2Sr&EQbJ+tzy4>@ zyLM^*vwwXnIUTSXO4qLG8WYmeT=E8TC^{th^ym$u=1X3hk9b-$6Lsjg!I@)YH2uM( zpH2@tsbt{icND3fg=2m}&BX_nR&KA}UWEF1=1iM2=4DGsE{lrTq9b3W3{1!nKE}jT zD1Spj>urscf8^F0p_Im&z9=j}I{V4GjP#gPAOZDV5e)gI2G?hMYl7SAN5m z>z2Podr5lc`QBhf!k0YT1eA4iX7w6u#qYjA#lTp^q)j5c- zp78ufFxQX|XG(O4MKBEjt2ALZ`h8WhHBmG=I{FA6%iG8I=edi<{J7antyHJa1O6Z0 z4rNPGFBYRhEp!Z5B7YNvQR&9Yt7UQz%b;AAQ(At4VDw(#)q8-NoC_tgYZq4Eky!t} zdH&Q@Vp-uKUf%A!8FT-np#lk^nlI@X!JE8%GKlk}@-z(_jw^Ao0w%!nwJ`64#i+T^ z$w{4gEVKC#i-_r3(Y0OqfU)84-$p?mgjXB>6pBUbI6{HJUxR&5m@#M|>uF+r>g ze+n~=f?D)rF+R5-&brhecX**2CWFp@+Y&-&bYzj_!N3*7_iS&TehvbHK2iyPUm(yq zjht3r_P0&BJS27-Fx2JUE24W$4;SuB6QAOUdMQBRhL?z&j;Dc+9JVL)(Ax2aSsI`l z>f!tRPBKmd99_2)Xg)13eQa7eD5kP@g8r(iwR}|O-M&zc8q{KbTFsYrN*u#|`9kL{ z8Y*J9>U0t>kp&KDqaoleOc#Rf3V>qZ39zxTF--X2QZ>B(dF0I_T@A-h5SYdLVRTM_ zhtvNpUsPWb924!yABurth}&3>ADZ5Wqgo>;^t&zU^t5KwS@cWFJCilfx1!-))23k) z=@o`&-H_;2(;8PHnEUC1#w2;~e^mh=Srw4lM zzd!N){%rW^NkSGLe+gfAn#6Dn^9~Tiik<8 zM}zPlGBfv(Ke_Mei2d6tTAPFH?Cfe`_4RtW44-j6@6p6{23QOGMdrj?JnYSq-*0Ol z{o6hEGE`g$t^K3Xdg)P)*bcp+%p;%mM<^Bq=crw!fhbau%BFq=$>h+8IPBt8*%|&{ zG!6&NFvVGS5H5t+s&h6IBTx1xPf@68@L!$_xLrr7XO4=HqC%zi+p7am@b^~bqa)A` z23^;7*Ht*0oBm{Dwm24w)N#QJlDj(UIGuxoh@eojjnV|1vpZ1U&idW}c(j zgvt(fkCubgMf<|0kM^X|=~D51JuIeD&OL)VG+&M#4Pqo8NUnLoE$Zgwyx{foiA^&% zFW5g?i+Mbgn$&@cD~WzubqANkeWo%L6GABo9Twgw&+lqm_%FwYe(d#AG6^Pen8jsB zUDg$^oC%?_Y`y>-Xtz<97Bt0A_4c!fX5YVm4{`+O8|`${xm3ifijgG}>b-?`3(+3C z%jstt{z_d>+bMqiw`i;Uc>2-ySnzGfD(qIAP`1?yJK5XQ{nvOE4m4ohXxwVx>k3b= zZro*k?ePD-0J;QAlTy&51Bt$x)}{6{bu)PuSAwD@ghFgaedfmnJ&?c{FS<*$fKx4qQ;_B-^Q+aQ zmAjqwNS^AK3eAz!i;OZ;w`|NYzoeswUO>kfV)OX!#i*`ZmRz$8=2r%3?y1CW`yIr$=V` z0XTEMMSLb2?0K^t`{I-(n$UzWLljP#;uD>VC{Gk6Kc*Y{NRUbz#=*$thS0Z|aliP; zfZnz7t=K6a3k4!o-{xG_Q;9F-=0nQEVsRlgkXmDGF21S`P1z3nPd=9bTJOF%MZ7 zU>Fh+q%VhatLTp~`M|LAFP4|<+L7_}KH9M`S4B}qi)XQo{0&NP;9AzihGt!Dsz-HK{x|myoZoZn!=g$T|$m zgHSK=snsK!zuhDolfN6QHJ>4i)0D@;Me19_Y8 z6YQL|kMmfQ7}tFu+T<>8fo5L*S74#W@FZRpP4-TtGE1z~iO;BC?5uWjcy~~Esvir3 zqgJR%OePc3{Bk8M$BczgLZ zC|Wm03Xg!^iL=l%w3QqYDT zwmf?*zR#rWH)BMiyX97Gg33CA8Oet(HMjyNTCa&9gg%JhJ^Q(W(A$5(nYF%V8OXqA zo=Xo=tboVrv?O6n23=>J_6-1j#M89+_ucqj8D2!-N~Ys}r~NgCQg`VpisEY29rt8> z2L!U}!*x)QdTDEI8dCe2>%|HMBT9|sj3|(~lx#{$%U5D5X`P0&jVt0}R?(4R)XS!W zh_ZLOLFCV(lD7M!7#A2yXrXq0pfCe_B(x3y>h}UpnL3H9tYy`eYLb71vkIaa)ZMgDL%R?4+p6;W0#wqm%JsmZD4t&L2t$qtD|7_ef z?_6k-*06vvF6^z=n}u4^#Y$n=VO;D<%-!y&jp1?bhJSQ`wF3z`Tm!EKIJ^PfG$pOd z8#_v&MKEl!L67-4EM;{u)NBcX;~!fVE+VRluYwRWQuMu)RMwEB`|OGkQ|mg9U{d;5vWE;D(e`1$S+- z4m*n<{u60M#dGUA6SzRB&N}~`pzYFGWM+#HlC}VT?4X^FfrH~c88KUQKPVx4TKf5O zHiZMf< z#%)K~K-}G%^&SZ=Lg`LclSt3+^e*zdo4}#HGdzp-T z2r0HZU_2!wD?6{;T3ic^9Pf*v&CNE)iazw27`uN@k`h#}cG%p`)+IysTMpa-Lkx{ie`5_|L!z}=_fR1MpZGYpkd6=3m%1Ws_m?mhaJjO# zT$qw@cbAIMNV!~nciU-vD}DJT=?haUVEY1rd_NMw^H31jler$Qbd!;h@ecOs9(@Q; z_j)c?QgU-dBXhthBXUocN3odTPx^t)pKl zfD=1A#?ZqckHP*jb!sU`OSb7`#czU5fd?JhZcPjC-iU8M5L_0vF8&=Hs~b!U7!K)^`m}LdB`(c1Cl{0_6@I?{r{U;Rfb-g`|!^jbQLzpktT^~ znO@YRfP|-8TBa>}A>j-aN%xz1?(1_s+Q|2pK6}quuvVT#2vCH;65oeqbSjvOBmVAu zcL1vAIEt905%sbuI&6HEWHu6s-sAVb8BEeRI+*@@R@h#@^3in-e zJNdgl%bBlvHp5Cz7Zu(Hvia0-vo`M=;B1>I;AH#<8LwHTO;zYuUKD~&Xa23qWW{lZLKYPB{FbDE=~p=rSh}%YNLQIKB#{|Fl#Nqbis&krd9Lr z5ukwH0BR)lw3_dhPm$w7zL9!b<(&bJ)(RmB{V)d7{w36MeN+&GQmR{W5jaZ^s;>^D zfYO-ls;*kG^ctm$`=t&)EAGo+9tP{Kz)-mEGM1|&gygSJ-IB<$9~&(umMy9wM_p*N zL!r3GgV$oWfEU3h03d#`X%N~YZ6yu5BJYfq14Hr%sgC#`$MGpWXhVwaJdmj#{5fy> z0}=h`KR(|qR=o%M4Y(Dj%bUxoj()j!PTQ`_yv;=Xl4vJ9A~jpXdRUjAO{=w;^gPA8 zgC}lh@x#r;v&@>S3%bV!%1&yH4x5NZ+X>5i$&cTe=ThwK6rjQ5s6?A9E2BxI=|$!) z2G1n%-Qqq(;}1=}2S(C`givdcAX@LJJd=fQkUjp2S%dbqc!(ek!`OlILQr>=;-`w|U#KeYeBKrFJ?sK6*RuNz&XQ#ji z#UkTne5xCNU|+h=fz2VY&aV>}{~ukVLH~aLV`aQr^_m<=$g~0M=CXxBlC=6Iw>CYi zcT7My@PH^Mxy4XhnZ#i&wP6s~$lj~fYT!8FDf^i27!$ee%Ca3YfnrueF5HHM~Y(M7JeJ+7QQWD2$}*$4if-VL?e> zPjay>4%$69sBKOo*_H^LdvlpB8rLL14ws?@kmYbP6X<#53)xPmK3oD>uR?pK?mSK= z&W6{`2|M*~TPa&+kPL82GbCd)Ov{Ow);kT^_$*yV1DaG(QQD<*z2==s)X9apngUjS zyV9DcWqvH+05b_w+UGOUo^+l)+AB}Yu^r?uK97qOq+QwE6b!n(1_yiX?Cy8z>C0eb z;?7EFbA77XdrX#j_GJ8XRR-oDA*752-Iu4{4-e0o^q7_P+2WUla^{n@&AXFm`Pnd% zw|Q~4<=l7}&?Y{O&Z0%qV%y5gqm8hDG`7zJ0m5QppMfMDu&!H+tqrzF2D0*_!FlKU z2L04764t*J!hvHVE%WjYrF6(bv%0#vC!N>z2rXI;){!u?7S~l^>wy<+hQjG6&|8_H zZW3s_lH{!_+a-%CGywIXt7;*>{C;`j+81p%zKV)`%oF8N430yaAH)OR6t)zr>lK%^ z7u(l}p;$b3?$EP%J(51{Xf5paE35hpbhH3_OPyWp^$A@=$?xwLY%mJ+TSzsCa^YKc zew{W{0Yz*0+q*V{JO3aWNuuM!x3^UPKK`y4r1v=zp zc(ez34prZ4w;oR||M~w$4F(JHY>XZ5uU9M{b&Ihwy;n^En2LM2CaGbA4 zZwlg5RaSnz7R3VkbIcL44K*%OdEhWoqHa)db&YY-y)3>{!hhzDYVnQB{IelyRx|o0 zc#FM3pp@%F0$lF~?Yr-M>Q^MVu1y~7JcfU>cfRsruq>veSarvqhMe{qEA{8%;KPWjuldrU_ffw-XVRcm z9w!&ATc%O{;RB=D4eUl-a~5Its+%J-4`usvdBO#i&tjeT{=&C!T5b^$dc{h(Z!V9m z@#p5T^gqpOW+ga23QiyBQN>ew^7N40Zgj}PyjZNL$Q%V}#$=(bWI7(AoZ9d#-LhqB zMJiA_Jj&#giH}fyqjm z8`r-;Q&HQ%3!u53fN8}j}oDg8RU@V8G9Gd$E8v^g5Je`|x*8h3{)cjp9`p2_P z|5souqXY9U0n^WnbcVV0A9+1E{0;NGSYu#aHku}!??AsfSCoY@j`&kBkpu!=D-%g7YTW9fQXR=aB@b^bMJh8wASzNe`q=jhN#*$TJNE| zyBp~)=`QK+Mnbx!hDN#skyN^*yFrjvI;6Wpy3c;UbIw1Q*|X<)?pW(uKUxvUTD5*q z+l`OTjQjSaBrD07(H=D-6=pEM!byyC0hLUn(nQ8M#z9Q~n-YjRogYQ8sWp4itTZ4z9~9pjRaU@+{Z7SQo?t z2TMf-o+-46)J1x+zGsVnj|pZaQ|I|5ojFx+M!=J zz#T%MVSPop_ud=nVD%J8&0#d#Mpf$baD&Wci?9a}&v`eo;MkJz1VYvI@{m;IFW_ zE}4x8VjC;emz{j5Ab=#WORzOinXit9%hH!7N6Y|JE6O|ZHhiK*Zz^KA0CNo+=8;## zSm+D@j=G46LZKO~27R}vurA+0kN$tL#eeL5HEb_n%9A0CfDR917U-8!ri)KF#8!Cs zF5Kq@JVM_rDeR4BA$o&<{IN;fnS;Gf^QEg!a}+~)bVvpgQB{-j=K#x!KA0yQ=>fLr zi`RZFH*#Q(2&x{uVUPSuX^yA|zSgk0@0#_p)%0WzH3x_Q)G1XSm1w*iMLo7yRP{2+ z^)<`=eQ->@oFO-C(?r|95RbxUDM zKt5>y^j{A_lu7jgg?%6tzp*AdK)_X zP8E;PV-HXj1^TYw5$O^I^(V;7KE8@MrvKyD6(K2})5k!{)|12r)=N!c^VK;#V4)uQ z`AB9l@Fjx6{8~emX#bgCu9Up>^iZC%r|9^MtU|+bxP5MF)Jt2{Oa@UW&_F`P8Mw|w zMM23%?}>j836#HcEmyG<@-IE?^k*e*xSwAkN}ZG8Lh5+F`3q9SZnhd=OfcGOYFt6? z2#6H(T&ydG1O$0fihp3Sc}{N~R(0InLCR((XxY)GY$gCjmx1bE&X87d8$1%w8QzT- zYUMvf;R4yP3m3_I5#R&kP|HnW445dQ;R7~_(SY7H?*!)u)qJBy2OaRpN#`&-EsP(P z?@D%iAxCWauxlIU@cvUG1@FnrQy#(=JiNbZsC0@j9Jz;^^^3>j2ZjT;cP7Y3LW6nZC>#v4Rs*dMv9_bx$+;AZ|1wxZZD&j z2=CzvLXc=DN@hJo$XBmMO#(lZu+jx}p9#*f4B7vi!mZ``h^Xv->p|fJ#FTZ)k7SVz zYK>S`($9>({UL%54Gn<=*}7n^n*DUCq9Q*7^I&{N+G}vjeWG6k7V<_K zO|->Jf#@MiNK~V2N^sG(LScLuf7Cxb{@WRC9O&WWe%1?wzBNNZQmLSAz0sIN`cl=T zHL$D-v<*fmMMSztLlZe(Wlc{Mp2sWh2H+=?`05;_fIZuxDOh3M21)9I(;lDvt+0#?-+g}k6_jAQ;hm9_F;iXSMEfH)0W(cjo6cG@S3jmsUHE+|*hN9U_ zd|ukHF_laO>oM@Z%ev=o znvAUkMfgj3$$z{F&x0w@h@{z&Z0OXa=VK$*b{+ajkDOsrW}c`FK4hjZQhEwLuG+D~ z8UoBtm0!W-M=$m=EUbx(P)YQJw=G71^{N&^@3?N>Z$UF%_7-7#`Fj%J{OSJci)MeY z<8B-;nBJ=2aSE3QKsi(a^_C1zleg5)wfg_jm_@#UARh0jv6rFlX`P^W!v*nw-8F{b z`m8ETXz^=svbbCP_ckmE8z{J*@C1tw%ddadO7NGTrVj#g3{3PL3N#R4$kYJ3H~?X; zi~7(LVyOoCxu3Z1PR{a?cEPef(35v|hlt*u$_&eX{#RDI%z}izNIsRc1^m%C9+krqJFtv@{_x=F^BWM3R`lVGG@^q(vv+f%xu|hQ! zl(rJ=_t`nsI|^yq+4YRu|7|A+IQ!R{a;Ys*Wn#bilUdKAGG_fkLv?}-H8g?hd&4?1 zME)l~;Ln#K{vwTM>`v`ebAFW>@U4tc5k9pH0!@SPBo58HjXX0^i^7?6wG($=f_d+2 z0hjT15vt^nE)Yajs4v+{FOTkUif9~IuZHD!W0&;}B?88?o}!rmsoG>cfNDu=mdf?F z=qxEEy4+Z@l8vPZIo2UV^7lhe-0y450 zw~phjNe_FBiM889anz0*;Xc+hTl%}ZDs+bMn`25C!RS%=X$rgXU znoh|#%(7Qi#eiYa;ARyS?Ywzjn(z9S9P%tT+a>MeB-Gk`Sfx0)M(Cgc@uaE<`-d*D z3~FK7xs>7d$L2tLk=aUWkt|%P74mQ}p1*s`j$*3!Bc*!9EPQFSpT}3Qy1~>)>Yum1 zxkwGw;+Pud(1JA|OvY>DidD?KT8=t^g9@D@a&}!#2!lgMJX|&T4hN;k&Wl0PgwQZW z>5wBO8*ZZciSm!P&dO~hphY-A^>GXnf`_=!>|zE^?Cz62RSu?UTbp0pi)VVi-u>od ztcsYYtx;1!fO^BMn~VNJ#3gt?w3l2s6tcd#5=ne{t@zuK7#sBssN2ZYx=Q68ep2ACsNxGpee3tkA2crf(0rir zDz-wtZ8kriZK==SU%cmyq{>(&XTS_cBH-KsVt$Zu8KRkbieqi&f4t4q9ix8E`(o+X zkrn~CtC5dv5qQ%$!Eq+(IiW#AuFrr2WQiYtiC?W>PVVUFXIbmZbwP5AcKvhW&KG6- zj=?Atfp%gm;CPLfZs$K0?g=G*H+Vy}?0~kRj*G#E&tb4ps|-!P{1pd@J320^yp)SH z{EqQ??pP8s=$raj#H__bdrIj2x<$`lzagk8bGc3XwkGyWJ~4Mj7?J;`Ku*~O25NK+ zky|8w8P=xpA_*pHesT}ys&5{vEH(Z(_pN|i7{rEKzXy7*DIoxi9L;a``?Nt8P*s7^ zU4VSt4(e`obngl_ak5!VLE!U@R2?e89~ZjA&_(eWZwr?3`QO1B;M?RNBEUctob5F2A&g7theRUm07nsU-uoYf zoiD76c=2E>@#Jr?Y1jMyRwdl#97AEZlfF^xg{;fhM~*mkG=-S+jM9ff6Zgh802H9H z-YXoRzip$sF7W=Dwjbo6aWTkBOplzF0f9Q%7rruvn&Q+ouuGtM0V665rlt}AXeaMl zaL$0U*n7ue)&+tAw?Pm&h=9gsgGG$Lj#u?ujW}lt4V&jE{TP^S|A@jSk3~J9#1MZ- z0AAtFv*n+^gxy^P44=>16Wdhg0+u6{7b)T}WVBF3evFKu4hInklmxJWV*m9;(D_M! zB(h5<%We?8xW1LPWm)Gjp$vjxvbPvNn_hgwSS}oNEKq028;Wz!-6=EkKWWSb6aR?2 z-iZ|#7RHeY;e`TI&Tl5UeKHv{T7M;=RlnU)&+S5S+1?fF$q%yfc|( z=lzj}Dgzr!?pfb5q7YP@$ZTfa@u`I0J=SFv=Lm2Q2vLhW8sqSUd{7O1Hw=a{oSkgG zf$234)3>JE0p}A78vkW0>&=&cxUIU=N?WXGz4ool58hM>cKgP9317290qOo4ybLAW% z15|^^08A)-{}TEjLF`Ti{Mwaq&Fji@1~%kC4s(eiy*{ekcDdT@Jf`uSn~gEPZ3+uX zu=6bI$K2inFM*b8?D);dX{A4Zc1C}*^jL^vM+o}?63};Q0?h~{1C9pk`e7@*6Q4NQXd@`&Y}4FgVVjf% zL7ntbb@%FvMlRv!kNy6Lb?xj*&v%>?r9}yW4U1!l{8T!n7WasTU#a}qiIR)zz(rM- z5HX@mQwOSx@vP@Wjc!O#m*q&!X~0F&XM4t2B*!n&LS*q7cSy$NoTpu5C(krd0MJMR zfX|Kvf&S;tNcck`k8-!po~CLdNzY`U_n~598x~)BEadz$BKEyfYYq`k2z}fKUHImA zNZ0Uoz9-{s{aI6cP2EkbRm;z$hxsM8?x1En_Eh>o|dwfe!<1I!G3I# z30^60uzBC&w7C>jVB!l4BVLr@I<_lNQ+poBZff^95c84Xm-2@U&xKj2E}Bxb@&&u* z|CK{S+uO;|NI`DSKew1ou^od(%}Ec&2~U`wzwo8Dp2Ne#NC*<99;abNR9~ujUj2P^ z69>vX5_gDM$<_=)!yCV-w9o5w`c=GS=~ZR?MyC1ZrAYO@t$F>lJp-8`w%sLaG}o z^C?_l>RAi9o5t10%yYLg9A>5_JpuyVG!w4#p!*f70Hg)een+dTDgfmT#-*iHA8TpX zCU|~}NDDZerfnc!^-aWz1}i*2_==6pdz73JOIFNw1P9Iv`)F5$8AjK#vIFfabO0I#kFjD|i!+QK@fus1LY1EWDCHiu$9Yriq)r z(;kKUrVY*roadT$2R$2G&{prA8wGy!x4j)Gb45w%V%Ln99(uezuoX?vxA3DbQtXd| zj;lwwW9hiO`@`{ssVUVe%^^m&p5aD*dXffWo)VlewslSGH|f?yO%gWk3%4VCUY3;- zB)8p>0HANy0IGcp3lCkvj<6w|qW@lan5ukQh>k&sx0#U^p}YyYKcb`bJq^cKF$z^b zup$5ih>sU}poAR{ufcjaMM3FILcWsttRD@krT*(oYjxR&N$nR~VxxH(E8{JVQK|DF z>;m%*mpy51Xh@o}yrXHc#Xyt}$6B;I)*Q_5aw&xS`w5D(->`K~20`_(Z^PH2OEiB=~UaMb_|<*?-Jj0>;w37jqjEw5&WrxPeX zd6<2KHTQampb7iRqHfDgSu13K65rn^^%NnGSceD*C0BvlK9Aiow<(E zcq{@kLY(y^!d_V4!OrWwoxedsMwaSEniwz*9T{{qWxD^A0hHL=^d_#9f&)^#LsAA* z;cyPTgRw>^s8dd5iUpF&)dG6)B%Fp9JrwYm@@cEt!N(k{)A^j}MvRlLw@rnh&qD!x z-b#`{Fr(0}?r9bt1u1L!x4%>qU2e=*ue}P3K7f&2cxv$@l};W>wj-BIIq(qcHPcpVd@?*k;Fz0PZ#s%#xA?DP%3F_^DJkV)MBya=J1y(wi{U z&X(>jP{NxOwNu$>*PRLh;^5~IUBf>Tq$lZUST)(g4*E~3v!kz^l}|%of8S#Uj+U;E zZwbdc(cZk+*|xg<{Mrz~*r>x8hR-05t%>4G66Igd5;Xeeb3j`8)hnd@7)635l9%rE z9g97VtPfnibN#0ATRv3AD|&uluGoyTERYaak{=wPr3#q`{7i|+2!!n^I^WpX0H>ko z7zBJ_-;~S3`4)0aLJFYHv05ACaMgAeGJ-dCpSOvFbB*pth@LYzbSaU(G$KI~_E8w& zDcQDuUzVFvmVg6W`+1Tq4aV&B>D-Nwpjf%aXP;Mw!YtQoS!mX;t-tK+grCEX#Ai=^ zd0>W02i@-UO);GmqsE7mivi7Yum{9AMgf%RX)D?NuR!E>M-RHCjCU{ ziSZzw`p$vjvp5Lx_ylqPWC7X--j99RsLRwOp;98c=*{U8=J#?O)cEn&1iadrhx?7n zG2u)*{x{=LWzZd0Hlj*rT`4DTXsVXMUMqi%6L@(jDuHzM=}TV+x0?L}C8ic=NCi|a zgcy+G4@wy?67SA|h6FeySB~P)FR70Lxf%Sz_0msik-0LrEIl?c8ZMDcz!&g z>ALE8-E{RhBGN{2q<1djJU8`f^8LralvpDxt#7r>0HXmH`37gQt0}4;F(<3P%)a=) z!#C)L^|6W;SqsQvVY#&XinpZS#|bd?J9=C1m9M^**vjUz(Hs9_HSi62ElZjD;Z{o% z;L-JXDy)ql2+GD9X|aEedlBg}rqTZHlqHtR+uRJK0V34~z>J3v%9Erf2tj{Hc2T928_kaP%WLi_GzB zm5^S?w&z9;`R0H7EnOBEa!ctqkvFnRtLqHOoSsY|uI(UWdC7)!fUl<_&jez%80`6J z!C)juD`Q#Ku|}sY&=u4eHRBo%_)0+61yigd z27DT}x(Z1d7OISz;ZX^eLC_nzxbBMyoIJZK%g?i(L2OJPwT@P=4>jFG7n$f`(XJNL zKN|0@FE0D-p}`rFFD5^3ToxC9>5Z^KBW*r!nAA_EU-8l4S&+}XS z>%?*w<2n}wqT3AxRnEpFuQSXT#2L)CknC#=LMkA7<@{z62k&bV=t%GTSXmS8d@vNl z4FV?RP*|Q?)E&i&6lM&-)Xb@u=g0RG*-RD4o9tt&*(gtg2xc8sfyXO3I1h9qyU!Ml zeTtn+YR`MET^o}xIn^jou0MYHE}k$xSZONfF;gx=fj#cKN%W$!27F)64)8G5;@ao( zMt8oZ3=D_=5H|Zx45*%8l*?m!D;IJC(2cHa6l?RWIRS%rBF|Z+u8)*J9ccY;ex=?J z0^c33j3i~#$4eB7)6F{kR|Jq@!x$4IyOg_$`SllGJxfK>I5V$=@383}Yx}?e5Z=rK%zG7NB~}Cbyf^F?^wg!@)(AarpAcA)=;u^9y(Tg~PYx`3$Hp4% z(sB|aqB!A^#?|&pR)%@DcXxNcf-=B|o0F_eCPx>PX2k6_>KWQQ#n<;|MIdy2Wtz*v zv%)T|#b-t3C&65{=hMUSbJ^GT>e0cm6W|wo>@_I$5?CXu4ICLDZCG{s>pkVDw4l;wgF@{Z!Lv>J4mtS)B+$m<|9EIS?QK#>G<2`oAKT6z z#A00Rt@cFT!@Ys-ldhR@1A(z_pi?;5u@7b5 zJw|9I2eLNGNF;PguKK-BQpB$ZH9esr%GQfP*K$~iR=5r0D)WP07OqPgy(6`LY;8ke_kwL;~a54tSa`SCFmnIz9ZG1^dU!e zF-TGeCA-a*z*!`BL3+hPB)dW+XRBvHg;{Widq}Vw`My=7j__tyJip+cw%L~tdSVY> zei##Z1s^=9-?EHqcjuf<%u}nqf8geOt=PJUf6J8P+BO)~Mq4#E=#SMy*+41ROkVfT zx~#V^a7O=z{i2VgN@};aLMt{Gq~a!7#jPp%-pB7u6> zlh)0@!NO4k=gSFWuy6yq@C8@CYS+6l_-HY67cOwc*UEBZr)zn>FO)^6rpt;cj-_%+ zIwXLx>1`Zy)TOLz-Ou)?V5nR`G#qnnI096Y2l=g8i)t?DLmJ{5+3ZiHDT4riKwN%^ zo~hpe@<-E`AMb88fl491BfHZw%gzj|P5S;{8V9GxC`2JngcO}1_^R7B zO}$X>Jp>mXk)a7U2xhp?@TdX_?%X+)Rz1rO2mk%>K_5DylA^1`IZho##c9;DS0Zwe zvLi-ECmR4rt0wgUNvueM6QpVYlH;iyNRUj3!7~=#(x+Ce<4=5X@4B8d0?Pq|u7Fng zP7$YN5Xpr{Dd=^WRzhwwMRB0{m_E>aMvieq+FmSRmN+| zw5+lkp>4YII>jMF?yOGU4;S(`^?lyXDAjzp=pm(4ud)S87)D+=hz84@`f_^SAWPX{_8X9O!rD z^iD5*veL{0B!bM$)*?^|F~|gyJSjj{*aH}`{sVMx{mGXsjFX|t)v=HfJAMonUpvey zcysqKmzPni6X$M4Q!}UkhuXDuikE{A6L-mf_<|U*ey8#oHhjL?!QE+E;Vm!kNVz0n zqqa(>Q1>n2Y^eS5evjzfW!{KyeVzj8@rc3z(Ghn$D6r#;YjawA!!aD})03gBT+Q@F zS}1tGgE+|Ck@Bk>#^`CoYx8K>!AXe2q+)`rg2E7}B{OVvkYyeQCBC_NdEFpw0^~u0 zya|FxL?&VEXz4xqaq>5@AOXhVVti6~E>GHY=!!cGsgjSt7z-LZ-<2IBaBD)+@C4V< zk-O%GjXM&-O^zMllzXyrm$~|#0K0@VLCydUPM!RNj7LhRcnk{BiqSca$E z7+tmN(2Ii4VP+rH;Pu`F*fYf&l_VyP+xp*aL?!zmg&@`lOifLJZqhJNHcPCN?47@C zcTW!VSHYZv5`CwZ!WNbSy^L@F=;|YAsw@F;-FtYuzxuS@)v2`1o zr^n^xmK-d2!lkvmigfcz3v`Kpr^x&0T z5STaUmJ5JZ@w<>IOlo1T!z+*m@ZQ?`9jJt7V34a>;6DDMVSD%B`;v3?yHVe@aBXTU z(Ydqc+*;DG*3<(h#k)=&@^SZDHnyW`8*NcHmgtQlA#}CLOA1BVdwZr5Nwr^^3ekBd{)ua7BI(N{!>{t zT9jXh5QU0zAUDI#%ncU3lcgp?ex7xHN`9akwLx%iGl`e}akj`#mIL#s?=dyLIv4=E?w(LBd8rdRQ}4k#Hwi99Nj2%GChOk z^#cmKu$Yv0_dS0RA7VB)`I5j~)Ru&`_z%-GQ%6%RW#-r;)<^}0a^lPJGFyI5E(F!} z@H!8#=8$9S)q}9FlVV?gCRW%6rj#pk-=oYBz`oa&PAPILOdEqo+Ujl({L7)n%tx$z za_{l_pdgw27%%Dsg5&@4@!v>v^{^!c`rW(A$f;tg-QzR{gKWTLJfsOBnJdXTkP;3W zZv-8_2)bFKXPlqA${>k=sSF??_!3;MgHjG1z|6ZhLv0M;z+@oQvSJmnLsw|q8#3pkd0fT znDP9z^AA@xJJ#y^n}y)lj;qB+w#9FnHgKG#7s0#8Gg!w--k;(l>MUM|o;MY!H^i8H z>=%(u=XqQ0eTjt0A$Wzn00JXpV_aN|x+%4UbA-2$lphT64x~{a^8?K9iqrbOuY&HM zUIL?kV9h8yNbxoqOvM0YBJiZ^;Nq~>LsI{ITrWsdQ_~y)ByeJaejiweTIBe7&L9mJ zA|$FDyY9l89~TxTn^J8*BR~iQ@~ z{q*%gM}_MkI8pzxI}#9p6BGXWIC9GBy#2z!+oA|ZHv95IxBUu=9>P0o4HeYQ{sBiB}}IXfqO&857a!b*&i^c z>YzVbJF{2jG{+Gu5S%CLYA!ito{Jl$E;YSa{Pc3hkZG`0ZwKQb9N-R8+|e*F1~vLY z0pNag?69?AyEhwa2ski!>#&7>8}<|+{PU$-^p6lb-1SgLFI|u7@PIq56q73c5tc&W zj#PE!x=G?3V+!bIsIgbu&CyQ$;t=170`V<0?tZ|N9W)9r>+!}%vt6IH3OfrlarIgB z?(mpy!rz-B9#HNKlmZQAax@8TXA{GuZKs6tYO_9+#dv7UWrOrZs91w&g!%q&8=e_X z;gp%$_pU&WSj}dhxTm zoxV?-DVUFD1nw`q=1uf;b;+BRt_tRle#MhUF~fnrE04bKS{Xm;bzdIxnoo`WX!gKT zKI*a}oA)MC{_Y>m0D92v45^c`fHxAmO2vF*?w>$g?fSQBAsKJ{jP=Nofc$y74M>R?T3NF)~_WyiS zZMoxfCig!|yNF7SMQM`ew@d;E+9lD?rZA9c>7b`oE?!| zQoUWEM91O}quK_Z{C74-x?66_y3Vgdjx@$226naVn{+c-^wT$g)nTx^$7gU6>9KdEajo|c*pCfN{naEHgekAm@JIqfha|El;CFJLlG?!o6X-7J zP=3PvD)Qnim?_ko z`0}^=H>hsbv8BiF!xLH9k{yWl>sdxEUhmj4Z#rX4Ksx&{KPZG+mPLAoQacxk6cVJk!EvM5Rg1q-E0(-XV&Fvut@*w<-`EkPLSiOPrGIxuIg~5((@JNx zTRPYa0I90&bwV=_WbX{>=j{d_HW`ZdJ(~R+*Jb9LDG-81;kZ3G&>-C5AH)$i zRM1Dycd-np=|2Auc&sC(P=dhz)-3QEf66n(y{xoUg7jnsm7p_T0C$|MXT2b1S%2J9y#Po)JV01{y$2UI@Hbc8e!JpJ) zE2mogmz}zIhg6Rg!@YYUqg(QN&TI~*W=2P05NzDI?A>%v!-PnS7^wTou=9Ci?QcI5 zlGD|daJk?5XHCy+`S0Zp_(?N?k%C^ylL*`+zQ1Zh(k!A)1GL(RgS>5zxxS|{!Mvq~&fscwAj#)T`Sv!etxXxz8GI=}$NW0IVWdLijo8272>_O3 z1!@1#ZzleI87&l-x!8&RB##0lJ@C47R#4jtV@8@P{c~{mp{HH<>ut(nb=saY;MDRA zlJfp5Y#&FaA~eeaj%$DY*Jn5%jBeXv27ULQMv}b9J3IUMF^Kae_vkF9dIhIY;0??+ z7S!w7Wvio_9j#X@>Rf3XNlOV2@((G1d$}KPqci$NI9to@N4}wSismFU0C$W*#LlLT zDY85D#0L(JdZ>ew;2=cm|^|?qicc<8y~;-2{qf1078f)A0e#2 zu`Al0rwm66DrGMD)jRQw)k5-hUc$&ZJY1NCfAZe5R|9NwV$r7@#Xlyyh+tqiZhYvw z*y>()PwqB<)F(GYX;n$IA`FIqZA z24eD$JLfrWhNW=Sh#BP@GMabo6V()~90}v@jUoPUl~J)gB^=od+myc>i+3U`>rODD+)jxzt(io zt2r!wNA?~O5%K3S$o8dIZRP20X=wpxq`SM`*rsjtJU!26BwQ0(1Rq>pHUYga2sW%3 zul8|-|B&@F)o;fqq%B(L7wCIY4*qI%UW7jhP2RG*2!D0!bIn8Gx_Nq)^QHO1-J5GM z@%*lc5z6XGcc~{J8KRinr=5VDL(LbN5aH0;|AGihHy1n_3PW-BH!7-gs|*GxlsfkB zq1KnW!tbeonE&00_|`9$EG^9r@$vK&@!VHeh@O)Ze2e4<_7EHWQ6)u1Ud}A2@hOSj z-5#yZ^a;Cl5g`~ujIJIAcM0uJl$ah2xh(Pmy>={t)PL57VJ@sUWDPS}@5eOWgC~35W`gg*Y+^qeD3Uz@SW;8dq2lki}#UFPS zfVqh6$J-a*eX1J-x$d+@Z`f#eD?DWjvvh*m)azJlQXfV}#(ki-*O+X}*48$Gh-(uB z>N+j|W#68r%y_`QQS5m+wZqI(i@a6RCvx9e#j+mD+;w_STk;FWsWkQ;Cf(eX_|@*q zuf|8I#NQ`jzID8Dm0x~k-JD>+RHM7|q^1~u=j9U!_O1ozcCDGLZ=}+Ca5G2bxs6my z;nPock_;jGmgG-N2Brb|k&0wmLLQ0?|9usLe95v7 zb?wTw1gtZ|tS`seBCF$lq0N1lCJ?}N4UO{cYS^SwM8B&W-iabpOQki01nT zK9qrr4rhL4PlgdiX+lE6eIO*nct0K=A0G_MTy1hPipsUPc6r&~`|$fsO>(?zZGcx2 zsczKbXrI8ln|=~(1{!Op_rjj>K{g=DUcz|!7q+)qrgDF?%B2~>@%9JjK7K8wJQ~mr zi-jLw`KVP;cR#9ZGUiw})b6_wxJzS!^Gkao34;KqR}|^JoioSOz;{c@LJ9|t`X$Hk z=X=MeeNIIGM!su(NdVM=Bvgt8Kac=TiJc67A2|<}UOsFXKpJo6XJ@ZLBQyj8dDm8L z@wct5t<__X-K?uaI#BV-h}FZO3s z*`Q6o@o|(1lLbn*WxuV--bU^T@LkYEbJEkxz>$qvtKC}RO|^Mc>oI=Do8fKZ5NPsB zgU56 z18EFS_T(|p5UO+S79LA#tm6+RssA4Df{O)&#Qi>bKzTDK3FNU)u0)R1dLjglS8O5UW!)x%4-k$Gn<;4oap7o$Gt|)G>pZb z)IPoZIM@39rdn7}Kk!@rZh(cCl$%PJCZ~AtbFW+qk1=1;iG_^X5w>VmWUHZpmVk50 zzNX=(3~+Rtiz08YA?(V8y8E!C zUr|-;5pmIeL*81{j)~Q$CrUzA$m1i%J2pHVQo;WIt%SPzA8^*ZlqbR~Ff$i)1LbD? zjA_@9@vW;&sHt9HnO0Rq#{_ zXQh|I=EQH7(h9l!*b>xLngR$}y+}1;b@uZ-6_3y}pzO(bo zLIz(RtHX~sI}*US0o5ng6!fj?Mr2jk6eY)Mf_W+8XpSE$Z^~LtUO8eJ#+gWcRg`fR zgBeFd^e=>sFg$AusfE#>{PI`cM+2+czps4)Ut|cR-=1V~bnDKP1JSe3ggNwK-t-|SwcC*|n-Z^P1@bk&jtuP$ z?gkUM9C+WqXG+CqGkKGb*w+5zb9y?B@oz8yrM*I;$(SJ(&lYGtO1{(A`rKNEZMX(&#>5v_+GR^i&OxytHJzvwVOv#4}6 zI!D}}_Z*j9S}1rBXDsMO&>Ei}s^jZU$7mAYCjHgfV*kIb=fPbVevcCjxSw;LhWGFJ zwy-4hcE^t$*9wH$$3`>AgkI#C<@wvjigYApjf9dRN^c;wG5NquGZJD?snjmW=6({%vj>-<}$azrX)BQWoeC76}td zQu?MYa=)F5jEoEpC8~zWj}*()zAX05AL(|ELwqz@vAigPas6Mnrqqoq{!`8ahLVFI zdJrEy^Yb-dJZo`1)hwZ=C#yA%i;)(XR$31T*PA0=iiwVm+02wj;q|0p$mXNMnODDB zw_F;PC?XUa1vTzxFxAVpJ|KpEY00d9sr5DYx=tMU4e3Q7{qXw5F!RgtR}oYFir^s* z1$ba|=W~JluFgCPuX^C)9z%EWjgp(9xO|_`@4xju*sC#gE9if2m&dR}U;v5A%1Us_ z3~m>nz$H%8uc*!=FwI7Yp56v@+hSm_ZLyGY>*QulV%2{YP57WCCx{{MQDNcyy2Qy+ zuCrWO8pZIZ9CIDF%=@1s2@5IQ2gz_O(I4pyqHHQj@koYAc~zO!CZpfi#;3wXy>d=A z3a*%7!0uoXGx=9@=(3TG*2e?FK=~|WLhR2eR-3whW(8T5yRV^e88J#Ij__wMvBQ=t zEq1zkZY1&PH=p6kfcz{@rA2Q0;~}SZ+|iN7Grn%ahz+u|qePZZL0ke&q5FHI2!6qYH{8Zcy`q;Oc=M;l25f-V>7MC z9omsfx`~#{^kk_;V+@u2E?N2>S)GD9xk>Gne`VqSpudIZRT^V#Wj#Dn>xj8xzPe5> zSE{eJs`HbQlJ-9g%2={Gw%Xl0wsu`28gF%tf8=AlGS@-PIaC#admw8o?u_7@};QsGffTmMkyo!7?IIk(N(i~~68 zIJpW7zWdEIt(2g=d`^{=wFz4NNG-CR`Yr69Da)`d{3FbtrCL+nbYX^g(#Akc4@#IR-o1KWcD zZ!k?brM4{M9@nfH4uOq^c(DyuUNT@n={Z3qxn@l&6#5lK5gQ8v<7>itx^<@oQ%i4U zXlVHE9h&9OPeAsKNl)6!ONH}%zj3yK$#cf6KsFoelnQ@t!`G9o>soWY*B z15xiZnIV!6sWOo-siTLm-c~t+Au^cj%dLI6JDb$(MGvtcudo8Z+0dd&!o;-gs8gX z9|~HCD^<^;blu16Log|b5D!m*Y-K#}Zf;>LlxHptTNX+qfsOSRW~iKN{BMFe2WWl# z{Q0wNQvRxZ=u^RcbW6J-&9O{5oQH>P?^~q zn8W&!P@T<3gM@JW!#@Qj^aYK(2pVuECnC{_Vh{UY`5dvDx-Z$%mB26xKHu|okG%=S zkMLhb|FtH^$)YN!w@D0Z!o7jPg9K8aD@5Z;&VdyfnC?cSpng^u{ccX5GhC>~S8fFd z;El3Y*JHO3NL3P0B|5QYxI@yU(EvDa#AReLJl(hdQBw_}28|)p+rS}vGeqc16# zNGd=i^XAI-4?1sG+XElH;r`gN3Pd(Q|wy9lqE0vdL1tp;kltYs#R#60%Ips&1PEp8qD-h+G-aDDSPl zVz!zb?BhaErT)Q7JV!{vMD-2Z@0NIU^oOwTxK)8nsy)zv&dJF+7GP;=>Iwu?ZQyBd z@=Z9dA*NsEMf|(`FrNu@SBiukGC@VfDInrHFiNucB_%&pbS~?3`j?8}U6ti+N9G0U z9lScZp?mz@K!`YmVELC)hWV&)9Mc=?y3@_RhUUdzX>}y-R^_3D4CccL)lWdW4wvVX z<9eGX_col^0O~}!Zo9+P_bbWah8^jj3jf{sO>*1lcK=dZ$!m)-*6xZ(?pQN?Y3RCY z@2b`fefWI{ITT$~k|7Mcv%xSa2#|;RUK@8I$vqeAeu!xU+`@ReoC}r=MV!W3gyWM{ zDkpkHA@378&Hc?y1kgtn|0&timwN(;CTWu>iTS$LOQ|~)4m@|+aBx@!i?`qg#S zTjm6`LxheA5{J6$7m#6i*2jMhW+%+dk~C3j(r2q0#t`ZO-p+6wMgz!%IxB31UW@Wp zj_c?KRwjMe>Z!Wz8vg&D{|RK@;3pou<2j&Fa3O>n5XGsv1Ski=<4?0WgyMa|o@_nwa|n+DSQFiBE{k zggS*@ks#W_SZ;vn`?aI#1vqK@w=+!GDF!+n$Y*4D>1Y`}*7ApV`db@=^B)5tc7p?i zme;;f7zHhe+Q>tIcfJQ~S@w9uSS8n2R|RiX@7rvF7%Wo<0%4&4F7|-fH&6&=b$#Y( z4A^-R5NOnN&1#Y|66l%tflH14eER#bnQ=KP!Lpz4{I}Xj7^J1u8VN(!^-nuG(1+u| zw>Hec{IXqTHC=im&JPD)bj4H!nOAv9)%QKE)aTv95L?nx zp*yrn!y(GhAKqU$c%%-v+nYp1Y7jtf&!Zs{I~E63%PowC!0k@>63hOdgF%?=#;Lqzg( zpqrK!qN%dn9xmGDmfGa*V;eu++22-`#RUn&0wKnaZ_2hVF8$mcIxcoZ`IriaZ4C(m zX71+B*uMTcZyS=7IsaXREe=D>Cy^>G*5W*-+G$){!)yQiug z8uuva;}qG;8KTnW=H?a%-L@k+BQ(~C4w2?lU;b_q#5u3goO^^P{k!d05K!WJWRoI3 zfN2OG{Tq2aD-KMz_G0Zj0KX^+LI^^gT9Uw{U~FAy=Zui60qXDHAYFYTNXvnSvdxV{ zRpfqm2hUbVi{&K*?qQ5!Bx}B~y!Yqx_Gk(8q>&kFq8O%PwUuV3?bz;AY-Cv;wgTDz zEvV|~4b(ol*b{A@&){Tqq-ho^qrL6$K#1l!0Wq;IRuUh0_+^OLlxTcRge^6YA;zEu zRKO0rEdytJMP1Zj_Ft>vmy~n0ZeFnISEsRb?gF`tt2<*X8Oc+SlZL*Plw^-?Xs|<} ziEZ-5gfQ@Ucc7tP)Fh!g8aw8%64!QhbzSd|*E4Otvlkt@W}-G<TMi(UR zw!XE!ka$vIgy}+nc)}rHv`6p)+w>tT>#Xbq>vqNR>q=|>l5Cy?D8p;AAIkrfHFxuj z_dOE}4hqWTb+HEWi-?#vH;zmH2Bq>&X9~osOc(C>5E%*m_x*Z^1}&-!0)5`Q-pR`p zJ)#kZ4X4FpxC3^)J-w3qduePd9PaXa*?bo?l*<+QM$TNU=ajYp)Q( z_|iR)2E0lz4)odBlC%b|DyCCRMaoY=vDO>l+RV@IF_1Uys;?cpUB1Pv%WL`hr0N;3 z$Dz!2PE;!S-_^2-XV*uX2~Z=B9v7E|LahNMT(eFO4#_j3BOa33_?SD~e2L#W6aa=m z(S_RG?S?rq{&$}iPtb2r0QW*LPt3@NuA`8x6r^CIlBy3II~yj$H2tTSD=#(6LDtc2 zu9sUtV$4T5nqvQ1N;{+KNwwswKOB@9OoeAvkc|ItQSs}LAu+h-ovQ4{R!3{lM+llG zbx^4M&=KduO@xibVQh$CT7ASXWQAAkqjSqBq5wSL5o@g~KRSz>2?>)J;crZ)j9yZ_ zr8yd0vop}cfq`XO-O$i*UyCq-B5^KiHSNXRlH(QuP?-$*0n5q;HRR{ed@xQJHd+y_ zD@%2+4^?!4&(?c~sfPg*pXHGmE0X#C&f5T9IZD_!JZEur543HaFVKh=w?Bpzsu96nXybODfPVYS~YZ z1sP^wwOi6$Np>OQnez4ax&w?l;sl+oazE1-kKy33;3g6vyb=;I7_wTs9wsCHxy|zW zI-m56W@1w3plv}P7xuKE+aH@6hA?8&sG%-%d!r`|yD8-oCm}E<3X@rrI1Frhm~R%TQTlgswT|rDd5*kf`=LbEKmRSDPhxtI+|VGM&2|D%(cpb2 zKZGUfYET4$Wi_dUcM75k2(D|8KrzQp5oBu^jBV0n6xr_(U$UP|-g%L3sLe?IR3eH9ES9tcpBgi|M7T2E-TCmiTk zVctlKH(G@$B_H_VzM~rfZd2&i6a{Q|x7rf<$A{_DE@#(QpSS;Ant`|=6$|lcCryox zdw^|HvHZn+I>z*;*j!C%|ChYJzEfVg7q{(OnJu=(k8lhzP$_&*Ex%>3LEn+Z#r3(k zxU?{^Iwsh+?i1Jyna*gMI=zFr(V`%4Oi=+;d$G}g{yj(!=qX=* zvKGnB&CF;wIfi1fS2;3o8Y~&fRT}~1In;C3@yOTR2*2>a#?*ubZVVHHuD$3#;SSZ-b&+^xry8cGQt!h`-s@4Fbv zEYt@a@gGO3cbLZr+ix=B>BHY{ufnu(kwr@~;_HL4;`a;`z^x`iLf67=y^DxY{#yiU zzIH4uIBpW0wYCZi3)fgJ>AV6g)tU8S{Y&_Rg(z5$|F#(0ABrBPmeo|Hb5Yy1ShSR9 zp{+`v7PJQ$aXKUf%7^SpB#1u(pBF5QRUn zzs!W2Ge+^#e^-}{3=zLso%;rL;WSgIUE>+Q z68y4aQjfOy8fX@By7}Mlr%w)w{*;c@HK9#Yrqfp^cct;I9%T+-03;(dt*xz%jj3n> z)GsE@JQ@7-c?A5oPW+NGPm-bh`^-?b6|}!12#I`IV;NKL6SkqZx2)8whq|a1(?Wy# z9QDTZ@TJW6ds`@U_CN2PW)tx;bp*|eL7?dash!)XS42e-vDg8D2Z7cV=X zUwNVWr;rEtc-bqoKxPG~xSas|))qq8XQPWZ>uYUfU~Sm%_Htl5z<9V)xzO+J!vBsg zZ(teFkydAKhN_fWS~Rn`(z80$(=8Px;6mTno>7zt&vZ8~mO-`F=h0}BR3(@wMx(OP%k#w%L-ZcyUVx7e7@STWt zB0+ZCQJ3J@)TRDo{gq=7EZJZi&)A%c;@sjAEGlhMX31Ebgefv!KxFx|7Wv+L^ujFEydgcAXf6}FpQ99wSf z9Td_OPt^JDbuPyMyKXVfdJ~mW2bm&)WGX&Vf#uVbPi2(_!#~4RRJ`uCy~pRpUxIM0 zCr^qAXkJRCWZg|{y~*4(s}U?sw$9GZp6}0roT+nNpdWT=X=x0bi=MX7%;RNXGz&9~ zAO8$}b~^2I+y9^jFofw9E~3TQo?6DILOGhU!7@ud`$!Zzxmk!GTH@30-%m+7P$1ywKtv(Omlk$9L{u8&ka|tj!s5`evhy|x zoN(h4HEr6To-3L8tzUzh(sv5h=f`D2XMsw-7Hf_K4n@pgFZ zh5s;nJKZE5ej19A+6HPOgJB$v%Q1Xr9Y7bgSS|c4mY^_}7GSHZJ151&@&T&KYejOb zb%BtPFg|<-2QeX5#~-VW*!gNQRT;yzjCRbQGY(IStmv(d5hveZJ+TfrD(n7CYp(mC z@Phej`t7e5kJgE%cG%9#MHFNM2y#x}Ft!7eX0gC)y ztya@!9A`aqT$Vrjyq6KZ*Bs-as0W)g{ z9^{~r)4DcogN4c8eVgR-wO_tjCN6sq>7lt$9~;O$Y&keRPG=8B2Pd>PqDr7*QDk$4 z(61z=d9mueZf|c-0pKgS-jSw<%m<}3gtN0J>@bmAL*^3oR)6(ve?Av$@ApxlaHO7E zC{KrxI)b2AB>!ot(}&DES=GE;&N@*Gy-VHfj8itId}{v-#jV36tndLAN+NW0-64??dG(70&~)G09Wea3Kf~EdtwDe=A&wTd4Feo-E4ycL_&} zEH{qj+EpjE2exJxPO@h&QHh%D+Ojo^>rUyrZ`LgjVa57ZKk30BnGV7W?vRjRfxcj* zsE0b5n4f=7IS7q8ijweGY@}lU)7<=piD{x(jktfq@%edE9mRTKcNT3Rb2PFrqj95g z#p!di1NUOwe)khAMT(-AyP7eM2sz9Gp^)$G4OvB?_&;>BYL#Wj`e@SgJqBtR!6x&;CB4+kBKaXBCq-o-0U-T8sN)uQZi4NU3?u zv6}K$Z^CCfk$tC|s(md4(UA}qnkdP%wA6+s$Dm|SFp7e^Y`qfDZXYb1<1t!{b3vz| z6@x4dF@XIrQKt8<&Nwvc6chiaE?Ob@DXaf_Yox|s+3$hpA5|6r4nWuqt@$|{IZin2 z2hT)hNddDJs;rC@=97ZvgZoBMVEBWYtX>*>oaXTl9}YS%q2B#Sw4=&#O(VQAM>Ue7g7&gs4JzGAIq zgQo*=b8`cIS?1hTY7p_X`O4%sso&1bdj|>&zYLM)#ArTQs`Xmpd&|h?yW^rfY9Q>p-}FC>?@DS-a51MiueyxtvL+XxTz!-+08-c%A#cn(%!o zL$8kmhz(IreXC~|efoZqTjOcunxjikstBB?lgt@Xj{NdVeXcS)Pr4??Q&|ktMd0tf z2fQRmQd1J2IU$|Y^u9Zsl9`1EyuM73R+&i^QN8kYfp#`~X=!Qu;~oJR4gp?&)m+IT z1Z^0#;O=!^M=L{lWEm|W%_SH>YHWi*buZ{suv)81F1gkc^j}e!#?%o5(Pw<}SU5Kz zA*u_bSP7&@k~~c<{~T8Fb8$6%gw|<4R)FYW3ma5c>wKR@ndYIo_r{KW`z=o=nMe1L zF%9P?piQadry8;h1X=?ssE@s%$<5n2Y7eSJYc$XIjZbE`sn*I0nsL`ZJULZ9+e!=l z1JEb{l(DaSzk4bvImaCyfE|s$zG8~o7&KcO8B{JQxo2=qh+#oolKPltej{qetKcCf z^R!k*LkVUgPI;Th1Pl3jUrhH~C(XQKGAr}HvY7ecl(lZjgP0>R7O$$~hgnMBQT6KH zqPZxAIcs3pegZ|^MY9w5F_1n#Xwko2R4Zut_rYD(( z`-FxL64IEF>uesZw?44^ul6-L~_lfw6sZDOm9unlNjd?Pao4#G0FnRk*1f zWsWu3Cv#X~!!e0+r|LrCWWKVUR6)>!pxJ9}&nM7u`PG)=6T3U1o5;jK}<*Po~Sc%};=5Xm!<~ zmJpLBUty1dIZ*&l3MukzM<^f;io3q4nLhi9@J^)k0*ow1|0VNANQ8xzj*hKl@YiEiAw=E_oPW4ds6x?D>xasdYU z`qUW6=CbC?$z+R4=+pHF$OR-IkhfD8U?`|5S8VL5E?LEvV9$0L2_guZH@d=LBY=FZ zAe_FzUgzqeU1eP3&R*u+*NSwEj#>d_i&}M-b}laSWt7jg!212E*6<*xXR&!YYW1&S z7TGQU37|tB?mF4(eGSN}vCp9r-a=116{V%2Nda6dKvc-$M7Ehd8!9SlkAkVV$o(*& z)B)nXZ@YloX_Vz?m(68V89&yy2NWJ$6Qg+c7Is?+I3nu=-49l4=J zO7Ust$9jN5sjLpa8=*pG3`jsjvP?btmG%LWJY)}mHgZFI!G*V-Pk!;1%}fEotlm-U z{Nj8NDSsBAp{1pV0Ywip3yU3KF4I}r6H+iRW5j@mEeZ8z`~-U`@{<%D+n2lp0aD_S z-Nc2*DbNIZ#aR>p6F%#8_@tzyI2)~g$4~}wIYW_hnPH^%GzUI-bG9|u-+Cwey$i^F zjv14=Se?j*`ga;(^yH(R>DnkG$Nde>fxHVA7oQW-D#RP!V5u*6{ptWB}4RRNm5&j8OC0$-#0(5_4WF&HPx?^6{ z`o>$y@&aWb6#)N`#gQLMh1UInJ0S55h+FE9GJGlxi+-TDdzZyOPnkwnpi8Xq@&N3U zzm(I=(Ud_AUm#rLR~#QbxNs#Y1aK$sypJ6$NxeD%d~M}#S(!?RRp+JJQ>4~O0mrZN z<5M%E!HZL`9o4l;ZG}@bW^h2{o&@d%pp*tAl8jn)NSA&KdO`tImcHL3NAGm8qg{mx zu8TU^(B)~-&(OHyb=iNIEL9+fdQ&6=dNBL`6#FMmNB}m@QJX4XW)S&cr$~ERCscR?oMLV$4Oo8pdc9ED%Z0u2 zlwKN_HFW3J_caBxAQ&{lG85oeU432N{)Ql}k&8B$+tzk8!%mCNWco6f&1P-QEeKgt+^NYj?>E z@7ur8>A$_TrCO@FdvrA9@DpI1zw=9?f?fHgf<6)JJYCIKk%PPM4EP@gRl~ie(quOGBpPOX1u8WIgVlpS&OP`l2x#E<$T)!X|XxkX$=N? zfWSLI8EaJ9$Nge?wW(Ow`hN@mGjrj{O{%ZPM_w&6RMh~c%U6(;1zv(-+`%w_W%UQ^ROw% zeTH|hp4^)a0mAohZG87{n;u($TU{djFU_g_r{tK`Nw*ZQH zfM&&=Xe2=aXTz)z>8*DwQ_b1sylxRdcIiBA&o1?^SyqJaqTv>ImL+-B8Dm)CKI5ap zR1swj6^9L%^JFTe>g1XEeUBVGRz&9kjX^B^dV79;E+{BC7A{sINT;qyc0$*(gyOVn z*VLQ~E&T-T9TnNO9PM&VE&tm{l4cR%9~(xabG)gs(aIFXS{Nx`fG*2WIRmqxi>fzGF#l zkG|TBMXSFw+V=NO5us;OXm1|ImzN26fFMxstj|E6IpLbT=nnAlBt1}`5X#NMjL+h- z`}=Q*kG;RYYDq0Q^n8cIZnIlv7sekJ5dG7Tun3?R5VKb+W~D$Q)&mAYkpgJ6jFszM56j z<@0=EV`;L)FjwX{Z~jT(t$r+XX2mNn^H%b7OI>NGu3sa-OSufF> zAMw|VZncuRq)(YxrutjJ?u84cJr<*PeD-LTRY@ZBN01EBZ;g-0z=y|=NUch-13g8n^Ji*@L1 zHF@*;IZ+(dgm|PZ`%ujZCY}QfxsUjlggYItf#+>>y8fa4DVT3u!sQsynm5&C+q`te zjQ@5Mf}MCiYJc_LF=O-wq|b)SoF8ogYt$W5%+lvm+l-VHE}-x)C-_*3>=DYEL=OR&S^RG;RNHg3PQl$pq%g0L=Ec%N_E8HC(kagtOrC(hknzzrD#DB~WlMo8Xs;%6R(T zl;Ypr>S>EyWKtG}b?WPCunFKcCI}n5V>m&; zjv#v+Sr*KfzGuW)S#Op53%ez_QD3U@g3uSn=-T&JJ%AfI(lq;>H@}LB;jj)`wiBb? zId%03jQh@Ne`$byxz|2xno$hcooK=CPV@5e%KZ(pT4}HYx&e`P4<|gl?@Ei@Q5ct+9r@82W;qa22N-uc58mG_%)Jv$1Owc&t7uO3Q zUmwUsaFCYvC9+0S12Mm{jF&EQ;GEkTyy{L)G<>1Wi!5qjvYjJ4LjfrA4zF*{i38%5 zr+AE|D{{8muV5yK z2N(}WekM1EDyA-2qQR9k1sF~P&q0yLssIq=W7bG%fKtQy--koqX;n(>Yep@r{iu(Y z0_kr0yYJ7gSvlmR?pBuP=5JdzQ~V;D&C!fO`@q(Dsn(*)tujUhBz1Je^6KP8>`33~ zD6^yfo$>y>j7k_*UQ3n`8^PSXcQW?Ojm!%=yQQsDFsfLy|Dk#qUL{idg+DX^O88~l zWenXN-uXUZ+MWtdCKFH>55|i}5#n)L6JqjwG1F2m?(n(*FxzfH)1kW=08*kz40~Z5 z$J|-OghE(5eEFOF&G=*5{>~{7W*cn5<$fZe5F~!iE3y)g8%S0{{o5pte3+95W1Js{ zsXXrH=9E+&h`Nl8+yRQL_jR%{iOHu9wa4b(`|) z^jAefF9?G0ITuY<VjWK5@K9sg89#-u500tRvt ze;615Qi;z$`jA3JkMlVLf$$)OeNj8N8j2YZ)vPdas8gt(wM&{qx>= z&s+RQp@n)#J{E%XhCZ4~d|n;KoUXKn%2g?5D%Ykjrp~W1?bT#TL^L0yFqsIyNMpwK z#>%b^{Muc2HU&nUoH^8|`_}G~$@pC4{F#nU5IV9(89jf?Rh=}uWi4RlKiAg)enho z5?qkPC7X#E5H%(%2LdQ3lddOLaj5bxz+y3SD37p0x^aB`42UWAc6J1j;gFDaf@n>& z|Kk5bqu*<-Zp5t5bA569*;SX|GQJ{Af!BcLKm}zqLkz)ig(+o@z6k$w-R;#G?=pkG zJq5J@g{M%+C!XiA$57n- z7BwUj<#f37h$Mo)Jx)))*xNCcz`~r5e}78=V!?y&`Yh$6TYx%KiPa7j7r26x-RKwZ zi|f{HNN)XibpyUC628+%86n8}@T7AmhK1XlWD@a};5Lq6~W;W~m# zMLV+#OutN{A@z1#>UUSX1Xx>wF7;$@ug9Zc5tzEf3P)eH@n>`>Vt$B}_BQ(p{Z8 z0Z%MiS8bKGQ804A#M;!_`ilAOOK0~g7_N^{P{tuw^&Jf+o(Z*`mYYsPqXu(oK$ieh8Y>d@smCgsOQlqE5j_DbwiKXO`P7A75Duv3`MZkMp3b# zL0#RUsL-e}`m48ft)8~)^1blwEt^gAJnVhXV(gK*K?8m4Kmi|JR)eTWH3_y30JGl$ zVL54O4@QnI+kMDPOib7Y#jT0*ia3=>;1U@+CeU@1WE(BgVz`HaHan7M!4YOT$NiGW|%s-XeRDX>@h z#%9=GZ2nfqVOzP8C}9|g{toY>&jV4>ht@G{G~&YRu+Kbv*k@Y?^7~&fieAe4 zcYyh*^3Ul87Wx|qzhm4D+r(tw&kr(V(NI-2&}KnXb|9Zn%YFVVbM;re1_p{(J7vMq zik%QAU_ja)YDx7w^E2P)k>9+$-}?|*o`JCBgxX=4`WYn=i^I#bGvWvZFED&*yQU| z^LjH@J5#{8kp<^a$BFswu|$lzP5jAt_>KM+*+y65?g^-D2d0bjQ5I5_a=I`&1 zQo59;r}(k<33e2>TclCrwP3x>2iHi83F#CvEUBTH0a!2=Ui=i6;Zq6_@3~z`X*Tv1 zy18RWm>M>2e{C}Nq|XmcDgY#L%5)BvYX}Gh4A4@6P!OUhyMvGXs0ve36eaIDFey@z z%lxCcefC8?GR8=Muo`Q2Fe<)SwSZ!KB zyIL5PJY*p`cu~yY@%W&OLa&PAuy#3KHuojf5#B(WcSH-k4M2RvX88U4cNB?0*>Arv zEeplz@lz(*YgAKpBSe6% zJpAR~nVaP2V6us}Ax*ILR^rWMjL<#F+$H1UcgO`PxvLvn)*pNU3hwzgX#`+fQlFBn zhhQjQRa6K!(hjtrgdb<<5?l;+Ki78tpb7P53(i0-@gzPv4lu2NncA(h#@AXHFcGj| zjgXOB;i#hfgr>^{G%KfeDbMIXCuLq`R;!9 z{6-)9i#+^&7uv!eDw^((Je@#8#|*1@x9%aN_d3}pIeb-B1?0zHS>d}*ny%Pg(^~lC z6TqT&zwS+9-ce_@O!X~OhHf%HXvK^@%m)R|Reew({K)CHEym!{ zW3^*{iwaR;RAIL*7DUFy>nOTh4j6uyILu0;Ly@Lat*v!?9k~N?oPc%{f!86CMkR2QD9HC$Tlkr$k^aC(vN7hOqpGM7M6Ii5 z{ugg!R8Mou?g9MooFRlnM3u67W<~Wy+MLiJr4LlBt4%A7*i>^&@IWJUs0)qI5F}Xs zP~Oy3*L@NbgpSn6>A%oQe!$=4qepa}(cUAg3jmvpNTk(YFMC3j5yy?3IB7fTJ! z^f^O@h2oE1)OvdNLx&Dox{X7`A%58rqyC?(3s7yh46do_o2VYj8C59e&b|fQJi2k= z>dQd0galFT0P;z6#24VxFU$`ia?E>LzJ?AYp8V*IZqG~#B9M~X+R<;iKsM_jZABF? z21x_D$69mj{;m%M1oJa9DQ1W9cQPl3=jBwf7}%FcnCF?JvZ`4PFI}j;7OSN4=V=OFF5$Z=6j7>nHvNH`GC@P^q?k57; z6J$p4Gn3cWUYY(TaJsig)$mE)7djXuOecF&^J-Cb4#Wq1C)hD=05+7O{BK_2oNrs> zM)lM7TMl~~MyK=&1J zt9YoX_kr@he|%AQ$_gZmU)UHGe1KDp{f$&jn%j|`M$`sF* z7)akwESmTgu%_?t?w$hOPJmX4gM(x1jP;ZV7OvxqeNFHv38rTpZeSbsS#o#PqF;USLpcqYih{Lha*|_lEImX7JP18^*S#z*#)?dJ6Se-|# zn7Uk&aAB%v#kvh?^fBhP(GcEI#Pp^WtbUOyjj1ZbDOv0 zrIeQ}BX3Qh=Yo~ES2}mm-!<-^Q?NP+|dV}t0{;)Oeg z=ogjj8HdwVXXoPcuctAIPXT1rO#I7<@Y@*T-nPgFT5}42#LO}ST<_jQcv-6@Lc!Hp zKR)M+#$Du3i{^4aqgqi@w@?xO)Y^YZKYS%@gi9^d1tUp7babxdu0G!)a(XvprEn)! z&m(l2nhJ;_yK`~H2rw&3x<&~K3wM>BF5kV}_7_>04Fq*Mm=(ENl5Uuoa7_239KSJ( zH?6-j`BbhmWj!X8w9C7w{Qdja&)>hgdU19B`P}>cdC8*u6|up(?IkYd>LIkj+WJUw z#0cvI&_?#1FBOC*{I>W!GW+-tQS|#*6_<#W6dKf;)$%MTGgkUZkGbWykX%%O@jCQ5 zC(0Wc83+Yu)2kyL_au32G?m!YWH=owPfs2$0ekQKbu(T^i<3lZ7?>#83fl;bO`uLj zDh`5+zJ>TV>XT>xp6^TIxEe%Fi%2)2z;q6S%7x8jw@3=hWNlAONXV5`>`J%-;Mns* z1)3BG%e;xN==DB_t_t?~9%*M@qNjWPk=$@Y~){bgkG2F=gR(mU0|sE)FmaM8@0`@zn9Z@}Pfb zxh-fqBKrt84N+I;wJ1mB1T-n{@Eu#-ibdiL7(r#b|ETG2DNH6?AZ)Ea!H%TiK zU0#Q`_fPRiDeT8+zB*aN&eA zG}DIF&9^d-E0P*$4tfKiTr_d~MekS-d8?()KaD>zolmJvH8%8&-EPko<+KA^+{w;P z=HV%}lQ2l&#^Ahg@GdRYb;lMCGh#bwL4t(vcH-v?B7Be#fkn!|zi6z@5gs=G+nEw` z3+?2Hf0z!xHeUF3MK4VmTc$ux_;Es8Vae6eb30UabQasH!~%QB0eZHS8mghtJh!oM zxngqpD--=AO>|O**U9}yi}JM{G?X8JWcG0(u&R)|FW{mVQYFRHi7!<$KWlmOakvR9FWODx8=-1yq-NWe$s&m3z3R_ zd)do=*;@-w$qwIJ%dNsl4Rb@X45ywVAxy;Z#H&GSYm!@xz2#aps=#)GzS(cM@=6su z9bpI)yYNt2zvlM-dJm660{ITe0va2OxJ}x4_XhTkQ^Ai>_qOZ2PLM)=eX?rEkCbpmM+6@tv0jnJq52Mz1|(&O4iKs2 zX~HV3UTc3==R`7vKFXbhJ4CmeHTdDqe9NKIB;>*m_A|wOHMS%dB6*5DxhR@xo6gFI z=Gx1hxxFjlS};Mv=wRLitogR|8$V@(&U)!pc2b&y`@petIHBhU zR*CUj{MH`1jMl3Bl}Mx^FvL%bIx=HMnwh%-9wlrOC}OYtox|eRPuv4T30Ej6X_u;p z2!k!(DnV%oc&ls;`jojo!(siT<0uC}7Hs%_f@m8{DSnGw*_7CqG%iFBtoK z@P}*#a;dm4qGf)49*t+YF&d^61VRaDORL%kEoRx7Bs}UGP$z#p@hOHDkFCBoH-EBO zk)u0XsLJ-y6+_+^7*H18B+q6TvaUqrX{~PkQ&G2Cq(Gxp^}PIss86Nccq2eJI-y(s4^P-WKeCpHQZ=gYNyuk+NyJgy z3!^vRA|yK{4hw~{D~0Sf1-C;-WjRB7U;4HL>YE_KAW)FQEU*C{wlpj9D?8)-?kxf_ z9UNgbfaZp5(nyR zwc9*2g4ZM|;s9X%tg@e2Y1R3s;?R%&ZRPpNyR)Rw9|i6|&6lP2pO{~Rp?t4Uw zh(1}9hbWNCpvmJH)5@Kje`&67OmLzm2Qz#swV*4rdeLGjRKZ$p6q|$Wp|dhIFSAgb z+Z0}m7;nnogYmF3FSAjc<76*ZAp%0e?2B0T08dFD72`ZjY&K!@E%StnrOwt5Pj8dN z^{NR@&dvhH)e(~`(BYEm)bu!oImhaiTBNRu%B&wWB7l12HE9MnO*_CNCz{FQ=kfAZ1#lho_O;#$VA}_YIGN}5wwZL*_F8n35WIm%= z1ly;brIX<~>+`-qyM66vu^=Ts33d2ulf@x!1Ol}`@2LmI@*Ju*w&hDj-p)ue{szt~briXPG8cbHM2h zdv`qG(0e!Smg8AU{k<%pVU)cLgJVyb4EwIcwKVI!ZLqneqFYEp|d<$7%cbrk%cg>seW~GQ>g12q0=qfg;oP>?a7i zB;t1qF8CH@zfHpk5_~<8>H>0+;)U-6FJit0p-_E|oXYtp*SkI?Ux40}5lnT_DGsV( z{klN{)|`KZ>KlBDX0LO2D@gx-7~mtE1LQB<0D>PNZ_&ZQ!NS}eh~9a5eT7BFXEPeY za&d7%E^4!XBD5p$jSfO`D*5j;fu#;Uch~ojP+dVIXI3`f{9*9~ z%Eqm8##1tMaK+g@N+L4hxA|Am4GL-Sp;zT+i6pA1l34GsYNRg%?V$|mL5+=OHs=4w z-dFxr)qVSJwj1ddkZu8`1nJmYknRRarMsjXq#Kl$mX=1kQ;_cN?r!#7JkR-^b6?#5 z;GWM%d;x3DHRqTkz9Z&Xp$fhnP401I?=zLNQDHT}T?@vGy4ta7RFQW`Zoj;zfhB7<076X0!_YRfsmcxI^b5EtujN2U}Dp^{voiF#kTBMe*VbLT$+zYwoG|-7t zsojj(RmUnI!tg&F%X=Pg|4~K^D104qLXM6%^lv_*a?q+SjW>P%5f$^T+(3Q5n00&7 zJ#g;`#tH75N6$x4c>b+!r_f@w;khqJ=L*d*5r;v*eos!R?e#3*!_@VN15fz-kY&-1 znuBgv_Y_c|t?#w*5hgjPLw_(*^J~CsRnT}ip%>eduB^w|zUbFtMP*g(8YEuc?!n~l zpVjk#g)fnjqX}3=XC0Eo>lv*Q$vMvXB0)8bD|~($6VKtB5|U%8#3%f|b$b3IF^|Tq zNj}pT2tWmR{--8^qt+EGpw}9{qggckRFS54ROLO!CoXK;BXhH)P`=d$&haiHW9T>m ztgBZE5r)VEpYO}h_qd+^V^A0PooTcw(hq)lZ4PHs z8fPF21!+Q(rO)sau->djaqF~v&M~ExPE}gN0pk{o^FzYC%!aWG)PrL_wA0MwGrY#R zzE-*?F=5Rw&bp9=YNebx#Q>yro zw^)p>BIG&<=HMx-ynB;tk(V4R#~6mrCrA%}F76ycD@V>8=5>#V$;GucIIiU!V%G0X zW6MTQ_|~B}d7zgz7LOy>HmQ=m?*6h>cJ7Zc%N@7e{cRu-JTImLsGd14g3n5b;DfA& z+1dLF3&pa05>vHiIq@tHPRI}4^W>J5?xR?`S|qJ|y4wD}bJ~2jUu!#q2y`dO-~jh! z?dNtXGkY^`rI46A=8BN)A|e<#yfM@NS~Y}Sd`B0V+?_BUmjA859AZl#=rPBVGoYj+ zJJ)c8L4KT$urm95v`&bNCA;P*WZ;Mk!*B4L>om641e}nloOU=psNzJKwh*+<&H^BR zJwC^hX*TP?B?+{gv1`gw3OiBIbWALA0P^FhMqCPvXibth!^FOub6v7#gvq0EcPlLat#uaIcl-> z_`h@ze0aMWo~`?m>f0_iO`zP>={TD6dyb!|pzIa?v;_F{3C}7*`^!I_!fOo=jc`(u z0q}~oWOu^1)$8y2xPdp#i{6o8x$k}JMN=2Ck--Dis(pJW%t6nFk*sw&%xNvND6wDG z;*U*htd8Ct;X}FZ79PTBm8|J9=6QrcTpVavSbFP#6Q(&ZK$Q|cdG4FXk!Mo37U-M95NU*BM&;>uZZsY0B2IRx+XnnaYaWM&@ z;Lucxv@2XpBBWjnWGt*H$=m}bQpc9cuPbcaGp|z7 zf|RY+ILDoz$DLz#lecshv9>##OZ!g}QiDs=>yH0yxU9y~;7oWTG?53UVF~&`ZFe4B>n1(# zL2KbcNr2b1atypu^1>zs{d2t!&Bc{sOcQUo z9LuY7zViU!GAZcOEpQF!wjeIg+1U6kU1$I0eBNYVQNerEj(g(IC)l5uTs*qR6@thc zA&ID>IQnP^h9nA$QtHAKy-kt&*#n|8eWM;UMtEBHF0iTT(eB!yqRz#Mm)^Cu+cOnC zN8|kx-8z`B$Xj8e3Q;g&$(i1Rh7g-YDu#hN-mwKHrg3Rl$@5iHnq)3sH;+t18txkb zd*oP#Gf~Qw{`dGGwQgG=+0(gLzcAd2>iB@u#nt^MNg2uB!ZFAc-N5;fruMCW210pd zZk?9>tFy!0?Z zk!YIxpvZy5b|ZEtzjkG%7YGD6rfOUX_%I9~M4U$Cq;Q(nc7~hZ1yh_TW}<@ZB;ZuY%%mf}K$c3<5W$Ze z8P(_N0s64MzWdnGGnH$EZHTDceh}BA$V%-Ot)#Rno>5m&xXey@knF$!NATtk%e{UuG@a8xyxMbP^Ycn(w)amwO#Qxy^#!~4(dkP);pi2W z2PI%;6F-nDC@~{XaSlziD-4rNn(l|P0?lHv>MYMEbljtIv1YV(PEvrqqX|@!0KdbsDac`9u+AJ<@1k*!8_e#>GngKOY@Ds+CM<%iC|CY9^D_4)A(->Aunu=bgu{BZ2Fn$RyPX;I1(@P0KVM50S)2n-7!%) zwDshB=Q5BO!}THR_F|eWtuj{#q>Y6Qo*SBWKK`tTG8L}5OrIbjH_(iRLPftE{Fc87t>>;Iksb2qU%l2MJ(CNht z$1d0Ef==pdhVaE^q#)3ODz+4_eYn?K%icID&#%;F$m=<;VA@#J_I{-G7VH(f_5+EC zUKmmvoi{aK}JY9Zm|@$OpH+U1r{o4hO0hQIrMTcYL|c;w6nX zSby+ICl?aCxoBFZ@w|#QH7x_;E<`zFdh}}HxJQ^hkWbQ$7JXj`b!R4o?I2NWUlAWpvbhwE-Mv<-faVeCaY1N ze5Kj`IV-el6Zsj>Wpl1;L^4+(DeMl|4C)!(#gJ*>*2?My#LF42Q#y-1D?sWUY4|0@MUw`v9XayJMmq_pq zo6&N@wB7eT&dL|Sf2Ee5&qd6wdi^h3;DB9{*1ks)@}CH`ty17&Um?6%apt~iU75qc z=ydOV+eRUVnR2k!^;WsB1mg+Pz0XWXOC>o>6j)TdeqTEH;)Nigd!Re^$?Y|*J)34T zVs$m1(_w#cF|~BO(!UL1ULdgGv|5m|Iy8>X=!X`Fv+hlaNA&V&^a4o_gF;H65I3BO{%{d%FPG(3GVDKR(u2G_ z5kbhKyJp!Nyz@K`ljNJ~Sa?6{y3l@_dCZsEurlagchshkX)I<|XakBW=$gG5zO?As z+M}2jLNT>p;xtiY^e5K6t7#Rp8w35%dtv%3Nt*0cyRP||5>bE37uyetQ} z;LJIg&oFxJY9w0sZ_6SLwaUK98)z&Z+ocqL1OLX4h4h&yje+K~=Ak>!pA!Q797k`Y z^}}DYDA6UWtZhe#mAdZ#iPt?V{Y@%BU6-(ZRTMu!ti5P zfM){-212+(?M?aJ=-5wEi?0(6eRsMg_PDK~cth#f_d07z@KI&@(*58$3S)IbbEWNK z=VN&39o2OMnrw5t;4dGg1~x+3(S&XasdfkpEgfRPgNF3UpT&>QFT|T)wE@ij<-QY->FDK3Cl^!{UnpO zgqpxH!_~8CXhu~q2#iciM`<&D>SQ%C(sFMX!wBENl2xKgQqm~7cWtJ^n=ELwIuX8; zPfKKnB&nmI_adbz8>SM6B?J znc*Nnu-OqW&n9I{cxbrnRQBSLGh> z^QTABWMZ)959;3{VtYlaS4<&!TkDNS1tz3PvfdNNvr9}Ztp=Bf$@UyGqF2yWiKy5I z#w-DVTG3YE(@iFu5rTz_H{J?|AH96Svc9a6c+J}9$8PVt)4hpTu>V&GnbHRY zHb(0usc2-@s+vuJyz!PI)vS=(9CaCr^RC%W4V>|hu5BI~_@Y1aweypa9SSZ89|5{5QRa<=L%BllBLVtuK)nzoXP#2<_#*gI3dO$2lD{CN@M-rq$y6qf6 zVRB2ik9m0}&1!vrSN>cad_B5Pq?an#ah}WHvC>cOD)Wk;y~+6X2he{Ve*38!Q$h+c zQ@Uk2Je5=AF_^X?fpLRE=*xP%td?wnRDe_o8TX{k^Ztpq(V%=DkLm!#H@oaB zYRhA_iaISTA$d&od>kv+3+ ^m(#!8cZ`_d&N!u$;W}1q{vu|@29|aV4EntbESuO%trgarlK^`jK#TW zix%YWh4i?xW=CI~Z&zXij-WQe_0_4B-fYB8mnV6TweV^O-A~T|HuLcb0H1chv1vJd zWvNJVN-y$gtD$nUJkdwASw!w$!TgQ)4RGxu8Lcn~bJ0S#S`W5Yn=;3~Z;~ep@X!-U zp8iY4Sw{EaIIIc<#P8|6pQfb&(}E()#u)zlHz4pJax{o%O|Ixa&j1hdP{Y8>$ovu1 z|BiYZx*QHd`QOR@Ly!M&Xm*`y7O#c_Yeh$pKgn+l(7X5+J~&cUwKsNQTSIO+C34{A ztX$=4QDtYaKR!}bL{{e4nmTkNRx;}0YA3y&896+-^cCx#^RUR@=KNdafYvd-{7LUM zQ@LrCmCezu&9h1RU3^&=Y?vH)n$?Glv|rxWx&5+bzQ| zvl~^{u;vx!l<2jSR}D6)r*1M>j+YPXkh#x4f;M`@R;N1hR=>S7iUZmyTyxqCfCo}Y zN`-Wec!}oS+}F1`PIP5IYaMR)-;Y6y5vAg$>36c+iW_)qSNKo&;?GM$oQ}Umo~aF; zVJ4MqsGC13F)MHlAAR(etta2zy<0fCL$TZie&!jVp&`U8ju33yBA-dSt9Lcsa`VWB zO|ZpPE&CpwPh|eIpcTOutfL0;s4ppVp*8mAZARWQ3MNeRH$jNJ<+gsGw;EHu+pava zSp`kbw79-HEs)KB+0){pJBzTH&bn7^kui?S>F=J!3cS3xxo&;n9Z?wN$Ep|6zcjfY z6XG$AIoBOGh<*OmX_1Kc(!&kEYep-!``!o|e%4Nu@>!>+;jrmC9D`9{BD6%Wbb}zb z%%q~Bcf{$c{_0i36l|j!RtInN9{Ax>9k0%-K;%DXKo%tI?nScbtta=+)Rr)m%Ew0w zQVZ#2rV&j=?!-BMq0%#BzW7RBQAd91B8^3BWST4DJT(g9i)CpnY> zP*`5ZZt6qqv_8Wl?QWRzxH8`>n>O{Z#X2tMdH&VL)b3aP{!;>r$u~D|ju<@V(%12} z-%&?Y7WK5s%iXpR+HczojkKIA$n|#an4qQz)cNwJGdJ4*@a`5LgWe`w3eshtZZ4^O z*{GkFoXW$-Yyh-bAE3=%M`4yzMN71PedCSGNrlAlh%5Q*G+`lkgMf}j7DXBHmSsxQ zqf)y(&S0=wEYDvW?)O&Y$GM6OOYOS1J-x0){=0xt?C6}5<<*9JWoX9D=~(`&!ID^M z3F2t)wqMDml!N`2!XN}^)M!wx!+bC?!W^OpjXFVb-Q4deQLCf$QH;&VmJ0m|?=6=H zDRClh9{G~_D5`Xs9?zJFT;$#+Sb)u4WsP|*V|CZBPHs2Zwx2B8VfjeM3m0$6KXY|6(3yD zS`HaWY!o+Uw154DP>$)&&@2~e5hvcDxX)(cL$J$Kd?2k#y0674pCJN#W_at^P1I{B zn*ip3TJH{kCO;6>sM%z&x;!SmrrZiJ{79=@B%_ez-FL^-5+d*(xiK6BegznkL>~!! zWW(=1G7N)OKjb26=kfL_ynibH%9|-6Ewsm_Ov@y<$R1-GL=z9bXtn8LsE2epJ056?(yr&CIM zi)rkMe2QP*ZoW$E!W*V(a@)#uDQzs5-P6kFOyW#2TrqJ!-Y^k6GV`Jt=8=C_s-_V) z{+DerIlyjL(Kc=c#mRuZIcD*Nd&XXQ+UD{mWG@**rOrkpHnGCk;Rr?Zgqz-}d(?i> zCp;q_YM7z6YI*g%al(OGJU#3THwD0VbikRj5HYlWpj7qUKDlW71$|pvqn(43c!emx zQucMjb7Ct9ODMHWBc5>EYr9ZmYo!y}{(~wnC)?fFVx|Kw;ozT>iN9Dam(ek?j0rKK z84Ztanvvwv8vaapR9AtwCf>kxjg+#oV&VOpo97mh z<4|U4H}RC3z8(ZS=NMAhr1hD+YiV0L4A7dmKDDs`Ychki!Rzrc)N&A|7sDM3-B;nH zURhT+tQ+gJ%?vXfhRG-9mA`X<(AG%E^K99ahN-5hEuigDoruj-i*aT zeC#Qo39=|9INNKBVBa0E|EeNo{%zv`TWa0w6F2O&mSpx5F6oIw~F z0xrn0+fM>pK~#U3(f<)Ar#s!-B2fCsTtd5?JGwR;kM8qAi2qchtK8RkGb>{4aMnr3 zcQa{wO~1sPKD|<)k^1%?rU^`96cpHs4WoR6_!)=Ld2XVuVcK(fI4oRaxX*4 zEu}RAfj8;L__U!pR?Yk6JR8myl=pruezxxNoJUyVu~>NYZ5aTCHJDn7Kw-WGs(qY;p)4)Nhh_nmxwa&>N2W z|BAV#$0NuFfr(g_xBbvZE~mne-QMKA(0zn0#@gKM#+%m#h&g4VgOLpzTR}C~h8`_D zlweJo&dYQkIiupCAKnySsL5P@i+l^ln?2(f9JR=yHNv+2>61%@(r^SO zv7y{q3XpKFG7BRYGRg^g-`AO}_lM}WX*AfTdHrM~vPqkq*Nth?mDZ_H_lS>t&wTrC zc7gJZH_1n@!+~9wKoGcu5IFG%>`?^BbHZqRkp~VTK9{5%-3bx06+v$ab3#;_Wp;#x zVcHb?nsDb6X2vhFm~9Q@F5+_U65E??_Hhfm`=Dz}i`SFGcmp&w*XiyFE%!=2a)%+m zn~AL!iLG3cc$?8bDIp_pqXDMV^*opiFrDkY8CxMyy(@kP%wv?`B${PL;zMQDfdVCG=34=6t+YA!rtGk(Q{dm?Cf9nJ+592z|GynMD>cwNf z=c5_LIQVD5RCgLMQ4YY*u^qw+$PBMCf*OSRk9OSvtve^wB}_vKsZgi%SoY#Y(bs_s z8m&F6geqT0ia*3H#l;zHHzV))Wf}vK2Sq?FeUK>>rsP1(!eDh2v=y~I!#YpHOPUdJ z3-FOf%*tHcvWX3IVgd{qA=2hTV#~dFGV6_F0CPlm9}bLC6#>^rWn&u4w;1Pml8K@I zwEP|)8fONn%pC(hckGP(A%zR6X5Lt&xOt`jECJ5bvsaVJoD4X4MS$yHOaK4?c464r z^)5@V-pSehMvaB*ccKwGK3`ZMa_@#~rj_&bFwqSYC4j{&O@m(nO3ob62}J<~6u#lO z#~3a7`U4ATS+n80_&?saZh!&(ID2+AwA1EPbQi;aNY)%vRBRn^3%CIPJxm7g_(jxT zy-S)BNN<(hPbe2!4v@{OYZJqSE;=qHFHg=fH!*9>4y0VA^QO%^Jkv)5BiBm!ID)j_ zX?zWZNrBy%Mvr3`=lFUD*^koW^?u@yyPy_1ygQ<#lW$os;E|t%VOYV9+GAh9TEBz4 z)xdIf7H;wm#SgH)2CS;=Viu;B@2AnO0-o6{ClT5^jO3gOE8l7?0yyi|mWUSb^1fN< ziv#9D8#tE}DoPNf7(bZQyL`(=OdULV8g!l4yaYX|C$-T(F1wGj-cIosARuadSxOz< z2DZnhSoBUO-;pheiaG2pCyZTulf-2h^41l?4Oi%=*!`8ZSCqE(D|v^J%wm%M>Jeos z8br%M`ArnY3(#~U@T(6tn>tMGh+Q{R=A3BW#iH2CdojxfvpFFLb+J%$q&vc&a7`7W z&6u$#)*e4J+kr&!R%x_=-A!J3{X%?WgwUsFi;?JnIh{eTy8TmH`=^hJKl1Wf0#F_| zNHgY^K6vVkVr7krv&d^r7P-M^#l?o~QtEC^k$vnYukC zyiMbSy}N5FQDwZ=dO_m)uhcaDlii#W!c$Bw(mCg$B-ImA1c)|mt86O^F_W-ptB|kh zSnk&d*HCfV|FU5)Ym#6tYt(~V*{O$wD*<E*nnVvKq_On9twdgAh0YwjC!W%o1+>gpl-; z)(+Bq-)Y3)3j!bFMB{-4hdhLOT3`HRLf%eOq*H>dBHLoYNMCSK`M@H}Qz(4_D2{|! z)o9Pm{TRX{IGgP(O>DDmy~)v#;mj?z3qK@rJV_#16BuF+u8ffd!WOu|!6cx+`1Efm z!!{6b)KZLe7CE?5A5>U2cf9r=82?UK7)F2x#KE>)JWDjo)CepH_9OZ@um81#p5Wvb zmtz3U(BNIT1^tz1lg9eNUY1~-fi8*-gDC>jiy{S<{Tp?8DFN$eCg1+aQ6rsZyICWa z?q18+%7DLtZCe1S8EK@*GMrvign^V4DX1Xh!FMTXg8jIU3Czf}-(Lg4-OJAudyqy~ z#_?Zvp5CbD`+hz}KnzivQyUWIqXYivWwe@`mDy?Z{58%F+4gsiCyqDqvN*0|vP&+@ zsgUL&+O;2#))j_~p}C-kCsdr~T4;RCB;VmuYKd3>lrybqROQ#%;{5y>Pmyu6C9R_0tocrFd2s>@RzXG#o1kED3?fgARYoFz4;XI!wVT*0b!E4N9Q(|6cES9b< z%4!R1^zD!pG&SAEqc(I!5FC%m?!l#Y>8F3iD|TLVq4zM(%(n(Z2R8F|};)%Q~J~ zn!WFQOyG0rfo0{xY6Je=w}RtIWf#p$8MLLrXKHd6-(KmiOAjn%e5HH=1Nn{tw)~!! z(x-I>+&tUWT#q)m=r(u-cmWQ-i54=heiJ8U&U4%UtTFZ-k=kfoN}x!5(4^V8SR|n7 z+Goy2-1K7UNx5csYuftSBU=6#OSw(vqO!kDca{Kb-oDuvPp|ck4w>)zV;& z4_?7BYF5aL5-)SV#bEW*h^MjtEPU}ggv*NSlw=)xq_cP`nc3w1?Gy;!+y}lZ&HEBw zdMFHE_vXAOsiN~zwFJ0>8*s;JKYa_v@qGvJ=pfh{XpzL~qd)Y&KkIcov%f2-`O=t~ zqVO}PXJlK#tbT z>TxF+B9uF^&M|AqIvV`WvWjxLMum}EiBRWGdvLkNoR*cs0-C?P6IOG6f6o1JwWv2I z!~0g;fnJwz%YJ`H{yrRa<+UsJzId3F` z{BSU&>EhDUCT)|oZ=_MI&@Ef0YUL+)+8G2;dGtVhv!04Z9}@fG__;m3PWrk~NSJss z*H&kHNI!-)^=R$e8hDx4GPOxd7GmGv;(8`dv`1&B0w#aYw+Iildb)vhu!IlW^n56Y2Qd3ME! zBX#=z116Lu0YukA;f~ILJ$tew_Uaj#E&Q8qG@ioBgSVuax)Y#?RRIm6LWHskYZV2z zF+;i7gXG)E1Fjx;CmoqSz2!iYm@HTIbKYwK5P`#}ruRUd*Ivxx@*Ai_$-`eu-bp)# z#v}5SyUDA)qd^McluT1hgztcDP$4J#ECLht9gfr!-yKN0`GAS)p7!`<_e$Z_(AeE5 z^GIAn+>(5VV7oh+-e&N~ax&{IzRI7rjeS!x=j%<4Vr0uboi& z3(KTU=Z0v4CJV47pLb)UT?ssBx)0`vMwT8e950~1%aKMlOb4OBE+cpa#Q=YPc(B1O z?J;}@X)k7q;=pT_=0V#3C$VPx!{?R7gckhyFBa{7<^<7EIt}nk8{YEZRUi#KK0({JMX#BUZxeZ z$>vNKWVb~ug^^0$buS^TMn}~&kT>($v?X|Uu(CIs?|{DlXyTo%cyoPPv)?GQx{o}1 zEi~yUP<8YBcrPkPv8S$q_{ZAmykOic^``xR>fh=qZMq3f6SRI@B0+htztD?kj|E3l z_jH@jX*j%|bHmx}x8FJx{p13cq5wdv_a4b&lsdi|&LZ|yQ+PzPT}pVzp(n=PZNI+LrjrrPnuJHXyEmr$Wym@@cP z+GkR-;*XW`*w(UWWp`XIv3?zv`J*M0E4f8K3CHzM^62 z@e^b%v2mhxcqM;+eEE@QS{pNo#B8us3eWg-Obtd(WX*7#7aX|%SO8=QErCep1mfn> zIwR5dalYDTfv>jk)@$ji&f=1B)Aa>H?qyC}y^=|xTVtKJrWUqLAK)rl(!`s;^ zy4fm8V^{e%t-j9j0dX6KVR;^(?JXoQR92wtbGKghe3<>W*5!Dmy$1`=@a3HwHvjO$ z!xobfd3C+#3p<&sF6ehmJOS_x#Nue7?si&lEwa~}+9GPiw44%ES4b{;KMpSLx-J$b zeboI~tTs7?qxVQs+U+`ewdXB`<#@j~)ncYxWmd`2@@VI0fCmtR2?o|@XPBV+PYMI@ zeJViQ2t@*Xoq#j=pX86vA3#~W@>e4J@85vHuL1up|9>C*4~hPlApZ{zF|98tBBdy& z($`+*7;3qWBWs9A$jeCv>&j}WX*nF!mLHLF6tc5s7)O5y@OkgsotEaV$A6yp3@P2l zH2efZmY$2r?}sV@*b*xQu!Oaf>xR9?cOH9 zVV;EvAteBU9xfo$MQvXj>)G3Z2(7=r;$~H_U+QWwB()~vbf}L{#9uq8B8R-h=8?`| ze&Lq&I6d2Ou@^}yxVYdsS>&kDN0e-Z1xp%~=FMvyfw zYW<^sd_vPRNw#xWrdM)0q!!4ud$oRAF`%wTMFBHZOy4mV1LiY4KQ=bnT7On&bOpT^ z7ExBa6q4p=c1B|=E{Qc<9*yZRQBgD1?1R<(!jHa+9~ht~7gTDwJRZT2^_aH#_1nC< z)cua`&7QexSf~rO1Q6JyG~#noQP+2u-n+RH!Vc*g$B5}=!iz@XVx!=y>6)P~t7%#b2<*;_B=_F$9of`nVf`C#2dzwJrz*WojCk9?Mr&*O;r_5j?O2Csx@RuNb{vx`_XZ>Rag5D+~ zWOmzHMMuFd7}jF!xp8$S-mjDg*$;H-98;ItD! zNvc#Alo^r03i%A)({7^min~ogAIJ4{-52f)3*L$#-jhca^9i_17{RkYyBUdQ4kcuI z4%}P+X{Vg~_>nu^G^XITCe?IiVwS+z+UGBYlY^Va@|mDRmy!KZH1C8W8aNas8pOaw z`PJYzOrF+l(4Pda;SHVcV>9LU(~zK!nH;_W(qe#X6{L!O!X zjZR74)r6krOH7u1yDbSm(rRtG>z;}JQeytu6&_P^gnmGXn6iIW?&GO*lI; z;^Fw#YQRd65|tFWerl6%Jm~eCqe`Hp5)B*ZEHuo`I;C08EzJI|tX6IQ{aj@5t8h^g z-SLELWecCPn(;-*BIPjw5L&CTJ(kTy?Ja;$V3ioP4a$(|ncUGa`WEB9{?mFr8rv)` zc`_Y~oAjl3CZE0d;!t9}I#RCA%Gq1Ir};PLO+sS z*bs0$Knx8r>8?B;6Ivz7agHD^NvgW9sGQ=%u@K)-0~;_})uZSJ#zNf#7({b-_+E zrZ{VY0KNLTe?_3RfwR1Uyp6Jal)!q3#~eH-DEt2J9g&k`l+?qc9*b7HPD=^-2S53z z$T=ems)?V^U)0kMD}HM?Gdw)7al5UtG6gL{^gGxj8%vx=#?ju+mX{>?I#nK_9F+IW zwRwoXpV)odEl;#Ox)oK7%%44|^MK6h8ngHx<$Bj(ps{)W)>AOLT3=VSFXXnG2 zyD%O1-!)anQt8`BPk0OFfl%jhcza?1INzw(QkY&B#}93W1Mv2pO9J(lLGniR9_)+0OHp7@3OxbQq&Y#q`v?k z)FoluD>wKJNQvQG@YvE9M8o(F105aqY*%pxT0%6(uN`EWwi?Dte{Xu2LdzeC@RzP% z&k6D-ivulE@9E{&>1L*{REKupv(RVRCH2hzU$x-`@b^`k!0ebm3fZ6AY zWy)ExZqA#IB;oVbr`pB~ybs;^X1ovb_P0y48#H&Mu5)ql^#%F8^y15Nb=PWd^10?3 z1y|~^*}fRhkfkL!XAL!WbahQ#Sx=o^uF(~+;98r%!93EC_30Ll7uG13eMv}3dE5Hp zTZ@;G0|U%R{7IDz(q545S72*ghQ5Ixikd?15*xL#v2VLX4WvSix-3fS?Z&WiEx4XG zKV~{M6^_kAgl^3{a{9MCuv$FQ+FGcM*Dw5~Dxa^<8^rbOE7cAQR&vFfGPiu0LK=#p zh6)l$1nlx@^ity38al4&;eqG+aLiI;J$z;jgJ_(&9>~~9q4nCqTjX9kcYH0c2xLKe zkix=mqhj*`p|pb7EX7(?!FRL#hr3z>%c`4fjuW*wOhA%PgRl5@O_^Trt(#%%o}=dW z*Dw&+1PJw{`nD-Uv{@**8NA`&4{B_dCc0EaStz91#bKPjb*duPLf(JN-dm zMqogWPd5uP1M~3snETpof_Kf4&!{3UDZuz2^i91Mu?Sfkt?yqZbV?@zX*Lajm&$SI zumSaBARg(pKSOBvoQnIo{9nKa32tqmkAy$2-q??{P@iBw2Rs#Oz*9k``3~e7TMKNj z*M>^qf_Y#SQqs@DFh^hZ7Wm)>p*B!1xa*5c0o0YU0`{|!$enWewJ&_}Vb>(xyMUY6 zQFR;w>`V@|_sgSqy~|DF>SucY3@f0_K?ZPL*+0G(gApNUaxaHg%aiWys=cBH1A%Er z#Py1FeirS&0?^$^>=>%(-+*sF`&GpUh+FP9)IV;F^wiW;)l+GF2C5EwAkFN~lT(`m zPQ|XoVju)9z<^nP%Ef`az}`j=daC-R-;H9#Mxz4Q)E+DpwM9tC;&qgR(kChg145#} z)IKv=<3T>{;5O6qLPz-$L8VgL@UMU?26SuVJg9k-pu-VaCq&koCkfdnJf2>nWv2G= zQ3eVUkMvkH%Z)p2^S~K8K$=+r7WoKI$o57=3XJ~0wkPR3#@kBAv{kUajr{_AiIysK z+Y&$Yc#sE_2&O*edI!_uacm`E_CD^cnv$5y*w6v$jA$Ryhoz>^MB;E%43tbt{V-sa z%zxkc`FsYigF-QoS16Z#T6ePHd)*ETEzhpsh4@qg?&9F>7#}zi$7mLn+3K=(yBE^M404XY4xd+qFgpBX2 zh<B#iOyGRh23k6`2^{51vs)D!4z}eCPs`ncyfuAst*f+!9U}ue9 z>LBrJI;;xxIRJ+h20dDDh}z$k{*#qNW}t0dau0a!uK+|k^fj#pY}B-S-~0NDz{Zd@ zm~C}6cODW-`mS7mSqB4oF_;~IUAvHikFm?-VVhw1rJw6%wYW5}vFz62`$i;IEgc-> z>FHOpR6anik`@$-iT;UdIk+_f@Jd`xX~mOs6#=%Cg9%;0_mWi&Lc@Mp_$34BHc{Z& zf3q@}zHT{}=TesPq2-@L&*@|03% zI*wtC6M{O_cSR@&0>bdqa~8 z@PL>qGYq`EyF%jvVS16M#kqb}l*l?S{Hai^Rmm4|Le*P)ptS5~w@Rds7H|~veD<9Y zJ{Vvd3QnM~K4E$o`zcUa2afBLqR^;Jj&s>8R3ZTr(EzgjRzy-9yX?dA! zVXhMJaxs04_iY^sI@(D+-{6ziN^ii2Pw8y<%h6{LCW7nLeWLVap{`Z2d~yWHU!3R^ zfRQXOwpXbg3bP3y*u5VBqbftHdi&L92E3%#xD43bfs*gHKyuU&p{2*+i0%#G5hZG~ z0^t&v@sl2&bQvXq6yrn(d(wi!($vST@fIof&+n>Y7&_vwkR?bsP-5`e5W(T(G+!#g#eKuFhvWP6sWQ`I75ls`^g8vmQZTV zHiI_lj|9;>oTt;0cH#6|10>le_jZed6@q`P9CJnq-h6l{S9zo04Atb9Bv6d)Df7Ee z_5y{4qmoMcu?;5w%Rdv{k-5!Sv8S#y>!@@Q~&DY@T z+j{msJ-bmt9^1WP5d*PQFP9QxB~etiw)FVyujj-fG*kquaw(w&p8UcqI=_DL%l!tL zgLrMabTnT^<~XUBmHoY9L>2a?%I+A_jF1fh-`h-UZ0W3ku41 zkyb>ox9fo;FFqw9A|rW`HfwqDZ!sZZT}6INDbYI3pjbP1<}HX`{2 zp_bnq*eTNaZVJn@H<%(EsW`7Lh33*xiuvuw@lBqy5Gh{GeJ7N}wfKR;NdvI=Q+(j^ zdXyhxi90h$N-zdFbB@#J~063OVNC4%;6RWv-i z+^>~yJ#0p9*qx*TUUS!5S_@G*yFfi^b<=q4!)iPh;ZK(xguF|BCI~Zj$*}<<{gl}K z*{Bi;<3fdGk5E`GT|B7&?x!lnct|kFJ`2LEGweL(q}kn6#ZbH-eYz$9KiZJJYQC(; zU}rHG&ON`mZR7>+0r;iXEAm>_X)T}7h;OL*_UuK?I%y^te&8NTr*TLtWD>Cipgs#= zX`CYnN2r&H5$gO_#pj$CFZ<-eO59`2mI3@o?<`V6tgD5CT-*Hz`I>*#R7j!QEbF?3%yn4YkIm$s-l~ zfM;PF48KX)N+Yb3oc{kX!{H;lRtj41WMNJr2=@;2N{Bj2g&a#_IYtr+u zTlyay4B*f_!rt{yZ+ftjzsb+ypw2iH-S{;F*jO0mpUnmj& z#;L0Dp7UMIYF(~9(VwlUmV5Ur)?6p+spm^dS{k-)0jDWASOuVK8`NIKQqq^4 z7w5hB6ZCFw8_&kIqk4``o;Rimq?i8AfC=qTutc?klj`6D3+z`(f4R;=O!Rn$N0RDv zJSt7>$B6s)3d_U zQ!#u(S!UL?45))Q>NXL$53o86+_VtjD;Amzl*$2K7H5-3EfqACTgb_}nqEDK(gZ5% zMl0B3Mu02#Ked7|N}$H7vo{F-cpsRH-pI={wD)j2ubH0C8!=Q@`H+|TNaN!J2806@ z9SlHI5E%XHzO&bOd1x85&01WoeFLxk- zfs1doAp1e#xp@Ob^qk#mLLD4hs`U?ha^=+A+`Mbv;6VZ2i3ZB5V6ply#DQwLecW32 zqes@_CEKi;sgmci)?1+?G~QKTR*r?8hfdAdQ2`?h0;2*x1p^!M*C*#0oszPMajEvv z=nv$%i_XY^{V;s(CmJh-pwh@SG8(X;|1nk|ur;>J?es|$^sIgH67$0U`wTPmt<@mm*C^)j5xm;kL6E07*Z+qaN)a=^@5PFib z>dg?wJ;l?eVWNPz;fn_(0z-Uj!S1uO8!D|FJtV8myUSuXjqtrQWBA=Uqy6*NHa1h@ zrxC5e0Q=z30o4G&eo*GmX7>P@=-B&_rxGlwcIi3Pc>*kpqc{T=;1Z1R4_z|>G6_?o zJ`LzY>BWCvW3_biV_=T2;}ep9gRRB@7Qs+D=T{3aQc_4V;AB8zf$+6NayZ%3E<_>8 zZf-UU^#_qU?rzkIDI&4`4;#tpH4((092(vQ0ehy5ZU*MR4IFRZY9~5{+ z_@VvzlNM8>p{nbdr}=Lg0zl>8f;M1mN)HXab3@t4P(%mgeGa%haBgoK52uSw~-6<(u(jZ+*r=*gKG)Q;nclbT; zv);eqTkAz!Gw7Ui?!E6F*S_|?30GH@!@+uv1pz1~;M-sA3)h(nKkb9R-o{hD+JB9v?&Ne`wc9_Z4I@D&Jn#U8w_3ZzV zgH9TdBM40??@^8pbg1JcD;rziGV?&mgYFSn>st&^JF6wx3H?JF+bnTe9dk%K_2w@aeVLrv;gE`RhaO&HhexX-|eTQ zq}5aE8VaIxX8Xg|3_G^M`2^48HgVB;{*XT!p6-#Haz@XVr4S)*B3Qv z!D{29PF0+UphtBe(=g=0so_yEk&jzI1U)<+8yR8e;!1nvkVOO;;eb*}LeVlr+&^s4 zUCTZyLz>11@&?pJjiT_MruYf;zWaE}$gI~`{IFtM`h9frZ_M4L?(Fomi79pMKZO&J z0`>u?2p0cu17Aa{FU-!E7iMVFL?fk2)kOnTGlkc$o)AC%PdOMd!1gZbl`%ewekczz zemFjk2*!Tq#c=@ts+7V-KsG-$Rk8#}my@FdVs3#DAnkiUaPbYGoDT#vof4W4<>hvb zJ;&@got+gGoE#XJ6|jH*6P;6mb##boPW`8-dyKWUa!yXp&k_>1(1-iA?5%Qoxfpy> z$K|fzG_1|0|H3&e4p2Q*;jR7S4LVMtB;4}M*E536puadmzoc1U3@6d7Uik!35 zWzz_(s_Uo-!`XGDB4CD?^5C$Yfl_0-B?=_qWn9MJ1D;WDjP=j>b}|@0E0UfKmy;c3 zdiO;w`#F`k>&EaF=?>bDWX`f;J-JG?f3iQ)VOw#`pRhm28@0HQVT(kPaGDamT4>rJ z(tLm#d|Ej9rx84wDJH`A;)US31BT#qN15s4(l5gRy~pZpCIWKfK+1Hh-qkXN*1aUX z@tqtK4Yx~pJsgXsmLV$SalT7Noh0ai^`iQ^wtJ>WAvf@&0pWYcLvvf(of6IN2`}>Xp38)LqbF6lq=fX@x%m|xQc}UqpPC>B1T2X+e~8Q5(a!}><9b6 z;NX!MS-Or6lPt4ZmZ0D5?9pm}zKFum=qMK_=PM;k14AxqbCWNvH;z{SI>Us!bDDYo z8h;ZG9Ke}&e8ToIPRMEHa=AOSdDMtXa*zpd6eGY)^F-Vd451W^h=^&U|kYG@*HtaE`3{+4CN2LTu#$J!K6v4+06Et+#UbJqxj8 zc;Vud@%^m4hp0BTwr2R52{wkL3!2sx;bbt{nN5&4dG{`Bk1@W0 z(RmlDB`6wzhK^1dkNv74DoXi2n(XFIx;k|mBc6u?l|tNSKr6UZ4shQQ-~sX{*s#CP z!2D1wEUd_gh)hLu1u0^tPb?^Hp-F~}JPs`U`J1ww9IH8K_-B;Kf87JdQ#60aeCZE)%=q0VK5A6wN2GqU73Vz{NLyE4E)T~&{Ta~JUmZv*1~}D z(70vvP-^|VJEtDX;?~yB8rV!NDB3vu52;@zP`cYC(oh7kwMi%u>_Ui!$smj{Sk$8z z94(dF(!n!9_v2Gj0?KX`jpoHjX+qk75YM>*$?#giqSg6%AIroLY1JK@uuU5ArpCs8 z**<2bJ9b%3_hSQ#m(j6%yxo+=Wo5tI*h`H8(fa^z?(uM(5+JBn0tLQzJ-gmCXyPp* zWRCM#c1(yUBwJ**yiH4+1M-kE``$;jAHT^;^5tT2pHQewfJ4NZ2{ru|=8D-{IOa5) z3k%a`5u0w32|(Zsk_X~{*x^(ihIA^(+gn?wl0WrE)R08EK%Q-Ap}WmP!uR^c7OT~u znp(dCx`OK1*BPvZ{4$JSCGojwvh<#!=3Sir=c62E(j$T=JjzPR)ox!H6z2FXI zR2Rd?0AIuiL~8>MVIWHK(1UC44juZc&VqsGBA}xgLf@>$K9KVgg59K4fS3qXp&9P! zlf2O0dyK`(u-b=D1f>uH9tHUQ?ZgOHSWFyuoI-i25_Cls(9pb`-W?Ix8T#VpRsS1- za0D+zP(%TpM^=+K9Oi`|2Z^IvEq@mQ8~V>GBbDA%$`S)9Bb6C}3)88*zZYLe<-^kz zh=5T%TE}W}sTv(T9VFyG^n+b_rt}(EdK3W+ou-jh7{-QaAFYrd0sPZE6A<(Fj^bVD zmOx;)hSE|4>YE@o+_+>6x;R2`LPkw9_${pC$rLl)E34Bg!>7KR|=dEBtD!^Lsz$|!X5=#AuHYS z1l&-Vp9i3x)DqQtK!~1rAiN63lwLDHm@wdSHsjp}>6|p*j@?z58&xWD3JX z8wJ2j-vApdZPUb1jscZ{FSK2qot>3~pi?=&foJk4AbN6kiF~e4-zO%OasdIO3D6vV zO1zeYbO!}^#rNpO_^WAQGn+OL$zkJAKK@$O48cm3fWVE)b7>l^$6K3xV#vpUD&^FC zG}6&=tF|u{05U)~bbM_BJj-x-dvy|0rsE3aQ-Viaw}QfQB-8N%+0~VIdkgthUn&kf z6CY#v^D8y-px_Q8l?cQMa8p4EX+m`WscRNKw*rB7^tB&&7E>F`k@UbAxliKNGbNQC*`p%vaXM(IyQ z!cw7nDB7JFYVL>V3w>#hL zY%=uU1G)fnquC`;zoElt1HZYqvZ}(=h6->2NrM8cb341fI{OuDkBd*?QqKU{Cy0YA zEu_lR5nx2X^z}VIe0Zl`Q9=pq1v3WzPWCL#ZdWk2Dh2~BAT;E0D;(Es)BzFH4GrI@ zt8a#IBuD|vP=^4BYiwXZ)T{1cr8g4!vb^un?EkNz9N?mR7EotH$)oZp=wSO*UsVEb zxQ!BUm&TjqpAuk%0Hz5SEF&gx3bg<`2j_$kds_WrUUQTmP8* zo&zSIo2%PRhmVC6u>FW}i&OYsfDJ;o^c*PzU=8E%x0@6BKf#9N&j;xtI)I~AN9ZO+ zBHls?YyIDVTNslI9&a7nvC^xgQ?AF$Lqkc^#;g8=4qp(sF_K<4kPe>^+17R&5urG8 z|GKNnQl`TQ68VhVk{{m%)C+ADkxx*DMiItA;7`A>5rK6v@sHoWd9z*WlAr`A!yIx6 ziGPMc32T;oO@%4I4frMC92k}YbdY5N_+oZMglp=<|JiM61jrLPOLDk2NJLLhPk^sW z2cY)?7!aqh4grT3R6}r3*Vmtsk&%rmv4H{O>0<7nGLgp06!SixELlD*jDM_mrUCd| z9il@V37duLR2pjQHktrA+XOrB9Jqq+HG(I%yqv=g%ZwFPf~4cOBh-Q>FyxriC_prw z2*M!Xc|XVNu`%wjfa(Md!0u%rUsN+~-oK}!qWY*IILH8@i+c{P02TD9Sw$kep~>9F z8gJjGq@}HAStrN?^7273F!fs9II$stfz0&ubIVu2lgO3g|N2im+F9Y|- zQtNh&3q}=R$N2$qqF^z#te=1Z5jys>@P~)*<#(;~dkoxsX%ZwUA)FP#VnPu#@T|w* zfGlj8v`oo~0q~EQ{8DitHN@7H@|E@?c(@sz3uEZ5!k6^dy z(X)2x-2g0mFXFyW;qP}TJQjMA@9>Q4U7N?8MG8|_debuKqA%S4&F)Wh3%Q4WU9&H0 zqHiDTy@W>>e{U{Kivz?gU(V(BukWumDa3e1m{*eZMI3HZQpdm0Qn>0r=28e#+&G5A0jAd#PShVuwa09u&yIqN8z+tRxP9u?Wg4Lv@W0F{qv--dfQirE zQzj_q{a2u2q|zhG)Qyd~g_QLvcy!Bb2$AxH<1Wkz-AuXB`0$poqGr3yGUaqxk5a-% zWrjhKX8mZw!oLgAq)n?C3K)S6=Rj)LR}u{X*qw`uwr<8%k}>3|CP^9Sg?V+A2|1N9o$R|5JPgVc>JkPrK!O`6nM_o?J`^4?;Wz z(UWQ`m}4w$8td!Jv^khFBBFLGfySLhkw3y zeg0Wj-VAy<%nU98sMsVi`zgHFrc--?c;OEkOoYDiaa*quIMC}+f^l_M(I_oZJd3E;_Nb$%|fleJb7w-1}>xJ9402yjf6yJXC`T>^U} zNuuxL1@lm$GnIc%jcXx07vN(H@30Q^vzX`RJ@BD?u<%V*3V=i0O*JLlj zMVF*c=lra1GwDf>yOY@=d$oquq|xw+6-Fi5iv_AhqzEKWsb`aDNp48EV`&L~+L}id z)F}PbYPeHgb#u>2&|fe;bqaJbUK^{LdR*Cc0AIZa9>Qr-&ej zm_xtCh1K7>@%tuj@sEUBibkuk{pDral;BTxbaBFfxtH*3;iwYP%vhP2#Q&mGY}$OZ zDnkk0Rkb!}2H}-{#Wy;b>d<5^qY%D0j}%29HsDtAd#vyMKBGEV4$n!J>3F=$G(i~> z9}|Are@mSQvJw6X4Qpj&!GBBhp|g$uY{q4A9o*}Tp@Nt>UjN~_s+LliWXDCcgx+p7 zR_TI0>f|ZS@YxBl)F^uG;7WWrp}KLq#+9rgSuD!{atF88XXCmp6?~{MDyl)+xMjgG zNh$!>q9y%>aY*?l=;*Y-#YGq*7kmCnKtS~(Iwl-O0i=PjZkAF!P0Xby)$e~8R4gn)Vz5u0NJL~slLlMPODqF5ibN#rC( zTn|bW)yC~@_ga;lhmGK`b-On76mDu~;^)86Kk2g=q4{n2H8eI-iu+h^9GpdCNGAZU zBaizzC@UC1I5O|vEpVWoYDZx%jr;G;@($k)-_Av`_larG1kiQ_fPO&AbSgF&EoewL zD(kxfmPa!WJ~}w5@Bm1n{cr0tv8;Q)T?)SU;ah8=M=GA%A|HHCuSk3gV?+a@l$3dl!<#u3PxF>Q`+$ z^ni)!j#-r=Ma|#q9g4|WdMbDl!E1rA09z1Y*-}94-2vwUQWIXCf&dfbbu=Oy3?|^x!B~9VZkTq=T)z@yu>!v!fm+1LpTw$`R+qlqF4_oV@Y<`#ZC#5&$qJJqGckGAC!~bma)+MSJtLmgWGI=bZm9wevBVI@Nw0 z`s)$q*B~>fXOOH|kZcNSGP85(kgy7_abkZ-6)z#^5&d8 zG*g1i`8aCJ4hoPXr>B#%va;qBH$@(?6e~!BlyOjy9qjoq7STV!J(u~)GhAHp?7uG8Z3}vjacYx(Au|)g)=?9Ug-`MAP&t_ zJX2Ut>L^mt<(g2_pD5dy{sZ$idA) zHd%?$6V(wx%-%-=t@$_d`B`nHOpA#3#lA^Zm%O`V*B5?Z9b2N;6Z;}~y*T7AWm@r^ z;;Hx_zMA!WdB+}dCHfo6YTr3Vf@&WGY^QTD2eu~SktW&4zBlK>bWuI{NOR0#wR33F zGq4=S)2B~`=@f(`CDpmn{LAl$Hqu5@kk?coBtU0Vka_2V);2b3DpEUZRKm8;zzAdFi+&{|a;K8HZl+CrRpD%v&PiR4F9NmrAq|{5b45vY1jvIAndD zxVhOA{Hk<=#u1=ig9eSsFJ!O1nr@HrKHPtti#Qde6Q%9CL?z%-9(SC)Ar!j0x@tQa z{bTSDHQ%8C2Xs7cfiDIT{a5+@`Z?nOw#OQeFqOEEo}>fVEPIlIr2py!SU^WCe7F6p z+HL0;vdV+nJKFE^u*x&MS^OaU8S$~nn|e$E#6?e}1GiC&$8uLMo^kmRgSg+J#AN$P zepSzdgvXbj0-G}{IF!^WBjEVt#7PmeTtfhgd>z^XptN8qD4iVq*o@{QWn9O5`JC$N z;-)4B91$wTl(Z>;X#isPCV)_LG2)n_`B;sc90@dUV%7E~F8Q6}B#K7={$1`a{*adt0)1)W!QPCkH-NI@Lh_<_;6W(l6rH#`sF!2rr%$-SN+FVv)}zR`>V2l{a@AlVv%V>b_Y|tV}$R#I|$4YjVu}k?5`2-HnBUT(ugF zV@|%9cwiLYe9kW;s4)g~8IDh|^@!v{BZoMIsp|=Fg2Q|I!-Zv_QjZmY^rg*jJh0&d zCg{+)X!J-Kk*4o{LF;q3KDnGW_W~7j{MIq#VM03Fvwg!{)5NJzWfGmx2HXNR*qrPV zUWo_UDhi?!&?3B3`!%(O(UI}-wFhmrDC^Vx&A=179_dbwW1AT~u%+tT2E&o3Lt}%& z{V2%JPDy2b01bGvl+jVsBZR0gY~MjGj=R2(*-Z5-ZpN-*F6kppVMV=~x37k8sx!h8 z3I}$nDQUR5jonAhCp@_qfBu}Gnc4Z)rWgU+1Q1t{IFyhE69TlG0Pji^YC7?)7k(e?*6au|Bhi5Qj3s{?Cf3<@?jitg{f z{}%#?fe`RsV18oX4q%o5e%1P-lW_~Pm7y=iKcYRuO)qu5%CPw(P~rH%&$<1x-m?mM z;8*2ph`~Kl*E#MLs8ijd#!dBc;1?j70_7k5{gS8SnIiQVOMw}xn4!Sp9h=Iusi7|c z01!DN-lQTHY!_u@WCR4dH4$C{Tuq;%8+IL@J?hMhL`VOX#%l@I^!_(-mJY}icTJpzaHbYTgr?F>vHo7URn==iJL z5ox7@d<9pH!$sQ5bBVZ;N&VJpn1?A<;L6mbZH|(xA+mC5=8`fpK!4EI_3n$u#Ar}n__Hmuf$6J0W5lbzTTnS?SOom9%X{85frTi4Kd(3^ky}i3MBtJB8 zb2K?1ak%nXmf##6B36J;iKByMe#iukmH?LBOILrEY&rwd^l$S$yiyqZ`zdvke~bAK zCinST#NWfx*9{mvp|5e4T#whnPhFDDlFEyVQ`@i`@cUcdaYA~$JXU`R0U(y_N7H#h zb#--9(~HV)wUgYIoIRIruC7HUA=&Fcc+X>1uT!{{3}X$$F(#mgZqn3~6xX=!Q-Dtv*C-m4#vOSRi^ zzf$f&s0;P*-=Rv({=%nEsQIB+t2(xjElff9>K2 zrBWlPI77!S^-K=0#S-bL6g5@M)x%(P*|2LxY+7TN@=tUw+96$%`qOnaMazIdB}K&~DR)(C9Gsgls-WHb{v@cp zeU}^mv#QD-23k5m4!aQ~zZ54Py(F0I0x+h^7=zs^{%NN^pnwd@^g5C#A!8#WUjzEo z`jfQ_hOQ{1Z!6EE2HL0{%r@?3p9>shpBapO)*z6LSzym+xz9L5^iEBl)Rwc1^8 zNT9a?A_VDmv(8`S1xR=5?%6X0=3KcK!><>Z)ZEe3%06db-M9N=A}d|5*25phj!Wp`dRPnZy!IX9YN9pJ!rKcO)`a{SSGM zm}_s|S4BJGt)TNsQp<0mQL|$1c7?PHZp$=Dg)9iO2985{FtdeS*<4Jbupc>f9h5q= zRjukmv2DCA2}VW!7r5>Ou$8a4jg<~iw#iE*>Ub0&_Oy#OfL zcdc&rs;a66Bjh}@{5efw8AANm;`c~azn(sBGADf&7!JJW+0o)`=tQGTF*|DiH<1iN2ln)gjQFpty&j^^Hpg?h z?wj9VpS=PTP@HQq$__bACOF{x4$!XpKLG5v^Un|gTx;-7%Df=zm@d~i|?-N_n-OyRj<5M?B+h zKq*6yWMcF;?%r7I(ONo#rQx(+92oe2h?qy>ZiLe2f!PmMTq24zhlyzR#;(rzY}br8Sfr7wVVjnBQF(4g1=6l-)UH&ymvtea{jws&8anf zWbA`A>vU&EH zH}0Ga(iD4gWWtcWd}VMajhIs1Bx}2&JiJ{^74(;>N7{ zI#$DN@3-hji0ou8HopY_eNTZz^49bG8}cJAAvDy4U$Lwx`D~H}M(TR#Z~=q>vbai+ zmxTetRDfo?CGBFzF*$+76=>tf{WVGEyH#1V3nNY02($nV2b;oB%BZPR! zvhJ3g+}YL^`yJE7o>+*O;ceRW>OOVSyBu2pS5WsfGH;jaYE`$=Fk{D>4S^ik^%=r4 zPH2T*<5BN-aSx!Tez%|zYy!&aZ70d^trAB)*w0224{{qD-5-aFkf29k0IEs9M1Zi5 zJUvl8Jv|9rad}1JQcqi2gs=M1YX#7C$j1)m=MB4V@)Gjmmy9e`FZGvyQ5)?dqaAk1 zS7ht3-kxqNlT_u^KM!ACI$VAY1igu9rR5@xcU(&2=n{Nrb!9tne}Dg7f0ykX5x^sw z_(`0SgP@eCsHl3rYj`edn?_aqX7ddx1lb2ASRDKo|gEq`RrFD3c3OP^W$FijepNpgv4y0b>9*?{0=I~E@?OQ z?4}5Bs#EFVu>p}`H|_p4CV>xy8LLa9M9>&&eC5ic{r$4iJwfu~EO+i~rO7(qZ;BO2 zhb}mzOdYI!_UJqE3gh#S{ zlsaao(F3U6rgym`5r&V75^cy?VO!D>IW);|ZIE@xP%VSG!f7e))pAnbenP2%?8xMprW-m|&t&wdtS*dUQOhsFl0W&v*|AJM-!lEzERKD>_fnCJMnB zQ}i!K=@#y5R~fI%E`qEtlzv~8uRYz*2cO}l$2LYtT;Jb~Onj967q0Yyn(A9+#ai4U z1Mfk9_ws7$Sqesw0wVi~dsh(ClI0tYb6m6R&H;N$m@rdAM65K0o8AmHedKe*MZS(? z_wxYxMnIUK-Oq{-1+Stk27g4Y>gT^~G7H<0aT|qwfV$00^;@P(9w&BA1mOr#}==rt$iK2xJ=fWSZwd@c%Y*oeED;^Ll6 z9^(wdBe(Tl)5aCAZ?XA`EijM@s9)Ysv+ZOKHNMYc2|f5Zeuc%0Cq%@=#G+As-nn?S z_^@AQDhO2SX>?20qAFlo5mAYJj{!$f^*ATmXW|}y4;t|agFXQ42*K|xBD{^26;sH8 z<-TUlB0P6@ODJH(_~aheT*iwHO|7leuMKg0o~*{HbJyEP+l z_5rRZLUizpR|Sq(*L)dSJsraq!v>^o4N9TakNgu4JbABvP%2d)efV7#Co_9@^R{XE zw{4f*NclGW%$?y6+F0qtrF>#rxvkX2@ zEfN*aXONOM93MPf^bu?C2eT@Voq)j=no9c5((MBl@rj9ngT@5k6x44#G(ME~+~lG7 z+*arN^RD#vGH!Zv4WJ7v-w(@}AG@0fG6af2hVPHCrHE*vhTgFcP7m9Vmw^Sjn7mC{ z)+KedwfD3#-mp;kyb^9GgK>-elwNyu%@Hh(5`R5mt-`VW~uyVjFOATSU4rExk$1}Hyce;)lv9VtD; zcUoLi^O5QuIMyH|z592-dhlJZJRQRir3~4ZCEtO3iKR<{<$Pg|O|E=@dC{LMk$aAO z@n>X2C7vhiYuYm%|E%<7uAEpg541kz`+g}(VPNEdmWW0?^(}8Yg1&OEDV$n(Qf9wK zK8OcdnV0vI5{GRqa?s(V;4NGLbjB?OruDliJz)aSBu|=r)Wf?5JI{CTs4i5#+^Xke zQQ|de?M$aeA6CA<+`ZH7L^|2sW(*Siz5mvmeQ+kIv8C zK01;e6dhqb<6_`zvYBGjuX&PVv9n1phYMWQ^dQYY{#Kh;7HG8_7-D#MKO-R_I!z<_ zR==oFR1J(|nj1DOYL#;GY!()-FUz_n&i(_akNA!xwhx)y5I@YEVj@OEb@e4FMJ`iW z0BK9pr8r4S(%ODr=CZq{bpAI=&x2s3`8daF8|Q3hCP~8zBFSmdV$^v^NO;3{)ykk% zXR$mnJ2|=O2YsYKoGz^JLaQBD_qtd3ViV<+>AUg@++^T{;14rbSHWEKbxu=ezd#oU zu6j+SWws<-hJxV*_os58_M9O8)Gm};aMY0gfAfF}Kf;|E+~Viw+X}`eG5Lu)_CjAg z#4M7Kc_pm#o|@?QR#Wl13i@0g4h+nt>2H$*b2Ma_)wmrtAX|vZT?A2rQIq5M+Sq9S- zQ*@8ZU3Ggf6lFoSW~<`;wRdsziMt-apehb3&mYX?y@W zSa9m61mGZ%&QWC?-{HGD?4|{v)6zw=QmQrps zj4i2N#8=`0c%*~-80*JIfvPTvK$GEBfA1HqCg0j8&!?Y`e;FUm4*6RKOyU(fS}|HE zp_BLk<4#iXaRR1KTD(MqAdBm=N=ix(N7N5TS>F3;GV+tXR#~1K=n|J;oj(1DEp`m} zGE*qIpQN-~Flx||@W(X_^3Y`_s^llm4L^t+@2=B(BU6U;-=MY;ZSIN=NF1zd|MZ2N z%sw@hLM1JY=qU+_ws!6rC$^qc5yU)JR-kLf z_|FgYCyRF*RGw?`61U5E_4W0&kwd74nwlqPRsNJ;>i7OM{&2Q)Gt^r=s-nm11p3FX z74~{P2%LVn(dh-xp<1}T@4hCP^YXq?N0E|zs#9g(7e!IOcmEeIGJhDT7 zL*&l`MglV}c3&o{)|;&W!z8Ay(pDlPiA{N?Mu*tq%6DnOF0QV!ri;90DgNIb^jh{tR6K;y8B$%-^s~IZ^zFis8FIS&v0Rod=&$%ftFTQ3N-xX z1HOENtT-_~_B{m?b}|{P2gN_Ejyv1>(l}daYNAv=OdH6Tn2H*DRxcA}yx|$M`iVdK8&dx3%{T5UVSl`#HA@2zk~%yWdLsvRh? zcB#9=I-Ws>1qC<~fx95oYzs!Gbuv*4jig10uee75GcdS0oB}4Xh%s#gZ%D~T0Y;E1 zrmA8W2Jr^%&3t*>?9v)_t0mN#SUZ=?jKDlv_+`Y8Kb{R1VKo4n>S4uBX`0Z*t3amr@_ zHY{UCpMf^k1|Hp4PkYK@Nn?liYzDXQyD^X&gnNL#Q7*@^Y|_l|M|W4(hWh3vOait2 zvmINa(R%(!hhuUd;fn)@zMb^`fKj@V3gBY7g2BUM)Bk|P6mduL8Vhn;JkOaYsUrh*}*M#S> zp~2~*2Yi@L#zJsD)6rL!1@J{%+y7ns^Jg_3QC^wQneLBlE=zDJ%+Jqsp{vY|6D6SQ zXp7*0HJ~zyj3=szH@hFa`-9V4;oz z?NiVPKHx0FlNynE^DvGsdX@p%Z*{?CZ!Fe@Wqx^@2xyY&c#zJgeV=l&!n8*1n9EJm zs9st5sdYY=_I07|D&Urs;g(i*q=afUxAlV&vF&N6XoP&2TcNrsFk8+-2w%#{Bqxfp$iLuv~wM-+s<-vL3f#@InCORr>%>3I@l z08r$_!_hMf)ggNP%Ql7@UY~*lq4(*@kfqqS)>e!~;hln^LDLGKahNGcjIa%WrmnV; z(Om?w)*Kn~II7XHM2;=Z%@ZPjm5A_^5nTq*>A|+SHT$GKWHK@q5)lDM^rmRc1SI(-a zl(}(Bc;S9s+G~_KiZMibK+AGxaMgeNH3Ptlg!S5 zWD=El&V(=v)1}$V*jWVpC9YYuW3%MCBO4#-4Tdo2VvXjNQJS+$-WxGUeiaZR>X)VhHEJa^GXjP6fZY`gg zHP6vUpv>SRLFzC(I3joJ@It{Ji==}069m8TXvHmjnL&|Igoa%NJ^rx2gq)}^p|o^6 zAVBKR3BwEOgxjUFHG`g7l$l`ZYAKMMPlNv77T2<*-(p%ryL*+b`z`m^JK6sCo^*f3 zGIHst3E;vp&pU9i1eWsir^R{oHtpI(*2PD=1HSZaPm$HsGYTAgs8Nb@aOV`H1{>z&%{c;YA%Nn!ZjklwE*;b zcM^3Y2?WLO>W6U%yR7uve&{>>!4LdOf$`bHc6Ksdd%~$3ZFLFp@fzCoRO>xTCP@nT z9tYptDU~ZLCep$YT>EJQO&%F{?RI~njCLE0(}2S<7yEzrVsz=w3jpklHgWzMRTmH) z|AZ!+x_u^Q^h6C&76Uglbm|%@2?!mej}?_F9e-x*Ll9W`a9^;VR)Ar~im0qLf`LLD zpU^c)6O!$Y=HV0(B|~O=htKzfRcD^DW$-CWTf+)L(w5Z&ciAZ^)MQTGB%cH<>>laPuI5*!upZJWdLVV19YmBBUn zTi0o3^mF~p>KSP}8^42ZnO{_K`in%4_QQ05YUsN%T|K_gKWkukp`q@D2;YrWTi69B z3rn5wP5)j^NeOcPU(Bi3DDNBO3tE_BT1ZHU9JTLc{C#ptivK#h@q6IQ&dx=;03#gf z1U`u2w^FUmdVizP^9F@|p`#Oh5LMdD_n`lExbi&Lz-rBt+ilD(H+`wWm%!+1halD$ ziRzJe8X8}J(FxN~XxJ9CxxnHy2nK=!Cc-i#&eu%()ZF})Efmkp@M>&SgF)o#)ey%K zfti9g;hoOmPy8;ILwU_=pVO!bQNst10^(8C@O)f-GO{LFfmt}ZV;pXuXR=siA;y(mqW(d03(fswIoVfq(suafZ6up<}8ThlT5KF2E-LjYb0=e8;r;e7kwg50& z=6xJzXYz1=XJA(^rzb#83)}n=Ln#8BMvI=bEKL9)h5!9Y_QCcxpSDTM)a!H~!gN%8 ziYV7W&SA>tiLa-f3wuGY3;sBIA8?;PTr4hb0TT)#@=Fo;e{_B=U{>3nSmAL`={WG{iIEd*c3J1Bj#W!+aB~$e(a|LLcP$-k;UUhJ=PI=C=}&cGoJ5*qr6Z zAHi6WJ|FiIM$#9xKmIFFc^_b`0W#d=ay+$n|KHyQkVdChOq*LTX41E7a-$d3FcV}$ z0kwJcNl`ZAeG4>~Z$J=^H8*zEl8?;H<9uOF(La54tpT86kURzGPO zW@zVAA2&(EBx-t4lqcl>T;t)KUg{h{N}*jp>TFz{GEWoy%xL zYPq57ly(8Ty~6?g;Lp{`zf5u84dB?db5=2A6&i*G?+UHG2WId3@qS-+R1m8KPQr5W z)TPj2;PIi`I+PJ6QC0hG(TX@>3?K>+G(GW91bTr-RA7CSr}3?hwmbJdZb{&mBEFhy zbWoN9i4K4_h_({3mqm$ zF9o-@E-oqAiZs5>3p_UM_Ad|k)Sv^DZl+965_p4zWqSEWmRtK;(k8_S&5%L zYroofJItLnyX=^UiY$nmd)3RBT0G0zdQpZO0FQyvrYI}<0*PzJEvOcQm`Qmu>Snyj3%v`7IM)#fm=$c#; zZm?DD@puXyJ|l#?{q}e@Rzfwx{Z(*fF-!Ya(PzMZGgtfN8goo5)AaCZFp}QmfUDYC zS)1wKbcVh-?D0utp0qLNadXe8ukH*Lrwbo9x8mMf;(p@tzD+yOL6?(B2_W5SdZbv| zfg(!iIa8B!mDSAKXEoJFyCqeN*4zY8lBX-aMoL+vT~k#|t1=*Z-qt{|^I5Y|H*DJ< zVi)s&fB*hH2h7@|l>zewmLEP)C6d2zt{4~*_n`sGl+O$bqE_5#LygkQd6v~rDXvvb zb^#YO8zcRMRk$>Uih9L%N{*T3Q^TnUmQU8hSjWbSfXq5D2E{PWG1U6s-t%5DcxGL# zh`Iu0J4bWNiXZIN+zf}yk7Q5BQVl3qYk6T|u>J8%yV)gn1C9pPh*(jeeJi#;tEqIvSFre@ooBY`j@0dKFZzfQ2>C08Q zgBc2hi#Wx8HRsBe2>^$6(aA||?i3DtB|T$t!r|HXicq-|YI2jtLfF#t=~L~0u!Hbi zSzq6&eD~KOetqz2&Tp6Tw$p)-QI7pfZfp&-S_QFo1a!{u#4mI9Lf(}7|7{rp*0X&! zvzYp_N~l&W0d@I#PbuXxn6-g;=GR2L9u{n_+pPZ$HE%x;J_}%}F{6;P&2!NEc3WnH zuh>pr$(4<>TI{GDXSr)Srmj}{GdB`U#@^mE{5Nn$q zNh(Qn8d89Yb&30XG&NmFFW2ImS)3T~IKL=3eQ!XAUMyA?E)gFf8mXs8xQsrxGTAU2 zR`J~rB@t0#T<90H$1r$SV%;^VP#Q8o01p-U|7f}jwyL^rd+0_wq&p?08|m(N=|-eM zxL)UESU+rLhgrNUcdy7^^r%?O+>zzmzrI7oBb^xC=?7w%cf)<n@bA^qllerQqA2LO^`Ffj%1iaFHts?e zU>b#YzKez|_|~#OcVO%u9GI2+T#WD_OzQ8KtseOAWV!=qt^j8!oU(1u02x0dEhrV0 z!DLs0V-bG9Yxr?C;aIwM7xLjlFokI!T7;D@s3y>ZRXFtK_o2n!Jv~+7zkL74Hwk+6 za`x<0ri(adGupDrXqb*7M$yCsvm^x#N{7JC-v0YiXuEV1J>#LVTrGuH>pg~EQ8)zF z(EsTQkY3@o$Evwv&UIkEs;P=cdqDS&CltY;&69Ac!om2VI3M{_EEx*!SI$t%!q=3o zav5Z_=E}m6^|uPjtcK0)&IqPCTkw-VsLFtsJsoYH7*onrL4Nh?$JqTGDp*93&k_mk z-Q+B6mvex}{pjQramK>QBfKNO~nf6>o2EFy!66 z@~{O31-(r<$dc{wP~{6n*?#j=C!JqH)DJdiZdRTbUOt0wx5AT6Ar)+q{cL4~Z6^wT z;YZtD4USvsDq^|nuwo-ZKJnh%{rxNIk6daQZE_8Ki97F>aN6E0hwPuIA>A^UL10k@ z8@DU>)+N&y`BYg(eo!ztb!H-fZWDYQ9D<^L&YWD6?BYk)kWil;ft9;GW&itbY-QWU zhIm)(2n$zc!;q+yloV_o*}#MZtc2tob;6SvMjU|jWU2>{+qq`+&FcR9RmO#|LDMX~oc#8K`=xiL$+!7V?ELhyVrX=kN zZHY%v=c*#JwKdUi?8UN7X`X5O(Yu@8DNMxo$C{Yqct8%9TOx@H;^!YVgC<279v?FW zhIBoeI3DPB?UFf`+tw3qdszLPuKsCz^TA~z)2yXgWu2+%SV)jdK<6ugvsAZf`ti-U zTan*cq}6lZ%dLMxt-dkV@vgNtZNS+C1*?jpVp+>?KHymI%uE1HAkF3WAMSS{3-xVT zhq0!QrsH9dSDFpd|D0jGqKlXQluee&sf)N=V-;J>P#x=MR{pc(zu4^ZSQjf1ID~O9 z4;JDOZ9lyNi$9+aEFD}Q^`?XbME<+~Fq46cQU{t@wIPhD`+U!6)O$tW6{wA_jY1frB z^0_!AgumO$D^4idS`QciNgEOp{`A`M)Rl{J``LFzk zJUXbrVd$|2r+)sE6q8K}0&~>r`;g_e&#=LTpkkt=G^)t6bPHzbjq?;+7g+ep9V({J zgWvnP##dIPzrRQ495B69%Tlq;D)ZR%X0XjeO+knhv1R|5=UlWev4C_oaEyb@6B-Y_ zy4?^Z*Mk;B_qFMqFafn~7^B6w5p!mG8e8JiPaZOjV462&g`ns{qt@e`?LnEnY7C8M zv0X5j3szmN`1Qe7S382iCXnPi%t(sC&%4)6m#2^5|sv!z{*`ng9NR& z*YIE>E0iK6xFy;T(=I5;gpnrr4HA;qwpO#b?C_Jfs`bOegYW4CL&s~t1=UKVY;{iz zk6gq`YKK_7nqT0}7aCSKa`9>pf>c~%=Bg#bnqR~I7d-wKcVqs-pZO}*F)Jlj%j%c!w|UwkCesV<%e3ULySnk9!qD$z?IKFX)F8fnRN;h`nyMrf#8$ov z{T@TB-PZaV$@l~erb$ zDb5c@!fcN3aU>(9JfRZ^k`|imqD=mcK?^+m)o;MCv}~)qCyj6`fHVjwoW(#$hoTyJ zk_1>k#H0bp5PXKKlcg!aNwjhbSMyZgdi5??d;jx{fi!c+iT{gt@aGanOg5PS$pBXW zyP;Ao!cxxulGOV}=b?9D=p^=bc2_ejT$PAXXyHwA{0InnaO~1nB<;NtgujrX`tnJU zw`993vA&A#^AYVwxBVKu)dg3W<%mfyjlvFc0fd+Te(}(h7;0F^_hebfgb*I&@;928 zu?GTH+M=beYG({Tb-!4x*D7U7q{<+q_Df_hQ3Q~Y)O8_{`HYjqCwvRhC1LN-@ytk1 zPY`l%7DNWIs#%=Bo_Ji_a?AC=er~_CVXojy&IRp7TfU#W3vrER;NTBH9u+>FvtW)9`lv;WT9gA!{Sbq z_H%@?Pmp2?Acj{6D|B(ee+N5DunBlcMn*=tmXZjr!}(foYinN4NuTM8h%#zn&R=GC zF=*BRA_`pT#Y*cSx2wWB;0os1&f*Jx#k6PV2kEx3j^!_UhhVV&ppVc_+#5+V=ZK_d z^YoR8MMnglJ6%@w|{EWMiC35+*_H)}m z6}rdVwzFu5S@PaGQ;_&+1Ddz3MmfJEx#TNG_PXCI8hI-X$gYcEvd1|0jglUPOpDs+ zrtVkLPaTT2FYO+{9tC#06lmk{3iSQBXxQ{pn4JG^`aN2km1 z$VtCwkX?@2FqJHlfyaAp&=vWWpFg}DvpZdo-3aB@)0ykCee%xlgH+I;KVCJeZLh!(Q^UzC2Sx#%KeW9skY)vSc`f&Zqa=cvaEzU=V0NC{8?ZKZqrEDPuFmdOI2y{US z>W$*Wf+^WVOxh;zZUqp#8R9`T2p2IKVwXlmY3ZWmfLdZiR5k&O+OMvix!Gti<@J}X zT|Dk7nO(2UHk{0|9}o?WV=z22ftez)vz^_Nj)sP27g9Y*kW&+p>YMCB_(NwkNj1#-kt89c*Pt!Qazt`ATjqw3mq4Go>-p)S?dixNV;j;QPq!Pf8B4hFk^!&g1Z#Zh7-COAW0bdCzui~}R35Sc za=_uv6QD#2pP9^ru+=fQPcIj_Q=bxa;R7M=w;xp>gb{W2QHL8iRY!ptr21J@joh_4 zqL1n+tu@LMDl^)Z)s(@v1w0br+KQl?^Sf=e#>&qxcgJ)a8;bwxF(xpNHvN zp0ujSQ;3c!AdzUe$@x+f%aCJ+GJEt3q1-P58mtE7SdIBSer{|nJYl}i;F;AEa`NRDh zZr39F)%*`l7#?$dg$XDEm70V+-44#xo@EJq6~SI^Asx#)X_J3nj9?CI2jOt=Uee~j zL9=0}ImT?<$3kN$E#UokbaX^<5gYn-r#!(o2{@0oS#}y>wO(4h-D{v%?@%w`fa3@N z213zxN~jK=C0A^INV4k1l1emXoFLToUsDlVJefq1&%K;Fu*Ou)YisHoG`A5~*Vn%1 ziF(mvw0#)_FQROsva;-$h*GYQZJkm#HBI^$rj1PGEtpAHJW<ihC;rS4q>j6bo>Dw{Aur5b=Y2_d4!YG z6Q@L@qXAlU%`3>{p&e8f6g4q{x(kn5q;m@Ha0-1wiy@)X_45inH!Eo$A|?r7&y?Z4 z8XN8e&0`*{S}aHjm{pb70W9hK1$>{{8|D@ke(hHCiNWc%pDNSHOl-_d1MkpG*)NXc zAp&IjX1c1BuyyIIloSUy+)!JQ%}1mHR`ovnz8I3>!0MXdeykyQ6Zd6LI)2g9H*Liv zGnkmh*iPbsBllNTExitY7Ynl59@^UYBJW)TAkFN$p*hkEb#|Owt$@yXf~rUzN5d=h z+N>hImq*S7;pA(dOOLN9rh@SkP#(yzCmo$1!nVQ=Z4-YP8ve1(Q!q8{s{Rr^s97We zypxYkHO_e3{xt%cy77PY3J&9NzaCKE$U*zJ4D1%;>`5b=2AedPv`SL+}|5{Zv8u`crl0E znE$X(t!@MQWup1%6Wu3#bA(QM(m}=9`q|>_{;0d%i3yE+OKpeL<{#Q@oi_XHMJVonfBM%h{K*5Z$mHiA5q+rdG_SK(R=ROuRN5zT`D@ppu27Juox5i8fNGR4 zH!?DdGcmnBnMeCoTl>woNoEEcbq#18&vV&NgpFcnd&q^7wUp4DnASEn>oyXsnZ*II z8@RYzA}@EWgTVw|SZ(L3`2yg0s^3&$c2HYUllc;ggf5V~eMqTr-dhO+T8$cKBUycr3idrS#N~%fBfCOs#XSw0n`EGtNXb*iI z4gigk-BFzK?JNTBPg87M=ti2A-vD)hzx4$zlrk>O{Ant#hPN}b0g zuq**>9urC)*3j?HqOOEZhmYY)mf!tBjrJ|sbC)}r-z`c_3j6ud%VYM-Nvz+c8I`7D z>E>!jOnLcegtX}k;fZHWc`lNvNxZrHP;+xLLDbti@jXaxY@QZGoHPg+r&$wc;tDRu zA3+sv?%|cefB)6F9W5?AacDoEyga@5ZN`UHJt=3hSLjqVmzQ4$A_&VnuD#qFy^!Lv z;%~1<4cpZ(ZJYQ+;dW@ry~QguYA_}Gr2#q#6JXJac~1e!PwV;Dwuk-nWcEx+dCYbc ziFenmd9nF!aE_7VYzZ(;F1zCtollAy*QzAlFc?gdt&blwGld!P^ORGa!?#UIATV(q z_F@TJNwV^N@CVt&jI<-A-SCz8n+njW{G%*GAt=>yW+mePHiCi0m25mJvs0_q^5z!@ zt!@JDT0*P8zkC86A$?XxhPJ*whn1w!)4uxapsk1=HYa}`LQb~Q^+x0oSfwN^+~oH~ z6Mn$jVw+-un?uwbPr*{U#6hwh3#vK5zF`f%#_x^*8qgR$b8vn)OPPRc%^5Rf?r~_u zHvp7mbab?VK^Op`fA{iD&EX@^S8W3(sRPwtu*cGJb163XArW7~N#6KnOF##yYK`=A z=cDt@y^SLyfe>l^7g|IoKj7xc0I5S7(-FDJ`}%c|uq|d3KUL>6_06*rFlzAaw0;zn zemQ4ty8#D^7tc$ne&hLB9~s@kD&SHU$zYGODq61RwE>h4z?P`|8dMlUg^_{Ppe&2k zn*f1#F82vG0M*2P0Qj>Jj2Z4^33jYQj_LcgUh-S});n4}8Y~pw$>cM4 z(B&)1EWjD7K=!~Clc{sCSKC36$LJccIx;J06ZQojX`gKt-ydJ?tJO$$TR_n}`>wqj z(r=XP8%6R^Y%x>nq4`e~CstGb?GfeGJKCpAx#n0vpv>g_gOZ(H;j=ZA^~GGAf_CzC zM)l}z1MC4dy1;$>9h4S*-65KeFntvryVRhJwH#EJstXjx?&0BPwbitJ$vgZ0<~j#| zmr-PPjMX158__(&o+#-xCA!F`*dGvP>yEgRb*vb+H<)ZJ;bl$JWMBpEc2}p=b?U{? z*bW?rcFn>l8C2RWZS8OMf7%kW*Je!c2eD!|-N+yyewqR?UePRb!>Y8Wje8N`us~~F zTALPmMN7)+R0ts(p?e0UpZ1Tz?h#RYO7Zl)wvZBsFuz@G6Z zCGEg$KI9+(c;JBM6XRO*%H3$adWsz=Y1TIM+ybPIeBYA=d#IbcyFZv>6kCP{rsH(p zb^HbrR-O5nrYELMD5QjyhZ65Vt=Rl;V~s5`cQLhp!n>T};ya)vRh7UPAGDkg0#T&* zMEubMdmsB)RNWhYh>CaIWzP6B_iPjBjdq5D{Vsgm8G1oQb%@I5j%*t&RI7n2W+5T@ z1q<)`7+-{z)QMOkyhtxf7a?xMWTfx4~N>4>e8xBnZkf^>{Jn zzb9|R@nC$h97g2O93Rd2avCP$AtFih%GofBbNFw~%U5MZ6sfPB_-A)p05S33-|ClS zy~AD@901w2w_EQ^zJ2BAye3+izFlXMk~bwHZM$8>CEh zDz9hXJo*oF^g&Di&9KV$o%YZYjukpri}Gl_S@9<$X&0bp{pZEnWjF-1yjQ*nx>c}Q z{%67&l_+V+tAP?e)A9V=Iotav@{Rc+4aS^H=}H~P}i8) zBJ4swa@@QnAZV}un*VbdbHp&AiG?5XCY=1lkGG@h5F@xWXTx@`Ic-tyHlNVlgUCUg z3=8~Vb(*mnYE~PkjZzHnU2r~vDMz7~&wkvb>%y{~oJEOckaP{@g58@w9v@e+u%M~pFXSI3$p~K{ z5pbi{q+su`RSam#(IhdREQ|)kgh>Yl!<--QpV1Xq)M#rEn@L9 zV7|_7k*b|Ydqb4tZdbhX7RR$a*5#Lnyjf+hbAeqfX{q8=@Y+wSoyN%TZtHb)hH`i# zSQUFPQ(;9mnf-KV1y%7yIY}%VSeQXxG#r*~*5a@K(FoP>QKMoO~uV7EZt_$_-uUpK?r7hu13jf)p5s5Ne+tvBDZO2>qf+`5I*G8*QW?Uq1J^mE!B((@8pT=!vYJMIku5JH==}T z%;+{G+-mPj)KS0#U46XkIFw`VT4>8$pU#*o@}-O|nR&YHu;KeYY!}*iN-yF_A}A02 zxSvh1f)c;+?Z3W*YoBd!OiRee>JlM~(%e^*1k7{{3CeqAVkzF=4F0rewt-w+2W96} ztF^7I&j7l7%cznAZyFZ?sZ2bz#W{+nG#LY%`1BiRlg2%FGVE!aKS24ZOsV?@etx73 zWjY5Jsua1rw<$IBYa9BpMXNv6_4FaJfs3jIfgc__MK0FRq^Gf~vU5x#uo zs$%t7Lt*}AoI@h=^9`kOFhsT+t=!9`tuJRAPI&FamDLJ!r^Zt8 zy3Ve`li@HAl`yP#8tQK+J|ccPs0L=$vt%w3zD$k0xw&~DKY2*Pri*q;N8TX>A{*TeYInBqvM&ps_fu6gpCjwhjxf|9hX*)71M2>j z?nWD3Lxg)ii}hb$2yX)QWnjBR9Nv(7?6zQ4Ny*o2KC}_tzea%}= z1ZD=mF-5E^R%M+{4wMe|m@#OWHGhjBBcRpdM1)WEU{lJTyNX(7r&A5enF`~obD5r+ z@F=EWWzF8aJev)3NPgz#;i<0Um516e!o|Vq6L%0_o| zGU3AlpEwJ268;d~B#%XMqRe?bOCr~R`W3$nVg~iLf0&qT;t(rb+j8bX!s2MTpJm0x zX^X3CVq4#w4SI0yR^DGK<*wd zP0KtxTuj=$z1hh@SXKG`of3?cwgHY~IDC4gF5j-ecnW@=X0#O%Pt`5rfR~75WW&S9KVJbb#V|?Yr zIfr2*BTgVJl-kW>kI|!pw!R573;{pH@49$(sr5-w3k%hfKAjr1UM>g?;7LVOH#%R7 zePzGqj|oILG-011`iiLK>D6VL{{BXBxi}4+?2=M0oS&h1b>5(GeVW;(OifU@B_#pp zOWsDSXg=#%EAI=nuk(}=d5;8$C$2E93jaa*H$U%1#bbm@0R{`!Y`^_21iJ7n61G5Rt3`is5&?B$c~m(BfYce~9J2LJrz- znE)O}GvjK2anOv@H`%3_WcMY?zXGCzD3*NYZ?Ln!`Dipc z#{K6Z4F7G;Y%v})xg;DtTs&|h$PhjQO?KIAjW6;nQLGraOJ0A!s%oqrvE$!`4AVAB6Dpt%Vj;6WMp`z?4EssqtDu;DPcw|i~4<#Xz#)IH>s2Ykh-)z}smTZMlK>g(z-U;<8g z+ba>6aA~8<* zTmJj3bf;pBDlSls1iGLxQdM~6en1F59{0x|pM`Kr7{zlPwmuwls@3$#=^VH1WO@5N z9T+{xQyy1+Gmnf9+ey~5XJBBEy_O)_s<&VInhhU*NXTp#UdF#f*Nz(+xvi;fU?Hc0 z=V#>mS#N(^j~SZTXUXf}-Szh~AXfn1QYBE~%GXB7TB`x3K*`Kzq@0AJfcAsK_zb>3 zu4_^Ix)ys_4H5gK=}h~72?(KRp$KMV>B@2H`0`6gIrB`=)>MBLEB{Djkv;baWLfSL z#9zHEHpUnCy(8%e%xX8H`c`AOGJRd8!3n1Dm-G9B3ZmjgZyIK3jO2QgF8Gt8S(XU2 zbKna)dc)0n#hlqmv-fHZj*H~1LCmXImsmA=-pU?v+bM4v-khLRx&hM0N~3fdu7j!F z%FDA6u+=IEnm%%lZuRsi&0yZ!;y@7 z#|R~2Ip3^gFo=At@^Os&6wWlT{PoDzF6^EpId*wDi(K+&X{k7ZOpBzgt)e1YA~94I z;yRr9sqnGt=#L+isDAECpHuqIp>U`mHxYDMsoit|ZdNwy>e=^GWG}aUj`fTgvfL!G zEP;UH-g&xlCrru?=`7r~GpBoqeK`}EyLhuHb${dkV#IDhboe|~GJ8+U!{e}jmP)c# zEQV(r%%c!Q4;s{i^QV^m+LwFq%%z*_d(kHJ23I}Ea=Q48Nr;;yjtXBFA<3asy zHS0r<1#ey|O9JoA0gyBcXr85HTzjuGwLFy8$Pdy`)hZ8+RjmMuQ{ao?{73TLZQ0LT zS~-@mrazuaC^OTbe$lyxp}5sPqpRhxuwY!LV)#xb*WwCg*JFUQ{7@%rqp zcA#TXAkdPNl7j^Z(SnEq{PVK)f{B|RP(r8eFnoMs0unzw*gCfE0*e>+FFXokl!c!E z%Cjy3=i#A=;MFgc7&iJhLYL!UED`XI82+%A@)j)~l6VD%_Jk>>Li6^h`}+fj)RO2N zpF-MKAFVpBQVE@iNNj*X-ExNO;$iltExDPcv5Rg^r+0;&wY4LN!u-@+R!(c7?tpk~ z!`4;3m12Ld6Krx;b2FOhaMno42;n3ySBVkySqcoM2A_{0aRWEU1JCVj>SDlxKUiW0 zS}y6?2-Ao+us@oog%-aYCR{xBVj{Z87`J51jvIly%6QXF;+MH+n6GDMx*c|UR8vw% z`$)v;6(1T>4n*+f5d~gA>6GOHDH!+pq3y+A!nVC2`I?>>z$k4%~edDeCb6T+xoMXt8C^MY#4lR=^ zWMpI+))Ncx^O4>O@wF*)3+K1*;JG(F0nN-7<0UBBBVkMny~zf)Y0N#{_*)i250Lid zv|5d2m9r#XW0t$s?bfBFema;w033zpaQ1-Pw6~`##5wl*hAjH#F(HhKVBn`&w?3R< zb#XPUxk_=WZ$ANvp@-dwA#?c(7Ha!c40Z0L7h+%SjLWq=ayvqJs*mw)eM+X?XuM-C z1kcrt2~`2>TAhitLZ+n=^cS5hHT9W|QmUC$6Tb8QT(Ddo`*ynAV2JqUpSF=C?wQk{ zIrabk`;Tp@D)8r=je0R!7lAx>^r3KzgAwD^u0E!5uiNt@ocJjxC#S+hj*>ljp-mns zqxsqakf^IS)BBqdSo6S<^hT>o6jas5uGqE1506|;mRdHa?l zZ(cG zo}A?^cE9Q-fE<4N(d$}R>EWH+HZbciFD@Q-63^5cL&Divx?xtc%olt;=O-pQc!98* z?JeN#khZVk=lA?db2AqgGUk)oEC9Z*8daA=gq@4^-8VvyY!=Lxd4pVlZ}eN>6FZ7}ZKKpGaK(tYSZ=O`wHeDT?4(miXnA`# z&1G?v`2Zs=z!Rj4DkIb1f0pIvrvlr};oPUZ^E3X&u+yQ>9c@nf)I?;6UfTl}gSp?i zltc2Bh<+%QU4ZarR6GNmrOi`3Z)d0+1~;M5>3}8+j+|uDvyo^dt)RHJ^U6Y5jWO2V5!Mn z1mqUVpOEeU?9uw<`9CbI>~m)xrk3~wwS&wLu;Zv38un&Q7N+LN&sG-JRM~_6z#CY3 zk*;@o+~A`vJW_EOw-IC)L$CZ^=~$!Q*-H@OogasahyLQU1_*M3 zeC;m9o8N#!6F6zU-~l8KU_ZiBprjP-!+AiEAe=*C;SvPA0ixdrtrfi`2p7K<4~$U} z<18`p$!TqN zE;S*uJ(Zw!OxLiAd1d~ONF@?IPt*MTpYA_aU)h|VtPB?1X;K&O@9&SBPJ~yu2>9YP z5jzbdn7i2rWI~@ADF{{p8mdZ(?#|ZuUTeSfN8q>thJ^guQgS8Sb)6Zu{}|-=qwwPx zyx(ztg!YK?hNAg%3e?>TqW2Ak?D43{+lz~}tZlX&;hv^X5o3#MY1*K2yJw*;ecUm% zL78TC0}-EYtUE9;Pk8jo3AwWdx;?8~cr<#FLDblvG`Z)m7J|&AFGL19ct`m=i^Ym> z2TVvt?a5@KP`n);X!^@K)KwqasB{HM$>P35{`0Yy$1xEw7bf!eNSU}of}mPYLs@5k zE}CTumQ8$^&FD3|BabxjKB_gBqljbgm-?qAh-ge@oWaNq^?sJ*S47P-keigNjR}+7 zOf_$Xz<<($9XoqFTy3MMXm{AP4|Fk4uXJb`XNvD?3jesRglunQG3LMbm>LBH7-O~P z{OfBinsj3$!G&;}QSQ6{NBq&Fvg}CIxW#hcq5F!=%u!mp3A3v0y0(IZ7lSx3&Aj*B zzO=~w#0uc_O++$^qmDM1#RTtn^X%uv0hmndvYY=szzzG4j1xMdb_Cz(F|ot%)fsU# zVy~+GykGH*ttA@_tz5bfP@JLa#LL*Sd%LbG^~*{`z-DtLvx$jrCl;|vhXuVu7 zh?~!^{Xmx0DA6eH41I_7M(JftXhyF;n)J^XAarVeK(z+)Q9@#*^ysMkySQm?hvi`| zDrPww8(kLLLJyEnJb2KAZ-7m~xDCm09`=SHS=|O4li@*5-sOi9b{xRKr8Fr0Ercas z!;(k(2IfS{z?415eTet zrKHTiX)Cm@)^;NiP;tIl4b-1=+u>5O$lA@)ZdJK|iB%SFfiWjPgWtgEL z@h7}r_}$pwW5c85)FpU$NNW9TH}>eD`lH!yg;daCGgBVzp*|vy@tJp1MpA8b#qYtc z51mNiw@M1wBZLjhtFH8=hE|TA{LyTJ@@zwX>fafWK_67=?O9klB>Jtvn4}=I4V}{C z7Zg1WL6vu1Q(!Lz<`qj-mGf5A)d3IKoRt{f*C24%f>S z@U7(fWTl9X3WFMr_mk7V_ZX%Xq`zl>A?{80dI}|SkkAC`2b}uc%ZdaOK`TFJ2{i?a z6tJ$EN#CT0=8g77YgIpIjG{X%fW+&(^Jgr|lh@*M)H4K-vrv4_joplM7ms9& zZ={U#>(R7wKPAyai(VgU=NF~iXnqN-4I9AHZ5O`@T>Ly;I>)G0Dxv*yvQV!)Zysn2 ziTYb@AjtGElWdTd0z1PV(7 z@e2t&=?*-beH+}0?`?cdQbWgoAK=?%HQp#IeHS&T{NcfWiMq3?>Zk%mwoBNXDcGkn zkJST*SUkOFHLlXzc=Pt26p80v2UU!h!JsJS{CuHqPiFdVprB31rK+Ii<76SC>bO5f zpYYyzE=)<{JjbUVG1X>NHzKr;Xt;Z49mM@myBCg8@Frj*vhnauD95tbx;eN%xLtSI zD0+o&S7E#;pK}9(-zr(-DTzknZx@v2;OmBqy=TkU!qX^}i5t+!5Fbw>Sb#Eq7qXIm zWWGy5P5}!ce!|Sl3(FlPgEL_X9Lt4Qi}w#UT!dxS0yVFNHOI>>AcOH@k6efiK~liD zC;_Ag4#lfcD{tpF>?EUhc~rp1@4eJ<54SsrxrXD1u zNa6y`tb^gv8g>KsU5^*D8!8Dm#HN*QS>Y^APzg_#z=p21$V#8PuO0%uC~s~EzLz(X zpa%TG=B+hr>lykk<8g}Y2C@4$XJV-=$M{xO3c9WxI)D->g6%A%5^}r1-|#K|9-Bk- zv}hNu+CGm~&?$VQFIKkcSz0X|LuWI?{XbU*iQ-o+O<2ygTuNy!$KrIg_8)`)@2K#>XgT$xSA~T|JA`8rSAheH^Y>MJ4Koo~T4 zU0Ua1{ETLN@1gVFWjL^FZ7NWo0i8N3h57^q;<0pFdkmdnxzUT}bqoF1PBmS-C6csXtw4@KStO?MbZml?GDcD4>2mVvW<}XZ{bLX~ zKBF9FqX;=M_$h^wV^`i0x8EWC*@4v3BfBkqo^e)f^}fl{{H5h&!r4>vadJB;DamYwVp@$TS?P<5DF2yf=WfT+}p5)t}8p7nu>kRNuugQCD4o$>x7*3e9f_?ML#KH>m1 zygL?{OJ?2bkod}Ut_suc!k`lW7buVhPz#L0FEnWK##AG7U`08tq@ksu(cRts!J=1h zzgBHfv-wxWd-K)i;9vCZYIo8WmDIzLV`AliqO2{OfCy|5*<{puLMJD_e};{r5Xy z0D7S8h^C8d>GeUmMTbW-n^ca2BP+pKZNnXDLdn{4iEJi3NzUZBzBgIKBTxH4KB|Ln zF_^!GhIdeoFz*z#-0Dj-BQco7fbxKf&kZA3`HelnjxDasVNEvxb=8q_Z`0EVA`_zd zehC3|%DwS>Q3#BHcxX;!B7#K5Mx5EreC;QJ&-)Ua5&AcMq~5P+ZK_b|L(CLtlO9wI z!*n^CuT>T42qe{ya=BD3b|JrnYcNOB%Q7NPVbUH|p$mq?vXspoggCN-;0Fpye6Nh- zcSYqJ4=t6==}kG$5bMO8HyP|^d+wOdkP88l*adcSxWt7bW4X3II7qX_?>%WnPdj|b z@Cx`qra1Ydz9If0j|oL&l>SGP#%9uaP|>FJJxSj^pGyLM7_=r0pka1L6@ZHZ4V9_` zkIsnv4emZ+o=$3F#O24yuD}|r7j+co(>@(E2%;+6!wbg2!^>>d2KkCy)J)w`CYOyy zN;~lv?A|*ZgWB@WFVoj97u(Ud&()~f%^qL5Gmy?#tHuv)sJ#?SuB-buphYQ}bNAqb zNY@|lUhdn{q17Qdx5|p|K7bHwlf@8ic?xZ2D&$p=^*rAk(4U<>+eJm1{rxd9QIXQ5 zc_drJKd0n_PSXqL1TTgSl;}^U4I(Lj0?0J_aXjdD(XyoVkAZFOHS)-<&#JKm3zeEl ze!)Z|sX5dLe$vm@#x+&(=%c{%z_kfA##+1l+4W1o+EZh^^M$TM9kM1+@7Gc|Xr!_; z&M8SbmigTM!sv~Z#sirA;*mM2(0mmFoj>+XN8C7uz?;Rru}13}zIp`=S{Qo%N42)a z8bPTvEXME>UMi>N%gvrxx4z%YS0SUy0|PxU`IO`hhAn?CQ#2t&q<<>fNQZFGiboZQ zStz1;?B;RQ)lUkbk(LCP>7ruPs^H0dXGiu_VX!rVU2s$jx<9`eP(CM@Q^$Kh9C{Qj=^|!Hv2#+SZGm8 z%R=_l7I*K<-CR2A)j6x|Q1|GT#OP0#U=}z6y7DA(1tET@a3wuLr*j6g;czkvVg|D8 zrDQ~GD6!S0YMxZzANh}MpfGOmn|z+J%3)+_siVCrtQ!@9gE&euh5#-%rPXQ#_OauY zMp_J9s>H31hd%g;NGQPz5Me&e|K2N*D-i!@BN{bWR;I^upq*cgffq0b-d(2q@}4=e z7@asY*oenSf(4=dZMUGMheUnF#StK(HUm(Cu#vFHP%TuVpf?KZhkU*_O0lXCh>~7& z0JIAs`#N@nMvq6D$b|x{5Sa=uv{*ff{@W9S@BE(=4nCm9GT7AyVhduC%j3n8#h&GO z`h4+PHj42z`KbQV_3vwz^I3m|)f!xv=u;vyFFR~puxva>UHb1cf7}3D*G|`P` z-2#6wq*%#g;(k`YBhY2%Ic1gj^Sf2?F3GxRXh?TDc#TxUtsNY!Q?SWO()L77C1Im6Er&AJ>MyVC#s^?_*T|6gUfY<0k`W& z8QLElaZT@I0|C1|>?70oK1pIhIya~3YbO(zsg2Sgb=sCij<2!1vYOr1EHYtla0O5p zRjG5-`KcjDYVnrRu6T$2iHV7r7(Rfstv0*H6xOs1c|b*eUr`JR~uzm7tiK)k5YCUkW^jFRd(M59g^ zl8TTWO!!BZ$8l})-gmw9{kPKKwKk;v=RMaI-8uE)!Vc|cW({8u7VUd&-dX?luKh0s zlt=e`y#tudmGmsFJXLT!(>N@U2Y>4JuDZLDAarV=MnOY#R14&Ai3o%GPC>jRLFM0y zV;9=z{iz8yE+09;6U5i=Dqb1!Xkj?~bR|7Orz)4{r2-!tauhdzSd9g<5u`HoXgwI9 zUHMo6G%Q|>O#k-CGQIk6mk{rOV1zeyHvjgg81OX|P(xtJVUsfuUV6g%(YmD;wqA@q z)p#9I-@dm7xb1TF^U(WSlF!cM!>Xk0Pf=phgoNK*M`@f(!LnXd(nnQuftIbkqU^uw zc#!1H{QMuTK_rn-MgHX%u7E{8Eix&T@pr#HH9>>nvkR9{A$x!hm~sNG zc1Pz+ogd(z<$PsOhIAtznU$#W7oj4jL?EynaiIlAEc-JkDQ>$F_YPxC&`^9V^6=PaH)EK zg$ugz-^5w`%VE+P0_KChcT<$q#$Y%H)kBHo1b=%PoHnT05lG`?WLd;)2$XP~|7-TBas`N8>?u2)?{vlpzf(%T z$<06qWvl4OP?VgsJOT!xRXR;_s#WFEnh6Dh2A5y_)7&EubD}-$%>_=9#F?VdRY_d$ z6w$DDHk|zLFZYghqF(wC$4ny*UuyC%||Kp!KhqKP!NA}7N+0G`i%ij7T%E(Tf zy=PW3&z5Z2W$*0JlDB#Gaa@rgOYmQuSX8G8xKJf0;16|D zg(OKg^4P%@y5j`{Ifb5?DUV)dBecS+T9_w?Av7USN-`iYa>ked^P!io8snxl6FHA*t!-6kfc|sn~>y7CxE-xM_(2MES zLx?SLyB>^2FV9G!ur;g7dCiJ`J4sh|>aG#$&3;arZK2NZDEYrZD$Vu?=Mp{` zz3@fd!=fFG6vwYNC>5#0(DB%BfA%R{@%KRvp_tKuZ&qTnzOu?#>=HI{poZ8TDr@`7e z*eHwIjst@lvL?+VI7TGy-jAY7B~Q%o&$uyLnMXz^7)$G%^SJ=m*B3u@5PeMj()+@C zSE(>IqC=`vK*$JNwWZQm=(z*Vk%G8rYdl+jyXex4Nt)ufj2$UnPgskUOvPDk(ZnEF zk(SJZw(}nt85u3jXmCXGW#-;`DM}r;AS0AWBnr~YaTUT0k#yUl2D$0rRCsI!_0WaA zyd6{`jZiWQyhJ+0kP& zY5U;Zto@WH)qZw%RwZ!Lwlg0O2ZwUj(IRZYB$TXID?JKbW&?pCi=hmr0AkjH}`j&R>$`NwlLjmJx z=^nbzJ7^emJ<4d)HdrkE$>`oPdOhm6jXOolrGNzAw1}i zas2}ctw1EYE?>^y55Gk*tsITTaZ&yExuYd5X~9C^j<*^|5!+FTMpBlR!9vrvBVQ>C zTKxb{2caKq9)3)ICPtUcnp4q7X7UWwnza#^ezd1r-N_l;PjI@W1mB?Sa3bEi51Bo_ z>AqB?4Dnesn;98VMVY2n-+bt#)2UpnRx6V61v%sbERLTjRB~2PJ^;L6f6kjtcm*;s zyx-k1y;EtR9BW7B(&RKcTYcxcC&7J8@D#tL62~uoPWSOXD94S>rN>WONyJ~ ze&3}1hMC8k+276#B{4t0>4Ey3bdM{Ig@lIB^Xza{>FVOf54y)BtO^XR3Ku*1@_}&v zlpT@`PE9?*c!DY4oS7A5&+F-A6(lWdJdI2|7mRkWI$5UtXceqsh>3eP9IU+ofN4;;dEv{G= zl1reW1c#e`6)|_0+mr2x1{79d|lp&>EiySN5cIJM?HA?ClffeII3kmB4QYJ(2XXG zQNeyLC>b5(XF6|4rRw=%EENx9pSrRpHUcrG~XL7cdyV8osne5G>>t#p&_brky% zK2|ik?X03TLgsiQFYKuUm^=BNLkDr5!WDL&*0u;dOeX8QuRXMn!r}_AtMXMxJUQ$o ztj%c=ORMbs4braJd(*^nLKmN*W6MY#j^P593vutiI!|5N55{M9C4?X5471KnwKV%@hh97@?*V6pPP1JiMX;rj9&HBq;IOA+vZuEwRrj4IhemJ6v_lu8CHq`&Xe68cIri0Admr-MY!n7Q4j^kZRW@E))csr2$K zs>joe=0CUK%U8kFyaq4cGwGw}X8uC0N*A7{<4@N2V%9`xtGD1sK6k`~4oFdqjL_*Z% zcSLVWpA83-rw;vrk`s_e#2l5-CQuG0RIo`p)pQE%XVWm(>cdOK=gdTrNDUtJJTd`) zCEhPK9N70yK}ipPl;qY_A-OG^>4a&N)|nEfx%2dc+a2r^hL187U!&r9GmegYYUroI z2pUbwIQE*@xvlY5gYjh>r6k5m(gRM$)L7blxB!^BoB*I8P67}aOz`} zaGBnjDPid}I--iMUjZAtA27--Co6V^pa!TQ(3=fe9cS=A9gB)*nF8teZ$QtTO*7w< zX@Gj#Dw2y7QerfhOBEi=n+aW4z6d>x<&K1)eLcZ(kDAuRpC8jCFcF!=lH%-m z25qpDH!%_Q>uaQ+)Pq1ivMIeYe4Uw8{SwGB9zK(I!nba4h}t|5V3Cw(Q5HA2ww@sJ zdS|h&kX6CO)9Q-D26gf0i{T!GNEPkimtBBkpQ#|2L{}6}$=4#t{dkz-X|u)k3%W-9 z>X6?wL~8?NHazF-gk%8fCcxO4Hbo%8I~m6fVEvlr;kz^i5dfd{8aFT149@At(`Sl%-t3F)JguZ#N6r4-JdZgOyQZvyr9J>`4xYAF$& z{EXg^oZq3lx?nsyO?e`SDvdB^&U00}Fs(9J2My~nj>Ce1Q?j&5z^YB_m3!&z8&9L~ z-`snXI!i;EtbtCeeNoFfil`%y;n0#r==pWwC6I}Wbn=Lgn2prN%0xRTF5yeu=)8Yq$evzvxz_q+DIBDp{a2{?q>n=Ua=;5sYm?SK()07VR~rN>WEK5^L>SWls@E>PEu0&xB1Bc|hncw$QNnGanwxsg_$I$BfNK^3i$E(MkqM`wV z_YiC$19$F{d6;f+8ix6hBznL+$8S~5?s5~+p7=;+%&T*(TD5DvuPMG9wm0>Sq9Q^a zSR#?9q>qYDnPq+W)`EoGbAXpoFIPhQ;ZfSl(Dk9DdXpVNRl`byV)Lf|6fO??y?_1? zvs~{{x?(im_66^QMp@g>r~M&+Ps~mQXF(+IoG~7(E>|Ur*zzM@?T+v9j$zy4oVJh= z7e9d6eB_51fGL&Dd0dh;_pdOOFIzvcoP{$-;%_M*p7yM&AL&{Z?7zv+th%JDj_c|! zZ!W(8)^|66W+d8w@}<9&e{*#ymmWT>F4e3F+%>=mrL?|RhDwyqO5@agxZK6qGU0Px z&B69Bc$8JjouMJT;9U2K7A=aww82gS&UQ0{SV5||DyxHxB+oq% zv4hX1{oKzS2DJh&R2l|5UI!eBj7&8gbiDYiO3ZmA~y;U-mV%Tx(TL zV-0A1EJw9+b_Av+mOC5Ku%$AS5OY$r>w+;e>Qyh92$Bl(zQ5r71(Aj@Y`iSRvFLW zzY%f~uvEn?;ewq|-;11KH{_y?PJ2J9kx-=G;DLL;#)p1J<(~q;p!|^} z4Ib+SkaAydRzHyCj&dr`;!GsDk)TbyFjC6p^>{vxdYDmRr;Wh{mJ)p|Kvzk%m(B-= zCh3;7G)t5xqsQ&iIMn%=_4JeA#8IeSW+ZZ9Hy7u;27K{7;31!zn|l`n=J5~U-o~M> ziE!b((^_c?D}nHc`Xq6EUoR|1PWl$+6R?rfaD~{?pA7>!jnD79_C)6 z3V^y{;FMJ@veNH5^ui0{sYpQd2cczwrqghxF=;~ z1q}OcC@WPJBNO7LyRx^Fd5NOln~`?_pscn;G}-E*xl1H0`06j|@`GtW0IWbFla)&b zv<#GPh8}?>l;)>~QfZ3xILkU>7~gBu{X1;=q>lg&#rt$v#}ZBih5p?<@Ey!1qLTXl zL(?ImiLC+GS-^y!meJX9Z@$tHkARdSzYjnWD+m!;HIt3$P7$;EA`l#5_&r*Z03J^H zhi+l=gc>(;^GmQXZXnbuW;F}Q?H6OmnA4m}Bw%?ZW7#6t0>?dOdSH$)=&pm=M%xJA z-3dtz2(f=?F~WY)eE(f~!qcGucuJF4;*0N%3^4EQ=uQ(GS4Ed;!&~~jt&rBECDw~B z5$V5=FlQoM?lWFTzFd1mscjh5B)B2ZQq%9*v~3OP`F9QIb4*Y0;7; zVq3d|Y6fES8LXX}vtEI`3`I#7SPVdh51q^(M?>Km){#sfkn^O&_REXuQO^=S@`*V< zl+OPyfTPQw94#$^Ic7_h-*3PEJ zdW$GiJuIa@YBN%szy<5bA>b$%QxL!pQ1t{K^dq3|i5dNtV+KTYKb>rOw7?#!q)xgS%cX%m0ZjM(+kkD)Oql&nvZGp3-FVG?h{gyPffHF=i`PMP1r}cI z^zXyosWwq&ssvm7eTMOCee;8xU_v0lx`ku$nDJ~R)`zc#MUs!ek@SI?(B@H6)P`>m z!5W9OjlAHwq}HwatN}Tnu0y8d%%k*DB#7*%r)BSkWntjh$8U|aUUCcNtaX~z+bNF~ zEO+{+_coP$+(}bgzV1Ke6tD8)@Yk1zzBY|R6o3{O zy7{tOVq`9W-yl!Y>p12q?rwR&lX_4I#rY`tlOS;C5|P3#rU%wX5+dq8nKg)-RvN(A zVStEFz{mO_$drCg+#rAkEcxaVN-?p9sI@S9ir_E;6q><(#xty<&g0AL)bqrb987#i zrxdb65L2UYqX?Z!#85KJZ~`4pQKZjo$)HbsLCB-Ii2+7ITvHs}7_FKxkbC*(OQ=qf zuizwt3c5TZHy!gcn7e=8Zy1PL0U5n76A{6$N|qRZss@pi_AYA~_bt z?~O%Lt=r!4?lFPvNa4{*@)fL8$;ne!LG9U_>C-luL%IW1)xz%VHZzB!+8C?V9q0<*I2eN6IO#ZoU zKzrTu(||vI1%P%QkC8doYm88IxW5;VP|F*!iJ!K|BOS1;#GqZBF-35rG>%Mm%0R2n zc*?W?)XG-f!FIH$o{4ZJM=g0|VhT3Q%uP2s$=~ZdhO|cqV)e9%Y^eXOfi=q`dJt2W zQN@KO_E;D@PE>`5$C3i_!geMqFYiihhcN+eNVZR_&Oh zy}-%VjAZ@`9F!4e@KvrF>tkM=*MAc^N5Ehlmz<6rp(R&H)W8P+{?U;(g~Z=VLI8AB z*~o~JtOmo+Ja}gTlQ=+u#48GYz)rx)l8Oi{mj1khzcFO&z&EwteTt6_kSV8SZNFmI zPC&&iatrVqMS}^1zO3`hVh$dF#$%o)iji&#H%*0f3JYQv*$uYoq^b7i88Mg)GyAqL(#eET~^Ui~P-%|Z{5C8+d&8vZzooX`Xo7|gi zy`?BAcJBsw6ztMrxqX_&uR)$DRUcZ7BvbqFklx+ojkNC`SAr?-JeCMaG?fST^|9L* zV7J^~th1$1LSf!MzZv>_Gy8$|SA?WIG0i++B((Go;g?54l>N$DZuHU*R4=f1xN78@ zi?uY4*AhhTpHd7yBT}A4W}-@luUwPx;ydhzbc=*rAZ+&`+`%Ub-UoDak_<5tx=1AqP}b58m5d?kXM;Anm4U$G6l%-`M!!ib~~!nZQ`jsVVf0s=ve zB>sMDnpy_JA(>kglwrgJvB|M$_+XqD$97UmBAUCV45*b7=tVT71AvTT4o*m;1WTlY zZVo{R1`?isV;zZZ@;m&Rwp|{UG$DYT8rIttn>hs(u~dZ8y=6O^tLqz8jd4EMxeyM*`+ zuzS5;jb>KyV8`eE6tcWIkPEG~0fTKHcSUn?)m?B1(>!9Y2rlBpCLqHZrjM-bE6zYj1kV>J%1^X%F?+ZrNli>~qfAA9H_ zzE9NOUaXGx{!D?OF?8_NHR4}_$Agrj;+AFj@(mqDTmZNTVfGt~WF$tZ9EOC+^4`^K z_Y1~>*$>rPI6cSQH(t8WKHc^Obg~(4N8xdBJvF--K)PLL)%=g%9UFeq0vCN2m?b6m` z0MxIbnw>_e+KV0Shqlr7(^~o_4Gx2B695c705tBZdrpQ_Hhfmaq5HXG zk(-zII^4KNUIaqR2VgHx$1_P3d)oPfrS=naqYr+-$MXNY(Qde1u?54bH9%}DEVe%M zLOBHO&&>WVCYgs=H^WG^)OpZ`Z!SQIB8pi`FdYlnd=8l@a7c4_xVnUGJ>H!y18XV9 zQ;^~M3Ip}UXh@hEqZV-n2yrL*36eGt#@H=U2Ab?Br|{zL{SAtQ?F>J45=dbxC{-)F z97Z;qk|6SCLjsPWUM#=u({Hg;bnLd{rO*?Mr-(V}N#|7ifGpz8j)Rq~bw>rw9{G8R z1g{~XhZZJUr?bDCDE{cA`6#nXP#k>zRa=g3KU__1dh*Aw-P~tyei!U4Ndqax*FrD6 zxXQw)^){?`>GDRDes55hZp5T`*wp}fopAKe<`7WYo;AD9k-|4Y{_Hjoh`H9%ME_O< zfdjFsm=3P?_Q#|*k_*!OURFMm_fLKcXUlgL6ZqSewDb}DJul~^rAN1VO18RDdce!; z8n4VSgSd!@6mC{Bl9Ctx$~8r@_4}!{#&pKgJe`L$V*!6U#_6dqm5$Zk43Tn;{Y}-E zkW*sN=bbs=pq0p5(a*;Xg)ttIMO7LE-xTP{;5RNxiP6`a@0?8<;SN`UflY>tH1b=S zR+h+3K6If*64SlIq)!cwgruC>}agBOxm19Qb2asr?S7l5m0^n{-tzB^A&kl@yO~MQr8ih_SFdWO=xz# z+2acaLPU!FhvT6?MtRFNPeqxEx>d{P!O=8neVJt6H2u?f=8AAYbO_@6fIjx@`N8*S zYvP`660x{NbK9V}*dB`r%Y*)e^D2LTe69pajA|Dmp*8&#ZJJ(k=>v{(JODIfpk|1_wYmhOTY}AG(!6Dk0^gm*(t9SJ=@lz*r@FK}>pwLHlFaCm2Q|ef z&Ha?wwc*N*7QTOSS_0e0Nszol2*WC_NN7da7L#{bb`l#!{QJGq%kE+HB2X4BGu`+v z5pC`nuE|ydq+jAs`&f3s6q;7j3q1mY?7OvAaj{70ezriRzm_hd3!r=3kg6AgTDK;i zMWjLje2ftdU!pD|NQ;3e_ulX~#>hQ5-Dmr*)fA`N@<3m@Ve^4^-*MA%%PW!t~PtBb2w`yL;O z-{UzX>uDEiWgTp1h+-2%c~rj^y}yd@^bJA&i#acmJwCSJO@Afv<-qfxwShS4d`|vp zut`z5JHP3%N8y!KR4_YgX>Vu^84rmahrf|U#>-&D%!i)FJ0q|Y z6aAhDhfhS{;4CvMe#g&mR9Y!p&&+P#g{2T-SMc`_gmLo@>t6D_<;y?o7J*7jGv-GP z*372=>ioIdn6iZ);$`isoz->Do?8@DS;`XRtr#|%CfiB({`$H&1u32GlZbRp*O=c> z<7LKNY& zEyT4AJOJ^IDFH9WSTNRvEgfrSUl+y zz#1vf6FCE}aQcXO8f!_Rp1S@W*n~5)981!}QWOMfW4}rNHciaHtAT}@0M=&gq*z~OxC>wqf`u3 z^yc>yk)nETY}w*Z4M>Cp!Y8JQ?9^Gp$^Pa=6O^VbF3ov8LG~|g3SYNjI4Zc3vF}67 zlwy`-JnMl@UoWZx*c|Cb}b*can7&`za zgHps6r01eW;g&FuDOX*oF#z;;WzTJPYhtVbVnnV~MSicP<-x~OFq>tEbo9se%GLXS zUp^f7Hf3tAH?O}?^HH-3V973vH`Z81EK9*V8tW1x5p*3$QkQCsvI#dDQ z?Oz)CR{^ah!S5VL#qEhS@Oq(+5w(i8%a}%!yh!@ZsgdY1UzxV%$;VAlh(`X7KeV#D z`N^{%C^8IR`$6AOROkw zq(7QoRF9}q`!KAWX1!-urc<$}ZCa*B#aVh2=)wKjORb7uJ!`%&S-^nNQ+GMRAbl{&H@Uy}7T$tV z3JmOWUQ6aMF}$Y|5nyoMc_))5YTe-;{uKcs4{LvN8-9^rNQu~Ubcr5#WK(MuIHqlS zqc?07xUT|N`vPZ*<1A7qCL(Yfzen1oAw#mlJLkW8u&gVgSATzzK`I_V8-DG5n1Q%p z^9=K%mUwhv)$=$&at8sIMO=rg`aQu6v%i0SY0B{W-&0SJr6)-`vVcq?E!D*vo!YG^ zXNBxyh3vUb&c8C>uYad{7i6tn<9v@&8(g#3m*>i9#JA<{DC_f~vB7evr|TLk{Y7W}>IX={MW9pf@WhESrg6Um9g>7U*p%x&<2Np^belZnV-J8nt>2QWQ}UarDay4mAgN$|a%}i^{e!es z*QF9$<_s`eAzPzfP*^!n<_$_qh)0V#Bt%sk6sveC6gM17zhaR~3W>+Q6tsC{-bI?W z;5(#~LM)FC8_TX+>HfRU4}*FyH^)tV);U&Z6uj0V$26KrRp&#`euoM^S{_PP1>3xY zODY;h!B0sFz41F?H>iVLWi^wS%9aOdQ~!aWIUZJ}m%v11HwZe`*Y?y2HIhv-d>G{X zYPOrK2m^rmqBh{!Q00DSz)@X*roWx3?gJvgX39R0c(crRQ6^G z%=nNlyY1@>FxH@+CwvSI(gfwRZ&ae<6Ga~8>m=M?#wB|N{4%@<)w4aH8>I*p6h`%Y z)tLXyy2rtVAOB*F)#)>k%YO&KZokYxHAq2VIUt?AgwT8UZ$A8V*8OWa;RQX3sQ6PA zh8r*Udc?E3wNl4LY~Tzmzq*}a(2biO%YA0F47U3OWP8J%8gwh&d!sB)_+8kY_UN*1 zEKtC{HFFV>_9vs)ve;}8+F*eJjzr>@Ky&H6wQzjx1^q8qn*HPIF32;hf3={vL6-#D z>(Oh_(SIK<0d`?0i;2Ef9QQGtE?EHpA1Q7wXo`QLtD3Y+hUdq}$ADl~I9rMEqWmVi zA|L2ItaHPWvz05;vy0f=ds#Z{aJT=MnTrSm&OYE9Bq(1zx z!m$3xGCMf%_kk1oeOsCV;<+Jmzm3wBF)*DMs=Z=vwc7?Vz;%Ge+5LXVm{PVatT$_r zoORt)czG4f91)HbRK$ZH(@^9oHD5xnx`7wT$3(B+uJ?-2IMy^nGN*;t8Y^ns7B%_& z<`=s)ug~EF@9OO%+B(eePP-^qfJwneqzH~rZ01ewC%hV1l9*cYuf>x|7foHBX(C<4O z>+KpUjg$EP=c+BpKZ=T6=_yExEXmcvf@zII@a!E% z_6)TB-*Z%U-l%aFC%Z$U&{Rl}n z8}$nlb#Cz*%0DoEmVPFM)2D;E0^M}8!>qfKLe{b^ATfEiL~Gr@74&o$KD@fiuKg*F z+Fkt)?jily(?oe8TnMKj(JAw$^dUgkw6lv@#GOXo-u&WjPi*iQsE|H_ZS!;Ey@aR( zy|3XxmcVh@x^+952^E_fZJB(j{TVDeBPc{f;$<tjyYQ6 z9~~X_^Gfova+S&98=mVXVhr3Yaae`c9{$s90V&>7d`lB9gU&u!xsPkYJ!5zjoZ^{) zHH(PAQCAYUTN>%;Vd95j-xgjnpJ7wDMedX@6-i-e+d)Z(h3Z2(V+TPzGZN_V-PInc zZM*k7pdWv?n#BI%&Wre zQ1-$C-%&y1UpoYrA4;n-JnF2Z^rEDBAbW=G!r|bSg8wZ8OcG=sM~D~;LNTqDB#_-j z9{6&5R|PrJ38@Jk`9vo-eZSgha*a02X%uG+N(_ESKv_+`VQ_r)ZH^~rl-!E3=#KPT znc`LgMjiSP)`+l$A^em7$>8oB6BTx=b%G-+J9cyCZ!!)I`b^xw|D{gdb+_8Y71-i3 z7@i>TddLXEU=M$lV8TQ_KmG_O5Rc@D{wPi`&O-UN3%GxH3j+GY37F+9bV4U`t`K4- zQhK&i(_JMX+uSGvTN6KKV}hnb2W|&fVV^yvBl_VOmf&>n&>@h)o}V z_Oi`niTJZvn42pR!`5Tsy3)}Er`RvJr+5an{oQI3V*gCe21nUzI`J6QQUaCmB9Kh; z)d}_8?2tc3j;y-CTq9vhrWzk)<`};*Vg&J)K;HulBxDDSS-+{@Q>Ir){`wUBdkOw0 z`I-`?cFwQ`xB+4VXlu25KMn9<2XSL~GZ78tbnX>jzpuc#I_R>~!^Zx@5P7Sf!yoeB z8_URKjbeH8907e(&%0#YZ~FErk)GWV)l#WytQ#OruYyU5U+_34CFIe|JDa#M6{|=1 zkPGC|puCV7$jZAfnc~T)kCv8L#z->cFu_7m(f0&?l(0opEze%zyxBs+vAKj?wPOO0keV(2! z4n{5z7#QbZ+AP%^Ws@~^lqIJ@#s4=t1wE6M1(c#<$&Ww#uGvFH3qNfzy!r)26-8wT zuPS$<6a}`}+rHV)<|W~npdkE|xNk@ZLkVTZ3^0+Bt{BK#d`+pNK>(tl z{6%z+o=gPc+Y?OA`r^Xg5Hi+gr!Jann@5Gx zRsVYKaAB|NHQ7@oI5{IGZz1{=fn1r7*(u?seEucC$#%hjU$*{C(v5C_h-M#G5>F4% zrKpBn@SfqE0^|J+d;{XQ8ZoehUc9so?qoPsyA29;X}aVC-%zXo>H6zlsp<8X&I{?Tzt55qh4- z=w%nkPugkJ-|8h|t=%9H-D@?NY6C+9xa>^7uc5UzY*m7cWflIpF6@NmYj!FH?E*mf zHCqUXYUx$6oe`$F$$INcy*Bt{z;S(lD39(nMDZ%E=5Lqh>P40Dyjt@t9J`}D!t`aQ z+k0cgyjX?%*14Q4nE(S?2-+CS>}lu&G+uxUkF=&ax1kE z$md)>zIy3$=npjS?0BB}4Qy56b|xQbGc6$HgNz(pF+x)8wx7vZ{({!xCc9nS zPMymH^>=d!{xgc;l~udXdi%$a#dbIbXx~?Fsmlz0n6$!!mzLSwf*_s4)ZR~jE%mk_ zTo`cJvfpBVeE{Tq_C74Xfhxj_v}KSwdW6sA0C?bUt5NMFqpOf9L*{w-mR4H8>yMwp zLnB*c#d!@!^%kU>sZGIqmD5Hh125{0CV76F8FBrx~gfyO~vF`vMdRIo!nUNwIg zA;P~nnZNP>ECAK1-0*hFBCWL2bZ#A)XWlWyP=Gl2wj$vYdRr_}Qm$3mI0)|nPS%e2 z%f)LZX;G(yfpc*5U`t7-*C*yd0oh9>6aln(;v zlz?heKU*?jk~cFPoUOPF=dTrojmzVk%*L|{CpWB^H#&`iRi9Tzp&hH1@=DN(nTZC-B6|ym7-|3umQk6=BmpNj+W{aPz78;AxH~bPFB2)aOPU)7S&*Za z6r>-3I7MS-(q}9U8W5@d4yPG4%A}KS0YRr~_(u5Upc0;`E0i%xAya!d#-4xY885lz zgKw2+3I&upi=ne)P*C746+c6xd_JhiK+nj?aK`mxf|cwE?L=;dX@v;1)TxjsDk~pE zSvL0kJ*T(LAr`3E{hj2>@O>LsP!bLUNMfqDPtwxSUX+Q?P7GJx3;VNeybb^&2g<@E zJMy>gq@*CgnUPh9{0V=k%iZzM{j#ibSroodc+-Eujw>#;?2LSCq)krk@>*|rMRuw^~1G3 z8*h3WC=TxfsR+*LpDPl%y2%2ME9>;xg|7jxz(|5Q3QXo@25gC9hhi(JV-SZrI^&LQ z2e%%8?mIwfG?`uGL&|qoi30ZW%B-gkVmpEXKfIzD|FN<}R7%B|Xa7r|)=NnfL3;?- zOEs%*`0^;JfnE>-gr2k7NYt1)9E#+cH!N|fYd_=shwqqx>n)Z3oieaM2W|Dd{MkH=a0g zGTvQ~CC4tEvzE+2+vMd~tiqLIsR6UQy8Js-8uVRwZ1%zDj!ZWjQ)_Nv2x~G#yPYd7 z!rDa$7G>1|?HPe;()|aVkTmv}(F|_T#H^Tl2z*YftItNtNsU^wtR6J>*11yuUX62^ zdO(@wO{zbA*3*_45CNL!bD#K0hZT1)qLX&MDEWQBadZLxI>50+jJO)r&*JjF@t&b( z#zWxyC$$C%;k#k*GZ9*0?%&s`@nTgg+C#6xrVEL@-?|{$evC0OHHQ_X;0+CxyZ{a^ z_00T2Bq4c5v$usPHUfd|i%MW~OCPiGl1tq25^$chqN&h0f8MwMVtww~5R8TpW5A#O zHm2pqWn{`Opm{A{cg3b113o=k1ZI>WN+lRWT*C@<+9DyPS}J<9ou9($YyPb*z~BFZ zT|8&!3hz}#Db2P+2;2hd=@?9)e<1)Ju@#oM z9-kpHbp}sXC+ip=BI&xarO$wyfpz36WUlr&5*Dybf>ccPsY=9IN_@s2k@E+BNn=rR z01cNK%w_=bHYFU|@YuNu;N3EFpJi$T_>@^er^JISqMvfIVR#_8f&lKP&ab?50E{l1 z%PEKYSUpNTVB)n?z62OjUswVD9X_fyJZ0h_5Ju@f)4F;mCA^n{hu`Z~@f=Zi^p4gq zaffC@v~+5$7`Qh8{9k%Zdm>Nt?b;Lxl*42FlkaFETJa5$_eD>LM!nn4z=N(=wouRY zPJqlxHDZ2FA8$`%?E;MMO@&0kut!3M9};6uzjuV=rO5w4qIPhleWrx*_uHH2KpcRE znJ4(E0j$d@ODXFeYY7PO@^zwqYz-SIXK(^u@zf^nZ&?L}EV4e}8{($R^>0&&s5)WzHJVirRN*YN5V-){< zyJ7hDT5yux15CkKB|^HCQc(y%NVGk8y~57p4!E zvfIOw1Q>+q=V%HvhrJL4Vta7(g~W}9`V3gGs{8EQfPgTyl>0u!5s!y{(*tN-{Plgo zsm1?bkZoHAjZ~q|xYhImC1nrJ(a_0fnm|e3@JH|l>k1^X^RF{eUR!N@7G(UlRmGyb zfD<2i14K*61szxJU}!dgH@FaBY(PHDr{!=GMOF$9I%E>XZ5;|XpRS8P$Gbm4VoRe_ zX!v>IrLvG=_{$(Msm#h+UOLnKX_WQsY?-^O^Ai~M-fjH?dF`v$#uAC;P1v9e)=E3s zcvZ;GUGT0h*SfkDb+b7Hk+ex*yl#IKw%Zk@AN%>t;76-9a}V>nN=qEveip?Ad_BRy z)?O+j1vF%UitS-zQ%Jpc;o1Ec;F$krFUAOE%{-!1G?7L$xcvUHe%02Ur+}*H^!=)V z4(E=Na6@>86F`UsN@1G;d@?@(cmy3<9Kc^|;CM7;#%RS<1tLg`kZ6)boPA={jb>{L zRVLZ2{l)1gbG~!~=1cq#SMK>W9qx`dz52IiZg-@xd5N5VwjKxrO>liE$PLT)7Abe| zq2|4`E_xwRH8vH`cddS>#(Zn_CN9G*<%TZ+EDSL5aTYR)&9hOA^vw@k8B zK*A-$E1a@N55@*^&x_};mdtQ}o|{!iT>4F)Zk*xCgyDfFz5}rGrQMpT4TLQX5)<^B ztw6GP3aCyOhVecM>F1LL3d}83LdSP@)1N(yt6u?|IXpUmHo%Wz-W_av|8}YWU^f!Z zudRz)Kp^7S&7PxRw-Fr6PkG;8Sc7l9DC`FE?YwAwlIpZ?aOyktDR&$p7qiSYx1F^? zV~5YPa}O&ZgHojBYkY+Xj^uE0%aJr)HHYc^^fHpj_b012bJ9Y`SJ64Lz5?QVu~bBy zyTG=#S}iPl3zE?j8oBcYaQV(b9{(h!uQ7tv2WAsM1@;Lx7O-JM1NDj@snf=TgN-tQ*`k87@hm=&AYy-4f%%=if?(q-h7u{9|Q+h|zkUk^f59 zYK+9~XX9;1OX5T+OY=k5CLwTG6I|G+p}K&*@NkufL+k)`50>%8AdES}>od6Ef!Dw) zV#h34yxr4#waT=Pb%5Q8a7~3Fj&K*77F7ilaL1LsS{njFl|&%1=M$K#luvI&#ayrA zPb9{~QSm3*7lB2_O0 z%E;}R4?GZ!fXPUPbP6o?z&&8ADp=65A>+~}HtM~HJ_6+f(%OJf4R?bK(RUw7NIC)6 z4BZ&6F|I(B@Z!;jKI}Rg0+x?>+4b;w;Dh48TL<9Qq`IF~fagkt2%UzePouIXmK|0J z!=4Kby^KPb`;F@D{mhI8SrshV7m1GofvBmBh#(}M)*3JHn0@D3P<(-5REVoW6)~Bt zz32H9sF$0hR2^;v6iEe%Fs9gttFL8evRpn3saIr4Ky8ozS7vApl6Nk;5xpQq2kATp z186F#rZ9z6y4G2L&(|#=TJy`b?*O;0bdk;rbxKlfDi&BK>17a{&q|8%2S3n(C;+fa z4I8B^hYoQgGX>4#-86_;AqqQAxa&fl?bM)=wGAe)9qGrz8iW>gPibJ)$l_1f(>CXG z(&X5?b5HlB0vx-&`Aw^Qog@foJx2U$>Ei8$Vb^4YU;POPNB8_<<+lQHla%ghZ5Zhl zAZJZwG=K-1x!s`#!=kB+N&p!<5y0$Me2S;?RXJdO7~gdxrF5p zzPSc8+-^N^Nf_3%o?^Z+)VFJElAsaDqo1Gtc8hhC?9Jd)G&YC`zb{os)5i~Ks6H7m zgIUr#&lWU?hcX0|^)FBcF4ks&4tvj)o-ig2O#&kjXL`{P-GD>EV5E)QMtV`i@}iH$ zx75Z)>~tj8Eg^Wq$c`ef2~xzpY4s&X^)iZiGON(XO=<9RkIxt`$Y^fn0Sr=7wRMwq zt=ELKnlF^hW^On;k-u;E-fZsjpfcEcHF5n-i5OuKZ}cmMvhbwdSbs|79{`pcgxd&G zK-9xv=md|swZHAj;x zdI6Kv>p2X@hxphYS#d@F-QCT$;BL}WhDm$A3P)%q%<_0jLH(o47>0rGTTp+_EDr+G z*E7swN_~(5VLcz?<;n*p2>UTNMKy-)cpw} zHp-P*5M0@|j3<4gw5+U3v=Hf7qAHc6Qwv5S%1gNy6)^W4AVA?4AOSIvr}I@@)L1Z30iJ>s z$oB^C0UdP*u%+6t$wwe1I!=hkX{{L~<&B|*?9gZw_+@P}M)eDmbqYpm z%5PNVWVdOBR#g^Bgw(YG_<6TsHSlkv)A z;IbOb7psyUXj^P4)+3hq0${buq=kD_;LSCeIi!0U06Wi!{bmviOEl{)$bD%NSD7)rT?GXb-mfV z9x=kxuS}`P&^)ui`QpYF;06?-Vg`bZiGup!@s+_t2As{`;k69_(jqJ-kE&LPr-~ZV zo7Rp^+8GarBkiKgM^^I|?XLqlL| zk2Yx81_#1H^IEaj&){fR#F?DBMnQs51fNHp6SU=`_=SrPKU z_-=>60fQ6RJ-U&QY;?1R?)4hp==TL>%8bD1*dg=~01qpCpm&*5)zmZ$)(Zxn>n|8a zGCe#f^7}QAnPpMrW~nWW`oEw8bjZZXtt1v35xm9oUgY(bY@OtSXr6w` zgd@y-mx-HQ;RwXR1X|~XijN*g{$(X48rjifVt+NLz8UU*e=M*C2cbj$E>Kl8S({+_ z?GE8b(t^#dJ90sE17?ez1QXE6Age#0|? z><+GCW-)cDqypck)YoGlk)mPn-%o2y-~=kC{s2QL;L;?L7Mo_`o&6V&OE(e>qS1Qg ztp;(7S?sJlq@7eki=!vxk%evifN`>rMh1i#Vu&%S0cMlD##rjl_q10bD0W@kmc3x3 zk12x#{c%53p;H`<;=R++;Pu5BhPFp;sTJBNC$&KWRm)r~NotcYryzGLB#^CgKv6ra zY@DMyNUq-y@a}8Qf-v39_9n7fx0p<&FfcX&lEI+bapI6N#VEisGnPQkuYjI`j+VOz zQZxRuBAIqrZNxq@V*Nm8O1J`-PMM7NRX5EOk3DSUo2Z`e+Yt$N= z>=eLSjfE0ZQsjnx@-+~@mw%Rsj!X1l=8!+P6>(+lC)|s)O)F(J=%Il@e{m@H99pk@ zU~+dsi3pJdm2yFtCubvrsc2ME28m$mP@(;RhjIx?T1svFFv|y?HTG8aNEYm}1 z_^Jpg4io4}Dz#WsW09o6`#u6GP(EvD;^~{YG{@Bqa`G0VVikRPrV_J2gefDA?K6as zUtrP``3&0yy*qB@eHq!5s|UG((-z%AcdMDI>U$X~K^WLSEP(SMB%XRl8=Y)yoW4me z&X~v(ZO+ZhI@fb(=F)1ZKbZK5!6VNxLt_haOr+J=EhAZy9tY>oI>i_`eSSHj+Vip| z6;i%PK32<_Ohi>9IpVaGA{RSA?S~YlxR963ygb8vbuTGB5N^uj2m8SGo+8|2n}rG6 zc@eRs4O0F^Du=5<@OFSgqfAL7tD4hbgcPdy@|>zePVy@en@LKw5ZUg#|CmroIE-8d zsl6k^2jNvN?}D-NIK8Gkn3I0PxOgA83lPr6#)Ay?&gaWUu#)-Qpd^PDyyQ;fTcYqq z8@)fQ(*!-i!BU&tDnc*55;iQ-2316@90~G;-=(nYtKdq?2dw>3>oFtR%`Rd=Aou_y z*!6eY?n4KgKt=5V=PDAUwp!W!TDRl`ArhlDg@tE2`u8bUc|zO-%xWmuGWOzEmDO-E z5N%KAl753rvS!4H$&344blXosv2K{;hJTjGw;9fW8Airzfb^9=z9IKZGpajL&(;T! zYJkWLFy37m9P|j@Z_K3nI6Yrk|MW+HH_QFhgbY>31ooEf)2c6yR*t2Ygq|W$iTj0; znwu;+5CS4y(rwqpq`s9X{XU&sEo&QrNhKXNe$SbUD2+qs7zDHd?Hz0e27GUHjd#8m)>3gF22XJ z22f_`!PBvqTSk9C1R@`Um7;*%3{$8qpd-Vm>qKNOefe|D48A=7BH>XW4U&h`MwhE> zwbc=%Dot8CI@B%@A^8W}kyWq|e(Y_2tag6?_ow-9BFOCKqMOk@Al8o%A(EG-GaOHg6 z?%RQQ{O$aM5rQa?ZW7_pE|}5|daRxzC^=h<5Gn=T`}%&jRJFpnI9h)T9OyGtUNEgcUC~L1gZ3kLWoR z?d{5?82$<*L#H==h5p|Kvcv1$^+i7IdFOTgV1|B31o7MkBZ_e&&yHJ>!po4MDw#Q0 z^)msxZ%p=jR~-Z&5dj>usKtrNwgpmRMPCQ500CR(~%sNt=t55tZn z;w{6COSCPK*2t^eLiJijywlX(W+`!*z_rvjFJa9O2Berh`H`~TDJpO51XkqWqYW_a&0ICGP)V{y2T3u=D`e&}>2Hmya>t&U0ncfWV@Df+&^r0BRTM z6sJIdB~fWOk3|v5Je>sFj3o@q?kVWqO^9^S?ubI}Rcli+^yFdgzJg+D{k|b|*RG}c zJKPuKZDSWE6!m!?2M@9Jy@8#B6b9!m2;!#0EiaIlH!47;TUfYQ4Zv9%f@KAOozwuE z$15F@?8e$ngD=K;X-EpCd@6BLvJ($OT^ zOG9Lci77?H$Y>NtkIrA4-zS|OiqN!>+4Ro)I90?C|28_rlxrgEnzNR2i*G=YMhwyP zg;E_}MZBC|XmJbVD>;~Y&3BckvC|FU5j?W!-Ws9H=$UZsP4{m==ob;wCq%eY1%~^A zH5arqu-xyBrUmT|aRYqj1Zd^}@x4JGD$l&r^o>Np@gJqEFubBl=wEenEa{VyPejnZ zA{mt25TVhhx_CkO>^q*th_Z-piR=V8%iJz98VciH)-eGXt7X~sOT1+(|rD zD8>q8F(N^DO>diYg$QDFNmhy_pQkWluK#@I>R;6b$auU zZNwX@>M%sK&@ik#X=!-bJLk@;a0b2AUfKlg=)MqUm6X^lpibQEE`tLaNkQjVliYVm zjJBY0a21VG8>s2Fe_La3tRld_zJqT`ZG|cs+l#Uoa91WT)tn5@9}&SIInhB50#a0L zxcqm+=-uCV5B!J=S55vnNW$>XMv1WIxd`d{BvPP~%@uNGn8Cp+ zMPf8R+)n`LU{*GEgjMohND+A~0)`q-BRe%02)!dsuFJmO6+yrep+8N`2;zOR6 zO~HV*^PIG}$^4z%ETUq9=sso-lHA;0VM;61y#hwZc|Hvg5-=vxRme$Y)DDMBKB zG8jUAboASr4)Duy3>0AWgrXDri%N0aqcubf+*9BNbN8q7zVh66c>vA9arDK<6CZcV zA9gl*cfOXZL){nczmer6v8=|~)75k?@Q4RDzC&S(gfkEBW)@$!=wOgL2wvuv(`g)D zj#JX}DK2BazgC@kYA(2VcPc&_44`j%#{1#-+s0Rq%3+W8u z0glMbG=hT%W`I{triUex=R}Q{0RcEhKe~Zd5e2&=oSzoM;ffFb-8#C-66icsQ#pv8 zxyfch!w={*xB+Vpk@G8&TQGTVA;=BB7b1(NeH{y%B0`FtKlLK(4#S*N``$|eC9pop zKG@m@^+ULn(ILVkiqU6YBn>aM`<$-%HO*tbE$%^Kh>szKU@R!1k4K*Gp+mgvluGH> zIm}Eo;4(O@VndOOko+?@3q+78g%ME)dC(=G0rk55)9FyjIH68Vt;F&^%+_a#ZbZDy zIY;?cBB3;p&_m>#&@bb?KpxQf3#jGmpOKgTAux50UQ!SGkv;GxHz#zv8$4PojgC*Q z{gE%x$<1bplmnf#rq@5Dr0C^I!M5@EZN}RFZTtnZ`hVNnhd7ph#y-{&1qW0^s79QS zZ-eXnDwotn6Kg+tj|cw2?nj(_7^LD@)+m5Qbc`2I2=N53w~6Z*%6lB^^f`fb>ezkz zt7se|h%*4YeMfjA{Vq!OGsow)cI>4!z4I5{-63Sn5SrEZGJKX|3C917g z_)LfljrAcaKnHQEzCXe5YbfnM{{9pvmP)u5ya-H6G2Sf$BegBC$A~0QqxAXwFaT*h z7$h7+64b1#k9|w;a3w;|@DGQAdHBz(In4(N+^3@m8OROyH8$F>L*P9OxNl+8xa>rx zMF)S|e3IVe@leZ9KqbAprG5O1#+hNV$WR%EMwXD1qYBP}d{AX9i;Q;W6)!Z<{^z(g z5)oL6_7}cnqLAkSekoF1s)n7EcW}5!rsjF0Lk3mYuSI8{lO8VGAhA&Kc)YDH3jfJn zAxlOZE|^pu>(Q2+)Wugwp46_DxOh^#1ZfJERWadJ20Ce{sdi9CGKfF@fgm z3%)}z0s&68VPs!IjS00G3EGW|ljB<4HV4=nveF#FrWXuqeE>wt$Zs_Un>`FD0{1n@ z(aR7Lr)-OHGKn5j588Cx{VZ8O8C>>1`slH!L>i?`zntV}7kElRW?^6<11bhFdu&j2 zw_LT zT4!<0H38EN8Gc4VZzb?aDWl;i;G^rBA;Q6EB@6LDC(h*V@F%3vwm&`&vH84!=sNlF z=^dA8>67P^IFH0@vVboclzzG?OxU^BLoO$quz!^u)tFiaqi=_rAS0XXZ_`^;WPDai zApJrB&lrT$Q!#^3eSz5THS{h9tgkxT>(4dyN~ncg^1P2FKxoh|=m#r6AQJ>15p#Y0 zMwu@sJEslIw&OP}_6rVvmzJZf7o42z3Dd)MVdZ3iN$QZ>Qps>r1e)v3wXRoUg>`r_ z^4^@|2%AYOD>9gSg`NVa68D#u;(Ssdf}I{Qg;l$E{%}UqA9&l&e>CtX`T=3yzxBma zaEr@*M*nm0aDOx7v`!OW9wTzr7cAy|BsOX#ubGuZk{B;K|@A)aoetbS;=gH>> zH*>x7FA7-N*6QNRtWyDAIyJhO_7K&IYvWP1o#2!WboL9@|iFmDJn=@x?QqN z=%4SWZ~;95bcjX8=p}Xa3h9V%w}?LEyzCK1{Y1#3(Ty|pS^pQkY`7DEz{ZSlk!eQI zz`b(#cXc(E>WVo~B(b=XF-jF`KAg#&IC#5+IkZIrO}nVHa3Vd>3h$bvbMMJ8MeKD4 z2N3jI?4seAk$`UiLGaEl%_ckH+a8pS2%a$diT|lV3;71LfN~Mcqk?ubRsj1MNJI~8 zGHJOuTyC&&)-xBq0Mfo(9D8yre012V^CU^9{ z>yfbH&qBf)(hhA}k7YKl!L)j?ge9S?}-ZmpPjWuev! zS2aXQZE|`J{Wbr&$@QmpJ=`}j6yg4G@BU5Y1E}gp;}Uiqt6mx2PsF*ZSFgSrRZ=nl z_0*?N)+UOLn&9-}Sg49ElDn897pCHXlHxXO^K+}&PziKtX1){7()+-=CxO50Y@4Xp z=8lR@PD`&Itu%7wXm=onbXku&X}0~amLn-Hnln~}tRFwDJ8MUc=1&X0^mY?44jb6?yWT6dxC4sy&rf|<+$4odw{l7xt5}9z163sVmEPZ6waYz9{Q z6?_)apv~zTOGU?By>{6caGB0awk`;{t2n+gu5w+2Abv>@er5473Vi{8?+kFo2fi2^ z{^#S5rFK1Jx48$stf;eDwzg&nZu5w`_j{7d@l+ZA_vY7tfj@B8l+!PTk6QdCOyeR4Df;*ECz4w4WLa0!6(_P`hK zk&Fhf9;S@2&p<`ZGk$e5z9&V7N=Az`j_gP`t|QTA?(Z_EiGvCE%(c=ri1gFVjHe;( z{-nzy;5^zq6ocgT9&)*D25t&%V#e?4Oe#jZIE0SD1pC0l8%z(hTHlA?D|!ggw!9WP z=?C@6_KO;mqZB9+AYGo%l|dg6ZsR}+@VYTt5?=v_#|Adz0D}lk4CC}%xAsXO@PMZ% zk!BmM6&IoGtusNJ_Hh<*C9D1PkXu`7ncQ^YL+RVR57dI!K7Qu})H$oFqAURttF@A>Qni)|d@a^3k-*o9al=%F$3rE~CT$@Rd5 zPSq^L1X>DHPMb-z&rGK_L(Yn$!H}c_6j?<;X}(^uW_+XI3H^sw$kw&!Q=hCf?Y_^Iu_+ zsZoqz;0!0!#~;N@`EcjFbA!|RivimcZeK|VttFu;T_mdeFSWmcp*ie>{}bqJqJ|hy zJGA|ELWSY7zK@bQD>a|2hdk%C=2P$wVu;uZ%sK94cSph$CnpDsb5ETplFA)M!HfQn z=4!e0Zz>X~XC6;nop&a#T2s80Ng)Hszmh&a$TGKED}R~`wY#AuyfBgefs?5X9$3)W zw8-Bo8I3B$1Nw~sK?%fWI$urREL5}ro6y{x9=7EH6+$I7IeFj;Z8nGZcOw&le8*aF zM70++%YzH&v&kNBjXp;GAEd`z`&3j^w8cTTEvf%-R8_5*%FD!tMU!8K>?y-P1EE*Xz6U}#b)z0&)5S?_0xQFsHdO( zr5N%r=-h{p9peIkk$lKl0S|;zPNf=ocxvVRtUC}9Z|^iqBR2C)-8bHi7Xg7 zjYqyJr2UaCJxKgzR4n*t3hSnqyS5U_MFcBi3lIYXhhS!?N_2`jf5kegS1FGS zMR!q~E*O67v>`)-YRKZvAW7zyAKzX6xB&dU89WOh8K%^nWGaIZ8($^aj!e}yvetSQ z>=sO+Yl^>kaq^x~$-gBYi7PYsrUgaWgC#7pyc2UulIvxC4?FQ&`IMt(O~|D%y||ue zM9Sn?>pLtPCz2C?^ett(j17VF-b;_`v*x%?z>hpq*kH<}KpRZj2I8;9M-{O-$6tD_ zlX9aPE3bM9nJPE<=mY9)4f9s3Au`l@|MEhOK(%eJesH&{i%TSqN!M?U1>#91c=|nF z7gmAV|8_po_rg|f(XqV&NcazLSVcYgMUyJADW8ETbu-{q^o#tp+H?$uA<9V>91^nW zf3AOZ5|drNp)kY>QHho?zLazjZl^#xtQ6E-DiGQ$rNlKnB81wX$I1rK>i)Fw`J*iu zzb==WJo2IZnh$HFMW#p=i%YokB2j1 zvx(pkGpI+UMTpIf9W+*(J5cH#2K7g<_el85Rzj$kflLO3uk+_+x zjud~TD(GY5pnYWWJQd<^ICwEZfp3X$4!?EL^7gQ<6MxTq4^QXAkx+gAh;mfWQO0w zq>yg6N$q2;tLJGjIFy9DeHh>I)v4x||pDAh>rZAhz$tCr&0h;>rL9V#ybVrJ1l1y@O9pJ%k`7_~zq>!8u zCwMvjcxJvLcljxV2$_NCz3dGi978f7T?;1<VvBRf^I3TKY3kYgBLpUPNDG5jdx^mLl@Vl8YWfF+B^nx|zx?0Z z-lR$KgHRy4Qa>gu{P%+u+~ns_z!1`2H&ENGgPjH3CkI=I(S~Zd66@&Jy(+03`X#Yd zH;Z+LFKNQ25zKTcw9>NEhy)4Ok^V*SPILyis!p^JXIsITbg zm`&ZdFuibXpIz3>sgH+*PehC?uKi%#jk=n(v+6S8v+7)-vBticbpdNcftI z3IFr$ocwo{6>f*Jo}%@INyU&5h(kEL5UZc(Kv;fs z51$ysetC_nUbPE#b0Pc$`Y>V(`po(?A~*>6@-4=|ON)vK%PV@h*g(ScWF1jUOUq?a z{2v|@bZyJV}{<%n@y> z36pvgoK&gz`q9m^-|mjQ_o2mCLE_R*_^7NR!-O2-;)RZ@UeWuMwNc^l3cNg^Oqjki zmGld7etC!W!bE!wF^`BG_rMfHELDA8al-c!#5zw_#dKMRKFZUiY&6I*8d)*=r(ZUS zD-lMJ_TB+mFIVe+LF9}iblVMJtxObuf_m|xQ1h{t;0x9>ODqH! zl9nx~E7idkaWrcI5$kV&a1jaF4s@IT_oO^C>AnGWbQ9M6maUJ&IJq)ae?00{0;>OXsT--5S3VZfdNnJ)_+c9uzU00(J|&)L+CY!QT1l)ugbc! z%b~HcqQq_fNwIg7iU;b>JL}NH$B*kGUTQic>GVhZNPs+g>UXivs2IP$Oj@kOhPzTz z7;j6JW4gR7%=tp4e5DeVp)NWTKhfux)3+mL#_~*V6}X@)`pwNTv51wJo_|z2!aPCz z+UhVr2BhoC)?J+Q&LH` zF<HUV-q>b{w?6OBoqCQXMM{tEunod0zy+JH+@pJNmdBBQMKOa zR$(HCxw;rIjt79~yoxegVT7x*^SAr40y_2hvI~xAO8QXNDTL;=>AFgc ze#ZC}(ToWG(7pWmLt1Z?cp>D&rSjs_H{~NCp2p1XJH*YbY}p5Ek5IWgXG5*Zt>u9G-%L6pN4tvwEwF7LCNg zPLPcE{`LQES4XUqM8a-L3}~jygLitsGtNGGrtR^D9a;j=EC~6hASLp|R*3fnRwFdK z{S|$;_uBX@(3;MAYo+|prG<17G$D_aoK8vln)?TV8)_mwTUwsTn++{! zrQ!S~=g-`GJ^Drl8bRr(Eg;HE1$_(ZdU|>uqnu4jDUx2lqpQelFXK<3O;p?2630u$ zAF8{-0}R<$J*c!yzc(K2TiWAuwz1uR|VE5mb%CO}x8zs0EiElqC2OUPF(0Zi|CeP>W~kr5Xl|}oe@duMAKrJB^zXhC8tu?h?4T-$$04$z}{|6@>p!t&{^s#0bMkhDN_;kj&`X1vAp zgRF-&kM0gk$zI1fPY|9brU)w`AzeCwE~fduM!Qu9aMO@*K9_@ZOr8)7rRBbo8hLI~ zH)i$@j*Y}L@F28eH=k=Ql_0s%sf5=|E(b1A(|a9l_8&k0qHG?YA+0(YLOh**dN8fe zjnVaV#HUah2`QS5&+mps5FgC(@**m=yH@6zos_oLRH3V7K!DM2agQ;Me{?S3E%FWQ z=qlKj`I(Mj(*p^e9w7HBJSWyoZA|muk?&8HQw8G{{}eb{QISVdgZ*9xbSv4F3L_SD zW;1{S*?;|*RzN+i^0ddbLTEOHfsurnUTTFavo9=#9b)(;t{48ML$!KZB&pZBuOlo3Q#hD!^pY#J={Q5lif$C0GrJY;)fsO6c zbi}e*w;C_nT$q$Xcy{JV5@#oIEs3U2?{6%w7#d3z*e5V zeinupXR}Hzy6`Mp>)_kP)r|Y}ID0}00pJR1Q}8hqgj=*yxcRY z*oWX;K*Dk{80JW@F<>D*V>ckfBbVL6D=x@Ga~|{jga9{h2zZOTtEDLY z>XRcGvXtB&iQaY4dFHps3L514bXsB}BD~d;w65D?5S-47ii)DA&*nkCvssvBu{U8V z_NC&v+zb|>9OUV7dwKeBIVg#AV3eydHp$tv=07R!-FC%n6(DL;M2er74r@1mXNeBc zIg3H~&XUsZR&p6V?_UPFiMZ)Sr`?qPRV!`JuflJ!uVr;Y#>hCt>7Ji3nywut^d z;2&-$AH+a|rbh zcxH}_EUsP%PbZzgf?y^_h9<6IZx(%7=fwSp+Ap`yjg4Jj&qNUL4x$A6;O8|J`WOyw z7HC93S3IavQxrqRS3fAjs#)WT&^8QJaPgWtiUT<-aKrwJtx3cmWA08H{gzu+)^~XQ}%=dL9 zK4V#VIX1SRz1aEK?ALJY`Njg{A-cyD5@Wi=@#4B-1)3kYoh@m+ExCm+@B^VfaW zAD$yoU%l5e^F~2$(}pRjsCex%D8JHMo1zJ0PIAsB8eny~?<3Td+tQj;l#59+QXZ|I zo11GjU^00FW)#l=_J3j|Re)l0#ceysEQ8DTbKNzP$faT);W{!SLll@*soX&T-&B zQHGGR0GhxrxYQzL{A&m(WnCIO^Y!%}GVgk?cway6BT8Drf97;QEq)?Q1a%r6C%xwc zH+4U)HY&aoBUL}Oe*JoMdtn*N%xi0uU5e`;AXZft?shn+vADp3opC!+)8__%Pn@z8>-$G?QpZGTAFD#H%+S^*fK-MxCoFVE94mB0+pR$iqyRa`ma zzT;?#+Ojm5AA3X=f6uX9fkaPAF`w!Q`SIuIVGyo)6vA4or}ad^-lzn$O{&yKLVg~? zPF!G7$>j~l{IYta10^RX?=l>52o(PV&uqMwS=5l3_p1)S2Dy;!qWxw$mwo`CsBst3 zH2^)MZlw5SX(M7zwXyN?dh7S0FjLA08+vRsE#j1wJjt8oNx9C&(=+9F)rvG%=OD4w z`b>X2Y$CQP1m1U<3pOP(TsZOA4#hj~=VCNQOw_#pHG%7qUOq}K6-eg_bF;(HaZf_% zUM=%=f2IF9)z%ibYmDKWNJ}!SjzF-K2y&Xs)80usFWqtvAZ65hf>9*KU^xwFN$TrvRI7k@*?;xDI27xl8n<-hxBV+ zRGJzQd?q9d*TGl&3#q_=*&==ss~UgRsh%a|3f2zrSiWQa8B8PUHO969&rUT5hE{s6 zp(T^-Rt&CJX-6b1*&aI9*2NkUn!?{x&`p>eCxVtZq+yo_yk9@% z-c9&yC9w4Bs*Pq(Wl zvZNYVPqa~RXvB6$DclLFObe3UtkfI3x+;U~ih+Sq|2tdJpeyihW_I>eQt1BoRHJ=e zA_kIE$Dch9yA&B;u#7l&i5p|Et;&Jn{*e$`on04B!ko*Kmc`%rd;IWbGUp9GhV~DF z{7^fg5r{i56fb0T7c7WQW*fv9koeDohwmstyJy`WHaY_`BeNw$B!Nk$KD#wS{N2RQ z>4VivkDd@@A`+&o?g0}=-Kh*v4I%ty&Nou@*TM&3nq_5ch^EiQ6L5kLz8@P*4Zd;A z70Aa_n%1#KDFny&_7?BYgIv=&JKFrzBfHXUKuOnvGTAE>{W|2 zS!hUoA_E5q(~E0oyd%FqOias2pXNpIPCJJ=k%+9Y9QS}8{2Qn%IEl5#MMG*mD4}H0 z479(!j3LT54>*qWP8S)%)zCa2GcKm$1C6G)Ml%4)I@E`dyv95?&17#1E9arS-HOl~J@Z$cRi-Zz209l|P%l z-Ty--jcuUTWS&rfBUGuio9khYkBt?uS8~*b$KT-Ff;SOpTWs?jjZY`61q$8VyTgGm zFB*PSE!HmtZcc~>ZC(EBy-S;PF~ST6Am@Sz<5}qrc{fkcVLGC?m7G+JFez%GkNO+@ zCst}Wcb}nZSD7G7r&nL0Jz03Ghw^Dn#k+4>rq!fJ$h#FLfuq9}%!k~aLes8H z<)1$T%qeomLCFffA9TtT$NAz}c}%_|FvQEfi*qd%-{AAb-yq?{0_?2X)q3!Sa?;G%NsHieJ>ys#M(mdTS0#!(OEziNWvhMz+ zvaNW*muAZ38-UjeQcrY$>7JLC;!7!QZ*TvU&TC?2cg58jC&`xN=hxla@WlqNc$Zr1 zM#t3>chkC5MSLms;;9ghAH#~dqW^S_=Nx8xUjC@7zXUK4+QQ4h$u3vRVn-!Q4JIIe zfYqRxp^?pC*7SweFF+B*(BaEIv$^eI&7iXhgEZmLd=WObilb1Tr79nRU4j)oFZj#Ypc_7U3zwtEo z1D~y(6~0Mv{PNhuYYK&J_18;KbiD}{=M50s)P;r{h8xU<3V1qo_&}P!Ht+%!X=Vg}%8?{UkZAVBR%Mh1{XWL)GR-Frf@e~H^hk4v*3Li!Dp&I+ zLX`N{yOaiMvl}&ab>ZW7caUci0LtUR*Ck35@$Mk)M7?(~LG-A!4EEDaxIXxBG;C@% zFG6I8^3q48A4&B&=6q|S zkiOz}%O5Y-p(ao`?wc>>eWUGN4ncmE@j`?0FvrMtDDge>-^w4AG(33^0D-EgOwS?K z`;gK4g(uHKO+|(MBw9-$P{`j%-<7BLJ(>%i`Q)9uZ(`t|c?ncx^g$x%=al!s_W5OQ z_g#~>b3-d;Eas#aiNLEsanR(A$9qA9?Djx9gAt*$+Key|*9M)&bA6eg|LmVZKq+@|2+s|w&Dj*=v%>3b*`^wXe@1rpzqoc~`Qx2NLBO`qe zJkA^bg@{Z)uxVWv!2~cmIT>@A)bZX(`TWf7^?1f_Gn`5t@ckPhy-wQwPe+=m8r-=r z<~!{192`cUg>3F;fkFqteMrO*%XE|%IS*KX>N~Kk`>O`YaOb|SoC!3V4rBg)e~Top zIS+EEfj8&LlP9BshU6D~{B1y2|JnJQgkrqEdO`J$1zxI63ZYILLQnQ(_MCWjfID@+ zAi|;CWnz^A>1!M+wzmy{Jp`{JgcqM2gYv|wK&Nx{j@I$$h6n#>5ZdnUZej+5_ba22 z8rP{<87|{rb09PN(-E^%Hg*)FuhvNk9@EeZP16fD9EBb#>z?(4kAZ8hl0C6yufLq= zQ|Ure5(i#H6NwKKcmkD`#NC>KZdpoMROqZLR()XnOTvPO?$)WQ(cJ@z>6zOuT1pKt zHn-68l70^zBCMF!%TS~#Ci=j(%5YctbuIo#J%hqcvP#FFJLKL&8V7LiHvr2`uB&Xh zLNUI-KsD;>G)WBNU#CT@x1GL?<=05-Oj}z!YHrc;DAsM1N&F9zcpGXFNL&Gn?y=t) zz<9F1OvzYd6(WvuF;)cdwW*)9eOLG=9v@vpDpH}&1a7gD^hNKG3)JDbX)MNHpIB?t=$bHkdilWdWWg-YD zonVE)*;hy1LK7g#bxU+0eXxV*8z1|ojZ#r~nj%QS^fi+<0m*N^!#H1~HBHgqbG()l zduAZ+C0-B@tzdwWc$I(O<7;N*f~=pg$DMP`RFqILnIaHJ{`>6 zj51C6@PU|w>-&p^YI8(!toIjUouQh}gbagQ-$I9ton1$|oht(s zNDDgN8k*+%or*aJ1AjnZ438$Z>$OpoRwN%OC2!+rR>a#2{QkA9WV|eG2((1~zQKWd zD2bG1>?$1#736%E4)-FY>g266L+H@*Q2{%JE`WqijU#?AYAN?SE9+3Za6*=RGfJVX zUN@&R^2F_Ra)c}uX2SCylgG15w`DovrWi4=C1aBDYjWYo%(x2LZ*mqpeTbBcPtSA44+r(GND{dwXBHrmtl@%XTWPlwmOZYs%vFZ!8 zXydtlawk42x&w$^VWd7h^rfYs+g|rM|UH{Ke*Wce&!s3{)x(! zj(pY~jZhx@qCqtwYHtq!Cbb*RMfSH(C`7#ufrN>-YJs;eq7=Q6T<=`A`&$I-Zr*8(pbgYRK6S~Ecz?f~*L+26 zr_aVwL>%@Ctt)4XT23OI@eg9QHbg+*B6?w??Lzye$ZT9eFBEat4TrdZ%yn5Xk0@nq86@ zZQwrnI7+kmyq#;I?f+>bvhu57n2rA*n$Cius;=$Uo9>j5-gF6q(%s!DEh5t0(jd}E zcXx|)cPr9@bf;3%wZF;pp2H7d*IH}Nd5YzT8hl3PpY1WhCawuhC zcwk=}_V^mRHAR>=WJVf>@}{WWnJxR_fl*y7#&#l2J8Pke7PqeSpe>CFx`-ZdT_=V( zD|pmg08BvONKHV!anZup{~41%&0h|-2LbkE=DbC~1sF?x+YJqEu9o%+Mh0a??)=63 z^20a`jj#t+T$J!r%0uq1U=(iuhg~JHC7j_0x2jaN-I1l-m6@B}FU2Bd!DJ<>3BeT^ zMMhx|oO(dici8AB&KDxLtsArRAEIc2t>fS<6u&jkZ_4h|aqmBrX^;5!cFoCE#Ou#u zvPHh8``?oAZ8*oj=4$=Vsl`ya;MQdZ@JlymoWIGYIgs+^2$0#iR>xvk;k1Kr>E+)= zS*kSD9A`Ea;R}LCQ*M)XPhhOcc@pmrYGv!iNj-BJ7hW47v;$g7$6me@c-TubPt_Qn z(<>o6y87V%n+Ev9$Hyxik;{2nAs}Z2e2+|b{dd!j2Gts|Q-<00s!Ov`an#_W(5K3YF*ce!`8IPih z3aOCi!~pS^l52``QgefcE0wd=5Y2D2*=gsxPs5I*)H%hU`2>l8#bOi3*7Ak%SK|3CPQjG)DT73%WlAS@3VZ ziAU_j4D(8UX4MxPd8uExU_=sKn}(=8D19aWjwSKgfT&Jl^x;ZJn^gLGVU4spAAEuOwQM$DFyDN&Q5zV$ zM^gyyEV;-Q7Zo`#S5#CeV-cwub~dLLCX0@30^?IQ_;mdN2R~b7goNeJ`-2GQe*IXJ zk_LRz zn+W|%+}O#t93Es z+V|mxqu`X=t526wTsJc;4US9rTX6qGA1%ab+>~Yc<>lq84mC}(VFwkyOI9(qV`+46 z-IxVq0xZqdXF~#{HhRlO6&zbokyugRkVyV+RxgkNvmqvW`hihTZ?kNlvk@};X6jh; zyF;MR0WEx>(*8@L;)m0TA0s0>RDm>!Rc{(?`K3Pr_k!)8TJ{z(&fjb3z~m52TXhei;nvCzCY0q|eXWQ9-|2}s-uWs($ zx)eUcqgV45PB31PCy})FJ0KMPdje6^g3&=@eDj~$?@J`_@J8L+hqT_HTf%=&A*Rp$ zMe)+`cE}}x7Bg;v^R1Xa;rir(`zPEJpd0*}h|pdp!Zeq~h3a1b@}2r*-MiWH4M5t^ zONKoY0Oi51f)9#x+YICn0n=^OwG=roV)}%k5NC1miM$!5_FDq&T!V(RE96cY#0*3@@OhQU1pd zV7)T&IhB?;b#`%i(5mhP7VlEt#HjZ3DaD_Bn^BdOKZw}Ur@ed1hLjUoKc|z)uAgBTzFpr>DO!IxaG5Yit)(P@I#` zi;Ae=verdUIK|(eqL;3LY)%%Ku)4hfs(s9yPW#>2k*9Mh3k%Qil>X*G4+##$Fg_$L z?KhjTyRfhym#dENM;^0B_ zv>z5bMl$!}_572u3G|7XfvJ9jN(3xC$L0Q7v9MkVn2pKe)A$sR^2BPX;)sLpV~4-F z+l52pn5Kd7kj|sMcmJifo|Y=k+*pS}*1Vyo%M2YdxC|`Hj9LV^A9Q_$dD!Czn6)OX zfbu-hv)+e}L2O2bEqc6`2B>UNYve_kZ!fy8HzGlG1bHj^V<6C}S3rR*XC z!^3uVbNoC1D(j`mh5Q1Am5yLMxE>7Lm+AM zAk-AXgt>{4FNpHlpZ#N^=?-mhfH0z^Cc*vt7X`bK-RrNcnAtV|8fRz6IDb09=nz- zI7V_GINLd8;;mb><hAq3sY3V;FSeY1b;{E}?40e(5z30Loxzf9V zG@~<@D#Zt`Qm4)0Tm?0Cb>Nwbky1mu{xBKDMqh*>3gF%MJ8$ko4i>yWzp5Pvpl3k1 zPu7~VpWxWxgTMA(y-5_-5oDDWoYH?OEA72~J5o z^vPZKqs;tz47KxFZvRomXaBkc>_$i3$#o#5NQo&a4k7CPQR)<;p|VI_5yF);$2_v%Minjxi3b0KFU<3j(Iz$l?0ij#^2u@D+? z^`|Jsm`+q1y#b0xDV}2Joc8x|?`eB2ZY{!>Td!hl9JnUqS)Y>f6^sweKT7C*(pC&s zcf|JFs)2`4Ew}CR*!&V2j_ty+%-J2rX}ARD z+NwZOI5$J&$gT+3Ve)2>qmbjy%~g;4 zu9!_KQToSdvI6nobQ9QJ#%tJ}>{@JPJg_d(?7O@T89^ke12PuaOot2_ADzQ73~S5% zu%r36jtH$(IlAZimUBA&ga=C-FeKFj#ZcFjn%bl1F&u zHu^U~Hnt95Zxi})=@txi$V`$p-aR^CL^T!m&yM*5Upu$?C_!Nd6KbUYr#;a8;}{f^ zpOAmyTw}x;v2Rk7fm@pAF{0XCWRpM6SOY2F81ROx`DW8i|1 zdi&`kQ%^VN%Sgb}p}F@te+~9W;QY>Y`+VG&#oiFMlVPTq%*17qpOahUiT#EQbJLI} zsTZr5s39m(+7evvI9d%_7I7rAeP9?EU@kGqk}3g!Nj8Gn_=-P%RaLWJsq5>vT1_*| zK#JID&r8986%Q52>|9(x?~Q0Y2uvYrv_>Bv%e)a`MwDu#qo*f9sLRh-icJcE3}{e# zZG8hjSj-MittF`dG8`G|L{AF1PnM2&c4X23ARDyJx!`i-N1?&OhB{k4T(6x;f3Be_ z}(?1&TI}<#DBF%eHm%`+sIVVwSK$nK+PACw- zmkeZMfK1|6HVQzDumohb)HGn6tAB(fhRudynUH1DpQC5iz<+wb+8Rf^G-#s1NRP`SXo- zHipBcWPi|+0{(*I2I{w@B?UJFH?-}|m^-wx^Mlkf-D5=3$KS0-8nQAZF$#EU`~a3gyido-<$Q&kW@8 zJK&4Ex}Wji(aMlMHJQ%W$`N%{PZ8Hk z^K4<;tah4RE3&N6qZ;TEcSM!TFf|{W#J$liLpuJvmeV~8tQipAL=M+wya((Ae`W~|kz4sfUYUdcYcc-Vy+N?@^V7aQ`JW_H@Wct4b&J(wWjS#D z9JwiWf@7r9zu%lGp{K`uig9E*C5;a8n2)0kMKkrl5n$n4_xe;`P))_b!hmEAAGptR zz00{y3Da_Y1T9C{)&qK&xsNR zp+Eh~ukw7-&4R_G5Kl~m0nOzJ(gRv8W=KwG*zHtE5jUg*hDZL5Q?boq%aJn}{gr!N z)2k#c&EJX2O55=Yd6QsF39)6sI=7xv0vO+YOt2}J)kX2zD?{bo5yY;S3J0I?hA(OJ}|cqxx#u- z;>P6KIfnQ19JH?cPhMZcoiN7I)x4Ld-tQHid#~WTWG*Y z4v`#=@c9XtV1lwaGY(EvPmI9X3dOyCnzoSvF0Xq%X2s|tJ-q#!T<4dZ)7vkKhWJ2kpcF=&g57}nhUEq-~QZJ2&uWx1Q5 zbu^uFTIrQOqtP9sIu^ij$)JD+Z!gyH`}=#~!w1%B?hW1+84o*CNsj?uv*Y`yLvDuB8*K5J5WYh@0k4Bp$ zf4Z`=@?0;KyjM(L|8uh~fEG%DhFl>wzX(5xf_IU@9ekCQwpoI&zZy=WzPOLT@1N@M zX1}t(mVM-_dpF?h)&lieyt|^ZBoihl0H-!7iwoQtPft)(Y9_4Q4Ct6*I%56E334!C z0kyj_MTO5!PUi7Efj-8qLm&TO$8)1RN7~<-PK1x1?+bu(!6i?_9%|k|88yd)lK2P(Y@pU*}_=F~xFlYksI#~wA4=F_+;Q8py&)jxl8ev8$>ucX?9Q>Yfzs_% znHLXP*#gdqb`U06myVlEZ?64xfsr5RF0TCth)T3p&H4HG(-`uDLFVL$datH|yuIpl zgd6qn=@#rXy+Hu<;Ezl7LbEA@_6JZ2#Uh|Hs${+GYoPrkrgpt`KK%{frJ z4F5{iJY1+9_%}Q2ok$~z_;o4lW#ruyM^tGYc&L*S)i!-nB!ut;V=55Dnh5q$GwXj< zvfZ4TQWr-QnAf}wY5G=>su|mkAONX#{?QYJ@FwUi_lcD0smA=fd;ZV2HdJ=JRF(N{ zK>9v4R82oW&d<+(xWiF%o+(6^>-kk6WvRsJb(RPwU@%0}QoHQxcn{(H*YW%N7igB4-bWNh4@7S7JjtDU~!L&%aL-in0ca9H?! zhWvT}Ct8JTv#!c=jd_^~i{`Yyo}_S;J0SMg)xSNbhPwhry5N&>ohz-SetjPJRm7!W zoeSXe{jWc43M0HaaE{n3{N3cx<*DZk^Mro|>KF5>*V+gWm#QIemFR=UQV6HjA!-PP zh69c?!?_Q)Sh(_q>@51lTKhP=dcR2W118|Ku24`N6+esvBxbL{*uSaK@nh<%S;82c zRcx&+QuAB~FyfMC_uzAK8FWJQ+-Emv#LV+w5z-tVI;}8$?g$AqaCo@6J|&hnOg)}y zb|MbZZGrx6u6M2K4_OjJ$6}$CoC%RAJOpUK8M{!HB0at3nMsdN&e0{1u$-^lJ0B_)(L_5<$Ulz)XR<;fM8kcGyUoQNrYOwiN!UymA*9a)Uy&)Lj z4~NoKeNpbTiUb`wuo*X(a$#%4Azb$xrjhGtq6ek_{c)ZJpK)Drzl-|UhDO{+iw_@o z%N0X&z8qr4sozK1C>REZ!%p?kpznZ3Y3@@f$`Ddyb`J>lK=MudWPndy-i?P?-Li84;>0o=Q-x!O zjy-(%2EknX!ICRu-xkDms;F?0#O}X%+6p_p0M!9Co%Zb@JBa~&&-lkLc)zUHT! z8-B9h{(G`q0~BV+D_n&xmtFRAQ#9d%o9A;RrV>mDUS3}O{J$9j-@JZQPwrDzDoX%P z2sv7CFm7o&u$TUwax)Bt;=%nO0m%i2axjUxxjl3MUiCWhpzGFCPZZes5S+FcM+W*4 zQeS^OeI#PIR9Z}le&KsBf>9M;sa{ue^AOF7p|D$XTfAGklsUWADHEOK)aR zS2U_ga{wrM1(_bPHl6U3G}1WCntV3YInd?@*} z3=f*;lB3r%s1MR0h^{qU1f+@{+6Ke8wEE22Z1LK3|fgqw($^Pa#1F*yX^_F949zGT?@ zi^e{z{Ti-*9|EpTVZiAe9UTq&gV!qaN~}PpnsqMtTs4f~7BYf=Ee~v$FOFVfA1#n0 z;z8#FP&eb_sbB^T<*9{nYqC4t(6_i@;Sg1pQMi%6r)MRi!cquW$vRnEq%Iy2$Z8=H z?H?8NezyV%hGhe{ws{EeU}kbo{-!(dp+c9~yCOCbSYX&K=Bm@|7MNb1SMPTI&Tp0` zx1Y`=zZ($Ko@1FscvTULa{^kdcXk#+Y1nnFHo5JW_ynGzSm1^BZO(7+xX&vpEBCMk zyi)s@K>hfLN)xMw^5)rGHJgzp?FH@C@%%U1yhaBe8{F8K?o`fQ*jb8)0$n7J-@^s3 z7%nYwF?)F8vRFiDOCo%3KaA<`OOu@M6y;Ra89u zm$(3)&+uEm+%i35cg(w78YI(p1I&7&asnyPcumys&n8RvoDnAosBN2NCE4gxjMv#a z5Slp}IfX@WWlAq=5G>NrXnkAKBQ2(mZCBxKPObD*w!!vtRqQ*@naAAMm#d9-8RPiq z9nNf+IeyXs?*cT7+u1bc*vZpus#~zxd`IF3R(*FlTiASFHvD``H=w0|_`cm=V*n8H zLe9`So$3i3I-b$K3yb-5ek?s#eFeT@$Q9OawnXFzPtJC?_>ytnRdUTC7k77+NFp@- zr#C-e2jcpEVD~aB@bzdMR3aULS_UkAwL+o9Stpy2S0eQ15H8>(NZi_@Gh}_QpX0d^ zuCsG%hN*f3M6~s`#dfdnz_}QE$I8Mo!+m~&V)=m>8O{k2>@lXm=vh5eCAQc5c3}@Rs6B=s8G1mEFSj!g?Wq9=*-MvEL;@#`E1JDLA;5!bbSddY z4ZQp-SXlI1HBj3Q0X0OTk2C)O>>}NOUSj=*wFYq?h1k$h-0i~Oxs0=zk)Gbhz-U}T zYp;9~5&i(uB?zp|$?X=z#lmk;J`LR-EzkCM9nF7B*l8QSle@qFv(mBn=BldCQic@q zJ$3iLtt^jXxj()!D=HW)uvu77af~^IU>Wr6O+(UXgB-&!V~~=7NLD#~Gl?GG~{8*&rnVoQ0A!`y0kQ+$0J$Cn8ln_}Fk95zw z+~;!bi}-vSDJTddAe1V9SRIyA&KFJ*V&C)H;^!y6&m{41N`7__bPZZH&cWHtP^(jv#hPokmthBQZjeNDeP#Rc#{=gckedrqdI0*;hX?)ICM@9<4 z1)lA+X;Ov@tc?4Y(&I0`I+DeyIq=G>8qm*iTK+J9_DVgQ3YZ8JnWJ=C&Dn(UB2{3>O?AE`|=@bv-~qY{;R5 zUIvM)`za7f>V%Ibpol&lmiR+|7D+5lK2|AnK;iubSlTC;Mh?phEE7{vgEV$D?3w*$p>M!FHF_m;Kc_Qwi{h3b&jd&KpA3rFVL77>1 zjh;Q%ndG)nNZg?HL#k4Xy=1GcP0i;dBqS?suMTTQu6>Hcw~jtOn4qncZ9Ga9k<}~T z1L`3?t{iS=vrgAW1nZMgSeDH7OMLt+Vs$_FGA0lB6)@q$qaa4yK&*a=_aqg#0|+OL zxP^S2HT}HSJVqBi4uAbzQvUv8sBIAk9m0#XT;7pUs=&v`Nqu1N zi)bj0gV1R0_J?2b28e?l_h;YTZh1k6cr#$<1Nma3{VWh?^7nTO9bWLd_*j9=n#EuY zV?PgCVKivOQRKf7Ghg=m-p%N1jjSZ@^-W?nmlTcZzqyfu6AO?`p0XOP3IXjc8lCm( zo~6|*6x-9ORO*i5IjMa@0&BpKLC$SWz=LCV4+7O7NxwTccJ%I%-Jalj{dm#(&N zI9F*7Ug-OYSMS^arR?U3e96vRj1L?Kb92RY?u~#Yfzk22HgO2 z-slBi+1n{(WvXQAl1hfeQJPtoJB_>{}I_*X8O5LxI;Fq&iy&9F8 zDFoynXZ~UIi4hkWnL%*jD(f~cw^g`R+x+_9b(1amR9t&=b0aT*>23IH;T0!k;D^5r zKfO0p(b0geAL$M896+dSWlJc?Oirf$St5Yl$4mvFp6yE&H%04 z_-;>R*}t;&ITI?X4BTWR0>ko`LIQ06yTw(om25~i@&l3ZR1VW#^AsbNqWE9}a!fq% znCgbEsUWWS`zK2c4n~ue)KfM|>Ga8uM8MRuAOIQi+M#2a1GUN%3!3{zf>Dib;25)$=13D{+U=XO|` zx=pI%j9+ovgYYmQmt1!esX3Me1_MZ8CKzynK|-0E@kI{k?gAFo6p&CT`A99f`rkF{ zNdTu2xc$ra#F7mfp}=dmpma~8qg$a23+W?bn?dK_fPT_gL#EB7JC7QV@vVS30w8hu z40$iLr%Nn(fdG#R2YM-(_?Ise1U*;C=>+?s(ctPg-y{UK_Yhl19xt1^Ry;Sc-qT7^ zS&4A}_Y4RR@BWeYsvuwwb$=ikG^;cw(D0*1pl}|G)zHWC?QmRSmR45cVx~Ke8`C&% zSRg_6R}B_2Dg`?6zPhf_Q9|w^>d5`~rJzQWbLiUkDHVT;0OAXh|2jR3P5f@mRfR9! zgOnE6OS|OP|GnUmECeB13WrVJ9&mmgVbwNHVeo2)QPHAh&cQv4gHnf@?S$fD=Pw(c zRUQ9~r1iBoq${rSy~EB{5V#TF7nXHL+`cE{sW+L-`3%uwJ!{e@e^eF$%?X9_2^@n3 zXmZ~gKD|_*O9MJyHprV8JA*FNN}DJ!Lw>qX@t?sJUIJRp$bul;DsW~dNGl^`0kFTv zAErD4{0o0!DYIMiagZ^M_s zBh;`iTsGEAPsD5Xp{qvdoiM>tW#j&}B)9=f?D$KF&RXChmD<{i!tbjG2P*}X{Q!Ns zS6vLBJVs^tH0V$T09-*)9w8xNkgKiI5RO=AEm%tyQf-R=cg>p6h&6x}jk~t-SEHSQ zHOFv%aXL1#8}r2mlbb3TV$sq^)<=s&o#iCa#2^!5Cm1W_JvG&*Ad9+X;wqG8f>#!vG<^G6xx<@vk&?X{W zERqg*BQWYMx@Of%fuW3p8_63N8#f_kjj$MBgEXDV=1bkA1gl*pfg~+%?Uka|QI!Tcr_HCe+GhwOT7NMN> ziTv}~mwu;_z$B&6u**gBZ)9WyIC^HlO1YJnSsq5l$%yrI&j&!^7Xjd%E$LS^A<9>4 z(e^bzgy|8i1bl7PmJG8YC6IA9e&&!C1xq=;{(>(7CziHYCtC`qbKi|VruJ|S7i-k^ zNgp)&cHc17%bO_qJs~+TNhGq=9@^IN4S{BazEwC~M!N{nNCdis;uXUToBiqg4806tM~20UC&IN@{r1avo!mZ*?Ep%_PK zMY9^XJ>-Ds)`W!C#;m%6f*YGw(T^cTA$5X)hr6x_Vp5bLvp_WpB-iVcykL}&8N=3F zP);)=p14%UWzGaVhciGT?ZHcKHh4On1MpOpNta&?$6KQRJz0Lz)Oh_%K0Cvz^@I*6 zHejj5Y73nR-5`Z?WH}Pgn&Wq9!-fn7-}R7n??!hA?ctuO$a19k7X|;sc)9WaSpZAU zV$~%F?c_vOV8!3dKc$3iF~Y_TzGvGy z56=xrpwVnG7DkIu;4_!DXs2gF4~i8-4`}+4?|D^PPwVMcph}GM7%ZQFZiul3EJ>PD zL0fD3yA2P&K}1yae*Nl;@FmkFhh1cP$bTzUKpkqOzV?f6%6B7-Ie-4R=U1*Y+TAhb z=)>fM2sw82S0Z54T2d1%q|b15vE-mgYoM0do$#D9P2C6s6}i6)CNqlJ6$6eZ#X@@^ z4L&A*UGniKCaLRGhC`WTT$>b97{&i_#!MrBt@@c9+(|M@z#*75AE2m3gD#L)2^ax?@u)PIA4xMYrGqVl0driFD@@z& zuRUOZ(vmne#$9D5T6&iRhNBfie1ID?=&e<@3T4d!6V#pV2yt(oQ}6XFV?FHs)!&ZL zfP<-`@1l>VqKHTh)LVP*6r%r=qe_?B<()Bw@S&kl-w{pqFsJ>Mg#P`!!>tY;| z`X`0*4jOD)5&KNdf-X-x(&vbVL1JDv9}g}Gh>5>%>;fBMytD!l1&wuKyPX$jS+z&m zP!Kc5JcMGF9j|36LQ@fnB&PO*aA*M;35&8Ga8GpFS1gBOoNe)WplAIALw$i_XkU09 zdKpxFI7LlViiA|54yjKkNqjiCKfeR*MS-^;oof6&O{%v z^cSrN;=>q}Nb540x7es{{9XE950X$mO-SBjvXO6(itn;fb5{Zi6HiYFqYGh5lW)2R4X52L+d-o(@p$K@fF+ zV3|a;KKo(yJKjX}aRRF$mRs`R_bmEJU)-zV;SVug8ArNTu00v%=8YsQ# zNbn>RaYMi+<4N2c#df4ohYNtJ1ms$;U#pm>!GKA%%%jXza7io3P9~{Vm-v)Qh=t)- zL(ZGsj=a^Og^;3gP==_bwl-M!n7Twv{1u&#*DR)9IDk=6L81Kbz7n1H2jI*LFBV&r zjJi4n4lDpCtbD~(%czSQw@0mUk#d`rt5hYwp613e!S*g^{M;2j}J<^ z-vtAhp(1sucs`(r?5rg8R;kd`!|mk!B+N2m4HSYr=g%BixI6&hb=@k++h6-jEs>~F zmiJsp&%Q9!M#qOT0BFGlkk(s4YYV0KAI^_I1&6&Vbl8qtc8`F&>2Z?^2C(cc!I`N= zPpc+yLVVx`bY0#iZ)0NsWRd|=kA(6y59%OyNPOZwfO3m+L=M){(^psxgZ8)b{Cq-E z>vG)t;F~U@aXz^B%n(nAHJ-N=5|7rbR~p7}mD zmVlJ0BJjon1B1BY^0)bi4`@7pH%Ds0G&pP6)3*w|>kd$T4K~+KeKI0XizOJhfKd#1e%22@59QyO;D9DqayCeTyAK2U_R(>>(KVA`5xH%_rGF}0-L){%$D~F$( z_@pNQm=v5zz9WX;Vp`Nu1P7Ghb!*Q9`%56g-PN&Zt|ZErG+kC!UO!OX;IiXGH`iHX zH9Z&>ZUM}qpmHn4t%Y;qh0#HcX@zFV&--Vqc(<5wt>wb6HwL9nvla@}w6z;dgX;x{ zC~*WV=wsoM;xH!+ zMT|R#hP>5s@FmHIg{LUcaV>VC)cnv3o!nheyXewQzh zJf?h~Yj#hfq~z*w<3KJ(MvIfRo^=!9FfxaBQ?vX^W~muDP8hAImbP8WfVPqA z)O4G|dL#R7`FKT4gU*=0;W=2ip=?HlGrop3<ZSdnZK3Ky9H^dX^X9! zr30^TJy!82s{8=5MtRtpc(4kofGbl-H<*BPE&18cH>~$SbDzQCdx45p|EuLL64A$e zP+|D5Xu72}*rvgL`6Gx9kMr-^zPJ^-eNhfaU>)^)D1xUR>?-pTtJL)_fV$O2purPX zZ~Gf8#n?OypH-P(z7+g;Zh7q$ZjsJqm7baTA};rXMrko#odQ=~o?Q##DBSROR>xpd z?X9W!Y>D^?)R0t{8+crMraeTl(CX58To<<2P;_{())$(*DN)JFkD9!n+!-?n3wZz~ z5Nw?#+;tYm z0I(TSM488AJX($wVYU-LxKZgC;C-^ZFAgs1a*R| z*}nHi^8koYUjVU61EF8|17V_M`z1Kt?ZnZVOg~PKexJY69krc+zD0sldISzx;C8)x z*}5m8puJ(=@QO8WFc&$~eW46IyxCb<3sk+TI=&hi;0vFNy556e2&>{p5SfrSH8o{& z5*`|!Mudicm8R5{mj3H*wej9Y-Eyv)0#30(<>QemIviZe?tJ5rW4=(pu!6k8nWLrt z-mJEfWls6aEwU3Rwh`BgnbO=K8tzL=ydh0~GF`|hM3{MbvsWUK|7NSFFBFHdbfy#z z?`0;x6>y)4NsVIh-v0s4u)bloJrk^{^HXu~B$CG~ey`?qdhmAswpcmINgJ!zUSb!K znaOUcISw65Lr#xT!Xo=;R@)mYDswu$XLL@|B+zZzDgSTk3e?+BJj@iJq&dgJWhqjX zxNxG(mFs@(46aZ#Ot;AYjNZ191#kL_|F`t%A^yuiKMhYh*m;SlI*B8oR^RG=seKoU z{TFbj+KQFDo@zV)*$l)pE%E{*E-;lbR}E3Y7QqHTLQ2uRDs^)#00Q4GE)y+qJjQD> zMBPmi@%kNlI7TMGNi`43l4NFOQEY2UQ;ozwhFi|5EyVA32RvlJ~~AO$r#toogeFe;v6 zgyIwPGi(QcNbBcO^9mL@2*oao<{~tm1y}8!cmN7_Jgai&OCXN{MJ+B&K^U{mg^RnYkRNw+wxY1Bbu8>bcnfP6<7gFLci@8=Ek$ehBPl)&uKkSNFJO1OE^802nf<_I4(up;sysyUu$u2ly)p$K$g=z*BU=<4I; z95@N-rM(+`j_4B%aq|ZG#1X)EZmOM9^$m_%lab>9gTDnJO<4(#X2w$M1s?O!xF(zC zCa^nriTA@#msv?ZrV?nVhe03i7z&oPS1y=R6>pf-2_T|gkmeH#K?eDj`^oSy3;4C` z!Pn1y3ICM|BZBtq^rWPVT~Qc+DxJlbn0!41pq5y42r7Wpurf>EM9W7ye4*f4acR{39F+43icmB zHl^T;>%nw=eLVo(%(fk?bo^~JxM-WqT4>PYg~RJ+ylU!t7@#tpuq9{~PjSt_&BX|ORF%-}PPbKa{-W;3{D?hUGl^K{ z9bTBdI7~dy?ZD_o3FpBx9N>dPgp1 z)&L10CtDq)r-cU(T>kzy-_1N$ZZKA*#F^j~h<<~CC^)*_0X;cfUM(L!cMJhKX<`2Z z#(5kYhTu~?F12K~_FjSsA`%HhGvx0*q_L0z-AEjs_RpIh>w&wSpHLT{aVKcP*U1mP1xgef6G`(?#Yq;G%;ZoM}U?iA{Wr19Jx2hT(y3U6H* z6$!Mfnhd}Y+3D<~fge}8y%b-S=0Q_RDKj^_q=YXgyIAb>7w~9j?!CRx&DihdzWWC0T|%QJ^fCb>>Su|ye2RD3?P94doUo`#2(vl zI3d7;q4PD^Y8|pn)>$QRQNIbssumKeZ)$}E-C;h%(ut^1 zNH44FjnluKXrehn5*eC&U#t5B~ zL7E;j)B%n7+$5M`jZ5M#&dd&b1_N zHvj$$gnOr-vz~x^boq1#)%4llneeSFD*v$0swygA>I2r2qtQpY4cLsPYE=<}&&8}R zI8PFGiHhMT$z`fYp>J_rfn1Z0m4h%1oQK5jPiDNP&ENzu{FXz+NQ4nW=(53>{cbI$ z(gx$xZIzy;##~A5&+i{4s*DV3Exw%1OX;;;l4PBqpM!{Eqq-CI<4* zl;91n_k|jeAAdGQWPG7te+|sN>7p2&}Ppz@E7|OiV{h>kE+g;9&wNBJRIB14bYekTJ%9T~PiG;v{yql8pIVa!M?y z8iU^^>MR_NI@U=m4N_XeYrG-@NXkLOm;y<|nshH2}!&wla5xp@}&16lwEkxv>bXZlL3 zz{+;AWiq&4GyNa;0N&5joVfo|ZQrIRDCB#}OWpTrjd0Rn3&qKv>3exnSV%`UU8Ka! z%q&g@{F_uWKog?>J}(}!eQ~(mWf7+ut5IlcsLBVayxf~q)aim}CQDI4RCai{b($1`@LR;geiI(qf+T8Zz;gw|_1?8BXfJODHtO8JqAk#WeS zjn>KO@!ks@?Da3WD&$fI|z1;^Sw=DKpO*vx6a=%k315U>W-qs9t0= zr7-$Q5hjUq?TbZsw%bWqArI5oB-)byVO7&x+S|90IU4qs`%^_kC=ho(hiU>uAaC)Q4MqWr%?6JDb?|2uUJXxdT&tz#$=}?f z^EW#`9}@R+30Za0Ctii4-enLRhk$Si&8>yGx!1cA;7e*AIrY`n)%6ZCm59Hd1ASx* zew#*kJ~sVr=Cy%9FWd&xvGd&aRu_%oe}v zYL%W1e;i0T3wnj-wY5PCbicQE;NYwyh%8S}9(d_`MD3{dzG=^Ycsa>HgR|_|hvl*C zM%+Ll)OrP!6<@GFy+-_1ZFD%v_PmiB+D)NSilgi!Jn0=1=5BAb;*edZ>8h|b`5`DA$A8+0$6~?0D#*qOwZ~gtrx+MPZNV$lJgBk5F*Ky-2 z_{JsTxz0pfKwB%EqmwfT#UdN6C~vIj%o#?6KB|&WAv%34>m+yH*PIPpF+Io1HI6kL z6)00bihYh2j|lR^;qNM4tm=|&@WjsPdQwuGfTk;uQDluo6G88Df65q^@%*tW>Z<>F z1fGesvD;Q(^AMD-HHWWiM9pCq{n!uwK@;Q>|yJ zIJ_?{wfqfkdAI6Pe>U(Y5s)(r|2Y-F@R4=5vczqDPgLDdYR}5&stnq^uk77?NJlSm z*T!5=2Z&c)#)XZ4V4*I*s)_;qDYXGyBO#GWr@z(S;X`eJ8Tfa z%>g)om6IdyTB0K*Y0hgjK%uP_*n`Z_MA}r7A)7e%AZZpW#SNg9h4)V@m0A+SE8+i*dGTr8|AL#&sz=OHzSGXiBB>Sw>#Tgy zTGV+}i3Hc&{_tf!L`msXOz`F(r%QoWhVNq3{dsFq-9XN3o=K!x(f*?0Z)V(kYA=n z;*$6gt{h7*f4tC8SE(dBk`5rl<$;Rg-49X$1aFteOHe~abRnf$((MtbVk_y9SP;bk zft^=8?e(&{_9^K<8Navc^)l#95bElyJpkQ0t7&@^k}i3`9OyyiY<+B$lVX znodD)fz?l|JVj0z8@naF2cxc-bn1M)lNg^j_RuwEbKB_5p_k^SoPf#BdLGL6R8BLn zjkh+tTi5jTKEuWmb=buG>aBmc25aKvt!73ue?&C*pMsj6L=+#WDUAtirn_tOBoN`st#gq<6{yyyu!@kB0l8)qzy!? zJ{5Uw=#;#mbrJy^3Q#QjcCnFCQOW23*!!xms=l?~#UiA;LFrCO5s*c9OQ+I}gmjl6 z(jg@w-O?Z_($XCQ(%neI8T|J?``gdCJNKV=@~oI^%sJli#xFp`1T_`OQoVRKA6-Dv zXq(ET0|^*)ZQoy;n8rN1egqm}BuoZEp_XK*V<-v*y>Ns)7;do(pXr#qv=nJ^JOi%u z;j-M^JexAfG^KAb6Ott_IqVI!pOBAMo%-@iXGzzCyk`OQs{#iOC8Y2Sbi$o?F9- ziDXaLL_5b2^0hRn)4ElYNXdW#c{6O69b<1+4?4UFs1p_r_Qq4d?_3$ExqZY&8JbKw zk)CugJnL}9Tl2Slj;nRsqLax20kvRWZtnFBuGB&XUnk7TsQ~m)B-W_P<2_S}e|E)@ z*doFObEA5xj|VN0>!qxWJ`a9gYGh;xL_PtHABep2n6E@iU#y_ifpOu-kzuShpOIfU zoe!tOZLqcILkF^Sb5N)TPtGB-zlTG1T-*fwBL!-SBY@*ktP=gfJ=*v&ubbv`3zW?5Z|7Fk~>V|0C+mYRYL z1(Mi%Q*0&kettlVY#U449dr209WbsRKAg+@Dpg&brMiW;ZA8m_m!D?u30zzCEfu$Z zf4=~ZOtzgY{1 z1nN?x4bX-SdyBK;f{yqEhmzwo)uxH9%N?6u0n})wE2x7VuQ{CXQzbfZP7ipX@#p zzmS~4Qa-%9*$=)89z%IH?)oT_LL{)%!5u|$6jg0dnW$n4jWe_B@O)pp9MRx>dfGBw zt>ZWyu)XlBtBW2%1~my2NA?%(GUd$NoGoxnZ^(lEFoEWU!x@9*FjYOGdiG+3XTVx%IKVN=C_4UaHEJ>Kq)494N z3Kc*p)|N?trG2^p+HYlXg!~A$nJn2CfJ^XlyZ#v132ozV;G#jlf87efaQyt^=DA24 zOj8B#P+Gyub1@F6x%tHSnj9A6{L)lYvvnxfGQV1YhyB2?;x}w09=lp25v6Z;TiT8( z7$5(x=Az+^7Ovv0MNa3Snze(7$m9FBI+LzSJgZzj^s|iRWi)0WXt>$VhT28XP%R4I zQllwGKdE3}eEUWE#n(UVBHkC`X22h3Zh+YpH~vX7dKN9(-+Lf#84n-c2g9s71 z$3Z6qzbu3()*B-EbCr7FW8WegW+MfSCjeQl=(6`4+aYqB)?SBK5%K%gfV833#^+i5 zo--m$)4eIpVSK9@C!w!x%Oux3!Va+A)N=S#zvKAlI+}fGK!y7uQr>p&Ns8>UH#4dc z*%(if%OZwpoe=O)h(P|tH&71h#Gq+GumRi407YU6&Y|AX_pa!+RJ>XWp$!O*Xp+Hr zMsho<7MP#_i43lFpS{VJZ&ks9Ju&A>Gs9r~mRKcSvJ8BrRJL(7Kd58A01145udYd4 zt|m3$x{pKxuYKhL`@!(}k77Y{lgLHX)W5Z*`Ui~L6;ZNWoR~Uo! zgCyxZmqslRz2N7&tT3AGL++VSVE!2{?%$uyethWl)UlN{m@x~5T=4Je;RE>;xw_8B z=%{DwYy9Zqst;`e&mL}$`9*FAqo?1f4vOGDv_0HSB`~Q27FoqQ z-}QtoBa2?a=HLlvc&L;1>L6?kXNs8i#<+V>?j|o7g)29La=YzXF3c5Oqs{9gI4MKM zqUSroA;HCzd#1<=4qc0@aIW)5*=LR3tKD+j37sfFLA(|~{Z>LSvtSNz#l#^TZ-y=* zaKT7Tz9&KAlrdDs z78VvjPOoTA6WyrSkc&U|8*Uz$6c(S$JlM9WGobAI{CIOVk|M#l>zy7}9)_X$&6h-+ ztEK1p_AHEJk?E3d`=0o)^uuc3qEd|02~K?`B?C~Z_~1vuYkamf3i`%eMw1AQ2VWNH zzbykJ`JX@--0O7Ek1p%X$N+#$PRw5B`5h3xjspDuS@sU5bzcxT44Pdy!`?_oyJ;G% z+89=(M!uD}kY(D{nl==Ax5xZZQn2A&<|f47cDh`r zb&msYS~19upn7oh>q}@3DW9#j%7}WzUU^xhmA-LmM=?&8*e&ol_8yfa8l{#y*9~nI zrF;n$5^B4A3x{I^$h5NB43kk$HGanClt}l;ofilZ0=H+y$r6d&%;aP(eR6448Qpm> zr)Q>SB4ZeBWsE5+pw|Yykm@SjyAJv83BU)l)n{^0JZ^*flL0sTPCYG2#QFyN=Zl3| z{gx^S=fMylQRFoCHtaR0pqw(q!8YgiL9Ex{Qo zl5-lAF=SE+#(>ZEC5@^QbyjZ54m)8u=OlW+{LP=6F{Vg*1~;x_5q;>b!A_H2u+iIs zp-Uq;$fK94>dp|;hu_uga0$c{=SMW(AS?t7?pWJz=1W)15mZ=#xdc8>06^hoHgwlT&uFvdD)7 zkDnVnN()*cA@WRo4?y&YiIr6$n8*(whJ40wg}QANJwg%^-}H)_EbZ`7IoNO-vc35T zrMQM@Q_bfq&I26 z>1urWa_uwqh4!$sMo+k8KPXJPFc`lLY8vdWpgaN{f1&2$w*sV#!83BeF&Z;T>JCs+LGtk_wJ|08&vs6yA`~NQ`uR>W?i}9tEQ7i zEMTZi;y-(kd8{Y4BDsfPB+CWBis98_(X6gMvhjxWL8hRay_MC1V#bPYuU-%q`3o4l zw6E7ky9S??a0cM)^nTJ7@XIYUQ?c=`X!tLsEeLGo^3*vEc;migMbj$`(kWLm51HmL zLMSEivA@AqVy^t5Z+U*yeEEc(D=Le?grfJ815oMt`yig|=^~ohp8T_3;Jn`%FNj7m z$rgc~&a(44ERt7VBqt_b+1doocPvIvQUG*xl=}GbPI5v*q2|fq-NSwhinoE5&mkFB zTxka>t4K2h{P}|Koij{c6$T zu=akpt#vouXUeba;kp9M9tVu>olag_$Nm9KyvRM@ct%T82^_)qHZ|-XjZz0Y9q#9o z4xB5cHWCyRAwR>UjZj8~v_ng)dLfK#Y&NzFNmLcRrXuc+env)_89T%a5!n?L7t0;+ z?xQi456sM85uGG8L_;!)@~7D)?3x^{^UHl zr!9j$->tA#_=qN2XeGm2cCpFT#!2hBz}>*P5gJ6HC|e3NF{5j{wjyqdwleb*uxitX zhSYUkpYAZ{=6Ms6Kvt;XVdgMh|D05JQ&Wlikf|^C^L6`-Oia(A>PyN#@}EA4$q?ek zh|kqdx316GER_-j3%VJ0bwgFJ(R-cU03R83`xLnL)YsR8E6v}@v1t90$)H4zbuVWW zrjhiiz)S=auOQ79=vXo(lMZ~>e$~A#rxdri@lu#AS#3+%TzZoHTB`YaXCU^9%qAhdln)$^?o zpKPC(rNYz}i9_?f*dykXpb{c&k^h{J8u%`6C1gK=&2b&fOi7rKox~}GJA0_cq>Ttf3CIH*?mGpL_FPC&ryV4$3{h; zwVm{{aM(;6rb&j?unvY5E-g*E>UKU*l?CF}PAWRs+b0Ph(tbPTdAN*zxZGCudnxOA z{$(;uDUR~D9?+h#va2P^ku!`536b1pCTTg-5zPJk3CZ6x=hLTo#m3yQ>j6qXl`@2p zf+Z!kv(iybn*0rG;N+F{G;rTii7A#LE72Q(OeZIKoxkH;|D2kbu$`-Ur@r^0h1qN^ z03kb&G|01l*q;%cX|#~WhGHYrB7>^WI#i`KP?l8#v#xca6X^KV73 zy_U>~>+Vzv^K}IXKac&)kX);!g{Ok$3MU`58BOALtDMV1Of`sPvPF2WQY12M8}d@V z0pU$7j1UJrbegjGJS6`ark%3Zb`OtkF*gz`ETiC=1!H+-1x4uR)c3T^g&Y*0Z5dw= zKMARrq)efHl3QBgD?NGY?h^qc?2!8VR2hXW7PeZtvuk5f{*$xKv;6GxX--<2t)n9h z;^kF6As{#JBLrlToWC_RkBypRdvcl=BH14$(B$6kstE&UT+FT__#pBob0t&40vZL~ATNK^Dy`N5vzTu)N30N0)1^l{JfD}a|0KxO? zGc>f{uI~)!`iZ9Jlq9idh?1-kgxH*EVMJ1gpM80727AUUN*E+l7j z{qvZ|?MXSVoKs&!11rtszZPNWoUcBv(zkE6`akhzqSa{$#%mJanrms4skN)96Dag1 zJkOGaALQO*Wck?A?5kE>rJ$IcGN$8nhBikb!V|DKT~OV+xcI7zQ`Y6oHIN}%bgo+B z`I-n??^*ra>?)ugfJXY}*+bZ~*?%`68;AMr|*{as{`DysBl2e`Gf?4kp ziUx**$Wc4|Ba%A)r@GY{jnl<%H@}PTOBqdEyAs^)C+U5rn2t%XmdUD50B@pm!(4=# z|9&l9FIh!jm1V#T_DU;zWXgu_ImB07`&+vi35RY%ivlZ_WTD9TjHNA)q+zA5!e!dV z8ai|lPi0!)9OmI6*Y3eiIlq+|)pGJJ){uHb!2z$35{_oj_JeXGjta<(-?s8$bNp9s@(7#+qQO)$Tov z+ojQWuS??e9X~n}qWjN&D!Doh4Gk@=jXU?Mc34`RRT1)Xc&{y~eDoOE(9gW`IRdF- zBK@XAH^$kWmBF4S;FoEyG>*Mm=*>*v?dJt&~0EXd$**;WMF;RYrqUkR6YzcW3l z12Z5XgLw6==h=91BK}oHgV@*Cq$P4GtYrvE1*N>DjW*M~=6A_s#TC)v=XBOqR%2px z6t2kTqr{NYdU-p$48E%YCATaZ={cp$gY?XgPqfZoB$?!~!qHT%&u7VM`0{>gm-t`< zo!b^$4M`<5F2I>aujZt=yNB>Ky}tu(=&;!#n9y0>itpUV-xDL1l5ptI57Rb@_*>Ow zWs=XL4T8M#IKbRg{@yIEttE8HMWQt7bq_w=-9oS1x3V$~iqF~EqBg^Z z>etfRQ5$D#{J?=zt=cuRLcEr!P6_UUC(Ei1wIezIP}S=u7JxFXQ527A&n3mt{Sm*} z;5U|($k+1%g21&=Wv}tVh;egZdM{FCew6QNO?4A0uUd}S*TU+_`FR@&QZdRH6gYsx zqgGe9cG`?7ON+1OLF>Wif+POZjQU-nO{90fWa+NE+wSTL(L8a2&^;pFM$;VEiWFa+ zEpnbyRu26K8^$v86ob7;-#iqaQXrFMO=WR>{A&^96GE;GY4-fi$7pM|qYo{U?K`wq z;c-PO%v=mSJxwE02RPP@#ki!Q{SIxt2R|C+DwZK6E`CGTW zhA~^VKvqS(GOn^oFO;gdj!_JF%1?D8ua~<&rSXu(NPXdCnB+0DDVh8haea*e(lv$W z|G=g#yv^Z zhnTI19QZpsf^N>?&C3*oE6-*oJEvcVlRC_|`El6zD;!HiO(U2>e)8S2v5f29vU>Eo zf11em?s5%xy}U8G^GzcYnk_Y18yK5N|9i{Tswr*YM*`v7F8WGckC;Yxt&x;u^GtBc ze*8^GMQSP=5qvv_vcRErsjl;dJy#fWv~TD8L*GgBCok`hep_*xMuZ{&8ZAEa4kKE? z=lN_~$UZB*N&DXY*LGfcn0U1A5DNoE*>QVk53AnISdF&kEAH-#;~4H@eKouLxMEb& z`)Kc5TsBQ1r`*J@)`M0iV#q;5mlIRX)b%;p#2Z%*YIFgD0x`k8xrx^-N%*zx%klE^ z2Xpg83#-4)CmGS8?8ufsMZ5izP`BEN9pOf730+qwMzx|ve9?O$oGcVpzBnV%QNEs$ z94V8%HTnIbUx4sY-P}^1q+en1eaJY(6w-^%$%w6reH7v^#rW~#`M@)7B>esUhO{b$#K&*i zJ3)ydeOE78?)KRSuZi5lRK0VUlW z4T6_5%>;uFjsl3K%2k7p-c=X^&;S#aRn71DMFG|9GKWdHvCdvGvpu-%DXvYJIV z+{_V=P!Zo+w9@<_BT<AwhT449j2t&cEZ1_m}Ra-$l6MX6_{(J}ql4 z#~AX&dElI>o9

wRp+>UtDPma9U`-3*Li4VOhO>+1-bQNdAFpa#9 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 pVj5p21N=hzh Date: Fri, 19 Apr 2024 22:59:19 +0300 Subject: [PATCH 031/126] Add login module and change dependencies --- Project.swift | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/Project.swift b/Project.swift index 3c018a0..58e92fe 100644 --- a/Project.swift +++ b/Project.swift @@ -56,7 +56,10 @@ let mapModule = Target.featureTarget( let authModule = Target.featureTarget( name: "Auth", productName: "Auth", - dependencies: [.package(product: "GoogleSignIn", type: .runtime, condition: .none)] + dependencies: [ + .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none) + ] ) let onboardingModule = Target.featureTarget( @@ -65,10 +68,25 @@ let onboardingModule = Target.featureTarget( dependencies: [.target(designModule)] ) +let loginModule = Target.featureTarget( + name: "Login", + productName: "Login", + dependencies: [ + .target(designModule), + .target(authModule), + .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "GoogleSignInSwift", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none) + ] +) + let project = Project( name: "SwiftBuddiesIOS", - packages: [.remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0"))], + packages: [ + .remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0")), + .remote(url: "https://github.com/firebase/firebase-ios-sdk.git", requirement: .exact("10.24.0")) + ], targets: [ .target( name: "SwiftBuddiesIOS", @@ -81,10 +99,10 @@ let project = Project( "CFBundleVersion": "1", "UIMainStoryboardFile": "", "UILaunchStoryboardName": "LaunchScreen", - "CLIENT_ID": "221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8.apps.googleusercontent.com", - "REVERSED_CLIENT_ID": "com.googleusercontent.apps.221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8", + "CLIENT_ID": "1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr.apps.googleusercontent.com", + "REVERSED_CLIENT_ID": "com.googleusercontent.apps.1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr", "CFBundleURLTypes": [ - ["CFBundleURLSchemes": ["com.googleusercontent.apps.221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8"]] + ["CFBundleURLSchemes": ["com.googleusercontent.apps.1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr"]] ] ] ), @@ -92,13 +110,15 @@ let project = Project( resources: ["SwiftBuddiesIOS/Resources/**"], dependencies: [ .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none), .target(authModule), .target(feedModule), .target(designModule), .target(contributorsModule), .target(mapModule), .target(aboutModule), - .target(onboardingModule) + .target(onboardingModule), + .target(loginModule) ] ), authModule, @@ -107,6 +127,7 @@ let project = Project( contributorsModule, mapModule, aboutModule, - onboardingModule + onboardingModule, + loginModule ] ) From 8f7990606b3dce7cdd2526bf5c8531d720074018 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Fri, 19 Apr 2024 23:00:58 +0300 Subject: [PATCH 032/126] Login feature developed --- SwiftBuddiesIOS/Sources/ContentView.swift | 19 ++- .../Sources/SwiftBuddiesIOSApp.swift | 11 ++ SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements | 10 ++ .../Sources/AuthenticationManager.swift | 161 ++++++++++++++++++ .../AuthModule/Sources/Authenticator.swift | 23 --- .../Sources/Helpers/SignInAppleHelper.swift | 161 ++++++++++++++++++ .../Sources/Helpers/SignInGoogleHelper.swift | 43 +++++ .../Sources/Extensions/View+Extensions.swift | 7 + .../LoginButtonViewModifier.swift | 18 ++ .../Sources/AuthenticationView.swift | 119 +++++++++++++ .../Sources/AuthenticationViewModel.swift | 30 ++++ .../SignInEmail/SignInEmailView.swift | 132 ++++++++++++++ .../SignInEmail/SignInEmailViewModel.swift | 44 +++++ 13 files changed, 753 insertions(+), 25 deletions(-) create mode 100644 SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift delete mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift create mode 100644 SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift index 3c6f20d..522fe83 100644 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ b/SwiftBuddiesIOS/Sources/ContentView.swift @@ -6,9 +6,11 @@ import Onboarding import About import Contributors import Design +import Login public struct ContentView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false + @State private var showSignInView: Bool = false public init() { } @@ -19,7 +21,21 @@ public struct ContentView: View { @ViewBuilder private func SuitableRootView() -> some View { if isOnboardingScreenViewed { - TabFlow() + ZStack { + if !showSignInView { + TabFlow() + } + } + .onAppear { + let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() + self.showSignInView = authUser == nil + try? AuthenticationManager.shared.signOut() + } + .fullScreenCover(isPresented: $showSignInView, content: { + NavigationStack { + AuthenticationView(showSignInView: $showSignInView) + } + }) } else { OnboardingBuilder.build() } @@ -66,7 +82,6 @@ enum AppTab: Int, Identifiable { case map case about case contributors -// case login var id: Int { rawValue } } diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 7f1128a..9a877f7 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -1,10 +1,21 @@ import SwiftUI +import Firebase +import GoogleSignIn @main struct SwiftBuddiesIOSApp: App { + @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate + var body: some Scene { WindowGroup { ContentView() } } } + +class AppDelegate: NSObject, UIApplicationDelegate { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + FirebaseApp.configure() + return true + } +} diff --git a/SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements b/SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements new file mode 100644 index 0000000..a812db5 --- /dev/null +++ b/SwiftBuddiesIOS/SwiftBuddiesIOS.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.developer.applesignin + + Default + + + diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift new file mode 100644 index 0000000..a75a618 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift @@ -0,0 +1,161 @@ + +import Foundation +import FirebaseAuth +import GoogleSignIn +import FirebaseCore + +public struct AuthDataResultModel { + let uid: String + let email: String? + let photoUrl: String? + let isAnonymous: Bool + + init(user: User) { + self.uid = user.uid + self.email = user.email + self.photoUrl = user.photoURL?.absoluteString + self.isAnonymous = user.isAnonymous + } +} + +public enum AuthProviderOption: String { + case email = "password" + case google = "google.com" + case apple = "apple.com" +} + +final public class AuthenticationManager { + + static public let shared = AuthenticationManager() + + private init() { + guard let clientID = FirebaseApp.app()?.options.clientID else { return } + let config = GIDConfiguration(clientID: clientID) + GIDSignIn.sharedInstance.configuration = config + } + + public func getAuthenticatedUser() throws -> AuthDataResultModel { + guard let user = Auth.auth().currentUser else { + throw URLError(.badServerResponse) + } + + return AuthDataResultModel(user: user) + } + + public func getProviders() throws -> [AuthProviderOption] { + guard let providerData = Auth.auth().currentUser?.providerData else { + throw URLError(.badServerResponse) + } + + var providers: [AuthProviderOption] = [] + for provider in providerData { + if let option = AuthProviderOption(rawValue: provider.providerID) { + providers.append(option) + } else { + assertionFailure("Provider option not found: \(provider.providerID)") + } + } + debugPrint(providers) + return providers + } + + public func signOut() throws { + try Auth.auth().signOut() + } + + public func delete() async throws { + guard let user = Auth.auth().currentUser else { + throw URLError(.badURL) + } + + try await user.delete() + } +} + +// MARK: SIGN IN EMAIL + +extension AuthenticationManager { + + @discardableResult + public func createUser(email: String, password: String) async throws -> AuthDataResultModel { + let authDataResult = try await Auth.auth().createUser(withEmail: email, password: password) + return AuthDataResultModel(user: authDataResult.user) + } + + @discardableResult + public func signInUser(email: String, password: String) async throws -> AuthDataResultModel { + let authDataResult = try await Auth.auth().signIn(withEmail: email, password: password) + return AuthDataResultModel(user: authDataResult.user) + } + + public func resetPassword(email: String) async throws { + try await Auth.auth().sendPasswordReset(withEmail: email) + } + + public func updatePassword(password: String) async throws { + guard let user = Auth.auth().currentUser else { + throw URLError(.badServerResponse) + } + + try await user.updatePassword(to: password) + } + +} + +// MARK: SIGN IN SSO + +extension AuthenticationManager { + + @discardableResult + public func signInWithGoogle(tokens: GoogleSignInResultModel) async throws -> AuthDataResultModel { + let credential = GoogleAuthProvider.credential(withIDToken: tokens.idToken, accessToken: tokens.accessToken) + return try await signIn(credential: credential) + } + + @discardableResult + public func signInWithApple(tokens: SignInWithAppleResult) async throws -> AuthDataResultModel { + let credential = OAuthProvider.credential(withProviderID: AuthProviderOption.apple.rawValue, idToken: tokens.token, rawNonce: tokens.nonce) + return try await signIn(credential: credential) + } + + public func signIn(credential: AuthCredential) async throws -> AuthDataResultModel { + let authDataResult = try await Auth.auth().signIn(with: credential) + return AuthDataResultModel(user: authDataResult.user) + } +} + +// MARK: SIGN IN ANONYMOUS + +extension AuthenticationManager { + + @discardableResult + public func signInAnonymous() async throws -> AuthDataResultModel { + let authDataResult = try await Auth.auth().signInAnonymously() + return AuthDataResultModel(user: authDataResult.user) + } + + public func linkEmail(email: String, password: String) async throws -> AuthDataResultModel { + let credential = EmailAuthProvider.credential(withEmail: email, password: password) + return try await linkCredential(credential: credential) + } + + public func linkGoogle(tokens: GoogleSignInResultModel) async throws -> AuthDataResultModel { + let credential = GoogleAuthProvider.credential(withIDToken: tokens.idToken, accessToken: tokens.accessToken) + return try await linkCredential(credential: credential) + } + + public func linkApple(tokens: SignInWithAppleResult) async throws -> AuthDataResultModel { + let credential = OAuthProvider.credential(withProviderID: AuthProviderOption.apple.rawValue, idToken: tokens.token, rawNonce: tokens.nonce) + return try await linkCredential(credential: credential) + } + + private func linkCredential(credential: AuthCredential) async throws -> AuthDataResultModel { + guard let user = Auth.auth().currentUser else { + throw URLError(.badURL) + } + + let authDataResult = try await user.link(with: credential) + return AuthDataResultModel(user: authDataResult.user) + } + +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift deleted file mode 100644 index e5eaf6d..0000000 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Authenticator.swift +++ /dev/null @@ -1,23 +0,0 @@ - -import Foundation -import GoogleSignIn - -final public class Authenticator { - - private init() { - GIDSignIn.sharedInstance.configuration = .init(clientID: "221417854896-bs0p0kp2qou67t91g9dtal8pbrv4rki8.apps.googleusercontent.com") - self.googleService = GIDSignIn.sharedInstance - } - public static let shared = Authenticator() - - private let googleService: GIDSignIn - - @MainActor - public func signIn() async throws { - guard let vc = UIApplication.shared.windows.first?.rootViewController else { return } - - let credentials = try await googleService.signIn(withPresenting: vc) - dump(credentials) - } - -} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift new file mode 100644 index 0000000..99e380f --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift @@ -0,0 +1,161 @@ +// +// SignInAppleHelper.swift +// Auth +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import SwiftUI +import AuthenticationServices +import CryptoKit + +public struct SignInWithAppleButtonViewRepresentable: UIViewRepresentable { + + let type: ASAuthorizationAppleIDButton.ButtonType + let style: ASAuthorizationAppleIDButton.Style + + public init(type: ASAuthorizationAppleIDButton.ButtonType, style: ASAuthorizationAppleIDButton.Style) { + self.type = type + self.style = style + } + + public func makeUIView(context: Context) -> ASAuthorizationAppleIDButton { + ASAuthorizationAppleIDButton(authorizationButtonType: type, authorizationButtonStyle: style) + } + + public func updateUIView(_ uiView: ASAuthorizationAppleIDButton, context: Context) { + + } + +} + +public struct SignInWithAppleResult { + let token: String + let nonce: String + let name: String? + let email: String? +} + +@MainActor +final public class SignInAppleHelper: NSObject { + + private var currentNonce: String? + private var completionHandler: ((Result) -> Void)? + + public init(currentNonce: String? = nil, completionHandler: ( (Result) -> Void)? = nil) { + self.currentNonce = currentNonce + self.completionHandler = completionHandler + } + + public func startSignInWithAppleFlow() async throws -> SignInWithAppleResult { + try await withCheckedThrowingContinuation { continuation in + self.startSignInWithAppleFlow { result in + switch result { + case .success(let signInAppleResult): + continuation.resume(returning: signInAppleResult) + return + case .failure(let error): + continuation.resume(throwing: error) + return + } + } + } + } + + public func startSignInWithAppleFlow(completion: @escaping (Result) -> Void) { + guard let vc = UIApplication.shared.windows.first?.rootViewController else { return } + + let nonce = randomNonceString() + currentNonce = nonce + completionHandler = completion + + let appleIDProvider = ASAuthorizationAppleIDProvider() + let request = appleIDProvider.createRequest() + request.requestedScopes = [.fullName, .email] + request.nonce = sha256(nonce) + + let authorizationController = ASAuthorizationController(authorizationRequests: [request]) + authorizationController.delegate = self + authorizationController.presentationContextProvider = vc + authorizationController.performRequests() + } + + // Adapted from https://auth0.com/docs/api-auth/tutorials/nonce#generate-a-cryptographically-random-nonce + private func randomNonceString(length: Int = 32) -> String { + precondition(length > 0) + let charset: [Character] = + Array("0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._") + var result = "" + var remainingLength = length + + while remainingLength > 0 { + let randoms: [UInt8] = (0 ..< 16).map { _ in + var random: UInt8 = 0 + let errorCode = SecRandomCopyBytes(kSecRandomDefault, 1, &random) + if errorCode != errSecSuccess { + fatalError( + "Unable to generate nonce. SecRandomCopyBytes failed with OSStatus \(errorCode)" + ) + } + return random + } + + randoms.forEach { random in + if remainingLength == 0 { + return + } + + if random < charset.count { + result.append(charset[Int(random)]) + remainingLength -= 1 + } + } + } + + return result + } + + @available(iOS 13, *) + private func sha256(_ input: String) -> String { + let inputData = Data(input.utf8) + let hashedData = SHA256.hash(data: inputData) + let hashString = hashedData.compactMap { + String(format: "%02x", $0) + }.joined() + + return hashString + } + +} + +extension SignInAppleHelper: ASAuthorizationControllerDelegate { + + public func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { + guard + let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential, + let appleIDToken = appleIDCredential.identityToken, + let idTokenString = String(data: appleIDToken, encoding: .utf8), + let nonce = currentNonce else { + completionHandler?(.failure(URLError(.badServerResponse))) + return + } + let name = appleIDCredential.fullName?.givenName + let email = appleIDCredential.email + + let tokens = SignInWithAppleResult(token: idTokenString, nonce: nonce, name: name, email: email) + completionHandler?(.success(tokens)) + } + + public func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { + print("Sign in with Apple errored: \(error)") + completionHandler?(.failure(URLError(.cannotFindHost))) + } + +} + +extension UIViewController: ASAuthorizationControllerPresentationContextProviding { + + public func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { + return self.view.window! + } +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift new file mode 100644 index 0000000..7ac5d8b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -0,0 +1,43 @@ +// +// SignInGoogleHelper.swift +// Auth +// +// Created by Berkay Tuncel on 18.04.2024. +// + +import Foundation +import GoogleSignIn +import GoogleSignInSwift + +public struct GoogleSignInResultModel { + let idToken: String + let accessToken: String + let name: String? + let email: String? +} + +final public class SignInGoogleHelper { + + public init() { } + + @MainActor + public func signIn() async throws -> GoogleSignInResultModel { + guard let vc = UIApplication.shared.windows.first?.rootViewController else { + throw URLError(.cannotFindHost) + } + + let gidSignInResult = try await GIDSignIn.sharedInstance.signIn(withPresenting: vc) + + guard let idToken = gidSignInResult.user.idToken?.tokenString else { + throw URLError(.badServerResponse) + } + + let accessToken = gidSignInResult.user.accessToken.tokenString + let name = gidSignInResult.user.profile?.name + let email = gidSignInResult.user.profile?.email + + let tokens = GoogleSignInResultModel(idToken: idToken, accessToken: accessToken, name: name, email: email) + return tokens + } + +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 194bb22..61a4abe 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -53,3 +53,10 @@ public extension View { .background { color } } } + +public extension View { + + func withLoginButtonFormatting() -> some View { + modifier(LoginButtonViewModifier()) + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift new file mode 100644 index 0000000..cc32d51 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift @@ -0,0 +1,18 @@ +// +// LoginButtonViewModifier.swift +// Design +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import SwiftUI + +struct LoginButtonViewModifier: ViewModifier { + func body(content: Content) -> some View { + content + .foregroundColor(.white) + .fontWeight(.bold) + .padding(.vertical) + .frame(maxWidth: .infinity) + } +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift new file mode 100644 index 0000000..6ed74c9 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -0,0 +1,119 @@ +// +// LoginView.swift +// Login +// +// Created by Berkay Tuncel on 17.04.2024. +// + +import SwiftUI +import GoogleSignIn +import GoogleSignInSwift +import Design +import Auth + +public struct AuthenticationView: View { + + @StateObject private var viewModel = AuthenticationViewModel() + @Binding private var showSignInView: Bool + + public init(showSignInView: Binding) { + self._showSignInView = showSignInView + } + + public var body: some View { + ScrollView { + VStack(spacing: 20) { + SignInEmailView(showSignInView: $showSignInView) + + dividerView + + anonymousSignInButton + googleSignInButton + appleSignInButton + + Spacer() + } + .padding() + .frame(maxWidth: 375) + } + } +} + +extension AuthenticationView { + private var dividerView: some View { + ZStack { + Divider() + + Text("or") + .font(.subheadline) + .fontWeight(.semibold) + .padding(.horizontal) + .background(.white) + } + } + + private var anonymousSignInButton: some View { + Button { + Task { + do { + try await viewModel.signInAnonymous() + showSignInView = false + } catch { + debugPrint(error) + } + } + } label: { + Text("Sign In Anonymously") + .font(.headline) + .foregroundColor(.white) + .frame(height: 55) + .frame(maxWidth: .infinity) + .background(DesignAsset.loginStrokeColor.swiftUIColor) + .cornerRadius(10) + } + } + + private var googleSignInButton: some View { + Button { + Task { + do { + try await viewModel.signInGoogle() + showSignInView = false + } catch { + debugPrint(error) + } + } + } label: { + Text("Sign In With Google") + .font(.headline) + .foregroundColor(.white) + .frame(height: 55) + .frame(maxWidth: .infinity) + .background(DesignAsset.loginStrokeColor.swiftUIColor) + .cornerRadius(10) + } + } + + private var appleSignInButton: some View { + Button(action: { + Task { + do { + try await viewModel.signInApple() + showSignInView = false + } catch { + debugPrint(error) + } + } + }, label: { + SignInWithAppleButtonViewRepresentable(type: .default, style: .black) + .allowsHitTesting(false) + }) + .frame(height: 55) + } +} + +#Preview { + NavigationStack { + AuthenticationView(showSignInView: .constant(true)) + } +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift new file mode 100644 index 0000000..6e102ef --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift @@ -0,0 +1,30 @@ +// +// AuthenticationViewModel.swift +// Login +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import Foundation +import Auth + +@MainActor +final class AuthenticationViewModel: ObservableObject { + + func signInGoogle() async throws { + let helper = SignInGoogleHelper() + let tokens = try await helper.signIn() + let _ = try await AuthenticationManager.shared.signInWithGoogle(tokens: tokens) + } + + func signInApple() async throws { + let helper = SignInAppleHelper() + let tokens = try await helper.startSignInWithAppleFlow() + let _ = try await AuthenticationManager.shared.signInWithApple(tokens: tokens) + } + + func signInAnonymous() async throws { + let _ = try await AuthenticationManager.shared.signInAnonymous() + } + +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift new file mode 100644 index 0000000..03f4714 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift @@ -0,0 +1,132 @@ +// +// SignInEmailView.swift +// Login +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import SwiftUI +import Design + +struct SignInEmailView: View { + + @StateObject private var viewModel = SignInEmailViewModel() + @Binding private var showSignInView: Bool + + @FocusState private var fieldInFocus: LoginField? + + enum LoginField: Hashable { + case email + case password + } + + init(showSignInView: Binding) { + self._showSignInView = showSignInView + } + + var body: some View { + VStack(spacing: 10) { + DesignAsset.swiftBuddiesImage.swiftUIImage + .resizable() + .aspectRatio(1, contentMode: .fit) + .frame(height: 250) + + Text("Log in to your account") + .font(.title) + .fontWeight(.bold) + .foregroundColor(Color.primary.opacity(0.7)) + + TextField("Email", text: $viewModel.email) + .fontWeight(.bold) + .focused($fieldInFocus, equals: .email) + .textInputAutocapitalization(.never) + .submitLabel(viewModel.password.isEmpty ? .continue : .done) + .onSubmit { + if viewModel.password.isEmpty { + fieldInFocus = .password + } + } + .frame(height: 55) + .padding(.horizontal) + .background( + RoundedRectangle(cornerRadius: 4) + .stroke(viewModel.email.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor, lineWidth: 2) + ) + + HStack(spacing: 15) { + if viewModel.visible { + TextField("Password", text: $viewModel.password) + } else { + SecureField("Password", text: $viewModel.password) + } + Button(action: { viewModel.visible.toggle() }) { + Image(systemName: viewModel.visible ? "eye.slash.fill" : "eye.fill") + .foregroundColor(Color.primary.opacity(0.7)) + } + } + .fontWeight(.bold) + .focused($fieldInFocus, equals: .password) + .textInputAutocapitalization(.never) + .frame(height: 55) + .padding(.horizontal) + .background( + RoundedRectangle(cornerRadius: 4) + .stroke(viewModel.password.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor, lineWidth: 2) + ) + + HStack { + Spacer() + Button(action: { + Task { + try? await viewModel.forgotPassword() + } + }) { + Text("Forgot password") + .fontWeight(.bold) + .foregroundColor(DesignAsset.loginStrokeColor.swiftUIColor) + } + } + + Group { + Button(action: { signIn() }) { + Text("Sign In") + .withLoginButtonFormatting() + } + } + .background(DesignAsset.loginStrokeColor.swiftUIColor) + .cornerRadius(10) + } + } +} + +extension SignInEmailView { + private func signIn() { + if viewModel.email.isEmpty { + fieldInFocus = .email + } else if viewModel.password.isEmpty { + fieldInFocus = .password + } else { + Task { + do { + try await viewModel.signUp() + showSignInView = false + return + } catch { + debugPrint(error) + } + + do { + try await viewModel.signIn() + showSignInView = false + return + } catch { + debugPrint(error) + } + } + } + } +} + +#Preview { + SignInEmailView(showSignInView: .constant(true)) +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift new file mode 100644 index 0000000..2014d88 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift @@ -0,0 +1,44 @@ +// +// SignInEmailViewModel.swift +// Login +// +// Created by Berkay Tuncel on 19.04.2024. +// + +import Foundation +import Auth + +@MainActor +final class SignInEmailViewModel: ObservableObject { + + @Published var email = "" + @Published var password = "" + @Published var visible: Bool = false + + func signUp() async throws { + guard !email.isEmpty, !password.isEmpty else { + print("No email or password found.") + return + } + + let _ = try await AuthenticationManager.shared.createUser(email: email, password: password) + } + + func signIn() async throws { + guard !email.isEmpty, !password.isEmpty else { + print("No email or password found.") + return + } + + try await AuthenticationManager.shared.signInUser(email: email, password: password) + } + + func forgotPassword() async throws { + guard !email.isEmpty else { + print("No email or password found.") + return + } + + try await AuthenticationManager.shared.resetPassword(email: email) + } +} From b4f5149c231e949ac825e420703049176688eefa Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Mon, 22 Apr 2024 19:47:37 +0300 Subject: [PATCH 033/126] Refactor code --- .../Sources/Extensions/View+Extensions.swift | 4 + .../LoginButtonViewModifier.swift | 22 ++- .../Sources/AuthenticationView.swift | 29 ++-- .../SignInEmail/SignInEmailView.swift | 138 ++++++++++-------- 4 files changed, 112 insertions(+), 81 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 61a4abe..597db91 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -59,4 +59,8 @@ public extension View { func withLoginButtonFormatting() -> some View { modifier(LoginButtonViewModifier()) } + + func withLoginTextFieldFormatting(backgroundColor: Color) -> some View { + modifier(LoginTextFieldModifier(backgroundColor: backgroundColor)) + } } diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift index cc32d51..072fdf5 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift @@ -10,9 +10,27 @@ import SwiftUI struct LoginButtonViewModifier: ViewModifier { func body(content: Content) -> some View { content + .font(.headline) .foregroundColor(.white) - .fontWeight(.bold) - .padding(.vertical) + .frame(height: 55) .frame(maxWidth: .infinity) + .background(DesignAsset.loginStrokeColor.swiftUIColor) + } +} + +struct LoginTextFieldModifier: ViewModifier { + + let backgroundColor: Color + + func body(content: Content) -> some View { + content + .textInputAutocapitalization(.never) + .fontWeight(.bold) + .frame(height: 55) + .padding(.horizontal) + .background( + RoundedRectangle(cornerRadius: 4) + .stroke(backgroundColor, lineWidth: 2) + ) } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index 6ed74c9..4e8a8b7 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -27,9 +27,12 @@ public struct AuthenticationView: View { dividerView - anonymousSignInButton - googleSignInButton - appleSignInButton + Group { + anonymousSignInButton + googleSignInButton + appleSignInButton + } + .clipShape(Capsule()) Spacer() } @@ -64,12 +67,7 @@ extension AuthenticationView { } } label: { Text("Sign In Anonymously") - .font(.headline) - .foregroundColor(.white) - .frame(height: 55) - .frame(maxWidth: .infinity) - .background(DesignAsset.loginStrokeColor.swiftUIColor) - .cornerRadius(10) + .withLoginButtonFormatting() } } @@ -85,12 +83,7 @@ extension AuthenticationView { } } label: { Text("Sign In With Google") - .font(.headline) - .foregroundColor(.white) - .frame(height: 55) - .frame(maxWidth: .infinity) - .background(DesignAsset.loginStrokeColor.swiftUIColor) - .cornerRadius(10) + .withLoginButtonFormatting() } } @@ -107,13 +100,11 @@ extension AuthenticationView { }, label: { SignInWithAppleButtonViewRepresentable(type: .default, style: .black) .allowsHitTesting(false) + .withLoginButtonFormatting() }) - .frame(height: 55) } } #Preview { - NavigationStack { - AuthenticationView(showSignInView: .constant(true)) - } + AuthenticationView(showSignInView: .constant(true)) } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift index 03f4714..80a7eb1 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift @@ -26,79 +26,97 @@ struct SignInEmailView: View { var body: some View { VStack(spacing: 10) { - DesignAsset.swiftBuddiesImage.swiftUIImage - .resizable() - .aspectRatio(1, contentMode: .fit) - .frame(height: 250) + swiftBuddiesImage - Text("Log in to your account") - .font(.title) - .fontWeight(.bold) - .foregroundColor(Color.primary.opacity(0.7)) + signInText - TextField("Email", text: $viewModel.email) - .fontWeight(.bold) - .focused($fieldInFocus, equals: .email) - .textInputAutocapitalization(.never) - .submitLabel(viewModel.password.isEmpty ? .continue : .done) - .onSubmit { - if viewModel.password.isEmpty { - fieldInFocus = .password - } - } - .frame(height: 55) - .padding(.horizontal) - .background( - RoundedRectangle(cornerRadius: 4) - .stroke(viewModel.email.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor, lineWidth: 2) - ) + emailTextField + passwordTextField - HStack(spacing: 15) { - if viewModel.visible { - TextField("Password", text: $viewModel.password) - } else { - SecureField("Password", text: $viewModel.password) - } - Button(action: { viewModel.visible.toggle() }) { - Image(systemName: viewModel.visible ? "eye.slash.fill" : "eye.fill") - .foregroundColor(Color.primary.opacity(0.7)) + forgotPasswordButton + + signInButton + } + } +} + +// MARK: Views + +extension SignInEmailView { + private var swiftBuddiesImage: some View { + DesignAsset.swiftBuddiesImage.swiftUIImage + .resizable() + .aspectRatio(1, contentMode: .fit) + .frame(height: 250) + } + + private var signInText: some View { + Text("Sign in to your account") + .font(.title) + .fontWeight(.bold) + .foregroundColor(Color.primary.opacity(0.7)) + } + + private var emailTextField: some View { + TextField("Email", text: $viewModel.email) + .submitLabel(viewModel.password.isEmpty ? .continue : .done) + .onSubmit { + if viewModel.password.isEmpty { + fieldInFocus = .password } } - .fontWeight(.bold) - .focused($fieldInFocus, equals: .password) - .textInputAutocapitalization(.never) - .frame(height: 55) - .padding(.horizontal) - .background( - RoundedRectangle(cornerRadius: 4) - .stroke(viewModel.password.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor, lineWidth: 2) + .focused($fieldInFocus, equals: .email) + .withLoginTextFieldFormatting( + backgroundColor: viewModel.email.isEmpty ? + Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor ) - - HStack { - Spacer() - Button(action: { - Task { - try? await viewModel.forgotPassword() - } - }) { - Text("Forgot password") - .fontWeight(.bold) - .foregroundColor(DesignAsset.loginStrokeColor.swiftUIColor) - } + } + + private var passwordTextField: some View { + HStack(spacing: 15) { + if viewModel.visible { + TextField("Password", text: $viewModel.password) + } else { + SecureField("Password", text: $viewModel.password) } - - Group { - Button(action: { signIn() }) { - Text("Sign In") - .withLoginButtonFormatting() + Button(action: { viewModel.visible.toggle() }) { + Image(systemName: viewModel.visible ? "eye.slash.fill" : "eye.fill") + .foregroundColor(Color.primary.opacity(0.7)) + } + } + .focused($fieldInFocus, equals: .password) + .withLoginTextFieldFormatting( + backgroundColor: viewModel.email.isEmpty ? + Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor + ) + } + + private var forgotPasswordButton: some View { + HStack { + Spacer() + Button(action: { + Task { + try? await viewModel.forgotPassword() } + }) { + Text("Forgot password") + .fontWeight(.bold) + .foregroundColor(DesignAsset.loginStrokeColor.swiftUIColor) } - .background(DesignAsset.loginStrokeColor.swiftUIColor) - .cornerRadius(10) } } + + private var signInButton: some View { + Button(action: { signIn() }) { + Text("Sign In") + .withLoginButtonFormatting() + } + .clipShape(Capsule()) + } } +// MARK: Functions + extension SignInEmailView { private func signIn() { if viewModel.email.isEmpty { From 547d49a88a356cb58178ee8a5682e5731720bd2e Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Mon, 22 Apr 2024 19:59:27 +0300 Subject: [PATCH 034/126] Remove unused dependencies --- Project.swift | 1 - .../Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift | 1 - .../Targets/LoginModule/Sources/AuthenticationView.swift | 2 -- 3 files changed, 4 deletions(-) diff --git a/Project.swift b/Project.swift index 58e92fe..03298c8 100644 --- a/Project.swift +++ b/Project.swift @@ -75,7 +75,6 @@ let loginModule = Target.featureTarget( .target(designModule), .target(authModule), .package(product: "GoogleSignIn", type: .runtime, condition: .none), - .package(product: "GoogleSignInSwift", type: .runtime, condition: .none), .package(product: "FirebaseAuth", type: .runtime, condition: .none) ] ) diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift index 7ac5d8b..152c148 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -7,7 +7,6 @@ import Foundation import GoogleSignIn -import GoogleSignInSwift public struct GoogleSignInResultModel { let idToken: String diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index 4e8a8b7..f18103f 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -6,8 +6,6 @@ // import SwiftUI -import GoogleSignIn -import GoogleSignInSwift import Design import Auth From 297c0f3fa10a2fe74a943b12ccbe4e4dc8d08a74 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Mon, 22 Apr 2024 20:08:24 +0300 Subject: [PATCH 035/126] Change TabView subviews Change: - About target to Profile target Add: - SettingsView and AboutView --- Project.swift | 76 +++++++-------- .../Resources/Localizable.xcstrings | 6 +- SwiftBuddiesIOS/Sources/ContentView.swift | 92 ------------------- SwiftBuddiesIOS/Sources/RootView.swift | 39 ++++++++ .../Sources/SwiftBuddiesIOSApp.swift | 2 +- SwiftBuddiesIOS/Sources/TabFlowView.swift | 63 +++++++++++++ .../Sources/About}/AboutView.swift | 8 +- .../ProfileModule/Sources/ProfileView.swift | 38 ++++++++ .../Sources/Settings/SettingsView.swift | 27 ++++++ .../Sources/Settings/SettingsViewModel.swift | 10 ++ 10 files changed, 223 insertions(+), 138 deletions(-) delete mode 100644 SwiftBuddiesIOS/Sources/ContentView.swift create mode 100644 SwiftBuddiesIOS/Sources/RootView.swift create mode 100644 SwiftBuddiesIOS/Sources/TabFlowView.swift rename SwiftBuddiesIOS/Targets/{AboutModule/Sources => ProfileModule/Sources/About}/AboutView.swift (95%) create mode 100644 SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift create mode 100644 SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift create mode 100644 SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift diff --git a/Project.swift b/Project.swift index 03298c8..983a5c5 100644 --- a/Project.swift +++ b/Project.swift @@ -28,31 +28,6 @@ let designModule = Target.featureTarget( ) -let feedModule = Target.featureTarget( - name: "Feed", - productName: "Feed", - dependencies: [.target(designModule)] -) - -let aboutModule = Target.featureTarget( - name: "About", - productName: "About", - dependencies: [.target(designModule)] -) - -let contributorsModule = Target.featureTarget( - name: "Contributors", - productName: "Contributors", - dependencies: [.target(designModule)] -) - -let mapModule = Target.featureTarget( - name: "Map", - productName: "Map", - dependencies: [.target(designModule)] -) - - let authModule = Target.featureTarget( name: "Auth", productName: "Auth", @@ -79,9 +54,38 @@ let loginModule = Target.featureTarget( ] ) +let feedModule = Target.featureTarget( + name: "Feed", + productName: "Feed", + dependencies: [.target(designModule)] +) + +let mapModule = Target.featureTarget( + name: "Map", + productName: "Map", + dependencies: [.target(designModule)] +) + +let profileModule = Target.featureTarget( + name: "Profile", + productName: "Profile", + dependencies: [ + .target(designModule), + .target(authModule), + .package(product: "GoogleSignIn", type: .runtime, condition: .none), + .package(product: "FirebaseAuth", type: .runtime, condition: .none) + ] +) + +let contributorsModule = Target.featureTarget( + name: "Contributors", + productName: "Contributors", + dependencies: [.target(designModule)] +) + let project = Project( - name: "SwiftBuddiesIOS", + name: "Buddies", packages: [ .remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0")), .remote(url: "https://github.com/firebase/firebase-ios-sdk.git", requirement: .exact("10.24.0")) @@ -110,23 +114,23 @@ let project = Project( dependencies: [ .package(product: "GoogleSignIn", type: .runtime, condition: .none), .package(product: "FirebaseAuth", type: .runtime, condition: .none), + .target(designModule), .target(authModule), + .target(onboardingModule), + .target(loginModule), .target(feedModule), - .target(designModule), - .target(contributorsModule), .target(mapModule), - .target(aboutModule), - .target(onboardingModule), - .target(loginModule) + .target(profileModule), + .target(contributorsModule) ] ), + designModule, authModule, + onboardingModule, + loginModule, feedModule, - designModule, - contributorsModule, mapModule, - aboutModule, - onboardingModule, - loginModule + profileModule, + contributorsModule ] ) diff --git a/SwiftBuddiesIOS/Resources/Localizable.xcstrings b/SwiftBuddiesIOS/Resources/Localizable.xcstrings index 638da78..dfa8f67 100644 --- a/SwiftBuddiesIOS/Resources/Localizable.xcstrings +++ b/SwiftBuddiesIOS/Resources/Localizable.xcstrings @@ -1,9 +1,6 @@ { "sourceLanguage" : "en", "strings" : { - "About" : { - - }, "Contributors" : { }, @@ -78,6 +75,9 @@ } } } + }, + "Profile" : { + } }, "version" : "1.0" diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift deleted file mode 100644 index 522fe83..0000000 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ /dev/null @@ -1,92 +0,0 @@ -import SwiftUI -import Auth -import Map -import Feed -import Onboarding -import About -import Contributors -import Design -import Login - -public struct ContentView: View { - @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false - @State private var showSignInView: Bool = false - - public init() { } - - public var body: some View { - SuitableRootView() - } - - @ViewBuilder - private func SuitableRootView() -> some View { - if isOnboardingScreenViewed { - ZStack { - if !showSignInView { - TabFlow() - } - } - .onAppear { - let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() - self.showSignInView = authUser == nil - try? AuthenticationManager.shared.signOut() - } - .fullScreenCover(isPresented: $showSignInView, content: { - NavigationStack { - AuthenticationView(showSignInView: $showSignInView) - } - }) - } else { - OnboardingBuilder.build() - } - } -} - -struct TabFlow: View { - @State var selectedTab: AppTab = .feed - - public init() {} - var body: some View { - TabView(selection: $selectedTab) { - FeedView() - .tabItem { - Image(systemName: "list.bullet") - Text("Feed") - } - .tag(AppTab.feed) - MapView() - .tabItem { - Image(systemName: "map") - Text("Map") - } - .tag(AppTab.map) - AboutView() - .tabItem { - Image(systemName: "info.circle") - Text("About") - } - .tag(AppTab.about) - ContributorsView() - .tabItem { - Image(systemName: "person.3") - Text("Contributors") - } - .tag(AppTab.contributors) - } - } -} - - -enum AppTab: Int, Identifiable { - case feed = 0 - case map - case about - case contributors - - var id: Int { rawValue } -} - - -#Preview { - ContentView() -} diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift new file mode 100644 index 0000000..f3aafa7 --- /dev/null +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -0,0 +1,39 @@ +import SwiftUI +import Auth +import Login +import Onboarding + +struct RootView: View { + @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false + @State private var showSignInView: Bool = false + + init() { } + + var body: some View { + SuitableRootView() + } + + @ViewBuilder + private func SuitableRootView() -> some View { + if isOnboardingScreenViewed { + ZStack { + if !showSignInView { + TabFlowView(showSignInView: $showSignInView) + } + } + .onAppear { + let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() + self.showSignInView = authUser == nil + } + .fullScreenCover(isPresented: $showSignInView, content: { + AuthenticationView(showSignInView: $showSignInView) + }) + } else { + OnboardingBuilder.build() + } + } +} + +#Preview { + RootView() +} diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 9a877f7..7cebf3b 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -8,7 +8,7 @@ struct SwiftBuddiesIOSApp: App { var body: some Scene { WindowGroup { - ContentView() + RootView() } } } diff --git a/SwiftBuddiesIOS/Sources/TabFlowView.swift b/SwiftBuddiesIOS/Sources/TabFlowView.swift new file mode 100644 index 0000000..3d878bf --- /dev/null +++ b/SwiftBuddiesIOS/Sources/TabFlowView.swift @@ -0,0 +1,63 @@ +import SwiftUI +import Feed +import Map +import Profile +import Contributors + +enum AppTab: Int, Identifiable { + case feed = 0 + case map + case profile + case contributors + + var id: Int { rawValue } +} + +struct TabFlowView: View { + + @State var selectedTab: AppTab = .feed + @Binding private var showSignInView: Bool + + init(showSignInView: Binding) { + self._showSignInView = showSignInView + } + + var body: some View { + TabView(selection: $selectedTab) { + + FeedView() + .tabItem { + Image(systemName: "list.bullet") + Text("Feed") + } + .tag(AppTab.feed) + + MapView() + .tabItem { + Image(systemName: "map") + Text("Map") + } + .tag(AppTab.map) + + NavigationStack { + ProfileView(showSignInView: $showSignInView) + } + .tabItem { + Image(systemName: "person.fill") + Text("Profile") + } + .tag(AppTab.profile) + + ContributorsView() + .tabItem { + Image(systemName: "person.3") + Text("Contributors") + } + .tag(AppTab.contributors) + } + } +} + +#Preview { + TabFlowView(showSignInView: .constant(false)) +} diff --git a/SwiftBuddiesIOS/Targets/AboutModule/Sources/AboutView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/About/AboutView.swift similarity index 95% rename from SwiftBuddiesIOS/Targets/AboutModule/Sources/AboutView.swift rename to SwiftBuddiesIOS/Targets/ProfileModule/Sources/About/AboutView.swift index 3e20e31..15878cc 100644 --- a/SwiftBuddiesIOS/Targets/AboutModule/Sources/AboutView.swift +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/About/AboutView.swift @@ -1,17 +1,13 @@ import SwiftUI import Design -public struct AboutView: View { - - public init() { } - - public var body: some View { +struct AboutView: View { + var body: some View { HeaderParallaxView { VStack { Image("SwiftBuddiesHeader", bundle: DesignResources.bundle) .resizable() .aspectRatio(contentMode: .fill) - } } content: { VStack(alignment: .leading, spacing: 16) { diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift new file mode 100644 index 0000000..ef217e4 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift @@ -0,0 +1,38 @@ +import SwiftUI +import Design + +public struct ProfileView: View { + + @Binding var showSignInView: Bool + + public init(showSignInView: Binding) { + self._showSignInView = showSignInView + } + + enum ProfileViews: String, CaseIterable { + case about = "About" + case settings = "Settings" + } + + public var body: some View { + List { + ForEach(ProfileViews.allCases, id: \.self) { selectedView in + NavigationLink(selectedView.rawValue) { + switch selectedView { + case .about: + AboutView() + case .settings: + SettingsView(showSignInView: $showSignInView) + } + } + } + } + .navigationTitle("Profile") + } +} + +#Preview { + NavigationStack { + ProfileView(showSignInView: .constant(false)) + } +} diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift new file mode 100644 index 0000000..2009e05 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift @@ -0,0 +1,27 @@ +import SwiftUI + +struct SettingsView: View { + + @StateObject private var viewModel = SettingsViewModel() + @Binding var showSignInView: Bool + + var body: some View { + List { + Button("Log out") { + Task { + do { + try viewModel.signOut() + showSignInView = true + } catch { + debugPrint(error) + } + } + } + } + .navigationBarTitle("Settings") + } +} + +#Preview { + SettingsView(showSignInView: .constant(false)) +} diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift new file mode 100644 index 0000000..2fa71e0 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsViewModel.swift @@ -0,0 +1,10 @@ +import Foundation +import Auth + +@MainActor +final class SettingsViewModel: ObservableObject { + + func signOut() throws { + try AuthenticationManager.shared.signOut() + } +} From 370973f5277c9e3ee453613762a15a5ed9d73fa3 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Mon, 22 Apr 2024 20:37:52 +0300 Subject: [PATCH 036/126] Fix property and property name --- .../DesignModule/Sources/Extensions/View+Extensions.swift | 4 ++-- .../ViewModifiers/LoginButtonViewModifier.swift | 4 ++-- .../Sources/Subviews/SignInEmail/SignInEmailView.swift | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 597db91..839ec6e 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -60,7 +60,7 @@ public extension View { modifier(LoginButtonViewModifier()) } - func withLoginTextFieldFormatting(backgroundColor: Color) -> some View { - modifier(LoginTextFieldModifier(backgroundColor: backgroundColor)) + func withLoginTextFieldFormatting(borderColor: Color) -> some View { + modifier(LoginTextFieldModifier(borderColor: borderColor)) } } diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift index 072fdf5..b38bd2b 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/ViewModifiers/LoginButtonViewModifier.swift @@ -20,7 +20,7 @@ struct LoginButtonViewModifier: ViewModifier { struct LoginTextFieldModifier: ViewModifier { - let backgroundColor: Color + let borderColor: Color func body(content: Content) -> some View { content @@ -30,7 +30,7 @@ struct LoginTextFieldModifier: ViewModifier { .padding(.horizontal) .background( RoundedRectangle(cornerRadius: 4) - .stroke(backgroundColor, lineWidth: 2) + .stroke(borderColor, lineWidth: 2) ) } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift index 80a7eb1..ac72a88 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift @@ -67,7 +67,7 @@ extension SignInEmailView { } .focused($fieldInFocus, equals: .email) .withLoginTextFieldFormatting( - backgroundColor: viewModel.email.isEmpty ? + borderColor: viewModel.email.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor ) } @@ -86,7 +86,7 @@ extension SignInEmailView { } .focused($fieldInFocus, equals: .password) .withLoginTextFieldFormatting( - backgroundColor: viewModel.email.isEmpty ? + borderColor: viewModel.password.isEmpty ? Color.primary.opacity(0.7) : DesignAsset.loginStrokeColor.swiftUIColor ) } From 07f697386ed2ce006836a93e441319d68fd67b2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukaan=20K=C4=B1l=C4=B1=C3=A7arslan?= <40922278+darkbringer1@users.noreply.github.com> Date: Thu, 25 Apr 2024 00:05:09 +0300 Subject: [PATCH 037/126] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 863f977..50b7d79 100644 --- a/README.md +++ b/README.md @@ -86,10 +86,10 @@ While the app is in its early stages, future improvements and enhancements are p We appreciate contributions, big or small. Juniors can learn by developing features and seniors can provide feedback and guidance, keeping the development process streamlined. -1. Fork the project -2. Create your feature branch (`git checkout -b feature/AmazingFeature`) +1. Clone the project +2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -am 'Add some AmazingFeature'`) -4. Push to the branch (`git push origin feature/AmazingFeature`) +4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a pull request From e6da1167c1e4fb390f0df49469f0ad00ce5962c7 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Thu, 25 Apr 2024 16:05:01 +0300 Subject: [PATCH 038/126] Remove unnecessary comment lines from the project --- .../AuthModule/Sources/Helpers/SignInAppleHelper.swift | 7 ------- .../AuthModule/Sources/Helpers/SignInGoogleHelper.swift | 7 ------- .../Targets/LoginModule/Sources/AuthenticationView.swift | 7 ------- .../LoginModule/Sources/AuthenticationViewModel.swift | 7 ------- .../Sources/Subviews/SignInEmail/SignInEmailView.swift | 7 ------- .../Subviews/SignInEmail/SignInEmailViewModel.swift | 7 ------- 6 files changed, 42 deletions(-) diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift index 99e380f..23d76f5 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift @@ -1,10 +1,3 @@ -// -// SignInAppleHelper.swift -// Auth -// -// Created by Berkay Tuncel on 19.04.2024. -// - import SwiftUI import AuthenticationServices import CryptoKit diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift index 152c148..7322780 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -1,10 +1,3 @@ -// -// SignInGoogleHelper.swift -// Auth -// -// Created by Berkay Tuncel on 18.04.2024. -// - import Foundation import GoogleSignIn diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index f18103f..e794a80 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -1,10 +1,3 @@ -// -// LoginView.swift -// Login -// -// Created by Berkay Tuncel on 17.04.2024. -// - import SwiftUI import Design import Auth diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift index 6e102ef..978f858 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift @@ -1,10 +1,3 @@ -// -// AuthenticationViewModel.swift -// Login -// -// Created by Berkay Tuncel on 19.04.2024. -// - import Foundation import Auth diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift index ac72a88..0d638b2 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailView.swift @@ -1,10 +1,3 @@ -// -// SignInEmailView.swift -// Login -// -// Created by Berkay Tuncel on 19.04.2024. -// - import SwiftUI import Design diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift index 2014d88..3864ae7 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift @@ -1,10 +1,3 @@ -// -// SignInEmailViewModel.swift -// Login -// -// Created by Berkay Tuncel on 19.04.2024. -// - import Foundation import Auth From f91085a9670a9330a1117d1b7c98eb0d1eee0bfe Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Thu, 25 Apr 2024 16:19:34 +0300 Subject: [PATCH 039/126] Move NavigationStack into ProfileView and Add NotificationCenter for logout functionality --- SwiftBuddiesIOS/Sources/RootView.swift | 6 ++++ SwiftBuddiesIOS/Sources/TabFlowView.swift | 14 ++++----- .../Extensions/Notification+Extensions.swift | 5 ++++ .../ProfileModule/Sources/ProfileView.swift | 30 ++++++++----------- .../Sources/Settings/SettingsView.swift | 8 ++--- 5 files changed, 34 insertions(+), 29 deletions(-) create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift diff --git a/SwiftBuddiesIOS/Sources/RootView.swift b/SwiftBuddiesIOS/Sources/RootView.swift index f3aafa7..56969cb 100644 --- a/SwiftBuddiesIOS/Sources/RootView.swift +++ b/SwiftBuddiesIOS/Sources/RootView.swift @@ -7,6 +7,9 @@ struct RootView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false @State private var showSignInView: Bool = false + let pub = NotificationCenter.default + .publisher(for: .signOutNotification) + init() { } var body: some View { @@ -25,6 +28,9 @@ struct RootView: View { let authUser = try? AuthenticationManager.shared.getAuthenticatedUser() self.showSignInView = authUser == nil } + .onReceive(pub) { _ in + showSignInView = true + } .fullScreenCover(isPresented: $showSignInView, content: { AuthenticationView(showSignInView: $showSignInView) }) diff --git a/SwiftBuddiesIOS/Sources/TabFlowView.swift b/SwiftBuddiesIOS/Sources/TabFlowView.swift index 3d878bf..09a56c5 100644 --- a/SwiftBuddiesIOS/Sources/TabFlowView.swift +++ b/SwiftBuddiesIOS/Sources/TabFlowView.swift @@ -39,14 +39,12 @@ struct TabFlowView: View { } .tag(AppTab.map) - NavigationStack { - ProfileView(showSignInView: $showSignInView) - } - .tabItem { - Image(systemName: "person.fill") - Text("Profile") - } - .tag(AppTab.profile) + ProfileView() + .tabItem { + Image(systemName: "person.fill") + Text("Profile") + } + .tag(AppTab.profile) ContributorsView() .tabItem { diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift new file mode 100644 index 0000000..a58b8ac --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/Notification+Extensions.swift @@ -0,0 +1,5 @@ +import Foundation + +public extension Notification.Name { + static let signOutNotification = Notification.Name("SignOutNotification") +} diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift index ef217e4..62d72fc 100644 --- a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/ProfileView.swift @@ -3,11 +3,7 @@ import Design public struct ProfileView: View { - @Binding var showSignInView: Bool - - public init(showSignInView: Binding) { - self._showSignInView = showSignInView - } + public init() { } enum ProfileViews: String, CaseIterable { case about = "About" @@ -15,24 +11,24 @@ public struct ProfileView: View { } public var body: some View { - List { - ForEach(ProfileViews.allCases, id: \.self) { selectedView in - NavigationLink(selectedView.rawValue) { - switch selectedView { - case .about: - AboutView() - case .settings: - SettingsView(showSignInView: $showSignInView) + NavigationStack { + List { + ForEach(ProfileViews.allCases, id: \.self) { selectedView in + NavigationLink(selectedView.rawValue) { + switch selectedView { + case .about: + AboutView() + case .settings: + SettingsView() + } } } } + .navigationTitle("Profile") } - .navigationTitle("Profile") } } #Preview { - NavigationStack { - ProfileView(showSignInView: .constant(false)) - } + ProfileView() } diff --git a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift index 2009e05..dfc1425 100644 --- a/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift +++ b/SwiftBuddiesIOS/Targets/ProfileModule/Sources/Settings/SettingsView.swift @@ -1,17 +1,17 @@ import SwiftUI +import Design struct SettingsView: View { @StateObject private var viewModel = SettingsViewModel() - @Binding var showSignInView: Bool var body: some View { List { - Button("Log out") { + Button("Sign out") { Task { do { try viewModel.signOut() - showSignInView = true + NotificationCenter.default.post(name: .signOutNotification, object: nil) } catch { debugPrint(error) } @@ -23,5 +23,5 @@ struct SettingsView: View { } #Preview { - SettingsView(showSignInView: .constant(false)) + SettingsView() } From 42d46e03ee6d438e9c28e6e0145f093fcffd1081 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Thu, 25 Apr 2024 16:22:59 +0300 Subject: [PATCH 040/126] Improve UX with code enhancements --- .../DesignModule/Sources/Extensions/View+Extensions.swift | 4 ++++ .../Targets/LoginModule/Sources/AuthenticationView.swift | 2 ++ 2 files changed, 6 insertions(+) diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift index 839ec6e..54bcd09 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/Extensions/View+Extensions.swift @@ -52,6 +52,10 @@ public extension View { .padding(.vertical,verticalPadding) .background { color } } + + func endTextEditing() { + UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) + } } public extension View { diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index e794a80..130b4c0 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -30,6 +30,8 @@ public struct AuthenticationView: View { .padding() .frame(maxWidth: 375) } + .scrollIndicators(.never) + .onTapGesture(perform: endTextEditing) } } From 2d04e578bc237c843ba5f1eefafb4505e9159fef Mon Sep 17 00:00:00 2001 From: Can Yoldas Date: Fri, 26 Apr 2024 22:48:41 +0300 Subject: [PATCH 041/126] added localization codegen --- Project.swift | 71 ++++++- SwiftBuddiesIOS/Sources/ContentView.swift | 9 +- .../CustomViews/BuddiesActionButton.swift | 13 +- .../Resources/Localizable.xcstrings | 40 +++- .../GeneratedLocalizationStrings.swift | 38 ++++ .../Models/OnboardingItemModel.swift | 8 +- .../OnbordingScreen/OnboardingBuilder.swift | 9 +- .../OnbordingScreen/OnboardingView.swift | 4 +- .../LocalizationCodegen.swift | 186 ++++++++++++++++++ 9 files changed, 350 insertions(+), 28 deletions(-) rename SwiftBuddiesIOS/{ => Targets/LocalizationModule}/Resources/Localizable.xcstrings (70%) create mode 100644 SwiftBuddiesIOS/Targets/LocalizationModule/Sources/GeneratedLocalizationStrings.swift create mode 100644 SwiftBuddiesIOS/Targets/ScriptsModule/LocalizationCodegen/LocalizationCodegen.swift diff --git a/Project.swift b/Project.swift index 3c018a0..46d9ef7 100644 --- a/Project.swift +++ b/Project.swift @@ -20,14 +20,20 @@ extension Target { } } +let localizationModule = Target.featureTarget( + name: "Localization", + productName: "Localization", + dependencies: [], + hasResources: true +) + let designModule = Target.featureTarget( name: "Design", productName: "Design", - dependencies: [], + dependencies: [.target(localizationModule)], hasResources: true ) - let feedModule = Target.featureTarget( name: "Feed", productName: "Feed", @@ -52,7 +58,6 @@ let mapModule = Target.featureTarget( dependencies: [.target(designModule)] ) - let authModule = Target.featureTarget( name: "Auth", productName: "Auth", @@ -65,10 +70,58 @@ let onboardingModule = Target.featureTarget( dependencies: [.target(designModule)] ) +let localicationCodegen = Target.target( + name: "LocalizationCodegen", + destinations: .macOS, + product: .commandLineTool, + productName: "LocalizationCodegen", + bundleId: "com.swiftbuddies.localization", + sources: ["SwiftBuddiesIOS/Targets/ScriptsModule/LocalizationCodegen/**"], + scripts: [], + dependencies: [.package(product: "ArgumentParser", type: .runtime, condition: .none)], + coreDataModels: [], + environmentVariables: [:], + launchArguments: [], + additionalFiles: [], + buildRules: [], + mergedBinaryType: .automatic, + mergeable: false +) + + + +//let scriptsModule = Target.target( +// name: "Scripts", +// destinations: .macOS, +// product: .staticFramework, +// productName: "Scripts", +// bundleId: "com.swiftbuddies.scripts", +// deploymentTargets: nil, +// infoPlist: nil, +// +// sources: ["SwiftBuddiesIOS/Targets/ScriptsModule/**"], +// resources: nil, +// copyFiles: nil, +// headers: nil, +// entitlements: nil, +// scripts: [], +// dependencies: [.target(localicationCodegen)], +// settings: nil, +// coreDataModels: [], +// environmentVariables: [:], +// launchArguments: [], +// additionalFiles: [], +// buildRules: [], +// mergedBinaryType: .automatic, +// mergeable: false +//) let project = Project( name: "SwiftBuddiesIOS", - packages: [.remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0"))], + packages: [ + .remote(url: "https://github.com/google/GoogleSignIn-iOS.git", requirement: .exact("7.0.0")), + .remote(url: "https://github.com/apple/swift-argument-parser.git", requirement: .exact("1.3.0")) + ], targets: [ .target( name: "SwiftBuddiesIOS", @@ -98,7 +151,10 @@ let project = Project( .target(contributorsModule), .target(mapModule), .target(aboutModule), - .target(onboardingModule) + .target(onboardingModule), + .target(localizationModule) +// .target(scriptsModule), +// .target(localicationCodegen) ] ), authModule, @@ -107,6 +163,9 @@ let project = Project( contributorsModule, mapModule, aboutModule, - onboardingModule + onboardingModule, +// scriptsModule, + localizationModule, + localicationCodegen ] ) diff --git a/SwiftBuddiesIOS/Sources/ContentView.swift b/SwiftBuddiesIOS/Sources/ContentView.swift index 3c6f20d..42ac51c 100644 --- a/SwiftBuddiesIOS/Sources/ContentView.swift +++ b/SwiftBuddiesIOS/Sources/ContentView.swift @@ -6,6 +6,7 @@ import Onboarding import About import Contributors import Design +import Localization public struct ContentView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false @@ -35,25 +36,25 @@ struct TabFlow: View { FeedView() .tabItem { Image(systemName: "list.bullet") - Text("Feed") + L.feed } .tag(AppTab.feed) MapView() .tabItem { Image(systemName: "map") - Text("Map") + L.map } .tag(AppTab.map) AboutView() .tabItem { Image(systemName: "info.circle") - Text("About") + L.about } .tag(AppTab.about) ContributorsView() .tabItem { Image(systemName: "person.3") - Text("Contributors") + L.contributors } .tag(AppTab.contributors) } diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift index 25353b4..20874b9 100644 --- a/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift +++ b/SwiftBuddiesIOS/Targets/DesignModule/Sources/ViewComponents/CustomViews/BuddiesActionButton.swift @@ -9,14 +9,19 @@ import SwiftUI public struct BuddiesActionButton: View { - public init(title: LocalizedStringKey, bgColor: Color = .orange, iconName: String = "", clickAction: @escaping () -> Void) { - self.title = title + public init( + label: Text, + bgColor: Color = .orange, + iconName: String = "", + clickAction: @escaping () -> Void + ) { + self.label = label self.bgColor = bgColor self.iconName = iconName self.clickAction = clickAction } - public let title: LocalizedStringKey + public let label: Text public let bgColor: Color public var iconName: String public let clickAction: () -> Void @@ -32,7 +37,7 @@ public struct BuddiesActionButton: View { .foregroundStyle(.white) } else { EmptyView() } } - Text(title) + label .font(.body.bold()) .foregroundStyle(.white) .frame(height: 40) diff --git a/SwiftBuddiesIOS/Resources/Localizable.xcstrings b/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings similarity index 70% rename from SwiftBuddiesIOS/Resources/Localizable.xcstrings rename to SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings index 638da78..91738c0 100644 --- a/SwiftBuddiesIOS/Resources/Localizable.xcstrings +++ b/SwiftBuddiesIOS/Targets/LocalizationModule/Resources/Localizable.xcstrings @@ -2,16 +2,48 @@ "sourceLanguage" : "en", "strings" : { "About" : { - + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "About" + } + } + } }, "Contributors" : { - + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contributors" + } + } + } }, "Feed" : { - + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feed" + } + } + } }, "Map" : { - + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Map" + } + } + } }, "onboarding.ButtonTitle" : { "extractionState" : "manual", diff --git a/SwiftBuddiesIOS/Targets/LocalizationModule/Sources/GeneratedLocalizationStrings.swift b/SwiftBuddiesIOS/Targets/LocalizationModule/Sources/GeneratedLocalizationStrings.swift new file mode 100644 index 0000000..7c49fe1 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/LocalizationModule/Sources/GeneratedLocalizationStrings.swift @@ -0,0 +1,38 @@ +import SwiftUI + +@propertyWrapper +public struct LocalizedString { + public let key: String + public init(key: String) { self.key = key } + + public var wrappedValue: Text { Text(LocalizedStringKey(self.key), bundle: .module) } + public var projectedValue: LocalizedString { self } + public var localized: String { NSLocalizedString(self.key, bundle: .module, comment: "") } + public func format(_ arguments: CVarArg...) -> String { String(format: localized, arguments: arguments) } + public func callAsFunction(_ arguments: CVarArg...) -> String { String(format: localized, arguments: arguments) } +} + +// MARK: - Localized strings keys + +public enum L { + /// About + @LocalizedString(key: "About") public static var about: Text + /// Feed + @LocalizedString(key: "Feed") public static var feed: Text + /// BuddiesIOS + @LocalizedString(key: "onboardingItem.SecondTitle") public static var onboardingitem_secondtitle: Text + /// Contributors + @LocalizedString(key: "Contributors") public static var contributors: Text + /// Dive in, explore, learn and share. We're excited to have you here and can't wait to see what you'll bring to the table. + @LocalizedString(key: "onboardingItem.SecondDescription") public static var onboardingitem_seconddescription: Text + /// Buddies Community, being a platform dedicated to iOS development, aims to provide a productive environment fostering networking, collaboration, and knowledge sharing. + @LocalizedString(key: "onboardingItem.FirstDescription") public static var onboardingitem_firstdescription: Text + /// Map + @LocalizedString(key: "Map") public static var map: Text + /// Next + @LocalizedString(key: "onboarding.ButtonTitle") public static var onboarding_buttontitle: Text + /// Welcome! + @LocalizedString(key: "onboardingItem.FirstTitle") public static var onboardingitem_firsttitle: Text + /// Start + @LocalizedString(key: "onboarding.StartButtonTitle") public static var onboarding_startbuttontitle: Text +} diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/Models/OnboardingItemModel.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/Models/OnboardingItemModel.swift index 8dba41c..b4971c9 100644 --- a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/Models/OnboardingItemModel.swift +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/Models/OnboardingItemModel.swift @@ -11,8 +11,8 @@ import SwiftUI public struct OnboardingItemModel: Identifiable, Hashable { public init(id: Int, - title: LocalizedStringKey, - description: LocalizedStringKey, + title: String, + description: String, image: Image) { self.id = id self.title = title @@ -22,8 +22,8 @@ public struct OnboardingItemModel: Identifiable, Hashable { public var id: Int - public var title: LocalizedStringKey - public var description: LocalizedStringKey + public var title: String + public var description: String public var image: Image public func hash(into hasher: inout Hasher) { diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift index 36afabd..6c715b4 100644 --- a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingBuilder.swift @@ -6,18 +6,19 @@ // import Design +import Localization public struct OnboardingBuilder { public static func build() -> OnboardingView { let onboardingItems: [OnboardingItemModel] = [ .init(id: 0, - title: "onboardingItem.FirstTitle", - description: "onboardingItem.FirstDescription", + title: L.$onboardingitem_firsttitle.localized, + description: L.$onboardingitem_firstdescription.localized, image: DesignAsset.onboardingWelcomeImage.swiftUIImage), .init(id: 1, - title: "onboardingItem.SecondTitle", - description: "onboardingItem.SecondDescription", + title: L.$onboardingitem_secondtitle.localized, + description: L.$onboardingitem_seconddescription.localized, image: DesignAsset.onboardingBuddiesImage.swiftUIImage) ] diff --git a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift index a672d79..40631a7 100644 --- a/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift +++ b/SwiftBuddiesIOS/Targets/Onboardingmodule/Sources/Presentation/OnbordingScreen/OnboardingView.swift @@ -7,6 +7,7 @@ import SwiftUI import Design +import Localization public struct OnboardingView: View { @AppStorage("isSplashScreenViewed") var isOnboardingScreenViewed : Bool = false @@ -36,8 +37,7 @@ public struct OnboardingView: View { .padding(.top,20) .onAppear { setPageIndicatorColor() } let isLastItem: Bool = onboardingData.count - 1 == currentOnboardingItem - let buttonTitle: LocalizedStringKey = isLastItem ? "onboarding.StartButtonTitle": "onboarding.ButtonTitle" - BuddiesActionButton(title: buttonTitle) { + BuddiesActionButton(label: isLastItem ? L.onboarding_startbuttontitle: L.onboarding_buttontitle) { if isLastItem { withAnimation(.easeInOut) { isOnboardingScreenViewed = true } diff --git a/SwiftBuddiesIOS/Targets/ScriptsModule/LocalizationCodegen/LocalizationCodegen.swift b/SwiftBuddiesIOS/Targets/ScriptsModule/LocalizationCodegen/LocalizationCodegen.swift new file mode 100644 index 0000000..6ee2aaa --- /dev/null +++ b/SwiftBuddiesIOS/Targets/ScriptsModule/LocalizationCodegen/LocalizationCodegen.swift @@ -0,0 +1,186 @@ + +// +// main.swift +// Localization +// +// Created by Can Yoldas on 25/04/2024. +// + +import Foundation +import ArgumentParser + +/// Credits to Tiziano Coroneo +@main +struct LocalizationCodegen: AsyncParsableCommand { + + var projectDirectoryURL: URL { + let scriptURL = URL(fileURLWithPath: #file) + let projectDirectoryURL = scriptURL + .deletingLastPathComponent() + .deletingLastPathComponent() + .deletingLastPathComponent() + + + return projectDirectoryURL + } + + func run() throws { + let fileName = "Localizable.xcstrings" + let fileURL = projectDirectoryURL + .appendingPathComponent("LocalizationModule") + .appendingPathComponent("Resources") + .appendingPathComponent(fileName) + + + let _ = generateStaticKeys(fromFileAtPath: fileURL.path()) + } + + func generateStaticKeys(fromFileAtPath filePath: String) -> [String] { + print(FileManager.default.fileExists(atPath: filePath).description) + guard let data = FileManager.default.contents(atPath: filePath) else { + print("Failed to read file at path: \(filePath)") + return [] + } + + var lines: [LocalizedLine] = [] + + do { + let decodedData = try JSONDecoder().decode(Localizable.self, from: data) + + for (key,val) in decodedData.strings { + lines.append(.init(key: key, value: val.localizations?.en?.stringUnit?.value ?? "")) + } + dump(decodedData) + } catch { + print("error decoding: \(error.localizedDescription)") + return [] + } + + let fileContent = makeAllContent( + localizationKeys: lines) + + let fileURL = projectDirectoryURL + .appendingPathComponent("LocalizationModule") + .appendingPathComponent("Sources") + .appendingPathComponent("GeneratedLocalizationStrings.swift") + + do { + let newData: Data = fileContent.data(using: .utf8)! + try newData.write(to: URL(filePath: fileURL.path()), options: [.atomic]) + } catch { + print(error.localizedDescription) + } + + return [] + } + + func makePropertyFor( + content: LocalizedLine, + depth: Int + ) -> String { + """ + \(String(repeating: " ", count: depth))/// \(content.value) + \(String(repeating: " ", count: depth))@LocalizedString(key: "\(content.key)") public static var \(sanitizeName(content.key)): Text + """ + } + + func makeAccessorStruct() -> String { + """ + import SwiftUI + + @propertyWrapper + public struct LocalizedString { + public let key: String + public init(key: String) { self.key = key } + + public var wrappedValue: Text { Text(LocalizedStringKey(self.key), bundle: .module) } + public var projectedValue: LocalizedString { self } + public var localized: String { NSLocalizedString(self.key, bundle: .module, comment: "") } + public func format(_ arguments: CVarArg...) -> String { String(format: localized, arguments: arguments) } + public func callAsFunction(_ arguments: CVarArg...) -> String { String(format: localized, arguments: arguments) } + } + + """ +} + + func makeAllContent( + localizationKeys: [LocalizedLine] + ) -> String { + """ + \(makeAccessorStruct()) + + \(makeAccessorList(localizationKeys)) + + """ + } + + func makeAccessorList( + _ list: [LocalizedLine] + ) -> String { + let content = list + .sorted() + .map { makePropertyFor(content: $0, depth: 1) } + .joined(separator: "\n") + + return """ + // MARK: - Localized strings keys + + public enum L { + \(content) + } + """ + } + + private var keywords: Set = [ + "associatedtype", "class", "deinit", "enum", "extension", "fileprivate", "func", "import", "init", "inout", "internal", "let", "open", "operator", "private", "precedencegroup", "protocol", "public", "rethrows", "static", "struct", "subscript", "typealias", "var", "break", "case", "catch", "continue", "default", "defer", "do", "else", "fallthrough", "for", "guard", "if", "in", "repeat", "return", "throw", "switch", "where", "while", "Any", "as", "await", "catch", "false", "is", "nil", "rethrows", "self", "Self", "super", "throw", "throws", "true", "try", "associativity", "convenience", "didSet", "dynamic", "final", "get", "indirect", "infix", "lazy", "left", "mutating", "none", "nonmutating", "optional", "override", "postfix", "precedence", "prefix", "Protocol", "required", "right", "set", "some", "Type", "unowned", "weak", "willSet", + ] + + func sanitizeName(_ name: S) -> String { + var newName = name + .replacingOccurrences(of: "-", with: "_") + .replacingOccurrences(of: ".", with: "_") + + if newName.starts(with: #/\d/#) { + newName = "_\(newName)" + } + + if keywords.contains(newName) { + newName = "`\(newName)`" + } + + return newName.lowercased() + } +} + +struct LocalizedLine: Comparable { + static func < (lhs: LocalizedLine, rhs: LocalizedLine) -> Bool { + lhs.key < rhs.value + } + + let key: String + let value: String +} + +struct Localizable: Codable { + let strings: [String: StringValue] +} + +// MARK: - StringValue +struct StringValue: Codable { + let localizations: Localizations? +} + +// MARK: - Localizations +struct Localizations: Codable { + let en: En? +} + +// MARK: - En +struct En: Codable { + let stringUnit: StringUnit? +} + +// MARK: - StringUnit +struct StringUnit: Codable { + let value: String? +} From b4f11cbcf51b530dda5be843c96e0e395d4fd7b4 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Sat, 27 Apr 2024 03:40:19 +0300 Subject: [PATCH 042/126] Refactor AuthenticationManager according to code review --- .../Sources/SwiftBuddiesIOSApp.swift | 5 + .../Sources/AuthenticationManager.swift | 161 ------------------ .../Sources/Helpers/AuthProvider.swift | 33 ++++ .../Sources/Helpers/SignInAppleHelper.swift | 13 +- .../Sources/Helpers/SignInGoogleHelper.swift | 15 +- .../Managers/AuthenticationManager.swift | 109 ++++++++++++ .../Sources/Models/AuthDataResult.swift | 16 ++ .../Sources/Models/GoogleSignInResult.swift | 8 + .../Models/SignInWithAppleResult.swift | 8 + .../Protocols/AuthWithEmailProtocol.swift | 7 + .../Protocols/AuthWithSSOProtocol.swift | 5 + .../Sources/AuthenticationView.swift | 6 +- .../Sources/AuthenticationViewModel.swift | 16 +- .../SignInEmail/SignInEmailViewModel.swift | 18 +- 14 files changed, 217 insertions(+), 203 deletions(-) delete mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithAppleResult.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift create mode 100644 SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift diff --git a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift index 7cebf3b..9de9acf 100644 --- a/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift +++ b/SwiftBuddiesIOS/Sources/SwiftBuddiesIOSApp.swift @@ -16,6 +16,11 @@ struct SwiftBuddiesIOSApp: App { class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { FirebaseApp.configure() + + guard let clientID = FirebaseApp.app()?.options.clientID else { return true } + let config = GIDConfiguration(clientID: clientID) + GIDSignIn.sharedInstance.configuration = config + return true } } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift deleted file mode 100644 index a75a618..0000000 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/AuthenticationManager.swift +++ /dev/null @@ -1,161 +0,0 @@ - -import Foundation -import FirebaseAuth -import GoogleSignIn -import FirebaseCore - -public struct AuthDataResultModel { - let uid: String - let email: String? - let photoUrl: String? - let isAnonymous: Bool - - init(user: User) { - self.uid = user.uid - self.email = user.email - self.photoUrl = user.photoURL?.absoluteString - self.isAnonymous = user.isAnonymous - } -} - -public enum AuthProviderOption: String { - case email = "password" - case google = "google.com" - case apple = "apple.com" -} - -final public class AuthenticationManager { - - static public let shared = AuthenticationManager() - - private init() { - guard let clientID = FirebaseApp.app()?.options.clientID else { return } - let config = GIDConfiguration(clientID: clientID) - GIDSignIn.sharedInstance.configuration = config - } - - public func getAuthenticatedUser() throws -> AuthDataResultModel { - guard let user = Auth.auth().currentUser else { - throw URLError(.badServerResponse) - } - - return AuthDataResultModel(user: user) - } - - public func getProviders() throws -> [AuthProviderOption] { - guard let providerData = Auth.auth().currentUser?.providerData else { - throw URLError(.badServerResponse) - } - - var providers: [AuthProviderOption] = [] - for provider in providerData { - if let option = AuthProviderOption(rawValue: provider.providerID) { - providers.append(option) - } else { - assertionFailure("Provider option not found: \(provider.providerID)") - } - } - debugPrint(providers) - return providers - } - - public func signOut() throws { - try Auth.auth().signOut() - } - - public func delete() async throws { - guard let user = Auth.auth().currentUser else { - throw URLError(.badURL) - } - - try await user.delete() - } -} - -// MARK: SIGN IN EMAIL - -extension AuthenticationManager { - - @discardableResult - public func createUser(email: String, password: String) async throws -> AuthDataResultModel { - let authDataResult = try await Auth.auth().createUser(withEmail: email, password: password) - return AuthDataResultModel(user: authDataResult.user) - } - - @discardableResult - public func signInUser(email: String, password: String) async throws -> AuthDataResultModel { - let authDataResult = try await Auth.auth().signIn(withEmail: email, password: password) - return AuthDataResultModel(user: authDataResult.user) - } - - public func resetPassword(email: String) async throws { - try await Auth.auth().sendPasswordReset(withEmail: email) - } - - public func updatePassword(password: String) async throws { - guard let user = Auth.auth().currentUser else { - throw URLError(.badServerResponse) - } - - try await user.updatePassword(to: password) - } - -} - -// MARK: SIGN IN SSO - -extension AuthenticationManager { - - @discardableResult - public func signInWithGoogle(tokens: GoogleSignInResultModel) async throws -> AuthDataResultModel { - let credential = GoogleAuthProvider.credential(withIDToken: tokens.idToken, accessToken: tokens.accessToken) - return try await signIn(credential: credential) - } - - @discardableResult - public func signInWithApple(tokens: SignInWithAppleResult) async throws -> AuthDataResultModel { - let credential = OAuthProvider.credential(withProviderID: AuthProviderOption.apple.rawValue, idToken: tokens.token, rawNonce: tokens.nonce) - return try await signIn(credential: credential) - } - - public func signIn(credential: AuthCredential) async throws -> AuthDataResultModel { - let authDataResult = try await Auth.auth().signIn(with: credential) - return AuthDataResultModel(user: authDataResult.user) - } -} - -// MARK: SIGN IN ANONYMOUS - -extension AuthenticationManager { - - @discardableResult - public func signInAnonymous() async throws -> AuthDataResultModel { - let authDataResult = try await Auth.auth().signInAnonymously() - return AuthDataResultModel(user: authDataResult.user) - } - - public func linkEmail(email: String, password: String) async throws -> AuthDataResultModel { - let credential = EmailAuthProvider.credential(withEmail: email, password: password) - return try await linkCredential(credential: credential) - } - - public func linkGoogle(tokens: GoogleSignInResultModel) async throws -> AuthDataResultModel { - let credential = GoogleAuthProvider.credential(withIDToken: tokens.idToken, accessToken: tokens.accessToken) - return try await linkCredential(credential: credential) - } - - public func linkApple(tokens: SignInWithAppleResult) async throws -> AuthDataResultModel { - let credential = OAuthProvider.credential(withProviderID: AuthProviderOption.apple.rawValue, idToken: tokens.token, rawNonce: tokens.nonce) - return try await linkCredential(credential: credential) - } - - private func linkCredential(credential: AuthCredential) async throws -> AuthDataResultModel { - guard let user = Auth.auth().currentUser else { - throw URLError(.badURL) - } - - let authDataResult = try await user.link(with: credential) - return AuthDataResultModel(user: authDataResult.user) - } - -} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift new file mode 100644 index 0000000..bec7485 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/AuthProvider.swift @@ -0,0 +1,33 @@ +import Foundation +import FirebaseAuth + +public protocol AuthProvider { + func credential() async throws -> AuthCredential +} + +public class GoogleAuthenticationProvider: AuthProvider { + + public init() { } + + public func credential() async throws -> AuthCredential { + let helper = SignInGoogleHelper() + let tokens = try await helper.signIn() + return GoogleAuthProvider.credential( + withIDToken: tokens.idToken, + accessToken: tokens.accessToken) + } +} + +public class AppleAuthenticationProvider: AuthProvider { + + public init() { } + + public func credential() async throws -> AuthCredential { + let helper = await SignInAppleHelper() + let tokens = try await helper.startSignInWithAppleFlow() + return OAuthProvider.credential( + withProviderID: AuthProviderOption.apple.rawValue, + idToken: tokens.token, + rawNonce: tokens.nonce) + } +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift index 23d76f5..ed6ce5a 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInAppleHelper.swift @@ -22,20 +22,13 @@ public struct SignInWithAppleButtonViewRepresentable: UIViewRepresentable { } -public struct SignInWithAppleResult { - let token: String - let nonce: String - let name: String? - let email: String? -} - @MainActor -final public class SignInAppleHelper: NSObject { +final class SignInAppleHelper: NSObject { private var currentNonce: String? private var completionHandler: ((Result) -> Void)? - public init(currentNonce: String? = nil, completionHandler: ( (Result) -> Void)? = nil) { + init(currentNonce: String? = nil, completionHandler: ((Result) -> Void)? = nil) { self.currentNonce = currentNonce self.completionHandler = completionHandler } @@ -140,7 +133,7 @@ extension SignInAppleHelper: ASAuthorizationControllerDelegate { } public func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { - print("Sign in with Apple errored: \(error)") + debugPrint("Sign in with Apple errored: \(error)") completionHandler?(.failure(URLError(.cannotFindHost))) } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift index 7322780..078613e 100644 --- a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Helpers/SignInGoogleHelper.swift @@ -1,19 +1,10 @@ import Foundation import GoogleSignIn -public struct GoogleSignInResultModel { - let idToken: String - let accessToken: String - let name: String? - let email: String? -} - -final public class SignInGoogleHelper { - - public init() { } +final class SignInGoogleHelper { @MainActor - public func signIn() async throws -> GoogleSignInResultModel { + public func signIn() async throws -> GoogleSignInResult { guard let vc = UIApplication.shared.windows.first?.rootViewController else { throw URLError(.cannotFindHost) } @@ -28,7 +19,7 @@ final public class SignInGoogleHelper { let name = gidSignInResult.user.profile?.name let email = gidSignInResult.user.profile?.email - let tokens = GoogleSignInResultModel(idToken: idToken, accessToken: accessToken, name: name, email: email) + let tokens = GoogleSignInResult(idToken: idToken, accessToken: accessToken, name: name, email: email) return tokens } diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift new file mode 100644 index 0000000..5e98ec2 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Managers/AuthenticationManager.swift @@ -0,0 +1,109 @@ +import Foundation +import FirebaseAuth +import GoogleSignIn +import FirebaseCore + +public enum AuthProviderOption: String { + case email = "password" + case google = "google.com" + case apple = "apple.com" +} + +public enum AuthSSOOption { + case google, apple, anonymous +} + +public final class AuthenticationManager { + + public static let shared = AuthenticationManager() + private init() { } + + public func getAuthenticatedUser() throws -> AuthDataResult { + guard let user = Auth.auth().currentUser else { + throw URLError(.badServerResponse) + } + + return AuthDataResult(user: user) + } + + public func signOut() throws { + try Auth.auth().signOut() + } + + public func delete() async throws { + guard let user = Auth.auth().currentUser else { + throw URLError(.badURL) + } + + try await user.delete() + } + +} + +// MARK: SIGN IN EMAIL + +extension AuthenticationManager: AuthWithEmailProtocol { + + @discardableResult + public func createUser(email: String, password: String) async throws -> AuthDataResult { + let authDataResult = try await Auth.auth().createUser(withEmail: email, password: password) + return AuthDataResult(user: authDataResult.user) + } + + @discardableResult + public func signInUser(email: String, password: String) async throws -> AuthDataResult { + let authDataResult = try await Auth.auth().signIn(withEmail: email, password: password) + return AuthDataResult(user: authDataResult.user) + } + + public func resetPassword(email: String) async throws { + try await Auth.auth().sendPasswordReset(withEmail: email) + } + +} + +extension AuthenticationManager { + + public func updatePassword(password: String) async throws { + guard let user = Auth.auth().currentUser else { + throw URLError(.badServerResponse) + } + + try await user.updatePassword(to: password) + } + +} + +// MARK: SIGN IN SSO + +extension AuthenticationManager: AuthWithSSOProtocol { + + @discardableResult + public func signIn(provider: AuthSSOOption) async throws -> AuthDataResult { + var authProvider: AuthProvider? + + switch provider { + case .google: + authProvider = GoogleAuthenticationProvider() + case .apple: + authProvider = AppleAuthenticationProvider() + case .anonymous: + return try await signInAnonymous() + } + + guard let authProvider else { throw URLError(.badServerResponse) } + return try await signIn(credential: authProvider.credential()) + } + + private func signIn(credential: AuthCredential) async throws -> AuthDataResult { + let authDataResult = try await Auth.auth().signIn(with: credential) + return AuthDataResult(user: authDataResult.user) + } + + @discardableResult + private func signInAnonymous() async throws -> AuthDataResult { + let authDataResult = try await Auth.auth().signInAnonymously() + return AuthDataResult(user: authDataResult.user) + } + +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift new file mode 100644 index 0000000..2b82368 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/AuthDataResult.swift @@ -0,0 +1,16 @@ +import Foundation +import FirebaseAuth + +public struct AuthDataResult { + let uid: String + let email: String? + let photoUrl: String? + let isAnonymous: Bool + + init(user: User) { + self.uid = user.uid + self.email = user.email + self.photoUrl = user.photoURL?.absoluteString + self.isAnonymous = user.isAnonymous + } +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift new file mode 100644 index 0000000..75e9d9b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/GoogleSignInResult.swift @@ -0,0 +1,8 @@ +import Foundation + +public struct GoogleSignInResult { + let idToken: String + let accessToken: String + let name: String? + let email: String? +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithAppleResult.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithAppleResult.swift new file mode 100644 index 0000000..a79737b --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Models/SignInWithAppleResult.swift @@ -0,0 +1,8 @@ +import Foundation + +public struct SignInWithAppleResult { + let token: String + let nonce: String + let name: String? + let email: String? +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift new file mode 100644 index 0000000..cb9a1b9 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithEmailProtocol.swift @@ -0,0 +1,7 @@ +import Foundation + +public protocol AuthWithEmailProtocol { + func createUser(email: String, password: String) async throws -> AuthDataResult + func signInUser(email: String, password: String) async throws -> AuthDataResult + func resetPassword(email: String) async throws +} diff --git a/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift new file mode 100644 index 0000000..6cd57b5 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/AuthModule/Sources/Protocols/AuthWithSSOProtocol.swift @@ -0,0 +1,5 @@ +import Foundation + +public protocol AuthWithSSOProtocol { + func signIn(provider: AuthSSOOption) async throws -> AuthDataResult +} diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift index 130b4c0..5daa859 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationView.swift @@ -52,7 +52,7 @@ extension AuthenticationView { Button { Task { do { - try await viewModel.signInAnonymous() + try await viewModel.signIn(provider: .anonymous) showSignInView = false } catch { debugPrint(error) @@ -68,7 +68,7 @@ extension AuthenticationView { Button { Task { do { - try await viewModel.signInGoogle() + try await viewModel.signIn(provider: .google) showSignInView = false } catch { debugPrint(error) @@ -84,7 +84,7 @@ extension AuthenticationView { Button(action: { Task { do { - try await viewModel.signInApple() + try await viewModel.signIn(provider: .apple) showSignInView = false } catch { debugPrint(error) diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift index 978f858..fd7cf29 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/AuthenticationViewModel.swift @@ -4,20 +4,14 @@ import Auth @MainActor final class AuthenticationViewModel: ObservableObject { - func signInGoogle() async throws { - let helper = SignInGoogleHelper() - let tokens = try await helper.signIn() - let _ = try await AuthenticationManager.shared.signInWithGoogle(tokens: tokens) - } + private let authManager: AuthWithSSOProtocol - func signInApple() async throws { - let helper = SignInAppleHelper() - let tokens = try await helper.startSignInWithAppleFlow() - let _ = try await AuthenticationManager.shared.signInWithApple(tokens: tokens) + init(authManager: AuthWithSSOProtocol = AuthenticationManager.shared) { + self.authManager = authManager } - func signInAnonymous() async throws { - let _ = try await AuthenticationManager.shared.signInAnonymous() + func signIn(provider: AuthSSOOption) async throws { + let _ = try await authManager.signIn(provider: provider) } } diff --git a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift index 3864ae7..53846c5 100644 --- a/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift +++ b/SwiftBuddiesIOS/Targets/LoginModule/Sources/Subviews/SignInEmail/SignInEmailViewModel.swift @@ -8,30 +8,36 @@ final class SignInEmailViewModel: ObservableObject { @Published var password = "" @Published var visible: Bool = false + private let authManager: AuthWithEmailProtocol + + init(authManager: AuthWithEmailProtocol = AuthenticationManager.shared) { + self.authManager = authManager + } + func signUp() async throws { guard !email.isEmpty, !password.isEmpty else { - print("No email or password found.") + debugPrint("No email or password found.") return } - let _ = try await AuthenticationManager.shared.createUser(email: email, password: password) + let _ = try await authManager.createUser(email: email, password: password) } func signIn() async throws { guard !email.isEmpty, !password.isEmpty else { - print("No email or password found.") + debugPrint("No email or password found.") return } - try await AuthenticationManager.shared.signInUser(email: email, password: password) + let _ = try await authManager.signInUser(email: email, password: password) } func forgotPassword() async throws { guard !email.isEmpty else { - print("No email or password found.") + debugPrint("No email found.") return } - try await AuthenticationManager.shared.resetPassword(email: email) + try await authManager.resetPassword(email: email) } } From d28fb33344f215114fec0945fc7c5b06c27486a7 Mon Sep 17 00:00:00 2001 From: Berkay Tuncel Date: Fri, 19 Apr 2024 22:58:20 +0300 Subject: [PATCH 043/126] Add GoogleService-Info.plist and assets --- .../Resources/GoogleService-Info.plist | 34 ++++++++++++++++++ .../LocalMedia.xcassets/Login/Contents.json | 6 ++++ .../LoginStrokeColor.colorset/Contents.json | 20 +++++++++++ .../SwiftBuddiesImage.imageset/Contents.json | 12 +++++++ .../swiftBuddiesImage.pdf | Bin 0 -> 94640 bytes .../Onboarding/Contents.json | 6 ++++ .../Contents.json | 0 .../Contents.json | 0 .../OnboardingBuddiesImage.png | Bin .../Contents.json | 0 .../onboardingWelcomeImage.png | Bin 11 files changed, 78 insertions(+) create mode 100644 SwiftBuddiesIOS/Resources/GoogleService-Info.plist create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/LoginStrokeColor.colorset/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/Contents.json create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/swiftBuddiesImage.pdf create mode 100644 SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Onboarding/Contents.json rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingBackround.colorset/Contents.json (100%) rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingBuddiesImage.imageset/Contents.json (100%) rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingBuddiesImage.imageset/OnboardingBuddiesImage.png (100%) rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingWelcomeImage.imageset/Contents.json (100%) rename SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/{ => Onboarding}/OnboardingWelcomeImage.imageset/onboardingWelcomeImage.png (100%) diff --git a/SwiftBuddiesIOS/Resources/GoogleService-Info.plist b/SwiftBuddiesIOS/Resources/GoogleService-Info.plist new file mode 100644 index 0000000..1f956a6 --- /dev/null +++ b/SwiftBuddiesIOS/Resources/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.1015261010783-dq3s025o2j6pcj81ped6nqpbiv5m1fvr + API_KEY + AIzaSyAUZb6hIeGqfUZ21fpMnFjOpZXv9BUUtKg + GCM_SENDER_ID + 1015261010783 + PLIST_VERSION + 1 + BUNDLE_ID + io.tuist.SwiftBuddiesIOS + PROJECT_ID + swiftbuddies-717e1 + STORAGE_BUCKET + swiftbuddies-717e1.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:1015261010783:ios:470fb09b3e679ad779b4ea + + \ No newline at end of file diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/LoginStrokeColor.colorset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/LoginStrokeColor.colorset/Contents.json new file mode 100644 index 0000000..de07e03 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/LoginStrokeColor.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x29", + "green" : "0x9A", + "red" : "0xE8" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/Contents.json b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/Contents.json new file mode 100644 index 0000000..e45e809 --- /dev/null +++ b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "swiftBuddiesImage.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/swiftBuddiesImage.pdf b/SwiftBuddiesIOS/Targets/DesignModule/Resources/Media/LocalMedia.xcassets/Login/SwiftBuddiesImage.imageset/swiftBuddiesImage.pdf new file mode 100644 index 0000000000000000000000000000000000000000..96327cb4439500ecb8f91ba7468dfd3061725dbb GIT binary patch literal 94640 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