diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000..76fdd158
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,31 @@
+---
+name: Bug Report
+about: This template is for reporting bugs you have found.
+title: "[DATE]: [BUG TITLE]"
+labels: Needs Triage
+assignees: jeremyauclert, nurito-burrito
+---
+
+## Information
+
+Device:
+
+iOS version:
+
+App Version:
+
+Environment:
+
+Frequency (How often does the bug occur?):
+
+## Expected Behaviour
+*What do you expect to happen?*
+
+## Actual Behaviour
+*What actually happens?*
+
+### Screenshots
+*Screenshot or video of the bug*
+
+## Reproduction Steps
+*Steps on how to reproduce?*
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 00000000..cea14c89
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Karhoo Developer Site
+ url: developer.karhoo.com
+ about: You may find answers to your questions here
+ - name: Karhoo website
+ url: karhoo.com
+ about: The main Karhoo Website. You can contact us from here.
diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md
new file mode 100644
index 00000000..5d257033
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/custom.md
@@ -0,0 +1,10 @@
+---
+name: Custom Template
+about: This template can be used for anything that does fit a feature request nor bug report.
+title: "[DATE]: [TITLE]"
+labels:
+assignees:
+---
+
+*Please feel free to include any information you consider important to better explain your ticket/request. Please do try to keep everything formatted*
+[Markdown Cheat Sheet](https://guides.github.com/pdfs/markdown-cheatsheet-online.pdf)
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 00000000..f58dcb66
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,19 @@
+---
+name: Feature Request
+about: This is a template for requesting a feature into the Network SDK.
+title: "[DATE]: [Feature Title]"
+labels:
+assignees:
+---
+
+## What kind of feature do you want?
+*Explain the kind and type of feature you would like to see in the Network*
+
+## How will it work?
+*Explain how you think your feature idea will work*
+
+## Why would it be a good idea to implement this?
+*Explain why you think we should go ahead and add this into to our Network SDK?*
+
+### Examples:
+*Show any examples you may have about what you are asking for here*
diff --git a/.github/delete-merged-branch-config.yml b/.github/delete-merged-branch-config.yml
new file mode 100644
index 00000000..cc1d931f
--- /dev/null
+++ b/.github/delete-merged-branch-config.yml
@@ -0,0 +1,5 @@
+exclude:
+ - develop
+ - master
+ - release
+ - release/*
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..787d4154
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,30 @@
+## JIRA
+[MOB-XXXX](https://karhoo.atlassian.net/browse/MOB-XXXX)
+
+## DESCRIPTION
+[Create a description of what you have changed in this branch]
+
+## Types of changes
+
+What types of changes does your code introduce to the project?
+_Put an `x` in the boxes that apply_
+
+- [ ] Bugfix
+- [ ] New feature
+- [ ] Tech Debt
+- [ ] Breaking change
+- [ ] Documentation Update
+- [ ] Other: *define what type of change it is*
+
+## CHECKLIST
+
+_Put an `x` in the boxes that apply. You can also fill these out after creating the PR. This is simply a reminder of what we are going to look for before merging code._
+Please review the guidelines for contributing to this repository.
+
+- [ ] All work relating to the ticket is complete (Code complete/Acceptance Criteria met)
+- [ ] Lint and unit tests pass locally (if appropriate)
+- [ ] Added tests that prove the fix is effective or that feature works (if appropriate)
+- [ ] Documentation (if appropriate)
+
+## SCREENSHOTS
+[Add screenshots if any for changes you have made to the App/UI]
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..d653ba3e
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,31 @@
+name: CI-Development
+
+on:
+ push:
+ branches-ignore: # disable workflows
+ - '**'
+ #branches:
+ #- '*'
+ #- '!master'
+
+jobs:
+ Unit_tests:
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Bundle install
+ run: bundle install
+ - name: Run Unit Tests
+ run:
+ xcodebuild -workspace 'KarhooSDK.xcworkspace' -scheme 'KarhooSDK' -destination 'platform=iOS Simulator,name=iPhone 11' test | xcpretty --test --color
+ - name: Fastlane Xcov report
+ run: fastlane ios XcovReport
+
+ Build_Project:
+ runs-on: macos-latest
+ needs: [Unit_tests]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build SDK
+ run:
+ xcodebuild -workspace 'KarhooSDK.xcworkspace' -scheme 'KarhooSDK' -destination 'generic/platform=iOS' -configuration Release build CODE_SIGNING_ALLOWED=NO | xcpretty
diff --git a/.github/workflows/ios-develop-ci.yml b/.github/workflows/ios-develop-ci.yml
new file mode 100644
index 00000000..fa27ef51
--- /dev/null
+++ b/.github/workflows/ios-develop-ci.yml
@@ -0,0 +1,28 @@
+name: Develop Branch CI
+
+on:
+ push:
+ branches:
+ - 'develop'
+
+jobs:
+ Unit_tests:
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Bundle install
+ run: bundle install
+ - name: Run Unit Tests
+ run:
+ xcodebuild -workspace 'KarhooSDK.xcworkspace' -scheme 'KarhooSDK' -destination 'platform=iOS Simulator,name=iPhone 11' test | xcpretty --test --color
+# - name: Fastlane Xcov report
+# run: fastlane ios XcovReport
+
+ Build_Project:
+ runs-on: macos-latest
+ needs: [Unit_tests]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build SDK
+ run:
+ xcodebuild -workspace 'KarhooSDK.xcworkspace' -scheme 'KarhooSDK' -destination 'generic/platform=iOS' -configuration Release build CODE_SIGNING_ALLOWED=NO | xcpretty
diff --git a/.github/workflows/ios-feature-ci.yml b/.github/workflows/ios-feature-ci.yml
new file mode 100644
index 00000000..0072396b
--- /dev/null
+++ b/.github/workflows/ios-feature-ci.yml
@@ -0,0 +1,31 @@
+name: Feature Branch CI
+
+on:
+ push:
+ branches:
+ - '*'
+ - '!develop'
+ - '!master'
+ - '!release*'
+
+jobs:
+ Unit_tests:
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Bundle install
+ run: bundle install
+ - name: Run Unit Tests
+ run:
+ xcodebuild -workspace 'KarhooSDK.xcworkspace' -scheme 'KarhooSDK' -destination 'platform=iOS Simulator,name=iPhone 11' test | xcpretty --test --color
+# - name: Fastlane Xcov report
+# run: fastlane ios XcovReport
+
+ Build_Project:
+ runs-on: macos-latest
+ needs: [Unit_tests]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build SDK
+ run:
+ xcodebuild -workspace 'KarhooSDK.xcworkspace' -scheme 'KarhooSDK' -destination 'generic/platform=iOS' -configuration Release build CODE_SIGNING_ALLOWED=NO | xcpretty
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..fbf9089d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+*.DS_Store
+KarhooSDK.xcodeproj/xcuserdata/
+KarhooSDK.xcodeproj/project.xcworkspace/xcuserdata
+KarhooSDK.xcworkspace/xcuserdata/
+KarhooSDK.framework
+KarhooSDK.framework/
+build/
+IDEWorkspaceChecks.plist
+WorkspaceSettings.xcsettings
+
+# CocoaPods
+Pods/
+
+# Fastlane
+fastlane/report.xml
+fastlane/Preview.html
+fastlane/screenshots/**/*.png
+fastlane/test_output
diff --git a/.swiftlint.yml b/.swiftlint.yml
new file mode 100644
index 00000000..0d0ccaa5
--- /dev/null
+++ b/.swiftlint.yml
@@ -0,0 +1,8 @@
+excluded: # paths to ignore during linting. Takes precedence over `included`.
+ - Pods
+disabled_rules: # rule identifiers to exclude from running
+ - identifier_name
+ - force_try
+ - redundant_string_enum_value
+ - trailing_whitespace
+ - line_length
diff --git a/Client/AppDelegate.swift b/Client/AppDelegate.swift
new file mode 100644
index 00000000..eb141e07
--- /dev/null
+++ b/Client/AppDelegate.swift
@@ -0,0 +1,42 @@
+//
+// AppDelegate.swift
+// Client
+//
+// Copyright © 2020 Flit Technologies Ltd. All rights reserved.
+//
+
+import UIKit
+import KarhooSDK
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ Karhoo.set(configuration: SDKConfig())
+ return true
+ }
+
+ // MARK: UISceneSession Lifecycle
+
+ func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
+ return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
+ }
+}
+
+struct SDKConfig: KarhooSDKConfiguration {
+
+ func environment() -> KarhooEnvironment {
+ return .sandbox
+ }
+
+ func authenticationMethod() -> AuthenticationMethod {
+ /* let tokenSettings = TokenExchangeSettings(clientId: "",
+ scope: "")*/
+
+ let guestSettings = GuestSettings(identifier: "",
+ referer: "")
+ return .guest(settings: guestSettings)
+ }
+}
diff --git a/Client/Assets.xcassets/AppIcon.appiconset/Contents.json b/Client/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..d8db8d65
--- /dev/null
+++ b/Client/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "size" : "1024x1024",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Client/Assets.xcassets/Contents.json b/Client/Assets.xcassets/Contents.json
new file mode 100644
index 00000000..da4a164c
--- /dev/null
+++ b/Client/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Client/AuthRequestsTesterViewController.swift b/Client/AuthRequestsTesterViewController.swift
new file mode 100644
index 00000000..87d25d56
--- /dev/null
+++ b/Client/AuthRequestsTesterViewController.swift
@@ -0,0 +1,103 @@
+//
+// AuthRequestsTesterViewController.swift
+// Client
+//
+// Created by Tiziano Bruni on 04/03/2020.
+// Copyright © 2020 Flit Technologies Ltd. All rights reserved.
+//
+
+import UIKit
+import KarhooSDK
+
+enum AuthRequestType: String {
+ case login = "Login"
+ case revoke = "Revoke"
+}
+
+class AuthRequestsTesterViewController: UIViewController {
+
+ var responseLabelTitle: UILabel!
+ var responseLabel: UILabel!
+ var requestType: AuthRequestType
+
+ init(requestType: AuthRequestType) {
+ self.requestType = requestType
+ super.init(nibName: nil, bundle: nil)
+ self.setUpView()
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ private func setUpView() {
+ view.backgroundColor = .white
+
+ responseLabelTitle = UILabel()
+ responseLabelTitle.translatesAutoresizingMaskIntoConstraints = false
+ responseLabelTitle.text = "Request response"
+ responseLabelTitle.textAlignment = .center
+ responseLabelTitle.font = UIFont.boldSystemFont(ofSize: 22.0)
+ view.addSubview(responseLabelTitle)
+
+ _ = [responseLabelTitle.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10.0),
+ responseLabelTitle.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ responseLabelTitle.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ responseLabelTitle.heightAnchor.constraint(equalToConstant: 25.0)].map { $0.isActive = true }
+
+ responseLabel = UILabel()
+ responseLabel.translatesAutoresizingMaskIntoConstraints = false
+ responseLabel.text = "Waiting for response..."
+ responseLabel.font = UIFont.systemFont(ofSize: 18.0)
+ responseLabel.numberOfLines = 0
+ view.addSubview(responseLabel)
+
+ _ = [responseLabel.topAnchor.constraint(equalTo: responseLabelTitle.bottomAnchor, constant: 20.0),
+ responseLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10.0),
+ responseLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10.0),
+ responseLabel.bottomAnchor.constraint(equalTo: view.bottomAnchor)].map { $0.isActive = true }
+
+ performRequest()
+ }
+
+ private func performRequest() {
+ switch requestType {
+ case .login:
+ login()
+ case .revoke:
+ revoke()
+ }
+ }
+
+ private func login() {
+ Karhoo.getAuthService().login(token: "").execute(callback: { [weak self] result in
+ if result.isSuccess() {
+ self?.responseLabel.textColor = .green
+ let output = """
+ Success!
+ Payload: \(result.successValue().debugDescription)
+ """
+ self?.responseLabel.text = output
+ } else {
+ let output = """
+ Fail!
+ Payload: \(result.errorValue().debugDescription)
+ """
+ self?.responseLabel.textColor = .red
+ self?.responseLabel.text = output
+ }
+ })
+ }
+
+ private func revoke() {
+ Karhoo.getAuthService().revoke().execute(callback: { [weak self] result in
+ if result.isSuccess() {
+ self?.responseLabel.textColor = .green
+ self?.responseLabel.text = "Success: \(result.isSuccess())"
+ } else {
+ self?.responseLabel.textColor = .red
+ self?.responseLabel.text = "Failed\nError: \(String(describing: result.errorValue().debugDescription))"
+ }
+ })
+ }
+}
diff --git a/Client/Base.lproj/LaunchScreen.storyboard b/Client/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 00000000..865e9329
--- /dev/null
+++ b/Client/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Client/Info.plist b/Client/Info.plist
new file mode 100644
index 00000000..cb967d41
--- /dev/null
+++ b/Client/Info.plist
@@ -0,0 +1,58 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneConfigurationName
+ Default Configuration
+ UISceneDelegateClassName
+ $(PRODUCT_MODULE_NAME).SceneDelegate
+
+
+
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/Client/SceneDelegate.swift b/Client/SceneDelegate.swift
new file mode 100644
index 00000000..9d5d611e
--- /dev/null
+++ b/Client/SceneDelegate.swift
@@ -0,0 +1,54 @@
+//
+// SceneDelegate.swift
+// Client
+//
+// Copyright © 2020 Flit Technologies Ltd. All rights reserved.
+//
+
+import UIKit
+
+class SceneDelegate: UIResponder, UIWindowSceneDelegate {
+
+ var window: UIWindow?
+
+ @available(iOS 13.0, *)
+ func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
+ // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
+ // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
+ // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
+ guard let windowScene = (scene as? UIWindowScene) else { return }
+
+ window = UIWindow(frame: windowScene.coordinateSpace.bounds)
+ window?.windowScene = windowScene
+ window?.rootViewController = UINavigationController(rootViewController: ViewController())
+ window?.makeKeyAndVisible()
+ }
+
+ func sceneDidDisconnect(_ scene: UIScene) {
+ // Called as the scene is being released by the system.
+ // This occurs shortly after the scene enters the background, or when its session is discarded.
+ // Release any resources associated with this scene that can be re-created the next time the scene connects.
+ // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
+ }
+
+ func sceneDidBecomeActive(_ scene: UIScene) {
+ // Called when the scene has moved from an inactive state to an active state.
+ // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+ }
+
+ func sceneWillResignActive(_ scene: UIScene) {
+ // Called when the scene will move from an active state to an inactive state.
+ // This may occur due to temporary interruptions (ex. an incoming phone call).
+ }
+
+ func sceneWillEnterForeground(_ scene: UIScene) {
+ // Called as the scene transitions from the background to the foreground.
+ // Use this method to undo the changes made on entering the background.
+ }
+
+ func sceneDidEnterBackground(_ scene: UIScene) {
+ // Called as the scene transitions from the foreground to the background.
+ // Use this method to save data, release shared resources, and store enough scene-specific state information
+ // to restore the scene back to its current state.
+ }
+}
diff --git a/Client/ViewController.swift b/Client/ViewController.swift
new file mode 100644
index 00000000..e9a62251
--- /dev/null
+++ b/Client/ViewController.swift
@@ -0,0 +1,121 @@
+//
+// ViewController.swift
+// Client
+//
+// Copyright © 2020 Flit Technologies Ltd. All rights reserved.
+//
+
+import UIKit
+import KarhooSDK
+
+class ViewController: UIViewController {
+
+ var table: UITableView!
+ let endpoints = [
+ ["title": "Login", "type": "Token Exchange"],
+ ["title": "Revoke", "type": "Token Exchange"]
+ ]
+
+ var data = [TableSection: [[String: String]]]()
+
+ let SectionHeaderHeight: CGFloat = 25
+
+ enum TableSection: Int {
+ case tokenExchange = 0
+ }
+
+ init() {
+ super.init(nibName: nil, bundle: nil)
+ self.setUpView()
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ private func setUpView() {
+
+ view.backgroundColor = .white
+ title = "Endpoints"
+
+ sortData()
+
+ table = UITableView()
+ table.accessibilityIdentifier = "tableView"
+ table.translatesAutoresizingMaskIntoConstraints = false
+ table.dataSource = self
+ table.delegate = self
+ table.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
+ table.tableFooterView = UIView()
+
+ view.addSubview(table)
+ _ = [table.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
+ table.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ table.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ table.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)].map { $0.isActive = true }
+ }
+
+ private func sortData() {
+ data[.tokenExchange] = endpoints.filter({ $0["type"] == "Token Exchange"})
+ }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ }
+}
+
+extension ViewController: UITableViewDataSource {
+
+ func numberOfSections(in tableView: UITableView) -> Int {
+ return 1
+ }
+
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return endpoints.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
+ cell.accessoryType = .disclosureIndicator
+ cell.selectionStyle = .none
+
+ if let tableSection = TableSection(rawValue: indexPath.section), let endpoints = data[tableSection]?[indexPath.row] {
+ cell.textLabel?.text = endpoints["title"]
+ }
+
+ return cell
+ }
+}
+
+extension ViewController: UITableViewDelegate {
+
+ func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
+ return SectionHeaderHeight
+ }
+
+ func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
+
+ let view = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.width, height: SectionHeaderHeight))
+ view.backgroundColor = .lightGray
+
+ let label = UILabel(frame: CGRect(x: 15, y: 0, width: tableView.bounds.width - 30, height: SectionHeaderHeight))
+ label.font = UIFont.boldSystemFont(ofSize: 15)
+ label.textColor = UIColor.black
+
+ if let tableSection = TableSection(rawValue: section) {
+ switch tableSection {
+ case .tokenExchange:
+ label.text = "Token Exchange"
+ }
+ }
+ view.addSubview(label)
+
+ return view
+ }
+
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ guard let title = tableView.cellForRow(at: indexPath)?.textLabel?.text else { return }
+ let testViewController = AuthRequestsTesterViewController(requestType: AuthRequestType(rawValue: title)!)
+ navigationController?.pushViewController(testViewController, animated: true)
+ }
+}
diff --git a/Dangerfile b/Dangerfile
new file mode 100644
index 00000000..3e693d64
--- /dev/null
+++ b/Dangerfile
@@ -0,0 +1,2 @@
+junit.parse "fastlane/test_output/NetworkSDKTests.xml"
+junit.report
diff --git a/DangerfilePRMetaValidation b/DangerfilePRMetaValidation
new file mode 100644
index 00000000..f4ccfcc5
--- /dev/null
+++ b/DangerfilePRMetaValidation
@@ -0,0 +1,8 @@
+
+# Make it more obvious that a PR is a work in progress and shouldn't be merged yet
+warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
+
+# Warn when there is a big PR
+warn("Big PR") if git.lines_of_code > 500
+
+warn "PR title does not include a ticket number (IOS-XXX)" if !github.pr_title.include? "IOS-"
\ No newline at end of file
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 00000000..a71d5640
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,14 @@
+source "https://rubygems.org"
+
+gem 'fastlane'
+gem 'cocoapods'
+gem 'slather'
+gem 'xcov'
+
+git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
+
+gem 'danger'
+gem 'danger-xcov'
+gem 'danger-swiftlint'
+gem 'danger-xcode_summary'
+gem 'danger-junit'
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 00000000..521fa874
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,296 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.2)
+ activesupport (4.2.11.1)
+ i18n (~> 0.7)
+ minitest (~> 5.1)
+ thread_safe (~> 0.3, >= 0.3.4)
+ tzinfo (~> 1.1)
+ addressable (2.7.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ algoliasearch (1.27.1)
+ httpclient (~> 2.8, >= 2.8.3)
+ json (>= 1.5.1)
+ atomos (0.1.3)
+ babosa (1.0.3)
+ claide (1.0.3)
+ claide-plugins (0.9.2)
+ cork
+ nap
+ open4 (~> 1.3)
+ clamp (1.3.1)
+ cocoapods (1.8.4)
+ activesupport (>= 4.0.2, < 5)
+ claide (>= 1.0.2, < 2.0)
+ cocoapods-core (= 1.8.4)
+ cocoapods-deintegrate (>= 1.0.3, < 2.0)
+ cocoapods-downloader (>= 1.2.2, < 2.0)
+ cocoapods-plugins (>= 1.0.0, < 2.0)
+ cocoapods-search (>= 1.0.0, < 2.0)
+ cocoapods-stats (>= 1.0.0, < 2.0)
+ cocoapods-trunk (>= 1.4.0, < 2.0)
+ cocoapods-try (>= 1.1.0, < 2.0)
+ colored2 (~> 3.1)
+ escape (~> 0.0.4)
+ fourflusher (>= 2.3.0, < 3.0)
+ gh_inspector (~> 1.0)
+ molinillo (~> 0.6.6)
+ nap (~> 1.0)
+ ruby-macho (~> 1.4)
+ xcodeproj (>= 1.11.1, < 2.0)
+ cocoapods-core (1.8.4)
+ activesupport (>= 4.0.2, < 6)
+ algoliasearch (~> 1.0)
+ concurrent-ruby (~> 1.1)
+ fuzzy_match (~> 2.0.4)
+ nap (~> 1.0)
+ cocoapods-deintegrate (1.0.4)
+ cocoapods-downloader (1.3.0)
+ cocoapods-plugins (1.0.0)
+ nap
+ cocoapods-search (1.0.0)
+ cocoapods-stats (1.1.0)
+ cocoapods-trunk (1.4.1)
+ nap (>= 0.8, < 2.0)
+ netrc (~> 0.11)
+ cocoapods-try (1.1.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander-fastlane (4.4.6)
+ highline (~> 1.7.2)
+ concurrent-ruby (1.1.5)
+ cork (0.3.0)
+ colored2 (~> 3.1)
+ danger (6.2.0)
+ claide (~> 1.0)
+ claide-plugins (>= 0.9.2)
+ colored2 (~> 3.1)
+ cork (~> 0.1)
+ faraday (~> 0.9)
+ faraday-http-cache (~> 2.0)
+ git (~> 1.5)
+ kramdown (~> 2.0)
+ kramdown-parser-gfm (~> 1.0)
+ no_proxy_fix
+ octokit (~> 4.7)
+ terminal-table (~> 1)
+ danger-junit (1.0.0)
+ danger (> 2.0)
+ ox (~> 2.0)
+ danger-plugin-api (1.0.0)
+ danger (> 2.0)
+ danger-swiftlint (0.24.0)
+ danger
+ rake (> 10)
+ thor (~> 0.19)
+ danger-xcode_summary (0.5.1)
+ danger-plugin-api (~> 1.0)
+ danger-xcov (0.4.1)
+ danger (>= 2.1)
+ xcov (>= 1.1.2)
+ declarative (0.0.10)
+ declarative-option (0.1.0)
+ digest-crc (0.4.1)
+ domain_name (0.5.20190701)
+ unf (>= 0.0.5, < 1.0.0)
+ dotenv (2.7.5)
+ emoji_regex (1.0.1)
+ escape (0.0.4)
+ excon (0.72.0)
+ faraday (0.17.3)
+ multipart-post (>= 1.2, < 3)
+ faraday-cookie_jar (0.0.6)
+ faraday (>= 0.7.4)
+ http-cookie (~> 1.0.0)
+ faraday-http-cache (2.0.0)
+ faraday (~> 0.8)
+ faraday_middleware (0.13.1)
+ faraday (>= 0.7.4, < 1.0)
+ fastimage (2.1.7)
+ fastlane (2.141.0)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.3, < 3.0.0)
+ babosa (>= 1.0.2, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored
+ commander-fastlane (>= 4.4.6, < 5.0.0)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 2.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 0.17)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 0.13.1)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-api-client (>= 0.29.2, < 0.37.0)
+ google-cloud-storage (>= 1.15.0, < 2.0.0)
+ highline (>= 1.7.2, < 2.0.0)
+ json (< 3.0.0)
+ jwt (~> 2.1.0)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multi_xml (~> 0.5)
+ multipart-post (~> 2.0.0)
+ plist (>= 3.1.0, < 4.0.0)
+ public_suffix (~> 2.0.0)
+ rubyzip (>= 1.3.0, < 2.0.0)
+ security (= 0.1.3)
+ simctl (~> 1.6.3)
+ slack-notifier (>= 2.0.0, < 3.0.0)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (>= 1.4.5, < 2.0.0)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3)
+ fourflusher (2.3.1)
+ fuzzy_match (2.0.4)
+ gh_inspector (1.1.3)
+ git (1.6.0)
+ rchardet (~> 1.8)
+ google-api-client (0.36.4)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (~> 0.9)
+ httpclient (>= 2.8.1, < 3.0)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.0)
+ signet (~> 0.12)
+ google-cloud-core (1.5.0)
+ google-cloud-env (~> 1.0)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.3.0)
+ faraday (~> 0.11)
+ google-cloud-errors (1.0.0)
+ google-cloud-storage (1.25.1)
+ addressable (~> 2.5)
+ digest-crc (~> 0.4)
+ google-api-client (~> 0.33)
+ google-cloud-core (~> 1.2)
+ googleauth (~> 0.9)
+ mini_mime (~> 1.0)
+ googleauth (0.10.0)
+ faraday (~> 0.12)
+ jwt (>= 1.4, < 3.0)
+ memoist (~> 0.16)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (~> 0.12)
+ highline (1.7.10)
+ http-cookie (1.0.3)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ i18n (0.9.5)
+ concurrent-ruby (~> 1.0)
+ json (2.3.0)
+ jwt (2.1.0)
+ kramdown (2.1.0)
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ memoist (0.16.2)
+ mini_magick (4.10.1)
+ mini_mime (1.0.2)
+ mini_portile2 (2.4.0)
+ minitest (5.14.0)
+ molinillo (0.6.6)
+ multi_json (1.14.1)
+ multi_xml (0.6.0)
+ multipart-post (2.0.0)
+ nanaimo (0.2.6)
+ nap (1.1.0)
+ naturally (2.2.0)
+ netrc (0.11.0)
+ no_proxy_fix (0.1.2)
+ nokogiri (1.10.7)
+ mini_portile2 (~> 2.4.0)
+ octokit (4.15.0)
+ faraday (>= 0.9)
+ sawyer (~> 0.8.0, >= 0.5.3)
+ open4 (1.3.4)
+ os (1.0.1)
+ ox (2.13.1)
+ plist (3.5.0)
+ public_suffix (2.0.5)
+ rake (13.0.1)
+ rchardet (1.8.0)
+ representable (3.0.4)
+ declarative (< 0.1.0)
+ declarative-option (< 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rouge (2.0.7)
+ ruby-macho (1.4.0)
+ rubyzip (1.3.0)
+ sawyer (0.8.2)
+ addressable (>= 2.3.5)
+ faraday (> 0.8, < 2.0)
+ security (0.1.3)
+ signet (0.12.0)
+ addressable (~> 2.3)
+ faraday (~> 0.9)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.7)
+ CFPropertyList
+ naturally
+ slack-notifier (2.3.2)
+ slather (2.4.7)
+ CFPropertyList (>= 2.2, < 4)
+ activesupport (>= 4.0.2, < 5)
+ clamp (~> 1.3)
+ nokogiri (~> 1.8)
+ xcodeproj (~> 1.7)
+ terminal-notifier (2.0.0)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ thor (0.20.3)
+ thread_safe (0.3.6)
+ tty-cursor (0.7.1)
+ tty-screen (0.7.1)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ tzinfo (1.2.6)
+ thread_safe (~> 0.1)
+ uber (0.1.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.7.6)
+ unicode-display_width (1.6.1)
+ word_wrap (1.0.0)
+ xcodeproj (1.14.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.2.6)
+ xcov (1.7.2)
+ fastlane (>= 2.141.0, < 3.0.0)
+ multipart-post
+ slack-notifier
+ terminal-table
+ xcodeproj
+ xcresult (~> 0.2.0)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.0)
+ xcpretty (~> 0.2, >= 0.0.7)
+ xcresult (0.2.0)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ cocoapods
+ danger
+ danger-junit
+ danger-swiftlint
+ danger-xcode_summary
+ danger-xcov
+ fastlane
+ slather
+ xcov
+
+BUNDLED WITH
+ 2.0.2
diff --git a/KarhooSDK.podspec b/KarhooSDK.podspec
new file mode 100644
index 00000000..5907ae5f
--- /dev/null
+++ b/KarhooSDK.podspec
@@ -0,0 +1,18 @@
+Pod::Spec.new do |s|
+
+ s.name = "KarhooSDK"
+ s.version = "1.0.1"
+ s.summary = "Karhoo Network SDK"
+ s.homepage = "https://docs.stg.karhoo.net/v1/mobilesdk/network"
+ s.license = 'MIT'
+ s.author = { "Karhoo" => "ios@karhoo.com" }
+
+ s.source = { :git => "git@github.com:karhoo/Karhoo-iOS-SDK.git", :tag => s.version }
+ s.source_files = 'KarhooSDK/**/*.swift'
+ s.platform = :ios, '10.0'
+ s.requires_arc = true
+
+ s.dependency 'ReachabilitySwift', '5.0.0'
+ s.dependency 'KeychainSwift', '12.0.0'
+
+end
diff --git a/KarhooSDK.xcodeproj/project.pbxproj b/KarhooSDK.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..0eba6130
--- /dev/null
+++ b/KarhooSDK.xcodeproj/project.pbxproj
@@ -0,0 +1,3865 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 0900D34920D2B17B0082D1E8 /* RefreshTokenInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0900D34820D2B17B0082D1E8 /* RefreshTokenInteractor.swift */; };
+ 0900D34B20D2B1920082D1E8 /* RefreshTokenError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0900D34A20D2B1920082D1E8 /* RefreshTokenError.swift */; };
+ 090670E820A4787600CAFA86 /* KarhooPaymentSDKTokenInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A3313412237721C4C7B5 /* KarhooPaymentSDKTokenInteractorSpec.swift */; };
+ 0907B98A20D7B794008915B1 /* Reachability.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0907B98920D7B794008915B1 /* Reachability.framework */; };
+ 0907B98C20D7B901008915B1 /* CancelTripInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0907B98B20D7B901008915B1 /* CancelTripInteractor.swift */; };
+ 0907B98F20D7B964008915B1 /* KarhooCancelTripInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0907B98E20D7B964008915B1 /* KarhooCancelTripInteractor.swift */; };
+ 0907B99220D7B98A008915B1 /* KarhooCancelTripInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0907B99120D7B98A008915B1 /* KarhooCancelTripInteractorSpec.swift */; };
+ 090881DF20E65F7D00EE2C67 /* KarhooPlaceSearchInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090881DE20E65F7D00EE2C67 /* KarhooPlaceSearchInteractorSpec.swift */; };
+ 090881E120E65FAD00EE2C67 /* MockPlaceSearchInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090881E020E65FAD00EE2C67 /* MockPlaceSearchInteractor.swift */; };
+ 090881E320E662D200EE2C67 /* KarhooLocationInfoInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090881E220E662D200EE2C67 /* KarhooLocationInfoInteractor.swift */; };
+ 090881E520E663E600EE2C67 /* KarhooLocationInfoInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090881E420E663E500EE2C67 /* KarhooLocationInfoInteractorSpec.swift */; };
+ 090E8226235DAD5900B447A2 /* KarhooEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090E8225235DAD5900B447A2 /* KarhooEnvironment.swift */; };
+ 0916BB67235DEA580064A5D6 /* MockSDKConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09430E4C22410037009846A6 /* MockSDKConfig.swift */; };
+ 091A2D0E207D23F600F06E28 /* LocationInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091A2D0D207D23F600F06E28 /* LocationInfo.swift */; };
+ 091BE6EA2085192800BA34D0 /* PlaceSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091BE6E92085192800BA34D0 /* PlaceSearch.swift */; };
+ 091BE6EC2086562900BA34D0 /* Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091BE6EB2086562900BA34D0 /* Position.swift */; };
+ 091CAE3E20D7A81F005F1DB6 /* MockURLSessionSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091CAE3D20D7A81F005F1DB6 /* MockURLSessionSender.swift */; };
+ 092F27C722B1353D00AF8E0E /* PickUpType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F27C622B1353D00AF8E0E /* PickUpType.swift */; };
+ 09430E4B2240054A009846A6 /* IntegrationTestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09430E4A2240054A009846A6 /* IntegrationTestSetup.swift */; };
+ 09430E4D22410037009846A6 /* MockSDKConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09430E4C22410037009846A6 /* MockSDKConfig.swift */; };
+ 09430E4F224109D6009846A6 /* UnitTestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09430E4E224109D6009846A6 /* UnitTestSetup.swift */; };
+ 0947FD3B2121D51900E8BE4A /* KarhooErrorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0947FD3A2121D51900E8BE4A /* KarhooErrorType.swift */; };
+ 094B449E2285AC66002D2506 /* PaymentSDKTokenPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B449D2285AC65002D2506 /* PaymentSDKTokenPayload.swift */; };
+ 094B44B42285B8DE002D2506 /* AddPaymentDetails.json in Resources */ = {isa = PBXBuildFile; fileRef = 094B44B32285B8DE002D2506 /* AddPaymentDetails.json */; };
+ 094C1F7F20B2C956001FFE7F /* MockNetworkDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094C1F7E20B2C956001FFE7F /* MockNetworkDateFormatter.swift */; };
+ 095A03B923339721007D805E /* ConfigService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03B823339721007D805E /* ConfigService.swift */; };
+ 095A03BB2333ADC2007D805E /* KarhooConfigService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03BA2333ADC2007D805E /* KarhooConfigService.swift */; };
+ 095A03BE2333AF4A007D805E /* UIConfigInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03BD2333AF4A007D805E /* UIConfigInteractor.swift */; };
+ 095A03C02333AF64007D805E /* KarhooUIConfigInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03BF2333AF64007D805E /* KarhooUIConfigInteractor.swift */; };
+ 095A03C22333AF98007D805E /* UIConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03C12333AF98007D805E /* UIConfig.swift */; };
+ 095A03C42333AFED007D805E /* UIConfigRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03C32333AFED007D805E /* UIConfigRequest.swift */; };
+ 095A03C72333B115007D805E /* UIConfigProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03C62333B115007D805E /* UIConfigProvider.swift */; };
+ 095A03CB2333B3E6007D805E /* KarhooConfigServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03CA2333B3E6007D805E /* KarhooConfigServiceSpec.swift */; };
+ 095A03CD2333B3F8007D805E /* KarhooUIConfigInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03CC2333B3F8007D805E /* KarhooUIConfigInteractorSpec.swift */; };
+ 095A03D02333BABD007D805E /* KarhooUIConfigProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03CF2333BABD007D805E /* KarhooUIConfigProvider.swift */; };
+ 095A03D22333C119007D805E /* KarhooUIConfigProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03D12333C119007D805E /* KarhooUIConfigProviderSpec.swift */; };
+ 095A03D52333C235007D805E /* MockUIConfigProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03D42333C235007D805E /* MockUIConfigProvider.swift */; };
+ 095A03DE2333D926007D805E /* UIConfigMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03DD2333D926007D805E /* UIConfigMethodSpec.swift */; };
+ 095A03E02333DFCB007D805E /* MockUIConfigInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03DF2333DFCB007D805E /* MockUIConfigInteractor.swift */; };
+ 095CEC0620F7573700C8AC4B /* TripCancellation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095CEC0520F7573700C8AC4B /* TripCancellation.swift */; };
+ 095E406D20B32DAE008EAF0F /* NetworkDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095E406C20B32DAE008EAF0F /* NetworkDateFormatter.swift */; };
+ 096A2C2D208F676000C7B7D0 /* PositionExtSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 096A2C2C208F676000C7B7D0 /* PositionExtSpec.swift */; };
+ 096B31BC20B702AE002B41E9 /* MockBookingInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 096B31BB20B702AE002B41E9 /* MockBookingInteractor.swift */; };
+ 096B31C020B702E8002B41E9 /* MockTripSearchInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 096B31BF20B702E8002B41E9 /* MockTripSearchInteractor.swift */; };
+ 0970BA6F21136F870015A170 /* Executable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA6A21136F870015A170 /* Executable.swift */; };
+ 0970BA7021136F870015A170 /* KarhooPollableExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA6B21136F870015A170 /* KarhooPollableExecutor.swift */; };
+ 0970BA7121136F870015A170 /* KarhooPollCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA6C21136F870015A170 /* KarhooPollCall.swift */; };
+ 0970BA7221136F870015A170 /* KarhooCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA6D21136F870015A170 /* KarhooCall.swift */; };
+ 0970BA7321136F870015A170 /* KarhooObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA6E21136F870015A170 /* KarhooObservable.swift */; };
+ 0970BA78211371600015A170 /* KarhooDriverTrackingInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA77211371600015A170 /* KarhooDriverTrackingInteractor.swift */; };
+ 0970BA7B21145E550015A170 /* KarhooCallSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA7A21145E550015A170 /* KarhooCallSpec.swift */; };
+ 0970BA7E211464C40015A170 /* MockExecutable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA7D211464C40015A170 /* MockExecutable.swift */; };
+ 0970BA802114671A0015A170 /* KarhooObservableSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA7F2114671A0015A170 /* KarhooObservableSpec.swift */; };
+ 0970BA822114685B0015A170 /* MockKarhooCodableModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA812114685B0015A170 /* MockKarhooCodableModel.swift */; };
+ 0970BA8821146DF80015A170 /* MockPollExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA8721146DF70015A170 /* MockPollExecutor.swift */; };
+ 0970BA8A2114970A0015A170 /* KarhooPollCallSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA892114970A0015A170 /* KarhooPollCallSpec.swift */; };
+ 0970BA8C21149FC60015A170 /* KarhooPollableExecutorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0970BA8B21149FC60015A170 /* KarhooPollableExecutorSpec.swift */; };
+ 097BF2B72358710400BBE418 /* KarhooSDKConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097BF2B62358710400BBE418 /* KarhooSDKConfiguration.swift */; };
+ 097D472321511208008D8D94 /* TripStatusMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097D472221511208008D8D94 /* TripStatusMethodSpec.swift */; };
+ 097D4725215128E0008D8D94 /* TripStatus.json in Resources */ = {isa = PBXBuildFile; fileRef = 097D4724215128E0008D8D94 /* TripStatus.json */; };
+ 097D472721512D5E008D8D94 /* TripSearchMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097D472621512D5E008D8D94 /* TripSearchMethodSpec.swift */; };
+ 09811A1820D7BB8C001DB06F /* CancelTripRequestPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09811A1720D7BB8C001DB06F /* CancelTripRequestPayload.swift */; };
+ 09811A1A20D7BD77001DB06F /* CancelReason.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09811A1920D7BD77001DB06F /* CancelReason.swift */; };
+ 09811A1E20D7C12D001DB06F /* MockCancelTripInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09811A1D20D7C12D001DB06F /* MockCancelTripInteractor.swift */; };
+ 0981F6C720CEC27A00BF7FB5 /* MockRequestSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0981F6C620CEC27A00BF7FB5 /* MockRequestSender.swift */; };
+ 0981F6C920CEC3DE00BF7FB5 /* KarhooLoginInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0981F6C820CEC3DE00BF7FB5 /* KarhooLoginInteractor.swift */; };
+ 0981F6CB20CEE1AD00BF7FB5 /* KarhooLoginInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0981F6CA20CEE1AD00BF7FB5 /* KarhooLoginInteractorSpec.swift */; };
+ 0981F6CD20CEEB1000BF7FB5 /* AuthTokenMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0981F6CC20CEEB1000BF7FB5 /* AuthTokenMock.swift */; };
+ 0981F6CF20CFDA9B00BF7FB5 /* KarhooRequestSenderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0981F6CE20CFDA9B00BF7FB5 /* KarhooRequestSenderSpec.swift */; };
+ 0981F6D520CFE1B300BF7FB5 /* MockLoginInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0981F6D420CFE1B300BF7FB5 /* MockLoginInteractor.swift */; };
+ 09820E6A20D7E5E800782530 /* KarhooRegisterInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09820E6920D7E5E800782530 /* KarhooRegisterInteractor.swift */; };
+ 09820E7020D7F07800782530 /* KarhooRegisterInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09820E6F20D7F07800782530 /* KarhooRegisterInteractorSpec.swift */; };
+ 09820E7220D7F60100782530 /* UserRegistrationMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09820E7120D7F60100782530 /* UserRegistrationMock.swift */; };
+ 09820E7420D809E000782530 /* MockRegisterInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09820E7320D809E000782530 /* MockRegisterInteractor.swift */; };
+ 09820E7820D8172D00782530 /* MockLogoutInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09820E7720D8172D00782530 /* MockLogoutInteractor.swift */; };
+ 098C91F92147CDC500F02DE3 /* GeneralErrorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098C91F82147CDC500F02DE3 /* GeneralErrorSpec.swift */; };
+ 098C91FB2147FF9900F02DE3 /* RawKarhooErrorFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098C91FA2147FF9900F02DE3 /* RawKarhooErrorFactory.swift */; };
+ 098D524F23FB14FA00059086 /* AuthLoginMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098D524E23FB14FA00059086 /* AuthLoginMethodSpec.swift */; };
+ 098D525223FB157B00059086 /* KarhooAuthRevokeInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098D525123FB157B00059086 /* KarhooAuthRevokeInteractorSpec.swift */; };
+ 099202A720DBB1D20009C845 /* Organisation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099202A620DBB1D20009C845 /* Organisation.swift */; };
+ 09928D2520EFAABA00B9F462 /* CategoryQuoteMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D1820EFAABA00B9F462 /* CategoryQuoteMapper.swift */; };
+ 09928D2920EFAABA00B9F462 /* QuoteService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D1D20EFAABA00B9F462 /* QuoteService.swift */; };
+ 09928D2A20EFAABA00B9F462 /* KarhooQuoteService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D1E20EFAABA00B9F462 /* KarhooQuoteService.swift */; };
+ 09928D2B20EFAABA00B9F462 /* KarhooQuoteInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D2020EFAABA00B9F462 /* KarhooQuoteInteractor.swift */; };
+ 09928D2C20EFAABA00B9F462 /* QuoteInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D2120EFAABA00B9F462 /* QuoteInteractor.swift */; };
+ 09928D3720EFAAEE00B9F462 /* KarhooQuoteServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D3220EFAAEE00B9F462 /* KarhooQuoteServiceSpec.swift */; };
+ 09928D3820EFAAEE00B9F462 /* KarhooQuoteInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D3420EFAAEE00B9F462 /* KarhooQuoteInteractorSpec.swift */; };
+ 09928D4520EFAB1300B9F462 /* MockQuoteInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D4120EFAB1300B9F462 /* MockQuoteInteractor.swift */; };
+ 09928D4720EFAB3000B9F462 /* QuoteSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D4620EFAB3000B9F462 /* QuoteSearch.swift */; };
+ 09928D4920EFAB9300B9F462 /* Quotes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09928D4820EFAB9300B9F462 /* Quotes.swift */; };
+ 099613712408359A00C8C88E /* RevokeMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099613702408359A00C8C88E /* RevokeMethodSpec.swift */; };
+ 0996137324083B6F00C8C88E /* AccessTokenProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0996137224083B6E00C8C88E /* AccessTokenProvider.swift */; };
+ 099AF2F920F8BA0000A2AA57 /* TripState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099AF2F820F8BA0000A2AA57 /* TripState.swift */; };
+ 099AF2FB20F8BDF000A2AA57 /* TripInfoMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099AF2FA20F8BDF000A2AA57 /* TripInfoMock.swift */; };
+ 099DFC6C223BEDF800401542 /* AddPaymentDetailsPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099DFC6B223BEDF800401542 /* AddPaymentDetailsPayload.swift */; };
+ 09A18BD921185080009F927B /* KarhooDriverTrackingInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A18BD821185080009F927B /* KarhooDriverTrackingInteractorSpec.swift */; };
+ 09A56DFC20922D5C00891F02 /* MeetingPointType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A56DFB20922D5C00891F02 /* MeetingPointType.swift */; };
+ 09A56E002097162C00891F02 /* LocationDetailsExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A56DFF2097162C00891F02 /* LocationDetailsExt.swift */; };
+ 09A9B28E2405901900823FB0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A9B28D2405901900823FB0 /* AppDelegate.swift */; };
+ 09A9B2902405901900823FB0 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A9B28F2405901900823FB0 /* SceneDelegate.swift */; };
+ 09A9B2922405901900823FB0 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A9B2912405901900823FB0 /* ViewController.swift */; };
+ 09A9B2972405901B00823FB0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 09A9B2962405901B00823FB0 /* Assets.xcassets */; };
+ 09A9B29A2405901B00823FB0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 09A9B2982405901B00823FB0 /* LaunchScreen.storyboard */; };
+ 09A9B2A42405916400823FB0 /* KarhooSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4387A6411E3BAF6D0024FD55 /* KarhooSDK.framework */; };
+ 09ACCE50207BBB5E0057B0CC /* QuoteListIdRequestPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09ACCE4F207BBB5E0057B0CC /* QuoteListIdRequestPayload.swift */; };
+ 09AF9AA920D174150046D725 /* RefreshToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09AF9AA820D174150046D725 /* RefreshToken.swift */; };
+ 09AF9AAB20D1751D0046D725 /* RefreshTokenRequestPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09AF9AAA20D1751D0046D725 /* RefreshTokenRequestPayload.swift */; };
+ 09AF9AAD20D17B7D0046D725 /* RefreshTokenMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09AF9AAC20D17B7D0046D725 /* RefreshTokenMock.swift */; };
+ 09B204B121412C3200063632 /* KarhooSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4387A6411E3BAF6D0024FD55 /* KarhooSDK.framework */; };
+ 09B204BC2141366C00063632 /* InvalidData.json in Resources */ = {isa = PBXBuildFile; fileRef = 09B204BB2141366C00063632 /* InvalidData.json */; };
+ 09BDE053212F128800798330 /* MockLocationInfoInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDE052212F128700798330 /* MockLocationInfoInteractor.swift */; };
+ 09BDE055212F147600798330 /* MockReverseGeocodeInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDE054212F147600798330 /* MockReverseGeocodeInteractor.swift */; };
+ 09CA785820EE5ABD00D3BB6F /* Fare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CA785720EE5ABC00D3BB6F /* Fare.swift */; };
+ 09CE9A5020FCE87800874092 /* TripBooking.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE9A4F20FCE87800874092 /* TripBooking.swift */; };
+ 09CE9A5420FE1F2E00874092 /* TripSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE9A5320FE1F2E00874092 /* TripSearch.swift */; };
+ 09CE9A5620FE530700874092 /* TripType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE9A5520FE530700874092 /* TripType.swift */; };
+ 09D0757520D826A700F75E32 /* KarhooLogoutInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D0757420D826A700F75E32 /* KarhooLogoutInteractor.swift */; };
+ 09D293C222C530170051C455 /* QuoteSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D293C122C530170051C455 /* QuoteSource.swift */; };
+ 09EE81E72152585D004B2B09 /* TripSearch.json in Resources */ = {isa = PBXBuildFile; fileRef = 09EE81E62152585D004B2B09 /* TripSearch.json */; };
+ 09EE81EA2152617B004B2B09 /* QuoteSearchMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EE81E92152617B004B2B09 /* QuoteSearchMethodSpec.swift */; };
+ 09EE81EB21526350004B2B09 /* LocationInfoMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2856F120E3B1DC009B9464 /* LocationInfoMock.swift */; };
+ 09EE81F021528791004B2B09 /* QuoteListId.json in Resources */ = {isa = PBXBuildFile; fileRef = 09EE81ED21528791004B2B09 /* QuoteListId.json */; };
+ 09EE81F121528791004B2B09 /* Availability.json in Resources */ = {isa = PBXBuildFile; fileRef = 09EE81EE21528791004B2B09 /* Availability.json */; };
+ 09EE81F221528791004B2B09 /* Quotes.json in Resources */ = {isa = PBXBuildFile; fileRef = 09EE81EF21528791004B2B09 /* Quotes.json */; };
+ 09F79E34223952F900D5B0B8 /* Nonce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E33223952F900D5B0B8 /* Nonce.swift */; };
+ 09F79E362239546E00D5B0B8 /* GetNonceInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E352239546E00D5B0B8 /* GetNonceInteractor.swift */; };
+ 09F79E382239547A00D5B0B8 /* KarhooGetNonceInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E372239547A00D5B0B8 /* KarhooGetNonceInteractor.swift */; };
+ 09F79E3A223955FF00D5B0B8 /* NonceRequestPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E39223955FF00D5B0B8 /* NonceRequestPayload.swift */; };
+ 09F79E3C2239564600D5B0B8 /* Payer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E3B2239564600D5B0B8 /* Payer.swift */; };
+ 09F79E3F2239723200D5B0B8 /* KarhooGetNonceInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E3E2239723200D5B0B8 /* KarhooGetNonceInteractorSpec.swift */; };
+ 09F79E41223A63DA00D5B0B8 /* NonceRequestPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E40223A63DA00D5B0B8 /* NonceRequestPayload.swift */; };
+ 09F79E44223A99E700D5B0B8 /* GetNonceMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E43223A99E700D5B0B8 /* GetNonceMethodSpec.swift */; };
+ 09F79E47223AAA6600D5B0B8 /* MockGetNonceInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E46223AAA6600D5B0B8 /* MockGetNonceInteractor.swift */; };
+ 09F79E48223AB40000D5B0B8 /* NonceRequestPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79E40223A63DA00D5B0B8 /* NonceRequestPayload.swift */; };
+ 09F79E4B223ABD5B00D5B0B8 /* GetNonce.json in Resources */ = {isa = PBXBuildFile; fileRef = 09F79E4A223ABD5A00D5B0B8 /* GetNonce.json */; };
+ 09F8ABE9214A9B1500E293B7 /* DriverTracking.json in Resources */ = {isa = PBXBuildFile; fileRef = 09F8ABE8214A9B1500E293B7 /* DriverTracking.json */; };
+ 09F8ABEC214A9B5700E293B7 /* DriverTrackingMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F8ABEB214A9B5700E293B7 /* DriverTrackingMethodSpec.swift */; };
+ 09F8ABEE214AABBD00E293B7 /* NetworkStubFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F8ABED214AABBD00E293B7 /* NetworkStubFactory.swift */; };
+ 09F8ABF6214BF4F200E293B7 /* PlaceSearchMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F8ABF5214BF4F200E293B7 /* PlaceSearchMethodSpec.swift */; };
+ 09F8ABF8214BF69400E293B7 /* Places.json in Resources */ = {isa = PBXBuildFile; fileRef = 09F8ABF7214BF69400E293B7 /* Places.json */; };
+ 09F8ABFB214FB4C900E293B7 /* PaymentSDKTokenMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F8ABFA214FB4C900E293B7 /* PaymentSDKTokenMethod.swift */; };
+ 09F8ABFD214FB61100E293B7 /* PaymentSDKToken.json in Resources */ = {isa = PBXBuildFile; fileRef = 09F8ABFC214FB61100E293B7 /* PaymentSDKToken.json */; };
+ 09F8AC00214FDF4200E293B7 /* LoginMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F8ABFF214FDF4200E293B7 /* LoginMethodSpec.swift */; };
+ 09F8AC05214FE6DF00E293B7 /* UnauthorisedUserInfo.json in Resources */ = {isa = PBXBuildFile; fileRef = 09F8AC02214FE6DF00E293B7 /* UnauthorisedUserInfo.json */; };
+ 09F8AC06214FE6DF00E293B7 /* AuthToken.json in Resources */ = {isa = PBXBuildFile; fileRef = 09F8AC03214FE6DF00E293B7 /* AuthToken.json */; };
+ 09F8AC07214FE6DF00E293B7 /* AuthorisedUserInfo.json in Resources */ = {isa = PBXBuildFile; fileRef = 09F8AC04214FE6DF00E293B7 /* AuthorisedUserInfo.json */; };
+ 09F90F912150FA2C003BC867 /* PasswordResetMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F90F902150FA2C003BC867 /* PasswordResetMethodSpec.swift */; };
+ 09F90F942151008C003BC867 /* CancelTripMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F90F932151008C003BC867 /* CancelTripMethodSpec.swift */; };
+ 233DB46723433EC200BCBC3F /* MockUpdateUserDetailsInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 233DB46623433EC200BCBC3F /* MockUpdateUserDetailsInteractor.swift */; };
+ 233DB46923433F0400BCBC3F /* UserUpdateMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 233DB46823433F0400BCBC3F /* UserUpdateMock.swift */; };
+ 2359B45B234251FB008433A1 /* KarhooUpdateUserDetailsInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2359B45A234251FA008433A1 /* KarhooUpdateUserDetailsInteractorSpec.swift */; };
+ 2359B45F2342522E008433A1 /* KarhooUpdateUserDetailsInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2359B45D2342522E008433A1 /* KarhooUpdateUserDetailsInteractor.swift */; };
+ 2359B4602342522E008433A1 /* UpdateUserDetailsInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2359B45E2342522E008433A1 /* UpdateUserDetailsInteractor.swift */; };
+ 2359B46223425299008433A1 /* UserUpdatePayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2359B46123425299008433A1 /* UserUpdatePayload.swift */; };
+ 237E0C572347823A00798AA0 /* FareService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237E0C562347823A00798AA0 /* FareService.swift */; };
+ 237E0C59234782B400798AA0 /* KarhooFareService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237E0C58234782B400798AA0 /* KarhooFareService.swift */; };
+ 237E0C5C2347838600798AA0 /* FareInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237E0C5B2347838600798AA0 /* FareInteractor.swift */; };
+ 237E0C5E234783BE00798AA0 /* KarhooFareInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237E0C5D234783BE00798AA0 /* KarhooFareInteractor.swift */; };
+ 237E0C612347852500798AA0 /* Fare.json in Resources */ = {isa = PBXBuildFile; fileRef = 237E0C602347852500798AA0 /* Fare.json */; };
+ 237E0C64234788F000798AA0 /* KarhooFareServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237E0C63234788F000798AA0 /* KarhooFareServiceSpec.swift */; };
+ 237E0C672347897B00798AA0 /* MockFareInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237E0C662347897B00798AA0 /* MockFareInteractor.swift */; };
+ 237E0C692347931D00798AA0 /* KarhooFareInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237E0C682347931D00798AA0 /* KarhooFareInteractorSpec.swift */; };
+ 274211D129AC87080586E523 /* DriverTrackingInfoMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421D16D44DEC18A835BDB0 /* DriverTrackingInfoMock.swift */; };
+ 2742125CDD868E90FDAED0B4 /* UserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421AB287B1A33F00AC4119 /* UserInfo.swift */; };
+ 274212DB927ADC241604D704 /* UserDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421A91EE9BE3C99E54F313 /* UserDataStore.swift */; };
+ 274215324F8425FAEC59FF36 /* CredentialParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2742136485E56D7E2AEF11AB /* CredentialParser.swift */; };
+ 274217A11D83A12132022A6A /* HeaderProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 274213D38799FE5D607435B2 /* HeaderProvider.swift */; };
+ 274217A4E1433D9270511C44 /* QuoteListMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 274215B1B4ADECE9D9CE2EA2 /* QuoteListMock.swift */; };
+ 274217F5C000E1C615D797C9 /* Categories.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421E2976A85D5A0FB95991 /* Categories.swift */; };
+ 27421847E08F35A3DC467C6D /* HeaderConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421CBA8C72F37A4F143580 /* HeaderConstants.swift */; };
+ 2742197A13ACCCDBAE32D13A /* HeaderProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2742119D00DE30C9E3590055 /* HeaderProviderSpec.swift */; };
+ 274219FB67E45564E6C421C7 /* QuoteListId.swift in Sources */ = {isa = PBXBuildFile; fileRef = 274217092FA03DAFAD7776E1 /* QuoteListId.swift */; };
+ 27421AAB7F1B71B7D55D5B6D /* QuoteMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421D9042A4F39DF7D69941 /* QuoteMock.swift */; };
+ 27421B8B6B1B4722C040B399 /* APIEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421EDE7F5329B3837E9DFC /* APIEndpoint.swift */; };
+ 27421C3B80CE03E230AB3863 /* UserRegistration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421639BE5688EF2127E119 /* UserRegistration.swift */; };
+ 27421DAC3421BFA9669A5DBB /* KarhooAvailabilityInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27421CA2A060894A7D859830 /* KarhooAvailabilityInteractor.swift */; };
+ 27421E022DB3FB60B83DEFAE /* AvailabilityInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 274216467197574CB8746A19 /* AvailabilityInteractor.swift */; };
+ 27421FA3FF444C478139288D /* KarhooHeaderProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2742100A1C88263575619D5D /* KarhooHeaderProvider.swift */; };
+ 31005DA71FCEE699006D2A7D /* RequestTesting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31005DA61FCEE699006D2A7D /* RequestTesting.swift */; };
+ 310D44AE1FA1F8890038BFDA /* TimestampFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 310D44AD1FA1F8890038BFDA /* TimestampFormatterSpec.swift */; };
+ 312909E21FA0E0C900F5147D /* TimestampFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 312909E11FA0E0C900F5147D /* TimestampFormatter.swift */; };
+ 312B1AAC1FA097F900BB27CF /* BatteryMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 312B1AAB1FA097F900BB27CF /* BatteryMonitor.swift */; };
+ 312B1AAE1FA0982800BB27CF /* NetworkConnectionTypeProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 312B1AAD1FA0982800BB27CF /* NetworkConnectionTypeProvider.swift */; };
+ 312CDFB61F6A984A006F48DD /* AppStateNotifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 312CDFB51F6A984A006F48DD /* AppStateNotifier.swift */; };
+ 313DC2D120221A0800D9DD1B /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 313DC2D020221A0800D9DD1B /* Driver.swift */; };
+ 313DC2DD20221D0100D9DD1B /* Vehicle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 313DC2DC20221D0100D9DD1B /* Vehicle.swift */; };
+ 313DC2E420221E7B00D9DD1B /* Place.swift in Sources */ = {isa = PBXBuildFile; fileRef = 313DC2E320221E7B00D9DD1B /* Place.swift */; };
+ 313DC2F020221FCF00D9DD1B /* QuoteType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 313DC2EF20221FCE00D9DD1B /* QuoteType.swift */; };
+ 313DC2F220221FDB00D9DD1B /* Quote.swift in Sources */ = {isa = PBXBuildFile; fileRef = 313DC2F120221FDB00D9DD1B /* Quote.swift */; };
+ 3150CE2C1F9F7B6000DE6D62 /* UserLocationProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3150CE2B1F9F7B6000DE6D62 /* UserLocationProvider.swift */; };
+ 3150CE2F1F9F7BBA00DE6D62 /* UserLocationProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3150CE2E1F9F7BBA00DE6D62 /* UserLocationProviderSpec.swift */; };
+ 3150CE311F9F7D8E00DE6D62 /* MockCLLocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3150CE301F9F7D8E00DE6D62 /* MockCLLocationManager.swift */; };
+ 317210C21FFD2476004CE129 /* MockAppStateNotifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317210C11FFD2476004CE129 /* MockAppStateNotifier.swift */; };
+ 317210CF1FFE7330004CE129 /* CredentialsSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317210CE1FFE7330004CE129 /* CredentialsSpec.swift */; };
+ 317210D11FFE86B4004CE129 /* KarhooRefreshTokenInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317210D01FFE86B4004CE129 /* KarhooRefreshTokenInteractorSpec.swift */; };
+ 317610EC1FD84B1E00D2DB75 /* KarhooNetworkDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317610EB1FD84B1E00D2DB75 /* KarhooNetworkDateFormatter.swift */; };
+ 317610EE1FD84CD200D2DB75 /* KarhooNetworkDateFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317610ED1FD84CD200D2DB75 /* KarhooNetworkDateFormatterSpec.swift */; };
+ 317610F21FD86A9600D2DB75 /* KarhooAvailabilityService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317610F11FD86A9600D2DB75 /* KarhooAvailabilityService.swift */; };
+ 317610F41FD9855D00D2DB75 /* KarhooAvailabilityServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317610F31FD9855D00D2DB75 /* KarhooAvailabilityServiceSpec.swift */; };
+ 31904CD41FFFC04400BA7402 /* KarhooRefreshTokenInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31904CD31FFFC04400BA7402 /* KarhooRefreshTokenInteractor.swift */; };
+ 31904CD61FFFE26F00BA7402 /* TokenRefreshingHttpClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31904CD51FFFE26F00BA7402 /* TokenRefreshingHttpClient.swift */; };
+ 31904CD82003800000BA7402 /* TokenRefreshingHttpClientSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31904CD72003800000BA7402 /* TokenRefreshingHttpClientSpec.swift */; };
+ 31904CDA200380A400BA7402 /* MockAccessTokenProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31904CD9200380A400BA7402 /* MockAccessTokenProvider.swift */; };
+ 31904CDC2003EFFE00BA7402 /* MockNetworkRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31904CDB2003EFFE00BA7402 /* MockNetworkRequest.swift */; };
+ 31A1AD631F39E1E200BFE24B /* MockHttpClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31A1AD621F39E1E200BFE24B /* MockHttpClient.swift */; };
+ 31ACC66E1FF566C400E8B24F /* KarhooTimingScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31ACC66D1FF566C400E8B24F /* KarhooTimingScheduler.swift */; };
+ 31EC3F611F9E4C24008CD637 /* DeviceIdentifierProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31EC3F601F9E4C24008CD637 /* DeviceIdentifierProvider.swift */; };
+ 31EC3F651F9E50AD008CD637 /* AnalyticsPayloadBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31EC3F641F9E50AD008CD637 /* AnalyticsPayloadBuilder.swift */; };
+ 31F9168A2023559700104777 /* AnalyticsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31F916892023559700104777 /* AnalyticsService.swift */; };
+ 31FC37FF1F459A780012A57E /* DefaultAuthTokenSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31FC37FE1F459A780012A57E /* DefaultAuthTokenSpec.swift */; };
+ 400555712350AEDD008AD78F /* TripFare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400555702350AEDC008AD78F /* TripFare.swift */; };
+ 400BB94323F3027A00AEAAFD /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400BB94223F3027A00AEAAFD /* AuthService.swift */; };
+ 400BB94623F3066500AEAAFD /* KarhooAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400BB94523F3066500AEAAFD /* KarhooAuthService.swift */; };
+ 400BB94823F308BE00AEAAFD /* AuthLoginInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400BB94723F308BE00AEAAFD /* AuthLoginInteractor.swift */; };
+ 400BB94B23F308F100AEAAFD /* KarhooAuthLoginInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400BB94A23F308F100AEAAFD /* KarhooAuthLoginInteractor.swift */; };
+ 4032BD1023FC47B600C2409B /* AuthUserInfo.json in Resources */ = {isa = PBXBuildFile; fileRef = 4032BD0D23FC47B600C2409B /* AuthUserInfo.json */; };
+ 4032BD1223FC491500C2409B /* AuthExchangeToken.json in Resources */ = {isa = PBXBuildFile; fileRef = 4032BD1123FC491500C2409B /* AuthExchangeToken.json */; };
+ 4032BD1423FC5B2300C2409B /* KarhooAuthLoginInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4032BD1323FC5B2300C2409B /* KarhooAuthLoginInteractorSpec.swift */; };
+ 404484E223FB00A900CD0347 /* KarhooAuthRevokeInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 404484E123FB00A900CD0347 /* KarhooAuthRevokeInteractor.swift */; };
+ 4095037B234CCF5A00C6F7A5 /* FareMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4095037A234CCF5A00C6F7A5 /* FareMethodSpec.swift */; };
+ 40F4058F2334C50100D384A6 /* LocationInfoSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40F4058E2334C50000D384A6 /* LocationInfoSearch.swift */; };
+ 40FBF607240EAFD9007F6A54 /* AuthHeaderKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FBF606240EAFD9007F6A54 /* AuthHeaderKeys.swift */; };
+ 40FBF609240FBB2E007F6A54 /* AuthRequestsTesterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FBF608240FBB2E007F6A54 /* AuthRequestsTesterViewController.swift */; };
+ 4231E9D1B9C7769699C2EECC /* Pods_KarhooSDKTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE6485A8A424D85E5FF8A2BB /* Pods_KarhooSDKTests.framework */; };
+ 4310E4711E9928C800625A0E /* MockBroadcaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E4701E9928C800625A0E /* MockBroadcaster.swift */; };
+ 4310E4B81E99395D00625A0E /* AddressService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E47F1E99395D00625A0E /* AddressService.swift */; };
+ 4310E4B91E99395D00625A0E /* AvailabilityService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E4801E99395D00625A0E /* AvailabilityService.swift */; };
+ 4310E4C21E99395D00625A0E /* Karhoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E48A1E99395D00625A0E /* Karhoo.swift */; };
+ 4310E4DB1E99395D00625A0E /* Broadcaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E4B61E99395D00625A0E /* Broadcaster.swift */; };
+ 4310E4DC1E99395D00625A0E /* WeakReferenceWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E4B71E99395D00625A0E /* WeakReferenceWrapper.swift */; };
+ 4310E5061E99397A00625A0E /* UserDataStoreSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E4E01E99397A00625A0E /* UserDataStoreSpec.swift */; };
+ 4310E5071E99397A00625A0E /* KarhooSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E4E11E99397A00625A0E /* KarhooSpec.swift */; };
+ 4310E51A1E99397A00625A0E /* BroadcasterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E5031E99397A00625A0E /* BroadcasterSpec.swift */; };
+ 4310E51B1E99397A00625A0E /* WeakReferenceWrapperSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4310E5041E99397A00625A0E /* WeakReferenceWrapperSpec.swift */; };
+ 431740D51ECB257A00CD217F /* KarhooUserServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 431740CD1ECB257A00CD217F /* KarhooUserServiceSpec.swift */; };
+ 4322B48C1E69A57B002108D5 /* MockAnalyticsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4322B48B1E69A57B002108D5 /* MockAnalyticsService.swift */; };
+ 43288A5F1EF3BEB10079506B /* DriverTrackingInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43288A5E1EF3BEB10079506B /* DriverTrackingInfo.swift */; };
+ 432D47871ECC31940085DBBE /* KarhooLogoutInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 432D47831ECC31940085DBBE /* KarhooLogoutInteractorSpec.swift */; };
+ 432D478A1ECC80E10085DBBE /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 432D47891ECC80E10085DBBE /* Result.swift */; };
+ 43466AE81EDECEED0087BC51 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43466AE71EDECEED0087BC51 /* Credentials.swift */; };
+ 434B58431E434E5F009E8FB8 /* MockUserDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434B58421E434E5F009E8FB8 /* MockUserDataStore.swift */; };
+ 434D30A91EE150BA00CEE07B /* CredentiasParserSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434D30A81EE150BA00CEE07B /* CredentiasParserSpec.swift */; };
+ 43584E6E1EE54D6400B4DFAB /* TripInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43584E6D1EE54D6400B4DFAB /* TripInfo.swift */; };
+ 43584E7A1EE56EDC00B4DFAB /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43584E791EE56EDC00B4DFAB /* Errors.swift */; };
+ 43584E871EE590DE00B4DFAB /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43584E861EE590DE00B4DFAB /* Context.swift */; };
+ 43584E891EE590FC00B4DFAB /* ContextSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43584E881EE590FC00B4DFAB /* ContextSpec.swift */; };
+ 43584E8D1EE591C700B4DFAB /* ObjectTestFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43584E8C1EE591C700B4DFAB /* ObjectTestFactory.swift */; };
+ 43584E8F1EE5960700B4DFAB /* TripService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43584E8E1EE5960700B4DFAB /* TripService.swift */; };
+ 43584E931EE5993700B4DFAB /* KarhooTripServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43584E921EE5993700B4DFAB /* KarhooTripServiceSpec.swift */; };
+ 43584E9F1EE6A3D400B4DFAB /* MockUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43584E9E1EE6A3D400B4DFAB /* MockUserDefaults.swift */; };
+ 43588C661EBB675100D03765 /* TestUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43588C651EBB675100D03765 /* TestUtil.swift */; };
+ 4371C5951EB0E7F70059429D /* KarhooAddressService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4371C57B1EB0E7F70059429D /* KarhooAddressService.swift */; };
+ 4371C59B1EB0E7F70059429D /* AnalyticsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4371C5831EB0E7F70059429D /* AnalyticsConstants.swift */; };
+ 4371C59C1EB0E7F70059429D /* KarhooAnalyticsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4371C5841EB0E7F70059429D /* KarhooAnalyticsService.swift */; };
+ 4371C59D1EB0E7F70059429D /* AnalyticsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4371C5861EB0E7F70059429D /* AnalyticsProvider.swift */; };
+ 4371C59E1EB0E7F70059429D /* LogAnalyticsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4371C5871EB0E7F70059429D /* LogAnalyticsProvider.swift */; };
+ 4371C5BE1EB0E8070059429D /* KarhooAddressServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4371C5A91EB0E8070059429D /* KarhooAddressServiceSpec.swift */; };
+ 4371C5C11EB0E8070059429D /* AnalyticsServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4371C5AE1EB0E8070059429D /* AnalyticsServiceSpec.swift */; };
+ 4371C5C21EB0E8070059429D /* LogAnalyticsProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4371C5B01EB0E8070059429D /* LogAnalyticsProviderSpec.swift */; };
+ 43850F3F1ECB003E009CB8FD /* UserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43850F3E1ECB003E009CB8FD /* UserService.swift */; };
+ 43850F4C1ECB0056009CB8FD /* KarhooUserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43850F431ECB0056009CB8FD /* KarhooUserService.swift */; };
+ 4387A6521E3BAF6D0024FD55 /* KarhooSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 4387A6441E3BAF6D0024FD55 /* KarhooSDK.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4387A67F1E3BB6070024FD55 /* KarhooSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4387A6411E3BAF6D0024FD55 /* KarhooSDK.framework */; };
+ 43D251B61F45C76E005ECB85 /* ReachabilityWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D251B51F45C76E005ECB85 /* ReachabilityWrapper.swift */; };
+ 43D251B81F46E29C005ECB85 /* ReachabilityWrapperSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D251B71F46E29C005ECB85 /* ReachabilityWrapperSpec.swift */; };
+ 43D395C71ECF9ECD00499E8F /* PaymentService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D395C61ECF9ECD00499E8F /* PaymentService.swift */; };
+ 43D395CA1ECF9F5B00499E8F /* KarhooPaymentService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D395C91ECF9F5B00499E8F /* KarhooPaymentService.swift */; };
+ 43D395D51ECFA31900499E8F /* KarhooPaymentServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D395D41ECFA31900499E8F /* KarhooPaymentServiceSpec.swift */; };
+ 43DD68F61ECD83F2005159C8 /* ResultSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DD68F51ECD83F2005159C8 /* ResultSpec.swift */; };
+ 43EF91691EE93DF6006ECB75 /* KarhooTripService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EF91671EE93DF6006ECB75 /* KarhooTripService.swift */; };
+ 43F9399E1F3C85A300914E18 /* KarhooURLSessionSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F939951F3C85A300914E18 /* KarhooURLSessionSender.swift */; };
+ 43F9399F1F3C85A300914E18 /* HttpClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F939961F3C85A300914E18 /* HttpClient.swift */; };
+ 43F939A01F3C85A300914E18 /* HttpConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F939971F3C85A300914E18 /* HttpConstants.swift */; };
+ 43F939A11F3C85A300914E18 /* Json.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F939981F3C85A300914E18 /* Json.swift */; };
+ 43F939A21F3C85A300914E18 /* JsonHttpClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F939991F3C85A300914E18 /* JsonHttpClient.swift */; };
+ 43F939A31F3C85A300914E18 /* JsonHttpRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F9399A1F3C85A300914E18 /* JsonHttpRequestBuilder.swift */; };
+ 43F939A41F3C85A300914E18 /* KarhooEnvironmentDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F9399B1F3C85A300914E18 /* KarhooEnvironmentDetails.swift */; };
+ 43F939A51F3C85A300914E18 /* URLSessionSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F9399C1F3C85A300914E18 /* URLSessionSender.swift */; };
+ 43F939B51F3CD33200914E18 /* JsonHttpClientSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F939B01F3CD33200914E18 /* JsonHttpClientSpec.swift */; };
+ 43F939B61F3CD33200914E18 /* JsonHttpRequestBuilderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F939B11F3CD33200914E18 /* JsonHttpRequestBuilderSpec.swift */; };
+ 5C076FFF20F23B5F00A35537 /* CategoryQuoteMapperSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C076FFE20F23B5F00A35537 /* CategoryQuoteMapperSpec.swift */; };
+ 5C08DFB120E5A8D7002203CB /* MockContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C08DFB020E5A8D7002203CB /* MockContext.swift */; };
+ 5C08DFB420E5A92A002203CB /* MockAnalyticsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C08DFB320E5A92A002203CB /* MockAnalyticsProvider.swift */; };
+ 5C103FA22411C31F00F5F2F9 /* TokenExchangeSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C103FA12411C31F00F5F2F9 /* TokenExchangeSettings.swift */; };
+ 5C103FA42411DF7F00F5F2F9 /* GuestSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C103FA32411DF7F00F5F2F9 /* GuestSettings.swift */; };
+ 5C15D5EA203711D200B47A71 /* BookingSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C15D5E9203711D100B47A71 /* BookingSearch.swift */; };
+ 5C1E32A4211F015D00651BB9 /* KarhooVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1E32A3211F015D00651BB9 /* KarhooVoid.swift */; };
+ 5C224EAF223DCA9900C1CFCE /* AddPaymentDetailsInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C224EAE223DCA9900C1CFCE /* AddPaymentDetailsInteractor.swift */; };
+ 5C224EB1223DCD2000C1CFCE /* KarhooAddPaymentDetailsInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C224EB0223DCD2000C1CFCE /* KarhooAddPaymentDetailsInteractor.swift */; };
+ 5C224EB4223DD83000C1CFCE /* MockAddPaymentDetailsInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C224EB3223DD83000C1CFCE /* MockAddPaymentDetailsInteractor.swift */; };
+ 5C224EB7223DDB8A00C1CFCE /* AddPaymentDetailsMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C224EB6223DDB8A00C1CFCE /* AddPaymentDetailsMethodSpec.swift */; };
+ 5C2856CE20E3B127009B9464 /* LocationInfoInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2856C620E3B127009B9464 /* LocationInfoInteractor.swift */; };
+ 5C2856CF20E3B127009B9464 /* PlaceSearchInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2856C820E3B127009B9464 /* PlaceSearchInteractor.swift */; };
+ 5C2856D020E3B127009B9464 /* KarhooPlaceSearchInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2856C920E3B127009B9464 /* KarhooPlaceSearchInteractor.swift */; };
+ 5C2856D120E3B127009B9464 /* KarhooReverseGeocodeInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2856CB20E3B127009B9464 /* KarhooReverseGeocodeInteractor.swift */; };
+ 5C2856D220E3B127009B9464 /* ReverseGeocodeInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2856CC20E3B127009B9464 /* ReverseGeocodeInteractor.swift */; };
+ 5C2856E220E3B184009B9464 /* KarhooReverseGeocodeProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2856DD20E3B183009B9464 /* KarhooReverseGeocodeProviderSpec.swift */; };
+ 5C2856F220E3B1DD009B9464 /* LocationInfoMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2856F120E3B1DC009B9464 /* LocationInfoMock.swift */; };
+ 5C2E265024282B0400B1FF0C /* KarhooAddPaymentDetailsSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090E0164223FAB6E005D1CB7 /* KarhooAddPaymentDetailsSpec.swift */; };
+ 5C5BE90D2411A513005DD14E /* AuthenticationMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5BE90C2411A513005DD14E /* AuthenticationMethod.swift */; };
+ 5C75D6572080E4E60065133B /* KarhooCodableModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C75D6562080E4E60065133B /* KarhooCodableModel.swift */; };
+ 5C75D65D208CC84E0065133B /* LocationDetailsAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C75D65C208CC84E0065133B /* LocationDetailsAddress.swift */; };
+ 5C870D2920CDBC9C0039A2BF /* LoginRequestPayloadMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C870D2820CDBC9C0039A2BF /* LoginRequestPayloadMock.swift */; };
+ 5CA2CE422343510E000AEC1E /* OrganisationMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CA2CE412343510E000AEC1E /* OrganisationMock.swift */; };
+ 5CA2CE45234368B7000AEC1E /* UISettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CA2CE44234368B7000AEC1E /* UISettings.swift */; };
+ 8AF5210BF925EC94C12D5D34 /* Pods_KarhooSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2A6E7031AD7206EDBD999A /* Pods_KarhooSDK.framework */; };
+ AE5058823A162206E237F5FA /* Pods_Client.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 491F52E3C4EE22C2B1A9B930 /* Pods_Client.framework */; };
+ B2B1738EC35E4790DEAAA7EC /* Pods_KarhooSDKIntegrationTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3843568322BB0FCF9D45FE9 /* Pods_KarhooSDKIntegrationTests.framework */; };
+ BAA0A0478693DADB025AE19A /* KarhooPasswordResetInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AAD70E6AE0FF8C70BEC1 /* KarhooPasswordResetInteractor.swift */; };
+ BAA0A0D9B4689C44C4517E85 /* Places.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AAC1104384B3CDE0FED2 /* Places.swift */; };
+ BAA0A113CE860049AD045890 /* KarhooTripStatusInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A7C9A052655223E880D3 /* KarhooTripStatusInteractor.swift */; };
+ BAA0A1372FE5B2F6B605114B /* AuthToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AB9B6A8BB01E3CF959C0 /* AuthToken.swift */; };
+ BAA0A144BA8E2FA9BBCECF9A /* QuoteList.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A316925D2F14D6EEEAE6 /* QuoteList.swift */; };
+ BAA0A1625DACE366FC991EE7 /* TripStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AEEB35537AC7936CC8B7 /* TripStatus.swift */; };
+ BAA0A16B38001BD6031859AF /* CategoriesMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AA4DA19A464EF80F00F6 /* CategoriesMock.swift */; };
+ BAA0A20863C722DEDBD8AB81 /* RequestSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AE3182D554B65C66EC52 /* RequestSender.swift */; };
+ BAA0A28127E0831F332F8FD7 /* FareComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A5C6D495C7A6B997BB5E /* FareComponent.swift */; };
+ BAA0A2B39435CDDCC9E3B772 /* KarhooBookingInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A3541731789F935644A7 /* KarhooBookingInteractorSpec.swift */; };
+ BAA0A2C1640158EABC2C8409 /* MockPasswordResetInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A5FC9FBDD3F60C6FE30E /* MockPasswordResetInteractor.swift */; };
+ BAA0A2F241A3762CCC60A9ED /* KarhooBookingInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AFBC32DB1629C3BB1D01 /* KarhooBookingInteractor.swift */; };
+ BAA0A32E25B5969B08BEACBD /* PoiDetailsType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0ACCCE0E8BFB2852A3143 /* PoiDetailsType.swift */; };
+ BAA0A33C16B003E2D9F99AB3 /* PoiType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AED770E3100C742E4BE1 /* PoiType.swift */; };
+ BAA0A3538DD38C00232154EB /* MeetingPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A3A0B72938FD19C2911A /* MeetingPoint.swift */; };
+ BAA0A3A43066DD0F628543FE /* FleetInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AEEDE0D01BA897FB6ECA /* FleetInfo.swift */; };
+ BAA0A47EBFAADA9C274FAF83 /* UserLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A499BF991C5FC4735A7D /* UserLogin.swift */; };
+ BAA0A49004C72C6E7EADBED9 /* QuoteIdMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A819AC6AB43365A4C081 /* QuoteIdMock.swift */; };
+ BAA0A4B940D784C81D26467F /* KarhooPaymentSDKTokenInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A0172A18CDF485FF7519 /* KarhooPaymentSDKTokenInteractor.swift */; };
+ BAA0A52F9D9380CE153EA7C6 /* PaymentSDKToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0ADCEB2BBB622745A315B /* PaymentSDKToken.swift */; };
+ BAA0A599E1EB8C3F8C2F8821 /* PassengerDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AA1BB35C2D341BB66986 /* PassengerDetails.swift */; };
+ BAA0A5ADE570C5E9F2BDAE4D /* Passengers.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A069D5D958868761AAF7 /* Passengers.swift */; };
+ BAA0A5F9C452FEC2B08B557A /* Availability.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A965007F063C8346E974 /* Availability.swift */; };
+ BAA0A6A2B3C0BB130896465E /* KarhooPasswordResetInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A8260B3FAD817582FADE /* KarhooPasswordResetInteractorSpec.swift */; };
+ BAA0A6AFAE41A51A35679357 /* PoiDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A263663CFFE1DE2F5E76 /* PoiDetails.swift */; };
+ BAA0A6EAF352449EA13B4994 /* KarhooRequestSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A33AC9CF7967569962A2 /* KarhooRequestSender.swift */; };
+ BAA0A7BF125DFEEECCA06B44 /* PasswordResetRequestPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AD752CF0001B84C65B6E /* PasswordResetRequestPayload.swift */; };
+ BAA0A8B83EF64CFCC23678EC /* MockTripStatusInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AC8C40120E475F87ECB2 /* MockTripStatusInteractor.swift */; };
+ BAA0A91AB3B45A6A56034A0F /* UserInfoMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AACF77649D0AA514D127 /* UserInfoMock.swift */; };
+ BAA0A99196851950BE007EC3 /* BookingInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A7CF7A18FDC822E15AFD /* BookingInteractor.swift */; };
+ BAA0A9B82B56E7732880DF88 /* PositionExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A1DD7F2A93BCD18DD3FE /* PositionExt.swift */; };
+ BAA0A9E6A724F31D9BCFD880 /* KarhooTripStatusInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AE54DAE03275821D43A7 /* KarhooTripStatusInteractorSpec.swift */; };
+ BAA0AA88F01A05227A1CC69A /* MockTimingScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A5929BD792349F51A637 /* MockTimingScheduler.swift */; };
+ BAA0AA94DD5A84DFCB2F757C /* TripBookingMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A2BC090EFF81F2F9B9AC /* TripBookingMock.swift */; };
+ BAA0ABF896D0A71FBF3482B7 /* PaymentSDKTokenInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AC190CF1C7C0CBDC717E /* PaymentSDKTokenInteractor.swift */; };
+ BAA0AC4CCFCCFBAAE287219C /* PasswordResetRequestPayloadMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A26ED6144AF54A930CFB /* PasswordResetRequestPayloadMock.swift */; };
+ BAA0AD4ECBE829DE71C521FF /* TripLocationDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A2498417189117D6F286 /* TripLocationDetails.swift */; };
+ BAA0AD6977BF4A2BF4E00673 /* PaymentSDKTokenMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A2139A85B9FF7F56BED7 /* PaymentSDKTokenMock.swift */; };
+ BAA0AD9A7DADB9A66E5705F3 /* MockPaymentSDKTokenInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0A6F016D7940CF293B9BC /* MockPaymentSDKTokenInteractor.swift */; };
+ BAA0ADC3A54466A62DCB5412 /* TripStatusInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0AF4654D1B9211454EEBD /* TripStatusInteractor.swift */; };
+ BAA0AE32283EBDE47DBE35BD /* TripStatusMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0ADA5AD439AA7E9B9ED6C /* TripStatusMock.swift */; };
+ FC0BF05B20E39D2D0004DF61 /* MockTripUpdateInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0BF05A20E39D2D0004DF61 /* MockTripUpdateInteractor.swift */; };
+ FC0BF09C20E3CB4F0004DF61 /* MockRefreshTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0BF09B20E3CB4F0004DF61 /* MockRefreshTokenRequest.swift */; };
+ FC1202452146A4F000161081 /* Empty.json in Resources */ = {isa = PBXBuildFile; fileRef = FC1202442146A4F000161081 /* Empty.json */; };
+ FC1202472146A7CA00161081 /* Error.json in Resources */ = {isa = PBXBuildFile; fileRef = FC1202462146A7CA00161081 /* Error.json */; };
+ FC12024C214A840E00161081 /* LocationInfoMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC12024B214A840E00161081 /* LocationInfoMethodSpec.swift */; };
+ FC12024F214A950B00161081 /* LocationInfo.json in Resources */ = {isa = PBXBuildFile; fileRef = FC12024E214A950B00161081 /* LocationInfo.json */; };
+ FC120251214AB3C000161081 /* InvalidJson.json in Resources */ = {isa = PBXBuildFile; fileRef = FC120250214AB3C000161081 /* InvalidJson.json */; };
+ FC120253214BF82400161081 /* ReverseGeocodeMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC120252214BF82400161081 /* ReverseGeocodeMethodSpec.swift */; };
+ FC120256214FF0AE00161081 /* RegisterMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC120255214FF0AE00161081 /* RegisterMethodSpec.swift */; };
+ FC12025D215129DC00161081 /* TrackTripMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC12025C215129DC00161081 /* TrackTripMethodSpec.swift */; };
+ FC1202612152567C00161081 /* BookTripMethodSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC1202602152567C00161081 /* BookTripMethodSpec.swift */; };
+ FC1B01ED2209D0D20069D7F3 /* QuoteCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC1B01EC2209D0D20069D7F3 /* QuoteCategory.swift */; };
+ FC2D95722113612300201BDB /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC2D95712113612300201BDB /* Error.swift */; };
+ FC2EE934212425F6001B36D2 /* SDKErrorFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC2EE933212425F6001B36D2 /* SDKErrorFactory.swift */; };
+ FC321EE020F8D54E00B2C3CD /* DriverTrackingService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC321EDF20F8D54E00B2C3CD /* DriverTrackingService.swift */; };
+ FC321EE220F8D56400B2C3CD /* KarhooDriverTrackingService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC321EE120F8D56400B2C3CD /* KarhooDriverTrackingService.swift */; };
+ FC321EE420F8D72C00B2C3CD /* KarhooDriverTrackingServiceSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC321EE320F8D72C00B2C3CD /* KarhooDriverTrackingServiceSpec.swift */; };
+ FC57F943212EEC56009193CB /* TripUpdateInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC57F942212EEC56009193CB /* TripUpdateInteractor.swift */; };
+ FC57F945213015E7009193CB /* PollCallFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC57F944213015E7009193CB /* PollCallFactory.swift */; };
+ FC57F94821301637009193CB /* MockPollCallFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC57F94721301637009193CB /* MockPollCallFactory.swift */; };
+ FC57F94A21301759009193CB /* MockPollCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC57F94921301759009193CB /* MockPollCall.swift */; };
+ FC861B2C21107727004CC47A /* KarhooError.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC861B2B21107727004CC47A /* KarhooError.swift */; };
+ FC861B2E21107734004CC47A /* KarhooSDKError.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC861B2D21107734004CC47A /* KarhooSDKError.swift */; };
+ FC861B5E2110B7C0004CC47A /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC861B5D2110B7C0004CC47A /* HTTPError.swift */; };
+ FC8EB5C9216507B7009DC8DE /* TripQuote.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC8EB5C8216507B7009DC8DE /* TripQuote.swift */; };
+ FC8EB5CB21651AA0009DC8DE /* VehicleAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC8EB5CA21651AA0009DC8DE /* VehicleAttributes.swift */; };
+ FC8F474F2154F9D6007841FB /* ObserverBroadcaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC8F474E2154F9D6007841FB /* ObserverBroadcaster.swift */; };
+ FC8F475121553184007841FB /* Observer.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC8F475021553184007841FB /* Observer.swift */; };
+ FC8F475321555025007841FB /* MockObserverBroadcaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC8F475221555025007841FB /* MockObserverBroadcaster.swift */; };
+ FC987C7D20EF7949001B8B79 /* CLLocationExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC987C7C20EF7949001B8B79 /* CLLocationExt.swift */; };
+ FCBD67B3211C9CBD005AA332 /* LoginInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCBD67B2211C9CBD005AA332 /* LoginInteractor.swift */; };
+ FCBD67B5211C9CE6005AA332 /* PasswordResetInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCBD67B4211C9CE6005AA332 /* PasswordResetInteractor.swift */; };
+ FCBD67B7211C9D7E005AA332 /* RegisterInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCBD67B6211C9D7E005AA332 /* RegisterInteractor.swift */; };
+ FCBD67B9211DDD8E005AA332 /* MockInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCBD67B8211DDD8E005AA332 /* MockInteractor.swift */; };
+ FCC17D792118984B00A25B87 /* KarhooPollCallFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCC17D782118984B00A25B87 /* KarhooPollCallFactory.swift */; };
+ FCD32FE920DA9C4F0044BB64 /* TripSearchInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD32FE820DA9C4F0044BB64 /* TripSearchInteractor.swift */; };
+ FCD32FEB20DA9C5F0044BB64 /* KarhooTripSearchInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD32FEA20DA9C5F0044BB64 /* KarhooTripSearchInteractor.swift */; };
+ FCD32FED20DAA1470044BB64 /* TripsRequestPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD32FEC20DAA1470044BB64 /* TripsRequestPayload.swift */; };
+ FCD32FEF20DAA33A0044BB64 /* KarhooTripsListInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD32FEE20DAA33A0044BB64 /* KarhooTripsListInteractorSpec.swift */; };
+ FCD32FF720E252680044BB64 /* KarhooTripUpdateInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD32FF620E252680044BB64 /* KarhooTripUpdateInteractor.swift */; };
+ FCD32FFA20E26DC10044BB64 /* KarhooTripUpdateInteractortSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD32FF920E26DC10044BB64 /* KarhooTripUpdateInteractortSpec.swift */; };
+ FCD4DA5720F37FB2007D4374 /* AvailabilitySearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD4DA5620F37FB2007D4374 /* AvailabilitySearch.swift */; };
+ FCD4DA5A20F39AD0007D4374 /* MockAvailabilityInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD4DA5920F39AD0007D4374 /* MockAvailabilityInteractor.swift */; };
+ FCD4DA5C20F3A5C5007D4374 /* KarhooAvailabilityInteractorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD4DA5B20F3A5C5007D4374 /* KarhooAvailabilityInteractorSpec.swift */; };
+ FCE11B3820F6272400DFC641 /* AvailabilitySearchMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCE11B3720F6272400DFC641 /* AvailabilitySearchMock.swift */; };
+ FCE694242166517D00FAD591 /* TripInfo.json in Resources */ = {isa = PBXBuildFile; fileRef = 097D4720215111ED008D8D94 /* TripInfo.json */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 09B204B221412C3200063632 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 4387A6381E3BAF6D0024FD55 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 4387A6401E3BAF6D0024FD55;
+ remoteInfo = KarhooSDK;
+ };
+ 4387A64C1E3BAF6D0024FD55 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 4387A6381E3BAF6D0024FD55 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 4387A6401E3BAF6D0024FD55;
+ remoteInfo = KarhooSDK;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 0900D34820D2B17B0082D1E8 /* RefreshTokenInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTokenInteractor.swift; sourceTree = ""; };
+ 0900D34A20D2B1920082D1E8 /* RefreshTokenError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTokenError.swift; sourceTree = ""; };
+ 0907B98920D7B794008915B1 /* Reachability.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Reachability.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0907B98B20D7B901008915B1 /* CancelTripInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancelTripInteractor.swift; sourceTree = ""; };
+ 0907B98E20D7B964008915B1 /* KarhooCancelTripInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooCancelTripInteractor.swift; sourceTree = ""; };
+ 0907B99120D7B98A008915B1 /* KarhooCancelTripInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooCancelTripInteractorSpec.swift; sourceTree = ""; };
+ 090881DE20E65F7D00EE2C67 /* KarhooPlaceSearchInteractorSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooPlaceSearchInteractorSpec.swift; sourceTree = ""; };
+ 090881E020E65FAD00EE2C67 /* MockPlaceSearchInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockPlaceSearchInteractor.swift; sourceTree = ""; };
+ 090881E220E662D200EE2C67 /* KarhooLocationInfoInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooLocationInfoInteractor.swift; sourceTree = ""; };
+ 090881E420E663E500EE2C67 /* KarhooLocationInfoInteractorSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooLocationInfoInteractorSpec.swift; sourceTree = ""; };
+ 090E0164223FAB6E005D1CB7 /* KarhooAddPaymentDetailsSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAddPaymentDetailsSpec.swift; sourceTree = ""; };
+ 090E8225235DAD5900B447A2 /* KarhooEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooEnvironment.swift; sourceTree = ""; };
+ 091A2D0D207D23F600F06E28 /* LocationInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationInfo.swift; sourceTree = ""; };
+ 091BE6E92085192800BA34D0 /* PlaceSearch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceSearch.swift; sourceTree = ""; };
+ 091BE6EB2086562900BA34D0 /* Position.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Position.swift; sourceTree = ""; };
+ 091CAE3D20D7A81F005F1DB6 /* MockURLSessionSender.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockURLSessionSender.swift; sourceTree = ""; };
+ 092F27C622B1353D00AF8E0E /* PickUpType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickUpType.swift; sourceTree = ""; };
+ 09430E4A2240054A009846A6 /* IntegrationTestSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationTestSetup.swift; sourceTree = ""; };
+ 09430E4C22410037009846A6 /* MockSDKConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSDKConfig.swift; sourceTree = ""; };
+ 09430E4E224109D6009846A6 /* UnitTestSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnitTestSetup.swift; sourceTree = ""; };
+ 0947FD3A2121D51900E8BE4A /* KarhooErrorType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooErrorType.swift; sourceTree = ""; };
+ 094B449D2285AC65002D2506 /* PaymentSDKTokenPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentSDKTokenPayload.swift; sourceTree = ""; };
+ 094B44B32285B8DE002D2506 /* AddPaymentDetails.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AddPaymentDetails.json; sourceTree = ""; };
+ 094C1F7E20B2C956001FFE7F /* MockNetworkDateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockNetworkDateFormatter.swift; sourceTree = ""; };
+ 095A03B823339721007D805E /* ConfigService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigService.swift; sourceTree = ""; };
+ 095A03BA2333ADC2007D805E /* KarhooConfigService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooConfigService.swift; sourceTree = ""; };
+ 095A03BD2333AF4A007D805E /* UIConfigInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIConfigInteractor.swift; sourceTree = ""; };
+ 095A03BF2333AF64007D805E /* KarhooUIConfigInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooUIConfigInteractor.swift; sourceTree = ""; };
+ 095A03C12333AF98007D805E /* UIConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIConfig.swift; sourceTree = ""; };
+ 095A03C32333AFED007D805E /* UIConfigRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIConfigRequest.swift; sourceTree = ""; };
+ 095A03C62333B115007D805E /* UIConfigProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIConfigProvider.swift; sourceTree = ""; };
+ 095A03CA2333B3E6007D805E /* KarhooConfigServiceSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooConfigServiceSpec.swift; sourceTree = ""; };
+ 095A03CC2333B3F8007D805E /* KarhooUIConfigInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooUIConfigInteractorSpec.swift; sourceTree = ""; };
+ 095A03CF2333BABD007D805E /* KarhooUIConfigProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooUIConfigProvider.swift; sourceTree = ""; };
+ 095A03D12333C119007D805E /* KarhooUIConfigProviderSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooUIConfigProviderSpec.swift; sourceTree = ""; };
+ 095A03D42333C235007D805E /* MockUIConfigProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockUIConfigProvider.swift; sourceTree = ""; };
+ 095A03DD2333D926007D805E /* UIConfigMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIConfigMethodSpec.swift; sourceTree = ""; };
+ 095A03DF2333DFCB007D805E /* MockUIConfigInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockUIConfigInteractor.swift; sourceTree = ""; };
+ 095CEC0520F7573700C8AC4B /* TripCancellation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripCancellation.swift; sourceTree = ""; };
+ 095E406C20B32DAE008EAF0F /* NetworkDateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkDateFormatter.swift; sourceTree = ""; };
+ 096A2C2C208F676000C7B7D0 /* PositionExtSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionExtSpec.swift; sourceTree = ""; };
+ 096B31BB20B702AE002B41E9 /* MockBookingInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockBookingInteractor.swift; sourceTree = ""; };
+ 096B31BF20B702E8002B41E9 /* MockTripSearchInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockTripSearchInteractor.swift; sourceTree = ""; };
+ 0970BA6A21136F870015A170 /* Executable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Executable.swift; sourceTree = ""; };
+ 0970BA6B21136F870015A170 /* KarhooPollableExecutor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooPollableExecutor.swift; sourceTree = ""; };
+ 0970BA6C21136F870015A170 /* KarhooPollCall.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooPollCall.swift; sourceTree = ""; };
+ 0970BA6D21136F870015A170 /* KarhooCall.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooCall.swift; sourceTree = ""; };
+ 0970BA6E21136F870015A170 /* KarhooObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooObservable.swift; sourceTree = ""; };
+ 0970BA77211371600015A170 /* KarhooDriverTrackingInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooDriverTrackingInteractor.swift; sourceTree = ""; };
+ 0970BA7A21145E550015A170 /* KarhooCallSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooCallSpec.swift; sourceTree = ""; };
+ 0970BA7D211464C40015A170 /* MockExecutable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockExecutable.swift; sourceTree = ""; };
+ 0970BA7F2114671A0015A170 /* KarhooObservableSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooObservableSpec.swift; sourceTree = ""; };
+ 0970BA812114685B0015A170 /* MockKarhooCodableModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockKarhooCodableModel.swift; sourceTree = ""; };
+ 0970BA8721146DF70015A170 /* MockPollExecutor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockPollExecutor.swift; sourceTree = ""; };
+ 0970BA892114970A0015A170 /* KarhooPollCallSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooPollCallSpec.swift; sourceTree = ""; };
+ 0970BA8B21149FC60015A170 /* KarhooPollableExecutorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooPollableExecutorSpec.swift; sourceTree = ""; };
+ 097BF2B62358710400BBE418 /* KarhooSDKConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooSDKConfiguration.swift; sourceTree = ""; };
+ 097D4720215111ED008D8D94 /* TripInfo.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = TripInfo.json; sourceTree = ""; };
+ 097D472221511208008D8D94 /* TripStatusMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripStatusMethodSpec.swift; sourceTree = ""; };
+ 097D4724215128E0008D8D94 /* TripStatus.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = TripStatus.json; sourceTree = ""; };
+ 097D472621512D5E008D8D94 /* TripSearchMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripSearchMethodSpec.swift; sourceTree = ""; };
+ 09811A1720D7BB8C001DB06F /* CancelTripRequestPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancelTripRequestPayload.swift; sourceTree = ""; };
+ 09811A1920D7BD77001DB06F /* CancelReason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancelReason.swift; sourceTree = ""; };
+ 09811A1D20D7C12D001DB06F /* MockCancelTripInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCancelTripInteractor.swift; sourceTree = ""; };
+ 0981F6C620CEC27A00BF7FB5 /* MockRequestSender.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRequestSender.swift; sourceTree = ""; };
+ 0981F6C820CEC3DE00BF7FB5 /* KarhooLoginInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooLoginInteractor.swift; sourceTree = ""; };
+ 0981F6CA20CEE1AD00BF7FB5 /* KarhooLoginInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooLoginInteractorSpec.swift; sourceTree = ""; };
+ 0981F6CC20CEEB1000BF7FB5 /* AuthTokenMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthTokenMock.swift; sourceTree = ""; };
+ 0981F6CE20CFDA9B00BF7FB5 /* KarhooRequestSenderSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooRequestSenderSpec.swift; sourceTree = ""; };
+ 0981F6D420CFE1B300BF7FB5 /* MockLoginInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockLoginInteractor.swift; sourceTree = ""; };
+ 09820E6920D7E5E800782530 /* KarhooRegisterInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooRegisterInteractor.swift; sourceTree = ""; };
+ 09820E6F20D7F07800782530 /* KarhooRegisterInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooRegisterInteractorSpec.swift; sourceTree = ""; };
+ 09820E7120D7F60100782530 /* UserRegistrationMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserRegistrationMock.swift; sourceTree = ""; };
+ 09820E7320D809E000782530 /* MockRegisterInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRegisterInteractor.swift; sourceTree = ""; };
+ 09820E7720D8172D00782530 /* MockLogoutInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockLogoutInteractor.swift; sourceTree = ""; };
+ 098C91F82147CDC500F02DE3 /* GeneralErrorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeneralErrorSpec.swift; sourceTree = ""; };
+ 098C91FA2147FF9900F02DE3 /* RawKarhooErrorFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RawKarhooErrorFactory.swift; sourceTree = ""; };
+ 098D524E23FB14FA00059086 /* AuthLoginMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthLoginMethodSpec.swift; sourceTree = ""; };
+ 098D525123FB157B00059086 /* KarhooAuthRevokeInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAuthRevokeInteractorSpec.swift; sourceTree = ""; };
+ 099202A620DBB1D20009C845 /* Organisation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Organisation.swift; sourceTree = ""; };
+ 09928D1820EFAABA00B9F462 /* CategoryQuoteMapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryQuoteMapper.swift; sourceTree = ""; };
+ 09928D1D20EFAABA00B9F462 /* QuoteService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuoteService.swift; sourceTree = ""; };
+ 09928D1E20EFAABA00B9F462 /* KarhooQuoteService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooQuoteService.swift; sourceTree = ""; };
+ 09928D2020EFAABA00B9F462 /* KarhooQuoteInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooQuoteInteractor.swift; sourceTree = ""; };
+ 09928D2120EFAABA00B9F462 /* QuoteInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuoteInteractor.swift; sourceTree = ""; };
+ 09928D3220EFAAEE00B9F462 /* KarhooQuoteServiceSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooQuoteServiceSpec.swift; sourceTree = ""; };
+ 09928D3420EFAAEE00B9F462 /* KarhooQuoteInteractorSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooQuoteInteractorSpec.swift; sourceTree = ""; };
+ 09928D4120EFAB1300B9F462 /* MockQuoteInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockQuoteInteractor.swift; sourceTree = ""; };
+ 09928D4620EFAB3000B9F462 /* QuoteSearch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuoteSearch.swift; sourceTree = ""; };
+ 09928D4820EFAB9300B9F462 /* Quotes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Quotes.swift; sourceTree = ""; };
+ 099613702408359A00C8C88E /* RevokeMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RevokeMethodSpec.swift; sourceTree = ""; };
+ 0996137224083B6E00C8C88E /* AccessTokenProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccessTokenProvider.swift; sourceTree = ""; };
+ 099AF2F820F8BA0000A2AA57 /* TripState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripState.swift; sourceTree = ""; };
+ 099AF2FA20F8BDF000A2AA57 /* TripInfoMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripInfoMock.swift; sourceTree = ""; };
+ 099DFC6B223BEDF800401542 /* AddPaymentDetailsPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddPaymentDetailsPayload.swift; sourceTree = ""; };
+ 09A18BD821185080009F927B /* KarhooDriverTrackingInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooDriverTrackingInteractorSpec.swift; sourceTree = ""; };
+ 09A56DFB20922D5C00891F02 /* MeetingPointType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingPointType.swift; sourceTree = ""; };
+ 09A56DFF2097162C00891F02 /* LocationDetailsExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationDetailsExt.swift; sourceTree = ""; };
+ 09A9B28B2405901900823FB0 /* Client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Client.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 09A9B28D2405901900823FB0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 09A9B28F2405901900823FB0 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
+ 09A9B2912405901900823FB0 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 09A9B2962405901B00823FB0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 09A9B2992405901B00823FB0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 09A9B29B2405901B00823FB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 09ACCE4F207BBB5E0057B0CC /* QuoteListIdRequestPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteListIdRequestPayload.swift; sourceTree = ""; };
+ 09AF9AA820D174150046D725 /* RefreshToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshToken.swift; sourceTree = ""; };
+ 09AF9AAA20D1751D0046D725 /* RefreshTokenRequestPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTokenRequestPayload.swift; sourceTree = ""; };
+ 09AF9AAC20D17B7D0046D725 /* RefreshTokenMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTokenMock.swift; sourceTree = ""; };
+ 09B204AC21412C3100063632 /* KarhooSDKIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KarhooSDKIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 09B204B021412C3200063632 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 09B204BB2141366C00063632 /* InvalidData.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = InvalidData.json; sourceTree = ""; };
+ 09BDE052212F128700798330 /* MockLocationInfoInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockLocationInfoInteractor.swift; sourceTree = ""; };
+ 09BDE054212F147600798330 /* MockReverseGeocodeInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockReverseGeocodeInteractor.swift; sourceTree = ""; };
+ 09CA785720EE5ABC00D3BB6F /* Fare.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Fare.swift; sourceTree = ""; };
+ 09CE9A4F20FCE87800874092 /* TripBooking.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripBooking.swift; sourceTree = ""; };
+ 09CE9A5320FE1F2E00874092 /* TripSearch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripSearch.swift; sourceTree = ""; };
+ 09CE9A5520FE530700874092 /* TripType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripType.swift; sourceTree = ""; };
+ 09D0757420D826A700F75E32 /* KarhooLogoutInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooLogoutInteractor.swift; sourceTree = ""; };
+ 09D293C122C530170051C455 /* QuoteSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteSource.swift; sourceTree = ""; };
+ 09E40C17E5179F413E52C435 /* Pods-KarhooSDKTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KarhooSDKTests.debug.xcconfig"; path = "Target Support Files/Pods-KarhooSDKTests/Pods-KarhooSDKTests.debug.xcconfig"; sourceTree = ""; };
+ 09EE81E62152585D004B2B09 /* TripSearch.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = TripSearch.json; sourceTree = ""; };
+ 09EE81E92152617B004B2B09 /* QuoteSearchMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteSearchMethodSpec.swift; sourceTree = ""; };
+ 09EE81ED21528791004B2B09 /* QuoteListId.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = QuoteListId.json; sourceTree = ""; };
+ 09EE81EE21528791004B2B09 /* Availability.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Availability.json; sourceTree = ""; };
+ 09EE81EF21528791004B2B09 /* Quotes.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Quotes.json; sourceTree = ""; };
+ 09F79E33223952F900D5B0B8 /* Nonce.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Nonce.swift; sourceTree = ""; };
+ 09F79E352239546E00D5B0B8 /* GetNonceInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetNonceInteractor.swift; sourceTree = ""; };
+ 09F79E372239547A00D5B0B8 /* KarhooGetNonceInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooGetNonceInteractor.swift; sourceTree = ""; };
+ 09F79E39223955FF00D5B0B8 /* NonceRequestPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonceRequestPayload.swift; sourceTree = ""; };
+ 09F79E3B2239564600D5B0B8 /* Payer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Payer.swift; sourceTree = ""; };
+ 09F79E3E2239723200D5B0B8 /* KarhooGetNonceInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooGetNonceInteractorSpec.swift; sourceTree = ""; };
+ 09F79E40223A63DA00D5B0B8 /* NonceRequestPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonceRequestPayload.swift; sourceTree = ""; };
+ 09F79E43223A99E700D5B0B8 /* GetNonceMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetNonceMethodSpec.swift; sourceTree = ""; };
+ 09F79E46223AAA6600D5B0B8 /* MockGetNonceInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockGetNonceInteractor.swift; sourceTree = ""; };
+ 09F79E4A223ABD5A00D5B0B8 /* GetNonce.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = GetNonce.json; sourceTree = ""; };
+ 09F8ABE8214A9B1500E293B7 /* DriverTracking.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = DriverTracking.json; sourceTree = ""; };
+ 09F8ABEB214A9B5700E293B7 /* DriverTrackingMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DriverTrackingMethodSpec.swift; sourceTree = ""; };
+ 09F8ABED214AABBD00E293B7 /* NetworkStubFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkStubFactory.swift; sourceTree = ""; };
+ 09F8ABF5214BF4F200E293B7 /* PlaceSearchMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceSearchMethodSpec.swift; sourceTree = ""; };
+ 09F8ABF7214BF69400E293B7 /* Places.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Places.json; sourceTree = ""; };
+ 09F8ABFA214FB4C900E293B7 /* PaymentSDKTokenMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentSDKTokenMethod.swift; sourceTree = ""; };
+ 09F8ABFC214FB61100E293B7 /* PaymentSDKToken.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = PaymentSDKToken.json; sourceTree = ""; };
+ 09F8ABFF214FDF4200E293B7 /* LoginMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginMethodSpec.swift; sourceTree = ""; };
+ 09F8AC02214FE6DF00E293B7 /* UnauthorisedUserInfo.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = UnauthorisedUserInfo.json; sourceTree = ""; };
+ 09F8AC03214FE6DF00E293B7 /* AuthToken.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AuthToken.json; sourceTree = ""; };
+ 09F8AC04214FE6DF00E293B7 /* AuthorisedUserInfo.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AuthorisedUserInfo.json; sourceTree = ""; };
+ 09F90F902150FA2C003BC867 /* PasswordResetMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordResetMethodSpec.swift; sourceTree = ""; };
+ 09F90F932151008C003BC867 /* CancelTripMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancelTripMethodSpec.swift; sourceTree = ""; };
+ 13B19E142647D37690651605 /* Pods-KarhooSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KarhooSDK.release.xcconfig"; path = "Target Support Files/Pods-KarhooSDK/Pods-KarhooSDK.release.xcconfig"; sourceTree = ""; };
+ 233DB46623433EC200BCBC3F /* MockUpdateUserDetailsInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockUpdateUserDetailsInteractor.swift; sourceTree = ""; };
+ 233DB46823433F0400BCBC3F /* UserUpdateMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserUpdateMock.swift; sourceTree = ""; };
+ 2359B45A234251FA008433A1 /* KarhooUpdateUserDetailsInteractorSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooUpdateUserDetailsInteractorSpec.swift; sourceTree = ""; };
+ 2359B45D2342522E008433A1 /* KarhooUpdateUserDetailsInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooUpdateUserDetailsInteractor.swift; sourceTree = ""; };
+ 2359B45E2342522E008433A1 /* UpdateUserDetailsInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateUserDetailsInteractor.swift; sourceTree = ""; };
+ 2359B46123425299008433A1 /* UserUpdatePayload.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserUpdatePayload.swift; sourceTree = ""; };
+ 237E0C562347823A00798AA0 /* FareService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FareService.swift; sourceTree = ""; };
+ 237E0C58234782B400798AA0 /* KarhooFareService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooFareService.swift; sourceTree = ""; };
+ 237E0C5B2347838600798AA0 /* FareInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FareInteractor.swift; sourceTree = ""; };
+ 237E0C5D234783BE00798AA0 /* KarhooFareInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooFareInteractor.swift; sourceTree = ""; };
+ 237E0C602347852500798AA0 /* Fare.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = Fare.json; sourceTree = ""; };
+ 237E0C63234788F000798AA0 /* KarhooFareServiceSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooFareServiceSpec.swift; sourceTree = ""; };
+ 237E0C662347897B00798AA0 /* MockFareInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockFareInteractor.swift; sourceTree = ""; };
+ 237E0C682347931D00798AA0 /* KarhooFareInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooFareInteractorSpec.swift; sourceTree = ""; };
+ 2742100A1C88263575619D5D /* KarhooHeaderProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooHeaderProvider.swift; sourceTree = ""; };
+ 2742119D00DE30C9E3590055 /* HeaderProviderSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderProviderSpec.swift; sourceTree = ""; };
+ 2742136485E56D7E2AEF11AB /* CredentialParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CredentialParser.swift; sourceTree = ""; };
+ 274213D38799FE5D607435B2 /* HeaderProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderProvider.swift; sourceTree = ""; };
+ 274215B1B4ADECE9D9CE2EA2 /* QuoteListMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuoteListMock.swift; sourceTree = ""; };
+ 27421639BE5688EF2127E119 /* UserRegistration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserRegistration.swift; sourceTree = ""; };
+ 274216467197574CB8746A19 /* AvailabilityInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AvailabilityInteractor.swift; sourceTree = ""; };
+ 274217092FA03DAFAD7776E1 /* QuoteListId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuoteListId.swift; sourceTree = ""; };
+ 27421A91EE9BE3C99E54F313 /* UserDataStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDataStore.swift; sourceTree = ""; };
+ 27421AB287B1A33F00AC4119 /* UserInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserInfo.swift; sourceTree = ""; };
+ 27421CA2A060894A7D859830 /* KarhooAvailabilityInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooAvailabilityInteractor.swift; sourceTree = ""; };
+ 27421CBA8C72F37A4F143580 /* HeaderConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderConstants.swift; sourceTree = ""; };
+ 27421D16D44DEC18A835BDB0 /* DriverTrackingInfoMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DriverTrackingInfoMock.swift; sourceTree = ""; };
+ 27421D9042A4F39DF7D69941 /* QuoteMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuoteMock.swift; sourceTree = ""; };
+ 27421E2976A85D5A0FB95991 /* Categories.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Categories.swift; sourceTree = ""; };
+ 27421EDE7F5329B3837E9DFC /* APIEndpoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIEndpoint.swift; sourceTree = ""; };
+ 31005DA61FCEE699006D2A7D /* RequestTesting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestTesting.swift; sourceTree = ""; };
+ 310D44AD1FA1F8890038BFDA /* TimestampFormatterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimestampFormatterSpec.swift; sourceTree = ""; };
+ 312909E11FA0E0C900F5147D /* TimestampFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimestampFormatter.swift; sourceTree = ""; };
+ 312B1AAB1FA097F900BB27CF /* BatteryMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatteryMonitor.swift; sourceTree = ""; };
+ 312B1AAD1FA0982800BB27CF /* NetworkConnectionTypeProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkConnectionTypeProvider.swift; sourceTree = ""; };
+ 312CDFB51F6A984A006F48DD /* AppStateNotifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppStateNotifier.swift; sourceTree = ""; };
+ 313DC2D020221A0800D9DD1B /* Driver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Driver.swift; sourceTree = ""; };
+ 313DC2DC20221D0100D9DD1B /* Vehicle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Vehicle.swift; sourceTree = ""; };
+ 313DC2E320221E7B00D9DD1B /* Place.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Place.swift; sourceTree = ""; };
+ 313DC2EF20221FCE00D9DD1B /* QuoteType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuoteType.swift; sourceTree = ""; };
+ 313DC2F120221FDB00D9DD1B /* Quote.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Quote.swift; sourceTree = ""; };
+ 3150CE2B1F9F7B6000DE6D62 /* UserLocationProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserLocationProvider.swift; sourceTree = ""; };
+ 3150CE2E1F9F7BBA00DE6D62 /* UserLocationProviderSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserLocationProviderSpec.swift; sourceTree = ""; };
+ 3150CE301F9F7D8E00DE6D62 /* MockCLLocationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockCLLocationManager.swift; sourceTree = ""; };
+ 317210C11FFD2476004CE129 /* MockAppStateNotifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAppStateNotifier.swift; sourceTree = ""; };
+ 317210CE1FFE7330004CE129 /* CredentialsSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CredentialsSpec.swift; sourceTree = ""; };
+ 317210D01FFE86B4004CE129 /* KarhooRefreshTokenInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooRefreshTokenInteractorSpec.swift; sourceTree = ""; };
+ 317610EB1FD84B1E00D2DB75 /* KarhooNetworkDateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooNetworkDateFormatter.swift; sourceTree = ""; };
+ 317610ED1FD84CD200D2DB75 /* KarhooNetworkDateFormatterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooNetworkDateFormatterSpec.swift; sourceTree = ""; };
+ 317610F11FD86A9600D2DB75 /* KarhooAvailabilityService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAvailabilityService.swift; sourceTree = ""; };
+ 317610F31FD9855D00D2DB75 /* KarhooAvailabilityServiceSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAvailabilityServiceSpec.swift; sourceTree = ""; };
+ 31904CD31FFFC04400BA7402 /* KarhooRefreshTokenInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooRefreshTokenInteractor.swift; sourceTree = ""; };
+ 31904CD51FFFE26F00BA7402 /* TokenRefreshingHttpClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenRefreshingHttpClient.swift; sourceTree = ""; };
+ 31904CD72003800000BA7402 /* TokenRefreshingHttpClientSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenRefreshingHttpClientSpec.swift; sourceTree = ""; };
+ 31904CD9200380A400BA7402 /* MockAccessTokenProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAccessTokenProvider.swift; sourceTree = ""; };
+ 31904CDB2003EFFE00BA7402 /* MockNetworkRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockNetworkRequest.swift; sourceTree = ""; };
+ 31A1AD621F39E1E200BFE24B /* MockHttpClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockHttpClient.swift; sourceTree = ""; };
+ 31ACC66D1FF566C400E8B24F /* KarhooTimingScheduler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooTimingScheduler.swift; sourceTree = ""; };
+ 31EC3F601F9E4C24008CD637 /* DeviceIdentifierProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceIdentifierProvider.swift; sourceTree = ""; };
+ 31EC3F641F9E50AD008CD637 /* AnalyticsPayloadBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsPayloadBuilder.swift; sourceTree = ""; };
+ 31F916892023559700104777 /* AnalyticsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsService.swift; sourceTree = ""; };
+ 31FC37FE1F459A780012A57E /* DefaultAuthTokenSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultAuthTokenSpec.swift; sourceTree = ""; };
+ 400555702350AEDC008AD78F /* TripFare.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TripFare.swift; sourceTree = ""; };
+ 400BB94223F3027A00AEAAFD /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; };
+ 400BB94523F3066500AEAAFD /* KarhooAuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAuthService.swift; sourceTree = ""; };
+ 400BB94723F308BE00AEAAFD /* AuthLoginInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthLoginInteractor.swift; sourceTree = ""; };
+ 400BB94A23F308F100AEAAFD /* KarhooAuthLoginInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAuthLoginInteractor.swift; sourceTree = ""; };
+ 4032BD0D23FC47B600C2409B /* AuthUserInfo.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AuthUserInfo.json; sourceTree = ""; };
+ 4032BD1123FC491500C2409B /* AuthExchangeToken.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AuthExchangeToken.json; sourceTree = ""; };
+ 4032BD1323FC5B2300C2409B /* KarhooAuthLoginInteractorSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAuthLoginInteractorSpec.swift; sourceTree = ""; };
+ 404484E123FB00A900CD0347 /* KarhooAuthRevokeInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAuthRevokeInteractor.swift; sourceTree = ""; };
+ 4095037A234CCF5A00C6F7A5 /* FareMethodSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FareMethodSpec.swift; sourceTree = ""; };
+ 40F4058E2334C50000D384A6 /* LocationInfoSearch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationInfoSearch.swift; sourceTree = ""; };
+ 40FBF606240EAFD9007F6A54 /* AuthHeaderKeys.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthHeaderKeys.swift; sourceTree = ""; };
+ 40FBF608240FBB2E007F6A54 /* AuthRequestsTesterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthRequestsTesterViewController.swift; sourceTree = ""; };
+ 4310E4701E9928C800625A0E /* MockBroadcaster.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBroadcaster.swift; sourceTree = ""; };
+ 4310E47F1E99395D00625A0E /* AddressService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddressService.swift; sourceTree = ""; };
+ 4310E4801E99395D00625A0E /* AvailabilityService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = AvailabilityService.swift; sourceTree = ""; };
+ 4310E48A1E99395D00625A0E /* Karhoo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Karhoo.swift; sourceTree = ""; };
+ 4310E4B61E99395D00625A0E /* Broadcaster.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Broadcaster.swift; sourceTree = ""; };
+ 4310E4B71E99395D00625A0E /* WeakReferenceWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakReferenceWrapper.swift; sourceTree = ""; };
+ 4310E4E01E99397A00625A0E /* UserDataStoreSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDataStoreSpec.swift; sourceTree = ""; };
+ 4310E4E11E99397A00625A0E /* KarhooSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooSpec.swift; sourceTree = ""; };
+ 4310E5031E99397A00625A0E /* BroadcasterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BroadcasterSpec.swift; sourceTree = ""; };
+ 4310E5041E99397A00625A0E /* WeakReferenceWrapperSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakReferenceWrapperSpec.swift; sourceTree = ""; };
+ 431740CD1ECB257A00CD217F /* KarhooUserServiceSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooUserServiceSpec.swift; sourceTree = ""; };
+ 4322B48B1E69A57B002108D5 /* MockAnalyticsService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockAnalyticsService.swift; sourceTree = ""; };
+ 43288A5E1EF3BEB10079506B /* DriverTrackingInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DriverTrackingInfo.swift; sourceTree = ""; };
+ 432D47831ECC31940085DBBE /* KarhooLogoutInteractorSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooLogoutInteractorSpec.swift; sourceTree = ""; };
+ 432D47891ECC80E10085DBBE /* Result.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Result.swift; sourceTree = ""; };
+ 43466AE71EDECEED0087BC51 /* Credentials.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; };
+ 434B58421E434E5F009E8FB8 /* MockUserDataStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockUserDataStore.swift; sourceTree = ""; };
+ 434D30A81EE150BA00CEE07B /* CredentiasParserSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CredentiasParserSpec.swift; sourceTree = ""; };
+ 43584E6D1EE54D6400B4DFAB /* TripInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TripInfo.swift; sourceTree = ""; };
+ 43584E791EE56EDC00B4DFAB /* Errors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; };
+ 43584E861EE590DE00B4DFAB /* Context.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Context.swift; sourceTree = ""; };
+ 43584E881EE590FC00B4DFAB /* ContextSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContextSpec.swift; sourceTree = ""; };
+ 43584E8C1EE591C700B4DFAB /* ObjectTestFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectTestFactory.swift; sourceTree = ""; };
+ 43584E8E1EE5960700B4DFAB /* TripService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TripService.swift; sourceTree = ""; };
+ 43584E921EE5993700B4DFAB /* KarhooTripServiceSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooTripServiceSpec.swift; sourceTree = ""; };
+ 43584E9E1EE6A3D400B4DFAB /* MockUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockUserDefaults.swift; sourceTree = ""; };
+ 43588C651EBB675100D03765 /* TestUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestUtil.swift; sourceTree = ""; };
+ 4371C57B1EB0E7F70059429D /* KarhooAddressService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooAddressService.swift; sourceTree = ""; };
+ 4371C5831EB0E7F70059429D /* AnalyticsConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyticsConstants.swift; sourceTree = ""; };
+ 4371C5841EB0E7F70059429D /* KarhooAnalyticsService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooAnalyticsService.swift; sourceTree = ""; };
+ 4371C5861EB0E7F70059429D /* AnalyticsProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyticsProvider.swift; sourceTree = ""; };
+ 4371C5871EB0E7F70059429D /* LogAnalyticsProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogAnalyticsProvider.swift; sourceTree = ""; };
+ 4371C5A91EB0E8070059429D /* KarhooAddressServiceSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooAddressServiceSpec.swift; sourceTree = "