commit 4b53ce0746b84f33c157f54fd9340e6d0b95ca18 Author: Vlad Date: Sun Mar 29 21:20:04 2020 +0300 Initial Project diff --git a/.gitattributes b/.gitattributes new file mode 100755 index 0000000..2342311 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.pbxproj merge=union +*.strings text diff diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..19f7e8d --- /dev/null +++ b/.gitignore @@ -0,0 +1,74 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint + +## Obj-C/Swift specific +*.hmap +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +Pods/ + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. + +Carthage/Checkouts +Carthage/Build + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output + +# Touch Instinct custom +Downloads/ +fastlane/README.md +Templates/ +cpd-output.xml +*IDEWorkspaceChecks.plist diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..33d276a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "build-scripts"] + path = build-scripts + url = git@github.com:TouchInstinct/BuildScripts.git diff --git a/Brewfile b/Brewfile new file mode 100644 index 0000000..5b4394a --- /dev/null +++ b/Brewfile @@ -0,0 +1,3 @@ +tap "yonaskolb/XcodeGen", "https://github.com/yonaskolb/XcodeGen.git" +brew "XcodeGen" +brew "carthage" diff --git a/Brewfile.lock.json b/Brewfile.lock.json new file mode 100644 index 0000000..ecc3145 --- /dev/null +++ b/Brewfile.lock.json @@ -0,0 +1,64 @@ +{ + "entries": { + "tap": { + "yonaskolb/xcodegen": { + "revision": "d3a3640fcbb39f2959d1f48778b5dae2ed15f5ba", + "options": { + "clone_target": "https://github.com/yonaskolb/XcodeGen.git" + } + } + }, + "brew": { + "xcodegen": { + "version": "2.13.1", + "bottle": { + "cellar": ":any_skip_relocation", + "prefix": "/usr/local", + "files": { + "catalina": { + "url": "https://homebrew.bintray.com/bottles/xcodegen-2.13.1.catalina.bottle.tar.gz", + "sha256": "941158e672e7f8e90b94ce3d371bf8728a5d568e224221c5b87cccf03bc282d9" + }, + "mojave": { + "url": "https://homebrew.bintray.com/bottles/xcodegen-2.13.1.mojave.bottle.tar.gz", + "sha256": "97849ee1115ee2665b72c3423704c6ad1368df496a3cf85d4fd24780b8d02952" + } + } + } + }, + "carthage": { + "version": "0.34.0", + "bottle": { + "cellar": ":any_skip_relocation", + "prefix": "/usr/local", + "files": { + "catalina": { + "url": "https://homebrew.bintray.com/bottles/carthage-0.34.0.catalina.bottle.tar.gz", + "sha256": "e3498577798d41c08522e1478e125c2c07fb1c1d1b9aadc447f9d028ec6b3e83" + }, + "mojave": { + "url": "https://homebrew.bintray.com/bottles/carthage-0.34.0.mojave.bottle.tar.gz", + "sha256": "42ec7f8f09fa1701634ba5f8f162778102db7d03a114320296d3b58df8495a6a" + }, + "high_sierra": { + "url": "https://homebrew.bintray.com/bottles/carthage-0.34.0.high_sierra.bottle.tar.gz", + "sha256": "948811ce4d294c0deee78142c5606a6277b2436afe31f502fc4681acc62428ee" + } + } + } + } + } + }, + "system": { + "macos": { + "catalina": { + "HOMEBREW_VERSION": "2.2.6", + "HOMEBREW_PREFIX": "/usr/local", + "Homebrew/homebrew-core": "6c5d006cf56eb131e90995e7f7cc04dca6355a9c", + "CLT": "11.3.1.0.1.1576735732", + "Xcode": "11.3.1", + "macOS": "10.15.4" + } + } + } +} diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..b8087cb --- /dev/null +++ b/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' +gem 'mustache' +gem 'generamba' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..1a901ea --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,53 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (2.3.6) + activesupport (5.1.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + claide (1.0.2) + cocoapods-core (1.0.1) + activesupport (>= 4.0.2) + fuzzy_match (~> 2.0.4) + nap (~> 1.0) + colored (1.2) + concurrent-ruby (1.0.5) + fuzzy_match (2.0.4) + generamba (1.4.1) + cocoapods-core (= 1.0.1) + git (= 1.2.9.1) + liquid (= 4.0.0) + terminal-table (= 1.4.5) + thor (= 0.19.1) + xcodeproj (= 1.4.2) + git (1.2.9.1) + i18n (1.0.0) + concurrent-ruby (~> 1.0) + liquid (4.0.0) + minitest (5.11.3) + mustache (1.0.5) + nanaimo (0.2.4) + nap (1.1.0) + terminal-table (1.4.5) + thor (0.19.1) + thread_safe (0.3.6) + tzinfo (1.2.5) + thread_safe (~> 0.1) + xcodeproj (1.4.2) + CFPropertyList (~> 2.3.3) + activesupport (>= 3) + claide (>= 1.0.1, < 2.0) + colored (~> 1.2) + nanaimo (~> 0.2.3) + +PLATFORMS + ruby + +DEPENDENCIES + generamba + mustache + +BUNDLED WITH + 1.16.1 diff --git a/build-scripts b/build-scripts new file mode 160000 index 0000000..1f66650 --- /dev/null +++ b/build-scripts @@ -0,0 +1 @@ +Subproject commit 1f6665086b45a041695c1d52a8f8376bd8cb925e diff --git a/fastlane/Fastfile b/fastlane/Fastfile new file mode 100644 index 0000000..dcba894 --- /dev/null +++ b/fastlane/Fastfile @@ -0,0 +1,17 @@ +import "../build-scripts/xcode/commonFastfile" + +lane :StandardDebug do |options| + buildConfiguration(options) +end + +lane :StandardRelease do |options| + buildConfiguration(options) +end + +lane :EnterpriseDebug do |options| + buildConfiguration(options) +end + +lane :EnterpriseRelease do |options| + buildConfiguration(options) +end diff --git a/testapp/Podfile b/testapp/Podfile new file mode 100644 index 0000000..a797fc7 --- /dev/null +++ b/testapp/Podfile @@ -0,0 +1,8 @@ +source 'https://github.com/CocoaPods/Specs' +source 'https://github.com/TouchInstinct/Podspecs.git' + +platform :ios, '10.0' + +target 'testapp' do + pod 'Firebase/Crashlytics' +end diff --git a/testapp/Podfile.lock b/testapp/Podfile.lock new file mode 100644 index 0000000..8e4318e --- /dev/null +++ b/testapp/Podfile.lock @@ -0,0 +1,82 @@ +PODS: + - Firebase/CoreOnly (6.21.0): + - FirebaseCore (= 6.6.5) + - Firebase/Crashlytics (6.21.0): + - Firebase/CoreOnly + - FirebaseCrashlytics (~> 4.0.0-beta.6) + - FirebaseAnalyticsInterop (1.5.0) + - FirebaseCore (6.6.5): + - FirebaseCoreDiagnostics (~> 1.2) + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - FirebaseCoreDiagnostics (1.2.2): + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleDataTransportCCTSupport (~> 2.0) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - nanopb (~> 0.3.901) + - FirebaseCoreDiagnosticsInterop (1.2.0) + - FirebaseCrashlytics (4.0.0-beta.6): + - FirebaseAnalyticsInterop (~> 1.2) + - FirebaseCore (~> 6.6) + - FirebaseInstallations (~> 1.1) + - GoogleDataTransport (~> 5.1) + - GoogleDataTransportCCTSupport (>= 2.0.1, ~> 2.0) + - nanopb (~> 0.3.901) + - PromisesObjC (~> 1.2) + - FirebaseInstallations (1.1.1): + - FirebaseCore (~> 6.6) + - GoogleUtilities/UserDefaults (~> 6.5) + - PromisesObjC (~> 1.2) + - GoogleDataTransport (5.1.0) + - GoogleDataTransportCCTSupport (2.0.1): + - GoogleDataTransport (~> 5.1) + - nanopb (~> 0.3.901) + - GoogleUtilities/Environment (6.5.2) + - GoogleUtilities/Logger (6.5.2): + - GoogleUtilities/Environment + - GoogleUtilities/UserDefaults (6.5.2): + - GoogleUtilities/Logger + - nanopb (0.3.9011): + - nanopb/decode (= 0.3.9011) + - nanopb/encode (= 0.3.9011) + - nanopb/decode (0.3.9011) + - nanopb/encode (0.3.9011) + - PromisesObjC (1.2.8) + +DEPENDENCIES: + - Firebase/Crashlytics + +SPEC REPOS: + https://github.com/CocoaPods/Specs.git: + - Firebase + - FirebaseAnalyticsInterop + - FirebaseCore + - FirebaseCoreDiagnostics + - FirebaseCoreDiagnosticsInterop + - FirebaseCrashlytics + - FirebaseInstallations + - GoogleDataTransport + - GoogleDataTransportCCTSupport + - GoogleUtilities + - nanopb + - PromisesObjC + +SPEC CHECKSUMS: + Firebase: f378c80340dd41c0ad0914af740c021eb282a04b + FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae + FirebaseCore: 9f495d3afacb7b558711e6218ebb14b1c51b5802 + FirebaseCoreDiagnostics: e9b4cd8ba60dee0f2d13347332e4b7898cca5b61 + FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 + FirebaseCrashlytics: b9e729da8b80d9c45f234f791a73b5fe647d4c31 + FirebaseInstallations: acb3216eb9784d3b1d2d2d635ff74fa892cc0c44 + GoogleDataTransport: b29a21d813e906014ca16c00897827e40e4a24ab + GoogleDataTransportCCTSupport: 6f15a89b0ca35d6fa523e1f752ef818588885988 + GoogleUtilities: ad0f3b691c67909d03a3327cc205222ab8f42e0e + nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd + PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6 + +PODFILE CHECKSUM: 9e07a86842a5d30e0e0fadd6263cf15aeec8b3ba + +COCOAPODS: 1.9.1 diff --git a/testapp/testapp.xcodeproj/project.pbxproj b/testapp/testapp.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8765229 --- /dev/null +++ b/testapp/testapp.xcodeproj/project.pbxproj @@ -0,0 +1,431 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 4CEDA81A243116E2009937F6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA819243116E2009937F6 /* AppDelegate.swift */; }; + 4CEDA81C243116E2009937F6 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA81B243116E2009937F6 /* SceneDelegate.swift */; }; + 4CEDA81E243116E2009937F6 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA81D243116E2009937F6 /* ViewController.swift */; }; + 4CEDA821243116E2009937F6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA81F243116E2009937F6 /* Main.storyboard */; }; + 4CEDA823243116E4009937F6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA822243116E4009937F6 /* Assets.xcassets */; }; + 4CEDA826243116E4009937F6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA824243116E4009937F6 /* LaunchScreen.storyboard */; }; + 4CEDA82E24311BB7009937F6 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA82D24311BB7009937F6 /* GoogleService-Info.plist */; }; + 4CEDA83224311D39009937F6 /* FirebaseConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA83124311D39009937F6 /* FirebaseConfigurator.swift */; }; + 5BA51FF56166E220C9EA9AE5 /* libPods-testapp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 51A495AFB846F07131234E07 /* libPods-testapp.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 4CEDA816243116E2009937F6 /* testapp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testapp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4CEDA819243116E2009937F6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 4CEDA81B243116E2009937F6 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 4CEDA81D243116E2009937F6 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 4CEDA820243116E2009937F6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 4CEDA822243116E4009937F6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 4CEDA825243116E4009937F6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 4CEDA827243116E4009937F6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4CEDA82D24311BB7009937F6 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + 4CEDA83124311D39009937F6 /* FirebaseConfigurator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseConfigurator.swift; sourceTree = ""; }; + 51A495AFB846F07131234E07 /* libPods-testapp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-testapp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 850F47AFCB96FB78E12B45A6 /* Pods-testapp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testapp.release.xcconfig"; path = "Target Support Files/Pods-testapp/Pods-testapp.release.xcconfig"; sourceTree = ""; }; + D84BC60B89033587ECDE53FF /* Pods-testapp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testapp.debug.xcconfig"; path = "Target Support Files/Pods-testapp/Pods-testapp.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4CEDA813243116E2009937F6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BA51FF56166E220C9EA9AE5 /* libPods-testapp.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4CEDA80D243116E1009937F6 = { + isa = PBXGroup; + children = ( + 4CEDA818243116E2009937F6 /* testapp */, + 4CEDA817243116E2009937F6 /* Products */, + 600902CE440FA2AFD0C2664F /* Pods */, + C2812CB4A734C6AFB671545A /* Frameworks */, + ); + sourceTree = ""; + }; + 4CEDA817243116E2009937F6 /* Products */ = { + isa = PBXGroup; + children = ( + 4CEDA816243116E2009937F6 /* testapp.app */, + ); + name = Products; + sourceTree = ""; + }; + 4CEDA818243116E2009937F6 /* testapp */ = { + isa = PBXGroup; + children = ( + 4CEDA82F24311BC0009937F6 /* Resources */, + 4CEDA819243116E2009937F6 /* AppDelegate.swift */, + 4CEDA81B243116E2009937F6 /* SceneDelegate.swift */, + 4CEDA81D243116E2009937F6 /* ViewController.swift */, + 4CEDA81F243116E2009937F6 /* Main.storyboard */, + 4CEDA822243116E4009937F6 /* Assets.xcassets */, + 4CEDA824243116E4009937F6 /* LaunchScreen.storyboard */, + 4CEDA827243116E4009937F6 /* Info.plist */, + 4CEDA83124311D39009937F6 /* FirebaseConfigurator.swift */, + ); + path = testapp; + sourceTree = ""; + }; + 4CEDA82F24311BC0009937F6 /* Resources */ = { + isa = PBXGroup; + children = ( + 4CEDA82D24311BB7009937F6 /* GoogleService-Info.plist */, + ); + path = Resources; + sourceTree = ""; + }; + 600902CE440FA2AFD0C2664F /* Pods */ = { + isa = PBXGroup; + children = ( + D84BC60B89033587ECDE53FF /* Pods-testapp.debug.xcconfig */, + 850F47AFCB96FB78E12B45A6 /* Pods-testapp.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + C2812CB4A734C6AFB671545A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 51A495AFB846F07131234E07 /* libPods-testapp.a */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4CEDA815243116E2009937F6 /* testapp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4CEDA82A243116E4009937F6 /* Build configuration list for PBXNativeTarget "testapp" */; + buildPhases = ( + 8E38795C80638C99DA8BB464 /* [CP] Check Pods Manifest.lock */, + 4CEDA812243116E2009937F6 /* Sources */, + 4CEDA814243116E2009937F6 /* Resources */, + 4CEDA813243116E2009937F6 /* Frameworks */, + 4CEDA83024311C33009937F6 /* Firebase */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testapp; + productName = testapp; + productReference = 4CEDA816243116E2009937F6 /* testapp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4CEDA80E243116E1009937F6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = touchin; + TargetAttributes = { + 4CEDA815243116E2009937F6 = { + CreatedOnToolsVersion = 11.3.1; + }; + }; + }; + buildConfigurationList = 4CEDA811243116E1009937F6 /* Build configuration list for PBXProject "testapp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 4CEDA80D243116E1009937F6; + productRefGroup = 4CEDA817243116E2009937F6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4CEDA815243116E2009937F6 /* testapp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4CEDA814243116E2009937F6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4CEDA826243116E4009937F6 /* LaunchScreen.storyboard in Resources */, + 4CEDA82E24311BB7009937F6 /* GoogleService-Info.plist in Resources */, + 4CEDA823243116E4009937F6 /* Assets.xcassets in Resources */, + 4CEDA821243116E2009937F6 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 4CEDA83024311C33009937F6 /* Firebase */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 8; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "$(GOOGLE_SERVICE_INFO_PLIST_PATH)", + ); + name = Firebase; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/FirebaseCrashlytics/run\" --google-service-plist ${GOOGLE_SERVICE_INFO_PLIST_PATH}\n"; + }; + 8E38795C80638C99DA8BB464 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-testapp-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4CEDA812243116E2009937F6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4CEDA81E243116E2009937F6 /* ViewController.swift in Sources */, + 4CEDA83224311D39009937F6 /* FirebaseConfigurator.swift in Sources */, + 4CEDA81A243116E2009937F6 /* AppDelegate.swift in Sources */, + 4CEDA81C243116E2009937F6 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 4CEDA81F243116E2009937F6 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 4CEDA820243116E2009937F6 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 4CEDA824243116E4009937F6 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 4CEDA825243116E4009937F6 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 4CEDA828243116E4009937F6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 4CEDA829243116E4009937F6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 4CEDA82B243116E4009937F6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D84BC60B89033587ECDE53FF /* Pods-testapp.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + GOOGLE_SERVICE_INFO_PLIST_PATH = "/Users/vladsuhomlinov/TestApp/testapp/testapp/Resources/GoogleService-Info.plist"; + INFOPLIST_FILE = testapp/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ru.touchin.testapp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 4CEDA82C243116E4009937F6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 850F47AFCB96FB78E12B45A6 /* Pods-testapp.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + GOOGLE_SERVICE_INFO_PLIST_PATH = "/Users/vladsuhomlinov/TestApp/testapp/testapp/Resources/GoogleService-Info.plist"; + INFOPLIST_FILE = testapp/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = ru.touchin.testapp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4CEDA811243116E1009937F6 /* Build configuration list for PBXProject "testapp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4CEDA828243116E4009937F6 /* Debug */, + 4CEDA829243116E4009937F6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4CEDA82A243116E4009937F6 /* Build configuration list for PBXNativeTarget "testapp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4CEDA82B243116E4009937F6 /* Debug */, + 4CEDA82C243116E4009937F6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 4CEDA80E243116E1009937F6 /* Project object */; +} diff --git a/testapp/testapp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/testapp/testapp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..aeff185 --- /dev/null +++ b/testapp/testapp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/testapp/testapp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/testapp/testapp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/testapp/testapp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/testapp/testapp.xcodeproj/project.xcworkspace/xcuserdata/vladsuhomlinov.xcuserdatad/UserInterfaceState.xcuserstate b/testapp/testapp.xcodeproj/project.xcworkspace/xcuserdata/vladsuhomlinov.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..bb2f85c Binary files /dev/null and b/testapp/testapp.xcodeproj/project.xcworkspace/xcuserdata/vladsuhomlinov.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/testapp/testapp.xcodeproj/xcuserdata/vladsuhomlinov.xcuserdatad/xcschemes/xcschememanagement.plist b/testapp/testapp.xcodeproj/xcuserdata/vladsuhomlinov.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ca0d89d --- /dev/null +++ b/testapp/testapp.xcodeproj/xcuserdata/vladsuhomlinov.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + testapp.xcscheme_^#shared#^_ + + orderHint + 13 + + + + diff --git a/testapp/testapp.xcworkspace/contents.xcworkspacedata b/testapp/testapp.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..3708f3d --- /dev/null +++ b/testapp/testapp.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/testapp/testapp/AppDelegate.swift b/testapp/testapp/AppDelegate.swift new file mode 100644 index 0000000..cc86b58 --- /dev/null +++ b/testapp/testapp/AppDelegate.swift @@ -0,0 +1,24 @@ +// +// AppDelegate.swift +// testapp +// +// Created by Vlad Suhomlinov on 29.03.2020. +// Copyright © 2020 touchin. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + + FirebaseConfigurator.configure() + + return true + } +} + diff --git a/testapp/testapp/Assets.xcassets/AppIcon.appiconset/Contents.json b/testapp/testapp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/testapp/testapp/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/testapp/testapp/Assets.xcassets/Contents.json b/testapp/testapp/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/testapp/testapp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/testapp/testapp/Base.lproj/LaunchScreen.storyboard b/testapp/testapp/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/testapp/testapp/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testapp/testapp/Base.lproj/Main.storyboard b/testapp/testapp/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/testapp/testapp/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testapp/testapp/FirebaseConfigurator.swift b/testapp/testapp/FirebaseConfigurator.swift new file mode 100644 index 0000000..49fc9fc --- /dev/null +++ b/testapp/testapp/FirebaseConfigurator.swift @@ -0,0 +1,22 @@ +import Firebase + +enum FirebaseConfigurator { + + private static var resourceName: String { + return "GoogleService-Info" + } + + static func configure() { + guard let filePath = Bundle.main.path(forResource: resourceName, ofType: .fileExtension), + let options = FirebaseOptions(contentsOfFile: filePath) else { + return + } + + FirebaseApp.configure(options: options) + } +} + +// MARK: - Constants +private extension String { + static let fileExtension = "plist" +} diff --git a/testapp/testapp/Info.plist b/testapp/testapp/Info.plist new file mode 100644 index 0000000..2a3483c --- /dev/null +++ b/testapp/testapp/Info.plist @@ -0,0 +1,64 @@ + + + + + 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 + UISceneStoryboardFile + Main + + + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/testapp/testapp/Resources/GoogleService-Info.plist b/testapp/testapp/Resources/GoogleService-Info.plist new file mode 100644 index 0000000..b80f8d5 --- /dev/null +++ b/testapp/testapp/Resources/GoogleService-Info.plist @@ -0,0 +1,36 @@ + + + + + CLIENT_ID + 1009875821676-2s1d4tjn9dojsp3ao31cicm174mjehc5.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.1009875821676-2s1d4tjn9dojsp3ao31cicm174mjehc5 + API_KEY + AIzaSyDSUnGsmBO5kvfTeVDJywsyigcqqWSmuzY + GCM_SENDER_ID + 1009875821676 + PLIST_VERSION + 1 + BUNDLE_ID + ru.touchin.testapp + PROJECT_ID + ti-testapp + STORAGE_BUCKET + ti-testapp.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:1009875821676:ios:3b95cafada68fd3a07a449 + DATABASE_URL + https://ti-testapp.firebaseio.com + + \ No newline at end of file diff --git a/testapp/testapp/SceneDelegate.swift b/testapp/testapp/SceneDelegate.swift new file mode 100644 index 0000000..32a4b90 --- /dev/null +++ b/testapp/testapp/SceneDelegate.swift @@ -0,0 +1,53 @@ +// +// SceneDelegate.swift +// testapp +// +// Created by Vlad Suhomlinov on 29.03.2020. +// Copyright © 2020 touchin. All rights reserved. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + 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 _ = (scene as? UIWindowScene) else { return } + } + + 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/testapp/testapp/ViewController.swift b/testapp/testapp/ViewController.swift new file mode 100644 index 0000000..a1e0a66 --- /dev/null +++ b/testapp/testapp/ViewController.swift @@ -0,0 +1,21 @@ +// +// ViewController.swift +// testapp +// +// Created by Vlad Suhomlinov on 29.03.2020. +// Copyright © 2020 touchin. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + +