From 062b827fb92b90c4b170bc7f1e8159aeb21fe536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Rupe=CC=81rez?= Date: Thu, 16 Nov 2017 18:51:31 +0100 Subject: [PATCH] Added LogManager using XCGLogger --- Archit.xcodeproj/project.pbxproj | 49 +- Archit/Source/Managers/LogManager.swift | 28 + Core/Tasks/ServiceTask.swift | 14 +- Podfile | 1 + Podfile.lock | 12 +- Pods/Manifest.lock | 12 +- Pods/ObjcExceptionBridging/LICENSE.txt | 21 + Pods/ObjcExceptionBridging/README.md | 583 ++++ .../ObjcExceptionBridging/ObjectiveCMarker.m | 3 + .../include/ObjcExceptionBridging.h | 51 + Pods/Pods.xcodeproj/project.pbxproj | 2961 ++++++++++------- .../ObjcExceptionBridging/Info.plist | 26 + .../ObjcExceptionBridging-dummy.m | 5 + .../ObjcExceptionBridging-prefix.pch | 12 + .../ObjcExceptionBridging-umbrella.h | 17 + .../ObjcExceptionBridging.modulemap | 6 + .../ObjcExceptionBridging.xcconfig | 9 + .../Pods-Archit-acknowledgements.markdown | 50 + .../Pods-Archit-acknowledgements.plist | 62 + .../Pods-Archit/Pods-Archit-frameworks.sh | 4 + .../Pods-Archit/Pods-Archit.debug.xcconfig | 6 +- .../Pods-Archit/Pods-Archit.release.xcconfig | 6 +- ...Pods-ArchitTests-acknowledgements.markdown | 50 + .../Pods-ArchitTests-acknowledgements.plist | 62 + .../Pods-ArchitTests-frameworks.sh | 9 + .../Pods-ArchitTests.debug.xcconfig | 6 +- .../Pods-ArchitTests.release.xcconfig | 6 +- ...ds-ArchitUITests-acknowledgements.markdown | 50 + .../Pods-ArchitUITests-acknowledgements.plist | 62 + .../Pods-ArchitUITests-frameworks.sh | 4 + .../Pods-ArchitUITests.debug.xcconfig | 8 +- .../Pods-ArchitUITests.release.xcconfig | 8 +- .../Pods-Core-acknowledgements.markdown | 50 + .../Pods-Core-acknowledgements.plist | 62 + .../Pods-Core/Pods-Core.debug.xcconfig | 6 +- .../Pods-Core/Pods-Core.release.xcconfig | 6 +- .../Pods-CoreTests-acknowledgements.markdown | 50 + .../Pods-CoreTests-acknowledgements.plist | 62 + .../Pods-CoreTests-frameworks.sh | 4 + .../Pods-CoreTests.debug.xcconfig | 6 +- .../Pods-CoreTests.release.xcconfig | 6 +- .../Pods-Domain-acknowledgements.markdown | 50 + .../Pods-Domain-acknowledgements.plist | 62 + .../Pods-Domain/Pods-Domain.debug.xcconfig | 5 +- .../Pods-Domain/Pods-Domain.release.xcconfig | 5 +- ...Pods-DomainTests-acknowledgements.markdown | 50 + .../Pods-DomainTests-acknowledgements.plist | 62 + .../Pods-DomainTests-frameworks.sh | 9 + .../Pods-DomainTests.debug.xcconfig | 6 +- .../Pods-DomainTests.release.xcconfig | 6 +- .../Target Support Files/XCGLogger/Info.plist | 26 + .../XCGLogger/XCGLogger-dummy.m | 5 + .../XCGLogger/XCGLogger-prefix.pch | 12 + .../XCGLogger/XCGLogger-umbrella.h | 16 + .../XCGLogger/XCGLogger.modulemap | 6 + .../XCGLogger/XCGLogger.xcconfig | 12 + Pods/XCGLogger/.swift-version | 1 + Pods/XCGLogger/LICENSE.txt | 21 + Pods/XCGLogger/README.md | 578 ++++ .../AppleSystemLogDestination.swift | 38 + .../AutoRotatingFileDestination.swift | 285 ++ .../Destinations/BaseDestination.swift | 181 + .../Destinations/BaseQueuedDestination.swift | 64 + .../Destinations/ConsoleDestination.swift | 26 + .../Destinations/DestinationProtocol.swift | 124 + .../Destinations/FileDestination.swift | 245 ++ .../Destinations/TestDestination.swift | 109 + .../DispatchQueue+XCGAdditions.swift | 19 + .../Extensions/URL+XCGAdditions.swift | 82 + .../Sources/XCGLogger/Filters/DevFilter.swift | 37 + .../XCGLogger/Filters/FileNameFilter.swift | 126 + .../XCGLogger/Filters/FilterProtocol.swift | 25 + .../Sources/XCGLogger/Filters/TagFilter.swift | 37 + .../XCGLogger/Filters/UserInfoFilter.swift | 143 + .../LogFormatters/ANSIColorLogFormatter.swift | 342 ++ .../LogFormatters/Base64LogFormatter.swift | 40 + .../LogFormatters/LogFormatterProtocol.swift | 23 + .../PrePostFixLogFormatter.swift | 100 + .../XcodeColorsLogFormatter.swift | 257 ++ .../XCGLogger/Misc/HelperFunctions.swift | 39 + .../Sources/XCGLogger/Misc/LogDetails.swift | 46 + .../Sources/XCGLogger/XCGLogger.swift | 1219 +++++++ 82 files changed, 7804 insertions(+), 1190 deletions(-) create mode 100644 Archit/Source/Managers/LogManager.swift create mode 100644 Pods/ObjcExceptionBridging/LICENSE.txt create mode 100644 Pods/ObjcExceptionBridging/README.md create mode 100644 Pods/ObjcExceptionBridging/Sources/ObjcExceptionBridging/ObjectiveCMarker.m create mode 100644 Pods/ObjcExceptionBridging/Sources/ObjcExceptionBridging/include/ObjcExceptionBridging.h create mode 100644 Pods/Target Support Files/ObjcExceptionBridging/Info.plist create mode 100644 Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-dummy.m create mode 100644 Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-prefix.pch create mode 100644 Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-umbrella.h create mode 100644 Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.modulemap create mode 100644 Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.xcconfig create mode 100644 Pods/Target Support Files/XCGLogger/Info.plist create mode 100644 Pods/Target Support Files/XCGLogger/XCGLogger-dummy.m create mode 100644 Pods/Target Support Files/XCGLogger/XCGLogger-prefix.pch create mode 100644 Pods/Target Support Files/XCGLogger/XCGLogger-umbrella.h create mode 100644 Pods/Target Support Files/XCGLogger/XCGLogger.modulemap create mode 100644 Pods/Target Support Files/XCGLogger/XCGLogger.xcconfig create mode 100644 Pods/XCGLogger/.swift-version create mode 100644 Pods/XCGLogger/LICENSE.txt create mode 100644 Pods/XCGLogger/README.md create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Destinations/AppleSystemLogDestination.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Destinations/AutoRotatingFileDestination.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Destinations/BaseDestination.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Destinations/BaseQueuedDestination.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Destinations/ConsoleDestination.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Destinations/DestinationProtocol.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Destinations/FileDestination.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Destinations/TestDestination.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Extensions/DispatchQueue+XCGAdditions.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Extensions/URL+XCGAdditions.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Filters/DevFilter.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Filters/FileNameFilter.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Filters/FilterProtocol.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Filters/TagFilter.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Filters/UserInfoFilter.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/LogFormatters/ANSIColorLogFormatter.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/LogFormatters/Base64LogFormatter.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/LogFormatters/LogFormatterProtocol.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/LogFormatters/PrePostFixLogFormatter.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/LogFormatters/XcodeColorsLogFormatter.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Misc/HelperFunctions.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/Misc/LogDetails.swift create mode 100644 Pods/XCGLogger/Sources/XCGLogger/XCGLogger.swift diff --git a/Archit.xcodeproj/project.pbxproj b/Archit.xcodeproj/project.pbxproj index 41ee276..c8a8af1 100644 --- a/Archit.xcodeproj/project.pbxproj +++ b/Archit.xcodeproj/project.pbxproj @@ -25,6 +25,9 @@ 810963E51FB0C42E00B35959 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810963E41FB0C42E00B35959 /* AppDelegate.swift */; }; 810963F81FB0C42E00B35959 /* ArchitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810963F71FB0C42E00B35959 /* ArchitTests.swift */; }; 810964031FB0C42E00B35959 /* ArchitUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810964021FB0C42E00B35959 /* ArchitUITests.swift */; }; + 817ED3511FBDE6D90066A679 /* LogManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817ED3501FBDE6D90066A679 /* LogManager.swift */; }; + 817ED3541FBDE7BE0066A679 /* LogManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817ED3501FBDE6D90066A679 /* LogManager.swift */; }; + 817ED3551FBDE7C00066A679 /* LogManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817ED3501FBDE6D90066A679 /* LogManager.swift */; }; 8374FD19ACE27BF2EEF1BADF /* Pods_Domain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5070463760B7BEFCBFA8995E /* Pods_Domain.framework */; }; 9AC00EF4802746D651A3FFE3 /* Pods_CoreTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B55B0227AAC528CF431AFE3 /* Pods_CoreTests.framework */; }; A4D041333F586D156E01B44E /* Pods_Archit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51036FE5FB812710D2B3A0F7 /* Pods_Archit.framework */; }; @@ -193,6 +196,7 @@ 810963FE1FB0C42E00B35959 /* ArchitUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ArchitUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 810964021FB0C42E00B35959 /* ArchitUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArchitUITests.swift; sourceTree = ""; }; 810964041FB0C42E00B35959 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 817ED3501FBDE6D90066A679 /* LogManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LogManager.swift; path = Source/Managers/LogManager.swift; sourceTree = ""; }; 9E13B6F1A1B652AB4AD62B18 /* Pods-Domain.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Domain.release.xcconfig"; path = "Pods/Target Support Files/Pods-Domain/Pods-Domain.release.xcconfig"; sourceTree = ""; }; A73079477914B6D127E59CB7 /* Pods_DomainTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DomainTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; AE55A12BF45485A5033F2DAC /* Pods_ArchitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ArchitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -467,6 +471,7 @@ isa = PBXGroup; children = ( 810963DB1FB0C42E00B35959 /* AppManager.swift */, + 817ED3501FBDE6D90066A679 /* LogManager.swift */, ); name = Managers; sourceTree = ""; @@ -954,10 +959,14 @@ ); inputPaths = ( "${SRCROOT}/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework", + "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework", "${BUILT_PRODUCTS_DIR}/NetClient/Net.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjcExceptionBridging.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/XCGLogger.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Net.framework", ); runOnlyForDeploymentPostprocessing = 0; @@ -1019,14 +1028,18 @@ "${SRCROOT}/Pods/Target Support Files/Pods-Archit/Pods-Archit-frameworks.sh", "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework", "${BUILT_PRODUCTS_DIR}/Kommander/Kommander.framework", + "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework", "${BUILT_PRODUCTS_DIR}/Reusable/Reusable.framework", + "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework", "${BUILT_PRODUCTS_DIR}/NetClient/Net.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kommander.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjcExceptionBridging.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reusable.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/XCGLogger.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Net.framework", ); runOnlyForDeploymentPostprocessing = 0; @@ -1109,9 +1122,14 @@ files = ( ); inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework", + "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjcExceptionBridging.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/XCGLogger.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -1168,13 +1186,13 @@ ); inputPaths = ( "${SRCROOT}/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Kommander/Kommander.framework", - "${BUILT_PRODUCTS_DIR}/NetClient/Net.framework", + "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework", + "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kommander.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Net.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjcExceptionBridging.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/XCGLogger.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -1275,10 +1293,14 @@ ); inputPaths = ( "${SRCROOT}/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework", + "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework", "${BUILT_PRODUCTS_DIR}/Cucumberish/Cucumberish.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjcExceptionBridging.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/XCGLogger.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Cucumberish.framework", ); runOnlyForDeploymentPostprocessing = 0; @@ -1293,6 +1315,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 817ED3541FBDE7BE0066A679 /* LogManager.swift in Sources */, D5FF818E1FB8AFD600EAC050 /* NetworkServiceConstants.swift in Sources */, D582F4581FB61C56002BDB91 /* FilmsNetworkTransformer.swift in Sources */, D582F4491FB38CF1002BDB91 /* NetworkService.swift in Sources */, @@ -1324,6 +1347,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 817ED3551FBDE7C00066A679 /* LogManager.swift in Sources */, D582F4601FB62207002BDB91 /* Film.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1342,6 +1366,7 @@ files = ( D582F4311FB2273A002BDB91 /* FilmsViewController.swift in Sources */, 810963E51FB0C42E00B35959 /* AppDelegate.swift in Sources */, + 817ED3511FBDE6D90066A679 /* LogManager.swift in Sources */, D582F4321FB2273A002BDB91 /* FilmsController.swift in Sources */, 810963DC1FB0C42E00B35959 /* AppManager.swift in Sources */, D582F4341FB22761002BDB91 /* UITableView+Reusable.swift in Sources */, @@ -1452,10 +1477,11 @@ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 3VW789WSMP; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -1465,6 +1491,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.intelygenz.Archit.Core; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; @@ -1485,10 +1512,11 @@ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 3VW789WSMP; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -1498,6 +1526,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.intelygenz.Archit.Core; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1565,10 +1594,11 @@ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 3VW789WSMP; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -1578,6 +1608,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.intelygenz.Archit.Domain; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; @@ -1598,10 +1629,11 @@ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 3VW789WSMP; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -1611,6 +1643,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.intelygenz.Archit.Domain; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/Archit/Source/Managers/LogManager.swift b/Archit/Source/Managers/LogManager.swift new file mode 100644 index 0000000..db03603 --- /dev/null +++ b/Archit/Source/Managers/LogManager.swift @@ -0,0 +1,28 @@ +// LogManager.swift +// Created by Alex Rupérez on 16/11/17. +// Copyright © 2017 Intelygenz. All rights reserved. + +import XCGLogger + +let log: XCGLogger = { + let log = XCGLogger(identifier: "advancedLogger", includeDefaultDestinations: false) + log.levelDescriptions[.verbose] = "💜" + log.levelDescriptions[.debug] = "💚" + log.levelDescriptions[.info] = "💙" + log.levelDescriptions[.warning] = "💛" + log.levelDescriptions[.error] = "❤️" + log.levelDescriptions[.severe] = "🖤" + + let consoleDestination = ConsoleDestination(identifier: "advancedLogger.consoleDestination") + #if DEBUG + consoleDestination.outputLevel = .debug + #else + consoleDestination.outputLevel = .severe + #endif + consoleDestination.showFunctionName = false + consoleDestination.showFileName = false + consoleDestination.showLineNumber = false + log.add(destination: consoleDestination) + + return log +}() diff --git a/Core/Tasks/ServiceTask.swift b/Core/Tasks/ServiceTask.swift index d710af7..a634b8b 100644 --- a/Core/Tasks/ServiceTask.swift +++ b/Core/Tasks/ServiceTask.swift @@ -9,9 +9,21 @@ open class ServiceTask: ServiceTaskProtocol { private static let net: Net = { let net = NetURLSession() net.addRequestInterceptor { requestBuilder in - return requestBuilder.addURLParameter(NetworkServiceConstants.Parameters.key, value: NetworkServiceConstants.Values.key) + requestBuilder.addURLParameter(NetworkServiceConstants.Parameters.key, value: NetworkServiceConstants.Values.key) .addURLParameter(NetworkServiceConstants.Parameters.format, value: NetworkServiceConstants.Values.Format.json.rawValue) .addURLParameter(NetworkServiceConstants.Parameters.version, value: NetworkServiceConstants.Values.version) + log.debug(requestBuilder.build().debugDescription) + return requestBuilder + } + net.addResponseInterceptor { responseBuilder in + let response = responseBuilder.build() + log.debug(response.debugDescription) + do { + if let responseObject: [AnyHashable: Any] = try response.object() { + log.verbose(responseObject) + } + } catch {} + return responseBuilder } return net }() diff --git a/Podfile b/Podfile index cabb9a5..34ab8d6 100644 --- a/Podfile +++ b/Podfile @@ -3,6 +3,7 @@ use_frameworks! inhibit_all_warnings! pod 'SwiftLint' +pod 'XCGLogger' target 'Archit' do diff --git a/Podfile.lock b/Podfile.lock index 382023b..befa11b 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -8,12 +8,19 @@ PODS: - NetClient/Core (0.3.5) - NetClient/URLSession (0.3.5): - NetClient/Core + - ObjcExceptionBridging (1.0.1): + - ObjcExceptionBridging/ObjcExceptionBridging (= 1.0.1) + - ObjcExceptionBridging/ObjcExceptionBridging (1.0.1) - Reusable (4.0.0): - Reusable/Storyboard (= 4.0.0) - Reusable/View (= 4.0.0) - Reusable/Storyboard (4.0.0) - Reusable/View (4.0.0) - SwiftLint (0.24.0) + - XCGLogger (6.0.1): + - XCGLogger/Core (= 6.0.1) + - XCGLogger/Core (6.0.1): + - ObjcExceptionBridging DEPENDENCIES: - Cucumberish @@ -22,15 +29,18 @@ DEPENDENCIES: - NetClient - Reusable - SwiftLint + - XCGLogger SPEC CHECKSUMS: Cucumberish: 76f542be7b62b1a01ebc6f968be3e002f9403931 Kingfisher: 9ee7e788d8ba07c3f21ce0d43f33cec310a4f781 Kommander: 34bf09d910308fbfd584234896e6e25931b752ff NetClient: 99cbb60c94c195666fcf723213deff4213f198a7 + ObjcExceptionBridging: c30e00eb3700467e695faeea30e26e18bd445001 Reusable: 98e5fff1e0e2e00872199699b276dde08ee56c07 SwiftLint: a014c92b4664e8b13f380f8640a51bb1733778ba + XCGLogger: b4ca980580108cfeaf221afe158f5d89c1be22e0 -PODFILE CHECKSUM: 76fd68a25130619b340a1fb7194b6a4f7049924c +PODFILE CHECKSUM: 6e863f7f984be258f0a4db40f1efedf01540a387 COCOAPODS: 1.3.1 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 382023b..befa11b 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -8,12 +8,19 @@ PODS: - NetClient/Core (0.3.5) - NetClient/URLSession (0.3.5): - NetClient/Core + - ObjcExceptionBridging (1.0.1): + - ObjcExceptionBridging/ObjcExceptionBridging (= 1.0.1) + - ObjcExceptionBridging/ObjcExceptionBridging (1.0.1) - Reusable (4.0.0): - Reusable/Storyboard (= 4.0.0) - Reusable/View (= 4.0.0) - Reusable/Storyboard (4.0.0) - Reusable/View (4.0.0) - SwiftLint (0.24.0) + - XCGLogger (6.0.1): + - XCGLogger/Core (= 6.0.1) + - XCGLogger/Core (6.0.1): + - ObjcExceptionBridging DEPENDENCIES: - Cucumberish @@ -22,15 +29,18 @@ DEPENDENCIES: - NetClient - Reusable - SwiftLint + - XCGLogger SPEC CHECKSUMS: Cucumberish: 76f542be7b62b1a01ebc6f968be3e002f9403931 Kingfisher: 9ee7e788d8ba07c3f21ce0d43f33cec310a4f781 Kommander: 34bf09d910308fbfd584234896e6e25931b752ff NetClient: 99cbb60c94c195666fcf723213deff4213f198a7 + ObjcExceptionBridging: c30e00eb3700467e695faeea30e26e18bd445001 Reusable: 98e5fff1e0e2e00872199699b276dde08ee56c07 SwiftLint: a014c92b4664e8b13f380f8640a51bb1733778ba + XCGLogger: b4ca980580108cfeaf221afe158f5d89c1be22e0 -PODFILE CHECKSUM: 76fd68a25130619b340a1fb7194b6a4f7049924c +PODFILE CHECKSUM: 6e863f7f984be258f0a4db40f1efedf01540a387 COCOAPODS: 1.3.1 diff --git a/Pods/ObjcExceptionBridging/LICENSE.txt b/Pods/ObjcExceptionBridging/LICENSE.txt new file mode 100644 index 0000000..58aaa4d --- /dev/null +++ b/Pods/ObjcExceptionBridging/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/ObjcExceptionBridging/README.md b/Pods/ObjcExceptionBridging/README.md new file mode 100644 index 0000000..aeddc91 --- /dev/null +++ b/Pods/ObjcExceptionBridging/README.md @@ -0,0 +1,583 @@ +![XCGLogger][xcglogger-logo] + +[![badge-language]][swift.org] +[![badge-platforms]][swift.org] +[![badge-license]][license] + +[![badge-travis]][travis] +[![badge-swiftpm]][swiftpm] +[![badge-cocoapods]][cocoapods-xcglogger] +[![badge-carthage]][carthage] + +[![badge-sponsors]][cerebral-gardens] +[![badge-twitter]][twitter-davewoodx] + +## tl;dr +XCGLogger is the original debug log module for use in Swift projects. + +Swift does not include a C preprocessor so developers are unable to use the debug log `#define` macros they would use in Objective-C. This means our traditional way of generating nice debug logs no longer works. Resorting to just plain old `print` calls means you lose a lot of helpful information, or requires you to type a lot more code. + +XCGLogger allows you to log details to the console (and optionally a file, or other custom destinations), just like you would have with `NSLog()` or `print()`, but with additional information, such as the date, function name, filename and line number. + +Go from this: + +```Simple message``` + +to this: + +```2014-06-09 06:44:43.600 [Debug] [AppDelegate.swift:40] application(_:didFinishLaunchingWithOptions:): Simple message``` + +#### Example +Example + +### Communication _(Hat Tip AlamoFire)_ + +* If you need help, use [Stack Overflow][stackoverflow] (Tag '[xcglogger][stackoverflow]'). +* If you'd like to ask a general question, use [Stack Overflow][stackoverflow]. +* If you've found a bug, open an issue. +* If you have a feature request, open an issue. +* If you want to contribute, submit a pull request. +* If you use XCGLogger, please Star the project on [GitHub][github-xcglogger] + +## Installation + +### Git Submodule + +Execute: + +```git submodule add https://github.com/DaveWoodCom/XCGLogger.git``` + +in your repository folder. + +### [Carthage][carthage] + +Add the following line to your `Cartfile`. + +```github "DaveWoodCom/XCGLogger" ~> 5.0.1``` + +Then run `carthage update --no-use-binaries` or just `carthage update`. For details of the installation and usage of Carthage, visit [it's project page][carthage]. + +### [CocoaPods][cocoapods] + +Add something similar to the following lines to your `Podfile`. You may need to adjust based on your platform, version/branch etc. + +``` +source 'https://github.com/CocoaPods/Specs.git' +platform :ios, '8.0' +use_frameworks! + +pod 'XCGLogger', '~> 5.0.1' +``` + +Specifying the pod `XCGLogger` on its own will include the core framework. We're starting to add subspecs to allow you to include optional components as well: + +`pod 'XCGLogger/UserInfoHelpers', '~> 5.0.1'`: Include some experimental code to help deal with using UserInfo dictionaries to tag log messages. + +Then run `pod install`. For details of the installation and usage of CocoaPods, visit [it's official web site][cocoapods]. + +### [Swift Package Manager][swiftpm] + +Add the following entry to your package's dependencies: + +``` +.Package(url: "https://github.com/DaveWoodCom/XCGLogger.git", majorVersion: 5) +``` + +### Backwards Compatibility + +Use: +* XCGLogger version [5.0.1][xcglogger-5.0.1] for Swift 3.0-3.1 +* XCGLogger version [3.6.0][xcglogger-3.6.0] for Swift 2.3 +* XCGLogger version [3.5.3][xcglogger-3.5.3] for Swift 2.2 +* XCGLogger version [3.2][xcglogger-3.2] for Swift 2.0-2.1 +* XCGLogger version [2.x][xcglogger-2.x] for Swift 1.2 +* XCGLogger version [1.x][xcglogger-1.x] for Swift 1.1 and below. + +## Basic Usage (Quick Start) + +_This quick start method is intended just to get you up and running with the logger. You should however use the [advanced usage below](#advanced-usage-recommended) to get the most out of this library._ + +Add the XCGLogger project as a subproject to your project, and add the appropriate library as a dependancy of your target(s). +Under the `General` tab of your target, add `XCGLogger.framework` and `ObjcExceptionBridging.framework` to the `Embedded Binaries` section. + +Then, in each source file: + +```Swift +import XCGLogger +``` + +In your AppDelegate (or other global file), declare a global constant to the default XCGLogger instance. + +```Swift +let log = XCGLogger.default +``` + +In the +```Swift +application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? = nil) // iOS, tvOS +``` + +or + +```Swift +applicationDidFinishLaunching(_ notification: Notification) // macOS +``` + +function, configure the options you need: + +```Swift +log.setup(level: .debug, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: "path/to/file", fileLevel: .debug) +``` + +The value for `writeToFile:` can be a `String` or `URL`. If the file already exists, it will be cleared before we use it. Omit the parameter or set it to `nil` to log to the console only. You can optionally set a different log level for the file output using the `fileLevel:` parameter. Set it to `nil` or omit it to use the same log level as the console. + +Then, whenever you'd like to log something, use one of the convenience methods: + +```Swift +log.verbose("A verbose message, usually useful when working on a specific problem") +log.debug("A debug message") +log.info("An info message, probably useful to power users looking in console.app") +log.warning("A warning message, may indicate a possible error") +log.error("An error occurred, but it's recoverable, just info about what happened") +log.severe("A severe error occurred, we are likely about to crash now") +``` + +The different methods set the log level of the message. XCGLogger will only print messages with a log level that is greater to or equal to it's current log level setting. So a logger with a level of `.error` will only output log messages with a level of `.error`, or `.severe`. + +## Advanced Usage (Recommended) + +XCGLogger aims to be simple to use and get you up and running quickly with as few as 2 lines of code above. But it allows for much greater control and flexibility. + +A logger can be configured to deliver log messages to a variety of destinations. Using the basic setup above, the logger will output log messages to the standard Xcode debug console, and optionally a file if a path is provided. It's quite likely you'll want to send logs to more interesting places, such as the Apple System Console, a database, third party server, or another application such as [NSLogger][NSLogger]. This is accomplished by adding the destination to the logger. + +Here's an example of configuring the logger to output to the Apple System Log as well as a file. + +```Swift +// Create a logger object with no destinations +let log = XCGLogger(identifier: "advancedLogger", includeDefaultDestinations: false) + +// Create a destination for the system console log (via NSLog) +let systemDestination = AppleSystemLogDestination(identifier: "advancedLogger.systemDestination") + +// Optionally set some configuration options +systemDestination.outputLevel = .Debug +systemDestination.showLogIdentifier = false +systemDestination.showFunctionName = true +systemDestination.showThreadName = true +systemDestination.showLevel = true +systemDestination.showFileName = true +systemDestination.showLineNumber = true +systemDestination.showDate = true + +// Add the destination to the logger +log.add(destination: systemDestination) + +// Create a file log destination +let fileDestination = FileDestination(writeToFile: "/path/to/file", identifier: "advancedLogger.fileDestination") + +// Optionally set some configuration options +fileDestination.outputLevel = .Debug +fileDestination.showLogIdentifier = false +fileDestination.showFunctionName = true +fileDestination.showThreadName = true +fileDestination.showLevel = true +fileDestination.showFileName = true +fileDestination.showLineNumber = true +fileDestination.showDate = true + +// Process this destination in the background +fileDestination.logQueue = XCGLogger.logQueue + +// Add the destination to the logger +log.add(destination: fileDestination) + +// Add basic app info, version info etc, to the start of the logs +log.logAppDetails() +``` + +You can configure each log destination with different options depending on your needs. + +Another common usage pattern is to have multiple loggers, perhaps one for UI issues, one for networking, and another for data issues. + +Each log destination can have its own log level. As a convenience, you can set the log level on the log object itself and it will pass that level to each destination. Then set the destinations that need to be different. + +**Note**: A destination object can only be added to one logger object, adding it to a second will remove it from the first. + +### Initialization Using A Closure + +Alternatively you can use a closure to initialize your global variable, so that all initialization is done in one place +```Swift +let log: XCGLogger = { + let log = XCGLogger(identifier: "advancedLogger", includeDefaultDestinations: false) + + // Customize as needed + + return log +}() +``` + +**Note**: This creates the log object lazily, which means it's not created until it's actually needed. This delays the initial output of the app information details. Because of this, I recommend forcing the log object to be created at app launch by adding the line `let _ = log` at the top of your `didFinishLaunching` method if you don't already log something on app launch. + +### Log Anything + +You can log strings: + +```Swift +log.debug("Hi there!") +``` + +or pretty much anything you want: + +```Swift +log.debug(true) +log.debug(CGPoint(x: 1.1, y: 2.2)) +log.debug(MyEnum.Option) +log.debug((4, 2)) +log.debug(["Device": "iPhone", "Version": 7]) +``` + +### Filtering Log Messages + +New to XCGLogger 4, you can now create filters to apply to your logger (or to specific destinations). Create and configure your filters (examples below), and then add them to the logger or destination objects by setting the optional `filters` property to an array containing the filters. Filters are applied in the order they exist in the array. During processing, each filter is asked if the log message should be excluded from the log. If any filter excludes the log message, it's excluded. Filters have no way to reverse the exclusion of another filter. + +If a destination's `filters` property is `nil`, the log's `filters` property is used instead. To have one destination log everything, while having all other destinations filter something, add the filters to the log object and set the one destination's `filters` property to an empty array `[]`. + +**Note**: Unlike destinations, you can add the same filter object to multiple loggers and/or multiple destinations. + +#### Filter by Filename + +To exclude all log messages from a specific file, create an exclusion filter like so: + +```Swift +log.filters = [FileNameFilter(excludeFrom: ["AppDelegate.swift"], excludePathWhenMatching: true)] +``` + +`excludeFrom:` takes an `Array` or `Set` so you can specify multiple files at the same time. + +`excludePathWhenMatching:` defaults to `true` so you can omit it unless you want to match path's as well. + +To include log messages only for a specific set to files, create the filter using the `includeFrom:` initializer. It's also possible to just toggle the `inverse` property to flip the exclusion filter to an inclusion filter. + +#### Filter by Tag + +In order to filter log messages by tag, you must of course be able to set a tag on the log messages. Each log message can now have additional, user defined data attached to them, to be used by filters (and/or formatters etc). This is handled with a `userInfo: Dictionary` object. The dictionary key should be a namespaced string to avoid collisions with future additions. Official keys will begin with `com.cerebralgardens.xcglogger`. The tag key can be accessed by `XCGLogger.Constants.userInfoKeyTags`. You definitely don't want to be typing that, so feel free to create a global shortcut: `let tags = XCGLogger.Constants.userInfoKeyTags`. Now you can easily tag your logs: + +```Swift +let sensitiveTag = "Sensitive" +log.debug("A tagged log message", userInfo: [tags: sensitiveTag]) +``` + +The value for tags can be an `Array`, `Set`, or just a `String`, depending on your needs. They'll all work the same way when filtered. + +Depending on your workflow and usage, you'll probably create faster methods to set up the `userInfo` dictionary. See [below](#mixing-and-matching) for other possible shortcuts. + +Now that you have your logs tagged, you can filter easily: + +```Swift +log.filters = [TagFilter(excludeFrom: [sensitiveTag])] +``` + +Just like the `FileNameFilter`, you can use `includeFrom:` or toggle `inverse` to include only log messages that have the specified tags. + +#### Filter by Developer + +Filtering by developer is exactly like filtering by tag, only using the `userInfo` key of `XCGLogger.Constants.userInfoKeyDevs`. In fact, both filters are subclasses of the `UserInfoFilter` class that you can use to create additional filters. See [Extending XCGLogger](#extending-xcglogger) below. + +#### Mixing and Matching + +In large projects with multiple developers, you'll probably want to start tagging log messages, as well as indicate the developer that added the message. + +While extremely flexible, the `userInfo` dictionary can be a little cumbersome to use. There are a few possible methods you can use to simply things. I'm still testing these out myself so they're not officially part of the library yet (I'd love feedback or other suggestions). + +I have created some experimental code to help create the UserInfo dictionaries. (Include the optional `UserInfoHelpers` subspec if using CocoaPods). Check the iOS Demo app to see it in use. + +There are two structs that conform to the `UserInfoTaggingProtocol` protocol. `Tag` and `Dev`. + +You can create an extension on each of these that suit your project. For example: + +```Swift +extension Tag { + static let sensitive = Tag("sensitive") + static let ui = Tag("ui") + static let data = Tag("data") +} + +extension Dev { + static let dave = Dev("dave") + static let sabby = Dev("sabby") +} +``` + +Along with these types, there's an overloaded operator `|` that can be used to merge them together into a dictionary compatible with the `UserInfo:` parameter of the logging calls. + +Then you can log messages like this: + +```Swift +log.debug("A tagged log message", userInfo: Dev.dave | Tag.sensitive) +``` + +There are some current issues I see with these `UserInfoHelpers`, which is why I've made it optional/experimental for now. I'd love to hear comments/suggestions for improvements. + +1. The overloaded operator `|` merges dictionaries so long as there are no `Set`s. If one of the dictionaries contains a `Set`, it'll use one of them, without merging them. Preferring the left hand side if both sides have a set for the same key. +2. Since the `userInfo:` parameter needs a dictionary, you can't pass in a single Dev or Tag object. You need to use at least two with the `|` operator to have it automatically convert to a compatible dictionary. If you only want one Tag for example, you must access the `.dictionary` parameter manually: `userInfo: Tag("Blah").dictionary`. + +### Selectively Executing Code + +All log methods operate on closures. Using the same syntactic sugar as Swift's `assert()` function, this approach ensures we don't waste resources building log messages that won't be output anyway, while at the same time preserving a clean call site. + +For example, the following log statement won't waste resources if the debug log level is suppressed: + +```Swift +log.debug("The description of \(thisObject) is really expensive to create") +``` + +Similarly, let's say you have to iterate through a loop in order to do some calculation before logging the result. In Objective-C, you could put that code block between `#if` `#endif`, and prevent the code from running. But in Swift, previously you would need to still process that loop, wasting resources. With `XCGLogger` it's as simple as: + +```Swift +log.debug { + var total = 0.0 + for receipt in receipts { + total += receipt.total + } + + return "Total of all receipts: \(total)" +} +``` + +In cases where you wish to selectively execute code without generating a log line, return `nil`, or use one of the methods: `verboseExec`, `debugExec`, `infoExec`, `warningExec`, `errorExec`, and `severeExec`. + +### Custom Date Formats + +You can create your own `DateFormatter` object and assign it to the logger. + +```Swift +let dateFormatter = DateFormatter() +dateFormatter.dateFormat = "MM/dd/yyyy hh:mma" +dateFormatter.locale = Locale.current +log.dateFormatter = dateFormatter +``` + +### Enhancing Log Messages With Colour + +XCGLogger supports adding formatting codes to your log messages to enable colour in various places. The original option was to use the [XcodeColors plug-in][XcodeColors]. However, Xcode 8 no longer officially supports plug-ins. You can still view your logs in colour, just not in Xcode 8 at the moment ([see note below](#restore-plug-in-support)). You can still use Xcode 7 if desired (after adding the Swift 3 toolchain), or you can use the new ANSI colour support to add colour to your fileDestination objects and view your logs via a terminal window. This gives you some extra options such as adding Bold, Italics, or (please don't) Blinking! + +Once enabled, each log level can have its own colour. These colours can be customized as desired. If using multiple loggers, you could alternatively set each logger to its own colour. + +An example of setting up the ANSI formatter: + +```Swift +if let fileDestination: FileDestination = log.destination(withIdentifier: XCGLogger.Constants.fileDestinationIdentifier) as? FileDestination { + let ansiColorLogFormatter: ANSIColorLogFormatter = ANSIColorLogFormatter() + ansiColorLogFormatter.colorize(level: .verbose, with: .colorIndex(number: 244), options: [.faint]) + ansiColorLogFormatter.colorize(level: .debug, with: .black) + ansiColorLogFormatter.colorize(level: .info, with: .blue, options: [.underline]) + ansiColorLogFormatter.colorize(level: .warning, with: .red, options: [.faint]) + ansiColorLogFormatter.colorize(level: .error, with: .red, options: [.bold]) + ansiColorLogFormatter.colorize(level: .severe, with: .white, on: .red) + fileDestination.formatters = [ansiColorLogFormatter] +} +``` + +As with filters, you can use the same formatter objects for multiple loggers and/or multiple destinations. If a destination's `formatters` property is `nil`, the logger's `formatters` property will be used instead. + +See [Extending XCGLogger](#extending-xcglogger) below for info on creating your own custom formatters. + +### Alternate Configurations + +By using Swift build flags, different log levels can be used in debugging versus staging/production. +Go to Build Settings -> Swift Compiler - Custom Flags -> Other Swift Flags and add `-DDEBUG` to the Debug entry. + +```Swift +#if DEBUG + log.setup(level: .debug, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true) +#else + log.setup(level: .severe, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true) +#endif +``` + +You can set any number of options up in a similar fashion. See the updated iOSDemo app for an example of using different log destinations based on options, search for `USE_NSLOG`. + +### Background Log Processing + +By default, the supplied log destinations will process the logs on the thread they're called on. This is to ensure the log message is displayed immediately when debugging an application. You can add a breakpoint immediately after a log call and see the results when the breakpoint hits. + +However, if you're not actively debugging the application, processing the logs on the current thread can introduce a performance hit. You can now specify a destination process it's logs on a dispatch queue of your choice (or even use a default supplied one). + +```Swift +fileDestination.logQueue = XCGLogger.logQueue +``` + +or even + +```Swift +fileDestination.logQueue = DispatchQueue.global(qos: .background) +``` + +This works extremely well when combined with the [Alternate Configurations](#alternate-configurations) method above. + +```Swift +#if DEBUG + log.setup(level: .debug, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true) +#else + log.setup(level: .severe, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true) + if let consoleLog = log.logDestination(XCGLogger.Constants.baseConsoleDestinationIdentifier) as? ConsoleDestination { + consoleLog.logQueue = XCGLogger.logQueue + } +#endif +``` + +### Append To Existing Log File + +When using the advanced configuration of the logger (see [Advanced Usage above](#advanced-usage-recommended)), you can now specify that the logger append to an existing log file, instead of automatically overwriting it. + +Add the optional `shouldAppend:` parameter when initializing the `FileDestination` object. You can also add the `appendMarker:` parameter to add a marker to the log file indicating where a new instance of your app started appending. By default we'll add `-- ** ** ** --` if the parameter is omitted. Set it to `nil` to skip appending the marker. + +```let fileDestination = FileDestination(writeToFile: "/path/to/file", identifier: "advancedLogger.fileDestination", shouldAppend: true, appendMarker: "-- Relauched App --")``` + + +### Automatic Log File Rotation + +When logging to a file, you have the option to automatically rotate the log file to an archived destination, and have the logger automatically create a new log file in place of the old one. + +Create a destination using the `AutoRotatingFileDestination` class and set the following properties: + +`targetMaxFileSize`: Auto rotate once the file is larger than this + +`targetMaxTimeInterval`: Auto rotate after this many seconds + +`targetMaxLogFiles`: Number of archived log files to keep, older ones are automatically deleted + +Those are all guidelines for the logger, not hard limits. + +### Extending XCGLogger + +You can create alternate log destinations (besides the built in ones). Your custom log destination must implement the `DestinationProtocol` protocol. Instantiate your object, configure it, and then add it to the `XCGLogger` object with `add(destination:)`. There are two base destination classes (`BaseDestination` and `BaseQueuedDestination`) you can inherit from to handle most of the process for you, requiring you to only implement one additional method in your custom class. Take a look at `ConsoleDestination` and `FileDestination` for examples. + +You can also create custom filters or formatters. Take a look at the provided versions as a starting point. Note that filters and formatters have the ability to alter the log messages as they're processed. This means you can create a filter that strips passwords, highlights specific words, encrypts messages, etc. + +## Contributing + +XCGLogger is the best logger available for Swift because of the contributions from the community like you. There are many ways you can help continue to make it great. + +1. Star the project on [GitHub][github-xcglogger]. +2. Report issues/bugs you find. +3. Suggest features. +4. Submit pull requests. + +**Note**: when submitting a pull request, please use lots of small commits verses one huge commit. It makes it much easier to merge in when there are several pull requests that need to be combined for a new version. + +## Third Party Tools That Work With XCGLogger + +**Note**: These plug-ins no longer 'officially' work in Xcode 8. File a [bug report](http://openradar.appspot.com/27447585) if you'd like to see plug-ins return to Xcode. See [below](#xcode_8_tips) for a workaround... + +[**XcodeColors:**][XcodeColors] Enable colour in the Xcode console +
+[**KZLinkedConsole:**][KZLinkedConsole] Link from a log line directly to the code that produced it + +**Note**: These may not yet work with the Swift 3 version of XCGLogger. + +[**XCGLoggerNSLoggerConnector:**][XCGLoggerNSLoggerConnector] Send your logs to [NSLogger][NSLogger] + +## Xcode 8 Tips + +### Restore Plug-In Support + +One of the biggest issues you'll notice when using Xcode 8, is that by default it will no longer load plug-ins. Personally, I really like the benefits the plug-ins add to Xcode, especially XcodeColors. With so many other frameworks, or even Xcode itself spewing messages into the debug console, it's really helpful to be able to have your logs stand out with colour. It is currently possible to re-enable plug-ins in Xcode 8. If you do so, you'll be able to use the new `XcodeColorsLogFormatter` class to colour your log messages again. See the demo apps for example code. + +**Be Warned**: If you follow these instructions to re-enable plug-ins, there could be unforeseen consequences. I would definitely only do this on a development machine, with the assumption that you have another machine (or at least an unmodified version of Xcode) to do your App Store/Distribution builds. **Do not** attempt to upload a binary to Apple that was built with a modified version of Xcode. **I take no responsibility for anything that happens if you follow these instructions. You have been warned**. + +Now, assuming you've read the above warning, and you have a development only machine, and you really want to use your awesome plug-ins, here's my recommended method to re-enable plug-ins. + +1. Clone the [unsign](https://github.com/steakknife/unsign) repository. +2. Build it following their dead-simple instructions (`make`). +3. Close Xcode if it's open. +4. In your favourite shell/terminal, execute the following commands (may need to be root, or just `sudo`): + + + `cd /Applications/Xcode.app/Contents/MacOS` *Substitute another Xcode path if you like* + + `/path/to/unsign Xcode` *Creates a new `Xcode.unsigned` binary* + + `mv Xcode Xcode.signed` *Move the original file* + + `ln -sf Xcode.unsigned Xcode` *Link the unsigned version to the original filename* + +5. Launch Xcode and use your favourite plug-ins. You may have to reauthorize access to your keychain, but it should be a one time task. +6. You can flip back and forth between the signed and unsigned versions by repeating the `ln -sf Xcode.unsigned Xcode` command, just changing `.unsigned` to `.signed` etc. +7. Do not use this version of Xcode to submit apps! +8. Pray Apple doesn't disable this workaround. +9. File a radar requesting official plug-in support again. You can dup this [radar](http://openradar.appspot.com/27447585). + +Thanks to [@inket](https://github.com/inket/update_xcode_plugins) and [@steakknife](https://github.com/steakknife/unsign) for providing the knowledge and tools for this tip! + + + +## To Do + +- Add more examples of some advanced use cases +- Add additional log destination types +- Add Objective-C support +- Add Linux support + +## More + +If you find this library helpful, you'll definitely find these other tools helpful: + +Watchdog: http://watchdogforxcode.com/ +Slender: http://martiancraft.com/products/slender +Briefs: http://giveabrief.com/ + +Also, please check out some of my other projects: + +Rudoku: [App Store](https://itunes.apple.com/app/apple-store/id965105321?pt=17255&ct=github&mt=8&at=11lMGu) +TV Tune Up: https://www.cerebralgardens.com/tvtuneup + +### Change Log + +The change log is now in it's own file: [CHANGELOG.md](CHANGELOG.md) + +[xcglogger-logo]: https://github.com/DaveWoodCom/XCGLogger/raw/master/ReadMeImages/XCGLoggerLogo_326x150.png +[swift.org]: https://swift.org/ +[license]: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +[travis]: https://travis-ci.org/DaveWoodCom/XCGLogger +[swiftpm]: https://swift.org/package-manager/ +[cocoapods]: https://cocoapods.org/ +[cocoapods-xcglogger]: https://cocoapods.org/pods/XCGLogger +[carthage]: https://github.com/Carthage/Carthage +[cerebral-gardens]: https://www.cerebralgardens.com/ +[twitter-davewoodx]: https://twitter.com/davewoodx +[github-xcglogger]: https://github.com/DaveWoodCom/XCGLogger +[stackoverflow]: http://stackoverflow.com/questions/tagged/xcglogger + +[badge-language]: https://img.shields.io/badge/Swift-1.x%20%7C%202.x%20%7C%203.x-orange.svg?style=flat +[badge-platforms]: https://img.shields.io/badge/Platforms-macOS%20%7C%20iOS%20%7C%20tvOS%20%7C%20watchOS-lightgray.svg?style=flat +[badge-license]: https://img.shields.io/badge/License-MIT-lightgrey.svg?style=flat +[badge-travis]: https://img.shields.io/travis/DaveWoodCom/XCGLogger/master.svg?style=flat +[badge-swiftpm]: https://img.shields.io/badge/Swift_Package_Manager-v5.0.1-64a6dd.svg?style=flat +[badge-cocoapods]: https://img.shields.io/cocoapods/v/XCGLogger.svg?style=flat +[badge-carthage]: https://img.shields.io/badge/Carthage-v5.0.1-64a6dd.svg?style=flat + +[badge-sponsors]: https://img.shields.io/badge/Sponsors-Cerebral%20Gardens-orange.svg?style=flat +[badge-twitter]: https://img.shields.io/twitter/follow/DaveWoodX.svg?style=social + +[XcodeColors]: https://github.com/robbiehanson/XcodeColors +[KZLinkedConsole]: https://github.com/krzysztofzablocki/KZLinkedConsole +[NSLogger]: https://github.com/fpillet/NSLogger +[XCGLoggerNSLoggerConnector]: https://github.com/markuswinkler/XCGLoggerNSLoggerConnector +[Firelog]: http://jogabo.github.io/firelog/ +[Firebase]: https://www.firebase.com/ + +[xcglogger-5.0.1]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/5.0.1 +[xcglogger-3.6.0]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/3.6.0 +[xcglogger-3.5.3]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/3.5.3 +[xcglogger-3.2]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/3.2.0 +[xcglogger-2.x]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/2.4.0 +[xcglogger-1.x]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/1.8.1 diff --git a/Pods/ObjcExceptionBridging/Sources/ObjcExceptionBridging/ObjectiveCMarker.m b/Pods/ObjcExceptionBridging/Sources/ObjcExceptionBridging/ObjectiveCMarker.m new file mode 100644 index 0000000..2734893 --- /dev/null +++ b/Pods/ObjcExceptionBridging/Sources/ObjcExceptionBridging/ObjectiveCMarker.m @@ -0,0 +1,3 @@ +// +// This file is unused and only exists so the Swift Package Manager can identify this module as one using Objective-C. +// diff --git a/Pods/ObjcExceptionBridging/Sources/ObjcExceptionBridging/include/ObjcExceptionBridging.h b/Pods/ObjcExceptionBridging/Sources/ObjcExceptionBridging/include/ObjcExceptionBridging.h new file mode 100644 index 0000000..9589704 --- /dev/null +++ b/Pods/ObjcExceptionBridging/Sources/ObjcExceptionBridging/include/ObjcExceptionBridging.h @@ -0,0 +1,51 @@ +// +// ObjcExceptionBridging.h +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +#import + +//! Project version number for ObjcExceptionBridging. +FOUNDATION_EXPORT double ObjcExceptionBridgingVersionNumber; + +//! Project version string for ObjcExceptionBridging. +FOUNDATION_EXPORT const unsigned char ObjcExceptionBridgingVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +/** + Execute Swift code that could generate an Objective-C exception in here to catch and handle it gracefully (ie don't crash) + + @param tryBlock Block/Closure to execute that could thrown an Objective-C exception + @param catchBlock Block/Closure to use if an exception is thrown in the tryBlock + @param finallyBlock Block/Closure to execute after the tryBlock (or catchBlock if an exception was thrown) + + @note Loosely based on the code here: https://stackoverflow.com/a/35003095/144857 and here: https://github.com/williamFalcon/SwiftTryCatch + */ +NS_INLINE void _try_objc(void(^_Nonnull tryBlock)(void), void(^_Nonnull catchBlock)(NSException* _Nonnull exception), void(^_Nonnull finallyBlock)(void)) { + @try { + tryBlock(); + } + @catch (NSException* exception) { + catchBlock(exception); + } + @finally { + finallyBlock(); + } +} + +/** + Throw an Objective-C exception + + @param exception NSException object to throw + + @note Loosely based on the code here: https://github.com/williamFalcon/SwiftTryCatch + */ +NS_INLINE void _throw_objc(NSException* _Nonnull exception) +{ + @throw exception; +} diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 56c1779..f210f86 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -3,224 +3,257 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 48; objects = { /* Begin PBXBuildFile section */ - 00765725FC1A3DAA2AF9D291BEDF2AFB /* GHComment.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A75E31860E403A59D3831C91CD2C6F7 /* GHComment.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 010B5B2C12CD95DB5BA9E4F884D3B6DE /* ImageProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B321013D0FA8B826F572B1EDFF1D0634 /* ImageProcessor.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 02B5DBC50EF40818993C4A0029381F29 /* Cucumberish.m in Sources */ = {isa = PBXBuildFile; fileRef = 90F1271A95A025A32CD2CC5AFD3EEE3E /* Cucumberish.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 02CFE8E81D41D8A89B93B6D5B2744991 /* NetCacheControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53B066F45A9E349DEACE4C47C7047BB7 /* NetCacheControl.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 02F9B35A3C0F8BFDD9AD5C8DECD87CED /* GHScenarioDefinition_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B8A09331825C78350D66852896A914 /* GHScenarioDefinition_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 032982BB82CC43083B0847FF036998DE /* Dispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D10CBBFBE1409D04EE2490922399DB1 /* Dispatcher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0531C88E021A5D16963F500AF67973C9 /* GHAstNode.m in Sources */ = {isa = PBXBuildFile; fileRef = ECEAFE26FC2A189642450D341C2BE602 /* GHAstNode.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0722811654DF468FF08A76E37596A069 /* NetTask+URLSessionTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1708F96D13D5DC12EBBE06232FF6BDCE /* NetTask+URLSessionTask.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 07F56266B4D1A320ED1E5CDA88CD6A96 /* GHTag.h in Headers */ = {isa = PBXBuildFile; fileRef = BB9386E51385352BC9FB9EF68E1D81A0 /* GHTag.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0ACFE9FFD55E687B101865B77DDA5AFC /* NSObject+Dictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = BC244C19611F9AC4865AF33CEE2EA3CB /* NSObject+Dictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B7E61C3F494176980A6DC826E355FA8 /* NetRequest+URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8ED353F5B05B93A12E15F2A6A99815E /* NetRequest+URLRequest.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0C615CFBA1C18F845B23E567B5356C85 /* NetRequest+Build.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3F8AA2B7E7FCA75FC659A865E76424C /* NetRequest+Build.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0CA6357476373C221D44C498AA1D65FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - 0D942EBE4CB3E6153BB191F9DFC45C01 /* GHTokenMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 577BAF94C97A10F39552C58D4BE3323E /* GHTokenMatcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0F1907D680315744BE454E4C7FE3D5FE /* UICollectionView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 244B14795B634653852E48BEEB445A00 /* UICollectionView+Reusable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0F403DB8E1776C29261EA7844434F27C /* GHAstNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 09E8E1D893F1AC92FABFA8678CD63A2D /* GHAstNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0F4EED34A8A4F638927410BC9FEE2287 /* FormatIndicatedCacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4424C6206DD75D10DD1633BAA77D8BB6 /* FormatIndicatedCacheSerializer.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1039129DE0484A38086668D5092BAEF6 /* String+MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FA80097D76522879D00DEAF26BEF4DB /* String+MD5.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 11C76A923C1932A287BF19E0B274116A /* Kommander-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CCBC453F3CBF7C12E3D09D6539ACF7A /* Kommander-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 131E69057392CB70E1F9E8BA61AAB309 /* GHBackground.m in Sources */ = {isa = PBXBuildFile; fileRef = BD80ACF5BD6234CEBA25081B21AA77B8 /* GHBackground.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 13CE71A758FF204168A9801E1F695242 /* CCIFeaturesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 88463114FCA181C39E97B65B50241E77 /* CCIFeaturesManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 144FEBEBAE6F2C4C96F8C1F7C8E5BCCE /* GherkinLanguages.bundle in Resources */ = {isa = PBXBuildFile; fileRef = ED4501B6751A42CDC7968DC6A0395F56 /* GherkinLanguages.bundle */; }; - 14DEAF03175A8C55BFC909F4C1801EF9 /* CCIStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 22B90CB7A4F9024E828E354B38231AA5 /* CCIStep.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14F2B18FFD24D4D89601C814C7D7E4DC /* ImageDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3801F8CB758F4FCC380AF6B492F655 /* ImageDownloader.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 17E1022F5CDE697AE67BC2509BCDCF94 /* NetRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8F0BE388E3707E325BD653441FD30FE /* NetRequest.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 19FF158C157329D235AF71AAB53ADACA /* NetMultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9246FEB8CABA64B2CDED534B32A22465 /* NetMultipartFormData.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1A568D6CECD35803569032D4484C44B2 /* GHGherkinDialectProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 43E3EC9F49194963FD09E4DBC3F65C49 /* GHGherkinDialectProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1B6B91EE4BBDEDD602A8B6E68FB4A376 /* CCILocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8281EF23B53CBB80EAC3F5F3B1F551B6 /* CCILocation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BE4500E46B3019974E7DA25E13ED134 /* NetTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0DC10A40ED3F69D377C9C7DE17BE918 /* NetTransformer.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1C020DECEC209AB9BC2E0D6B3070BAFD /* GHScenarioDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 49881B2B8818398E2DF3F70F2B30AA23 /* GHScenarioDefinition.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1D43F7CC1D96FC85F8107AF2F08A81E4 /* CCILoggingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FA4E80198570C22C1E01A1385215404 /* CCILoggingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1EA5110ABE668ED203140A72746192D7 /* RequestModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0408B5D6E1570ADC185144E4D0FD360 /* RequestModifier.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2193444227A0D1DD4CF8FC5F42E4D982 /* GHParserException.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EADC89B86A15B01AF8DF2D85BAD4E2 /* GHParserException.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 23CCC46D32FA61F55B7D6106DCF2DC7E /* Reusable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0334B97C18F5A5181D889367D9BD6683 /* Reusable-dummy.m */; }; - 242E05C725A85287849A84D8BD293A85 /* CCIStepsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F994AB9F800DB12A51955CEB5FDC77A4 /* CCIStepsManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 25BF76F86631B6A1FE6325F49BF3CB48 /* GHDataTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 17AC558D2BA96344B1CD5F3772E3664F /* GHDataTable.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 266B03E59F034981A8D8EC781154449E /* GHGherkinDialect.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BB97FD642FF1F06308A1F2DCFFA4A6A /* GHGherkinDialect.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 27CB724262DDB39A8161563F8EA3F172 /* GHHasTagsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D52E535A0B97F24335F9C03AD998FE6 /* GHHasTagsProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2929B7A117AE6E033F7C059BB28F9D54 /* GHParser.m in Sources */ = {isa = PBXBuildFile; fileRef = CD760E8D43115014133B68F69A29C961 /* GHParser.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2A565D3E80B26F63885D6F8A64F4CA90 /* CCIStepDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = FD79497C2D850A6B6F05B59864F2E804 /* CCIStepDefinition.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B7AD418F2EF5145A0F64EDE5B2EB9B0 /* CCIHock.h in Headers */ = {isa = PBXBuildFile; fileRef = F84FA095FB6C0D311E392E2D781CDAAB /* CCIHock.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2DA1CB2598193DC6CBC6B52BA5B5A488 /* GHAstBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 20B157F63367D281AB6F3E986802F0AB /* GHAstBuilder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2F288ED3641B2B4775884C462AE377E6 /* Kingfisher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E74A6E52CEFEE37B6E29ECD8C8077D /* Kingfisher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2F90120D20E6022A4076DF0CC308ADFB /* Cucumberish-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5445AEC20BD2B1FD7608C457940102ED /* Cucumberish-dummy.m */; }; - 312837097D2DAE14B135232184AD00A8 /* CCIStep.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E02F8085C083C037B4FCC60C7476A5 /* CCIStep.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3130C1F8D873C94DC829059468926987 /* GHTokenScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = B0E22E920173EB96CFB5013598E34BC3 /* GHTokenScanner.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 31D24DA6775E54B5B98647B97CA2A23E /* Kommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 641A34B781924776A94DAC2164D616F9 /* Kommand.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 337B7C4B17B21087732A2B2170F537D4 /* CurrentDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D0D40EB4E5AE8FC09497E4AAFB19DD3 /* CurrentDispatcher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 347E267C86D7C5E0386D2790C49A180F /* NetResponse+URLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 282C408CEB8D37DD532573D6D02C3564 /* NetResponse+URLResponse.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 364F78C03C67D26FF50F72BDD867D892 /* NetURLSession+Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8CA6437AEC828CAAAEEB7F1D3CF2C51 /* NetURLSession+Data.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 399330182B858D0D87F6F95686A5E7F9 /* Kommander.h in Headers */ = {isa = PBXBuildFile; fileRef = E435C3EE7CF5D55A025A3429CEC80D06 /* Kommander.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3E1135BADE8012B984A6D63559BA6285 /* Pods-Archit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 885247A7BF6CCC8F0FB83008F1432EEA /* Pods-Archit-dummy.m */; }; - 3EC4933635344D02DB636500470E8CAD /* ImageTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8753D181F4A75B131BF35C8B5A58BAC6 /* ImageTransition.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3EFF1EB46E9FCBFE65A26D3A0C0C96BB /* GHGherkinLanguageConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F4395159892A1152B0850B4C7E5272 /* GHGherkinLanguageConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 411DEA49C6963285F84D423AA4E41D55 /* CCIBlockDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = C16B5D14DCD613E6E5B4BA3E50599DAB /* CCIBlockDefinitions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 419A66DC7CCA52C3D54B98610F412E72 /* NetURLSession+Download.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375F60E0C7B722F2A802BB253404F787 /* NetURLSession+Download.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 42A18808B310BEB20B4646D3FED0D438 /* GHGherkinLine.h in Headers */ = {isa = PBXBuildFile; fileRef = EC529629E9E0578488AB23310F75CCF9 /* GHGherkinLine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4398D6EC401D888E75B1692DA45D30FE /* Pods-Core-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 33DC377F603E6E9CE5554EF0EC9E02BE /* Pods-Core-dummy.m */; }; - 4407DB2436072E9358CB20C87698BABD /* GHExamples.h in Headers */ = {isa = PBXBuildFile; fileRef = 8507B1DF5D363C1471973B565283EB96 /* GHExamples.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 447BDB5D42EA6C04156E1C284FC5056F /* AnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AADC38BE757DCD9543D6BC06E439952C /* AnimatedImageView.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 46F01848C415CED795AD46F9BA9A17A9 /* NetTaskMetrics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF5E11EA16625CCCC49BE84FDB13263 /* NetTaskMetrics.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 47F120267BD3D086D42C6384932D82FA /* GHTableRow.h in Headers */ = {isa = PBXBuildFile; fileRef = B0F504F41B52982765CD40346B19CF67 /* GHTableRow.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 480B137E2CD1B0BAB2FD46DEE357F0B0 /* CCIExample.m in Sources */ = {isa = PBXBuildFile; fileRef = FDD5D51E51A4FD8FF180359B03B8678A /* CCIExample.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4A02A546484FD3426D258BEAA1D07A5E /* GHGherkinLineSpan.m in Sources */ = {isa = PBXBuildFile; fileRef = E403DC858CDE1DEB37E3EFA363F7AAE3 /* GHGherkinLineSpan.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4C079F276D78FCE815F5EBB3A6859133 /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 890D648E4AEE1F97A0B4EB3F0AB0AB65 /* ImageCache.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4C2361380820A274D78A9030E58D5C0F /* Pods-Core-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C0FE5B24513E16E99665A1BFDA597AE /* Pods-Core-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E22D2D51248EFB87EF0349F8C58DDD4 /* Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D27F30E3BA0D97600ED5644A499A8A30 /* Kingfisher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4E3D14C08AAEA84AA137B69E68593E9F /* Pods-Domain-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 86B2B3F017862511356BF3EEE68B888B /* Pods-Domain-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4F1A6506DDB54703C7935747FEEB550E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - 4FCF471EDDA34DD54DA0F3842CF49C89 /* GHGherkinDialectProviderProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = A99FD97316822396200618A6E2380C99 /* GHGherkinDialectProviderProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50B005C06620EDE2B7C5FF3D4B02BB39 /* Cucumberish.h in Headers */ = {isa = PBXBuildFile; fileRef = F16B831451363E8F683F2D7A136276CD /* Cucumberish.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 518006F5E9ABE7A3742B7F91AB2258FA /* KommandCancelledError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42C8A4358BDD417915B2286FE20CE493 /* KommandCancelledError.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 52416A6AC7387ECACCC45596498D96AD /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B2FB3A427B7FE691F70DD5D916628A0 /* CFNetwork.framework */; }; - 53E18AA935F29E65EEB1FCEED3035F20 /* GHStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 60D9D99B109737B2724C9445ED57D519 /* GHStep.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5423F5E90C38445C2C70673CE6AFFB54 /* MainDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CC49745B5DC823A1D901CA75C4B73B /* MainDispatcher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5457AE40BD8B5084DDCE3C71E10A47A1 /* CCIFeaturesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DD614384264785CBE236EAB0BE75E044 /* CCIFeaturesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5492E776306374DF34FDF284A5A64B65 /* NetReachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E27A573743711820EFDA4FAF27117ED /* NetReachability.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 555F2811A5380017DBA82FD9A907A71C /* GHFeature.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C930CF1943CC9DCAA6BBA7AF37B1B15 /* GHFeature.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 56E81EEF4B273A45CBF38AFE79C06EBA /* CCIJSONDumper.h in Headers */ = {isa = PBXBuildFile; fileRef = BBE21F0C99306E05E6C669C182DEC59A /* CCIJSONDumper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5712C10C32BBC8580522EB9725E98664 /* GHNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B2391930E1666717802262A587619B49 /* GHNode.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 57526FDA59A5D311A20489E851EDF211 /* GHScenarioOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = E7F38C1D85DDE25FEC5600E42A8B7DA3 /* GHScenarioOutline.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 578F72BF592FEC12E99ED50FCABC1979 /* NetTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0642777F482BEB8D29560A9F4DA519E4 /* NetTask.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 599651F977311AF3C3D2D2EB2E443F9D /* GHTableRow.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BF1B337EF01B0FC642267269AE20249 /* GHTableRow.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 59D2576C76C3F7665B9831E04268B858 /* NSString+Formatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 87ABF7048062B4547BC16DC7FA1FCD55 /* NSString+Formatter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A0DAEEAA36A22BE0E597D058404EFD2 /* GHLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A6BB1D572014B5EF05DFCD11342822F /* GHLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5ABEB0DBA79C9EC8E90CFA1B43393C6F /* CCIAroundHock.h in Headers */ = {isa = PBXBuildFile; fileRef = CB70089C09285DD380F1BBC984D026B0 /* CCIAroundHock.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5B5D8AE167BD8E304CE474A9B8DBA2B4 /* Kingfisher.h in Headers */ = {isa = PBXBuildFile; fileRef = DCC849114E0E1EDC37690CA0FB2F9BF0 /* Kingfisher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C01B01A525A8D57696EA9505794F26F /* Pods-ArchitUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7EAFE6A941D9220D4DAD48D3F9D10F /* Pods-ArchitUITests-dummy.m */; }; - 5CB1E97E87EA861F0CA46364FA1D82E0 /* CCIScenarioDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = F0DB998C7EC191CBEEECC7E28A8565DA /* CCIScenarioDefinition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D26A20B10115EAAC82AA67219B914F7 /* NetURLSession+Upload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B13FCBE12DE3189C4D06BED22583176 /* NetURLSession+Upload.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5DD7E65BC7F21B4C02718193401D356A /* NSString+Trim.m in Sources */ = {isa = PBXBuildFile; fileRef = 4338710AA51ACE3B66CB3F0F1C7A6F84 /* NSString+Trim.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5DE70EC2AA0EFAD599CED24CFF4CA274 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE5BCBB9E0C433671897AFC6375A07FC /* UIKit.framework */; }; - 5F978FFABF9C8D142F1E477456003823 /* NetAuthorization.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C30FA2A497779FDFE246C66D753E38 /* NetAuthorization.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5FB2535CA93CC18996A8393A10ACFF1B /* CacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC9CE88C9276E031C6BD54C214724E84 /* CacheSerializer.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6327175C4E0CB8EF4C9D5388DC0DC0CD /* GHGherkinLanguageSetting.m in Sources */ = {isa = PBXBuildFile; fileRef = 722D714C5319B2F60FF9AB246250143F /* GHGherkinLanguageSetting.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 63434015B3CFC99210B6B4E07F75405D /* Pods-Archit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8554460064553348A0170DBB2B665C /* Pods-Archit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6360477D3C59ADCF1B2A84064F2D023A /* GHGherkinDialect.h in Headers */ = {isa = PBXBuildFile; fileRef = C01BED710FCB5E750821A3A88F71BEE0 /* GHGherkinDialect.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 65004652CBB204F661DE8075FE1A1E45 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E83225AB05AC15D03FAC35A1696708E /* NibLoadable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6596B0F87EFC7E467E4C46BBBA147601 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - 6D60129D27BA37EABD8BB2108CBA419D /* Pods-ArchitTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BDE70461FFB96B0F12CF5C388D89E94F /* Pods-ArchitTests-dummy.m */; }; - 6E28875617E4F36C41B8D967A8EB61CE /* NetURLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCB38FD5B3ED5EAABA28B776B9A3278 /* NetURLSession.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6EC5F2A5CB44095B545F0003F80B9F5A /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9F53110434ACE4C44624377C38B4AE4 /* Resource.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6F172AE2BA037F0C909A9D947D59AAA8 /* NSArray+Hashes.h in Headers */ = {isa = PBXBuildFile; fileRef = 70FE0D29937F553FD6ED820CF6E91B75 /* NSArray+Hashes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71DC0C14DC24E3AFC91CFB4CAA98FDD9 /* GHGherkinDialectProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = E630F118AF1ED7AA212BDC40B6DF1D26 /* GHGherkinDialectProvider.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 751C1C87B496B61443CD6C4C42C9BA8D /* Pods-ArchitTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A04D1F57C465AFA338DB3122EABD175A /* Pods-ArchitTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 77FDBFDCEFB9A449C43C3A40EF5271CA /* GHParser+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C5232AC1C1892C763F818DC2C5B377 /* GHParser+Extensions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C663005430C858E5D86C20916FABAC2 /* ImagePrefetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 501E02D9CC376317C3E23F484B565A0C /* ImagePrefetcher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8250CDE03A6A5DC3F2398DCB77C0B03C /* UITableView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F59B0670561DCCF6E34910B679FC872 /* UITableView+Reusable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8275E4E972071F016A493A6FB0B40F40 /* Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7C1792E42CF3E06691E8BEDE8468BBD /* Placeholder.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 82A5A2AB167C19E3E8F8E9080CD67ACB /* Kommander.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C96F8D89CCB9EB78AB460C4D42A609D /* Kommander.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8448904574BA9E216EF2B8BC5D779068 /* NetServerTrust.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7609E53D3BA4B54F4ADBA1402E49DD /* NetServerTrust.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 857C2FE94D315B6362134113FA009652 /* CCILoggingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B405F20EC25F983962733A85955FE794 /* CCILoggingManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8675C94B2A6FD104180C642A55DEE1F2 /* CCIExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C5DF40AAB4E08D7F0F9EC9EBA65752F /* CCIExample.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 886271C8BF2746B515121D676A264674 /* NetResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1538939479EA6EFDC8D622E4B274A30E /* NetResponse.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 89336A52BBA47EF814EEE974A534AA3D /* GHScenario.h in Headers */ = {isa = PBXBuildFile; fileRef = 487CC6F42840B7117BDF79AD5E905C2C /* GHScenario.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 893E3541D0995F326A31604B5C75BC13 /* Pods-Domain-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F508C634E8DB74799380F1DAA96F541C /* Pods-Domain-dummy.m */; }; - 8A596628D1172E0BBE74C8B70C077905 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B865959D5C3AD675FCA9B905AFDA7F /* Box.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8A988F41A07E47F8D5E3732947B9F1BB /* NetContentType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BA79E79EFDF19B359340C78FD1730D7 /* NetContentType.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8BABA99FEBA8069DB4DCD0F22F441069 /* GHStep.m in Sources */ = {isa = PBXBuildFile; fileRef = 875548467F3020F98FBEF9D2CEC11ED8 /* GHStep.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8C67389D6328E71FEECB1FC7821A1E14 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - 8D22849FF49639C9BE402EB47B97FFB0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - 8DB8E1AE2EC0B6EDC06490FA77765C31 /* StoryboardSceneBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DB5D251E969EF819A0CD86D44708C49 /* StoryboardSceneBased.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8F37FDAD26B5386D1E91576F4D2C579E /* UIButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AB45B95C4478A8D016360B8825496D /* UIButton+Kingfisher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8F83D3A1439E462EF6DA5AFF408EC880 /* CCIArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 6191781C6A5EFC4966B1B7319676943B /* CCIArgument.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8FBAAAF795A9215767FEA93457333F1D /* Kommander-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 89589E81B432D6584805B599EBBA353C /* Kommander-dummy.m */; }; - 9147A3DFB908355B66812DE65402A128 /* GHGherkinLine.m in Sources */ = {isa = PBXBuildFile; fileRef = 01288DE64D2DE752BF83B83EC6C758FB /* GHGherkinLine.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 91695834575E2AB820DE34B660735A90 /* GHHasDescriptionProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D9EA26FBF2AB4775D19AB45D4E1DA09B /* GHHasDescriptionProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 916F615039ADEBFF29CD2B233DF5BE6D /* CCIJSONDumper.m in Sources */ = {isa = PBXBuildFile; fileRef = C36BBA2B7AE2DD60A205636F6E1D7187 /* CCIJSONDumper.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 94E437332009CD5928DDF37A42E14004 /* Net.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00BC388DA8FBC50920FEFA8A469D8540 /* Net.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 94FEC07DCA6CEF2C01116CFBBDCD0ACA /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71B70CAEA44530A452AD8B04D127782C /* Reusable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 95F20504AE5CE445C423294D159485E1 /* CCIBackground.m in Sources */ = {isa = PBXBuildFile; fileRef = C014190CC863BBD187BB6C32507C8503 /* CCIBackground.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 96F21A7ED33C7F68A53E303922B7034C /* CCIFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = E223322D994B498E2C46629FF8E8D713 /* CCIFeature.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 977112B3C78B4D5CDE3F862372CE3D70 /* CCIHock.m in Sources */ = {isa = PBXBuildFile; fileRef = 7588BEF79C0FC540F64DE8C3EA41B288 /* CCIHock.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 984450956C888C369434949AAD0AC352 /* Pods-CoreTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 598379A44F04CB77AA27D6523E196E54 /* Pods-CoreTests-dummy.m */; }; - 9A773350D6B7FDDAD34C2523EA1983B4 /* GHBackground.h in Headers */ = {isa = PBXBuildFile; fileRef = 97267FEE7A041C463519A62F541DD3CC /* GHBackground.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B37EC010B4BC458ED1CF39D9E21A70E /* Pods-ArchitUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A789ACDF548A52ADE6E3F3CC8A093C5F /* Pods-ArchitUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B7CF3F9B7EAA68D6A13806DA7451F03 /* GHLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 70C0F70CF2574B424E4141004C69FD95 /* GHLocation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9D8433877EEF871BDD4C52D2FED841C3 /* GHNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB28BA7F616CE436C25C21C46038173 /* GHNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E0B64984AD97AB40BF03A37983EC35C /* GHGherkinLanguageSetting.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE244E17488A6BE712EA61D93BDFC28 /* GHGherkinLanguageSetting.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A12D191EFBDB11F04A6DD5CBA3A497BB /* GHParser+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 84C29405241D949ABDA5DC37D2A97128 /* GHParser+Extensions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A47513AAA9E650897D079552AD719B1D /* NetResponse+HTTPURLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0451BBF5FC60311128765190C98988B /* NetResponse+HTTPURLResponse.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A4C1986F220525D7D3C1CD9BEBCF5320 /* gherkin-languages.json in Resources */ = {isa = PBXBuildFile; fileRef = A2D29FF5B5E65120C77D7AFEFB2C7BE8 /* gherkin-languages.json */; }; - A4D79FF5AA9398ECCC446AD6485712ED /* ImageView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9002A3C06AD140F25653BC31D447623 /* ImageView+Kingfisher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A5DB00233E2F6344D95AA710210F9855 /* GHParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C7395779259014429357ED42A1EA179 /* GHParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A6E1E980C9E36BABF9079D084510C50C /* NSArray+Hashes.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE393F57DF2F0403688B38083F67349 /* NSArray+Hashes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A7D993D9C0850B594C508B8123E7CB5A /* NSString+Formatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 113C082140CA691A5FFE918F903AB652 /* NSString+Formatter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A9B82BE9934E812CD8A2470D0120E214 /* CCIArgument.h in Headers */ = {isa = PBXBuildFile; fileRef = D53CE861CE4A32CC2A71CBB6A1FD1BC4 /* CCIArgument.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ABB39C4F6E127847DFB6BC8979E18F72 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 054740DE9C752377491F25745A067F75 /* Image.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - ABE46FE3DE4313913C03D268C3F31009 /* NetError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCCA7BF0F4C690712986A4C93D9C7591 /* NetError.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - ACF7436162329C7EF8E4663269B532CF /* Pods-DomainTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C6D6B5617EB213560D427F81EECA6F /* Pods-DomainTests-dummy.m */; }; - AD037B6217A1DD1FF3B0EAF8373282B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - AE1EDF8E65AC4244558141DD64B5E7FD /* GHGherkinLanguageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FF3F0ACC5B661B1D6133483D8D375EA /* GHGherkinLanguageConstants.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AE65E9439900F353395A432B7EA2FEE0 /* GHTableCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5AB438E442560442FA263C699F13FB /* GHTableCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AF6C316FB023469C303B1BE124A825AE /* CCIStepDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 005F1EA4A4E62BECCBF270BAE6B8A222 /* CCIStepDefinition.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B39E271B43A1E341A1BB68A351AF14B2 /* GHHasLocationProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 68D6EEF01B1A446FD5991942D0D6528C /* GHHasLocationProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B3CE2C47482E6C67201575ACB7927BCA /* Net.h in Headers */ = {isa = PBXBuildFile; fileRef = 284C72D038CC2B770D49150D70299699 /* Net.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5152FB9483578B74F2168101E3E072B /* GHComment.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B8D75CF52E36C189210AC226107CAA0 /* GHComment.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B523A50D28CE2C84D9E2FD5A2B52CD2E /* Indicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03DAD94ACD5BA857EB343CFF9D4F3F99 /* Indicator.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B5880C43852C32D1A52BA78C14931D52 /* GHScenario.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F92A73B85089F9AB722321FBE56706C /* GHScenario.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B684009BED94E45876B73CD59AC95BFE /* GHDocString.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A38ADE368813DE465BEB4D785373040 /* GHDocString.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B901615F30064AA769A71D4B71AA6CE3 /* NetResponse+Build.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31408E233988E0CD98D7AC9DCB9C7B12 /* NetResponse+Build.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B91552B58FE81C86CA64E82F8632D1E4 /* GHStepArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB3BB6C378B23060B372171851B2218 /* GHStepArgument.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BA64071C9C10E14D75D41D5CD813B10C /* CCILocation.m in Sources */ = {isa = PBXBuildFile; fileRef = B3DC205CEA85348126BE49485C97C1C7 /* CCILocation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BB6346706B07DB1368FEB5B9A319F48B /* GHHasStepsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 332B8501C0E8DFE0659B5D6C4175A7A6 /* GHHasStepsProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BB68029A9C99B6C203E325ED5EF53089 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - BB9C8B868FA5BDBD347B30E20A258E3E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - BE99DDB8959688DB9695DCA7494A39E4 /* GHTokenMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B1EA6306D32026FBBD3B61C2176A5B /* GHTokenMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF35347A195DF2232B482B05BC2D1722 /* CCIAroundHock.m in Sources */ = {isa = PBXBuildFile; fileRef = ED49AA4E1C396957E42F1473585BFDE6 /* CCIAroundHock.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C175C7CF94FC1ACB02CFAA83334C4ED4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - C2CC9FCDF0B02D683F22E129F5D35F25 /* Kingfisher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 536397E321221D950751E8012EDA84CA /* Kingfisher-dummy.m */; }; - C40F709E537035F4208B90871A65DF07 /* KingfisherManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACB5E70D98AA875B44E900EF2411163B /* KingfisherManager.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C72D49310B9B454D0A40969A3378E118 /* NSString+Trim.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ADC6A361EB44D2899FD424B13075748 /* NSString+Trim.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8CF08E8554B51895A999659DDC6CDFC /* Pods-CoreTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FC0A1A134909DFF3806F903F538BC6E /* Pods-CoreTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C96C30663D16476EA65AB33615DE46AA /* NSObject+Dictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CF8357C712226C79181760059FC5BAE /* NSObject+Dictionary.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C9F07D942847BAF21633F8B1D24DB010 /* GHAstBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CBCED0E7E1D7AB93C3DB1ADED7F293F /* GHAstBuilder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CA893D46DF745C32064E5C3ECF9CF378 /* GHToken.h in Headers */ = {isa = PBXBuildFile; fileRef = BA9EA8AFEA10727188E0F300A24AF95C /* GHToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CABF873D847F68F51F2DABBEF2921D37 /* NetTaskMetrics+URLSessionTaskMetrics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C34427298BDD3207657B7E12AE6A0758 /* NetTaskMetrics+URLSessionTaskMetrics.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CAC5D4482A80F8E428F50D4EF0F099F3 /* StoryboardBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = C37B10AD078A86B6A416723CE59F2BDD /* StoryboardBased.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CB1E778A18E18EF37E9D17C822795ADB /* GHStepArgument.h in Headers */ = {isa = PBXBuildFile; fileRef = B3E39EF1DB22F72499549E7EDA489C3E /* GHStepArgument.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC7AF8272E28BD7CAEAF80B769A8E42A /* CCIBackground.h in Headers */ = {isa = PBXBuildFile; fileRef = 148CAAD3E8300FB74FAF0B42BACBDBD6 /* CCIBackground.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D01D28DF417A450E93130044E6AC32BD /* CCIStepsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C32D5F2E0C0961EF22038D3DA794CDF3 /* CCIStepsManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D0BED64882233D4E636D5DD54A1D1A2F /* GHTag.m in Sources */ = {isa = PBXBuildFile; fileRef = F94175319F797AE2A0A31280CBC6DB76 /* GHTag.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D18FCC0D2F39664A387177649B63E21A /* GHDocString.m in Sources */ = {isa = PBXBuildFile; fileRef = D0547828A3DE6F0B26D9099462895817 /* GHDocString.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D4C21B2C05BE7B8467CB3EB1CAD7CAD1 /* GHDataTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D85E8E7A84775ADF7069FC0F15B6A8E /* GHDataTable.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D53A7859509C220EB400C6C67E532AFB /* GHParserException.m in Sources */ = {isa = PBXBuildFile; fileRef = 93FB82FFD53B2E00189A44A86AD761AA /* GHParserException.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D5F510C1918F6DE0AEBA4F75C1D1C5C0 /* GHScenarioOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = FC2AD36BE1D9D2D146666C876964F5BD /* GHScenarioOutline.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D66018C5BFD7DABDB5838C19BAE3FA98 /* KingfisherOptionsInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24AE46FDC746C3F9D0C613622109E360 /* KingfisherOptionsInfo.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D693D1391BB584628B984893615436C9 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A3C7B9A55E284E5B3F8CB3C11B2C185 /* XCTest.framework */; }; - D7639AEF0DD7A828243919B5FDD8E150 /* ThreadHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139EB71FAA47D0582F1A43B72E04F7F7 /* ThreadHelper.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D935BDF0EC500D5396FEE01B8DBA178C /* Reusable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 695246E9C7E67B1E1ABCD34E5F0D97C1 /* Reusable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9D37E9A72367D9E7A630AF9322D31FF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - DA306B26CA4424083CD6C9F1C7060808 /* NetClient-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E3FEAAAF9BDB6671C7DA01DF94C3D39F /* NetClient-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DB4F5423BF8FF0B32443D41779C8EB11 /* CCIScenarioDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = D69F37EEB7FAEB6B2CD9C25C336D9D71 /* CCIScenarioDefinition.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DC0D523C7FBC155BE18A946723866612 /* GHGherkinLineProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 580BC578B0E4F7F8BAB7DC278417F72E /* GHGherkinLineProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DCF7D4CCBDD59823A44B262A41C7E9FB /* GHFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B180D89CE60201D55199F6E752E32AA /* GHFeature.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF162C05F9D047382E99B598CAF5479C /* Pods-DomainTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C9D4C509E0A2BC5CC77C09F946BCB9 /* Pods-DomainTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E17E4D6FEA6B87AE31B478E1446714E6 /* NetClient-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DBA0CA5018F27D26CA4A7CD8D9BAC6CA /* NetClient-dummy.m */; }; - E1A0A0F0D5CFD271A8F6AD41980C7E43 /* GHToken.m in Sources */ = {isa = PBXBuildFile; fileRef = D1D26F501D99011AFA5E72E1B5827D59 /* GHToken.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E4A9930ACC30B142F671BE52FEEFB424 /* NetURLSessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEA414BDD48FCE3BDAE22E5D5E91A3BC /* NetURLSessionDelegate.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E5FFC1E3DED9E093B42CA963C5B3ECD7 /* GHGherkinLineSpan.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E68BEFB9D78E1C18B4586D13FAECA7F /* GHGherkinLineSpan.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E685C576F1A060B334C1FB759675F084 /* Cucumberish-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C8A333DF860CECC280CF28E3E7043C1 /* Cucumberish-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E744C608F95EB6361766839E135D9B22 /* NetURLSessionTaskObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CF56BF0267472F44C12E56FEA6DE980 /* NetURLSessionTaskObserver.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E81384DF91581A799533F8CA96B805FF /* CCIFeature.m in Sources */ = {isa = PBXBuildFile; fileRef = E0677000A0617BE4EC29561A32F9BD0F /* CCIFeature.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EA50D4F48AB601157CD85FA165DBC0E6 /* GHTokenScanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2561F060BF61398A50B4489A92A3DAA0 /* GHTokenScanner.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EAFBC438AA244E0F4C4013A4E4C2C838 /* GHTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = FBC4FEECBFD4603875DE87EE2AE08D8E /* GHTableCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EB1C7DF4A938FA2C277B203147652F0A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - EC6E044374C790A0ED8C9550FBAB822D /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4A360A026778D59895ACC4233A5CDB2 /* NibOwnerLoadable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EFC53F45D1F211F4BBB1E45C1988C0A9 /* GHExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 13EAED2A3DC51CB65C37D7D5B5F77F7E /* GHExamples.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F119D892301225D17A0037325D6905AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E37721444E14D2203953917EDA93A838 /* Foundation.framework */; }; - F1898DCC76147ADFA9981A427A7B3133 /* NetURLSession+Stream.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6507F8F37DE931141D9113A13272467 /* NetURLSession+Stream.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F597FE5626EF7EBDB6437B5256EFB66B /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E91CA9BD4CC4E04F00DD4E48093ABAD /* Filter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F83D76D568A76D700515723D4A0F373D /* NetResponse+Cached​URLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF0E32B1CEE6BA13241BDDA9683709A3 /* NetResponse+Cached​URLResponse.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FC4DAC18846C1685687DC91E44F661E0 /* GHScenarioDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 810A388F5CE676277077606F0DE85507 /* GHScenarioDefinition.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FFBABBD3633F8BF1183557A3A5320234 /* GHHasRowsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 48445193109D6CBE932747DFF1F1813B /* GHHasRowsProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 00765725FC1A3DAA2AF9D291BEDF2AFB /* GHComment.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BB0073F04C86CB83C780A8B30B7726E /* GHComment.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 010B5B2C12CD95DB5BA9E4F884D3B6DE /* ImageProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85206E038BF7A1DE4819B3CF2EC67B6 /* ImageProcessor.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 02B5DBC50EF40818993C4A0029381F29 /* Cucumberish.m in Sources */ = {isa = PBXBuildFile; fileRef = E347DAEA2CCBE0A8030261AC0200C22F /* Cucumberish.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 02CFE8E81D41D8A89B93B6D5B2744991 /* NetCacheControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E1DCDB7FEECCDFC9EF05CD2ED343F7 /* NetCacheControl.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 02F9B35A3C0F8BFDD9AD5C8DECD87CED /* GHScenarioDefinition_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 23725B3E391C2CA4E764B98EA6616FCA /* GHScenarioDefinition_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 032982BB82CC43083B0847FF036998DE /* Dispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F4493B363C0E7240E5CD4E86EF054 /* Dispatcher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 03ACFC15A6A3C99B2C4B7CFB5FB99B01 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + 0531C88E021A5D16963F500AF67973C9 /* GHAstNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A6A05B9B5579FB89375C6829A443AA /* GHAstNode.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 06C360FAD51A87CBCA7DC2E536C9798C /* ANSIColorLogFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7706E5140D81057771F7284126CF1516 /* ANSIColorLogFormatter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 070A5FEF730C74D8C0F4DEF56D3C940E /* Pods-Domain-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F508C634E8DB74799380F1DAA96F541C /* Pods-Domain-dummy.m */; }; + 0722811654DF468FF08A76E37596A069 /* NetTask+URLSessionTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = D21F7CAA251E028DC99798301BEB9B92 /* NetTask+URLSessionTask.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 07F56266B4D1A320ED1E5CDA88CD6A96 /* GHTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 800A06DEF441E24C02887CCB12466104 /* GHTag.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0ACFE9FFD55E687B101865B77DDA5AFC /* NSObject+Dictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 09D0110497B78198A8771C61A499CD69 /* NSObject+Dictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B3F64CE4A4242C1994085B8CEE6339F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + 0B7E61C3F494176980A6DC826E355FA8 /* NetRequest+URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07965558AED140C574B015AF94F18CC8 /* NetRequest+URLRequest.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 0C54AC5F3FCCBE79348541775C3CBD8A /* ObjcExceptionBridging-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FCF4078A036BB2B0AA1433788C643E42 /* ObjcExceptionBridging-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C615CFBA1C18F845B23E567B5356C85 /* NetRequest+Build.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF6D625E298BE2BC6C1C5036BDE3228 /* NetRequest+Build.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 0CA6357476373C221D44C498AA1D65FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + 0D942EBE4CB3E6153BB191F9DFC45C01 /* GHTokenMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = F23E2D6F14D9EAA391BB5D4843B7B3CB /* GHTokenMatcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 0F403DB8E1776C29261EA7844434F27C /* GHAstNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FE094F3E9D445A94931C7919BADF1390 /* GHAstNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F4EED34A8A4F638927410BC9FEE2287 /* FormatIndicatedCacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3342D73F450C731992C709364E409AB1 /* FormatIndicatedCacheSerializer.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1039129DE0484A38086668D5092BAEF6 /* String+MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = A13E41155BAAD04E0AE171E2F709E942 /* String+MD5.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 11C76A923C1932A287BF19E0B274116A /* Kommander-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DC032BB5C053769E7CCC82B4C33C2E19 /* Kommander-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1316C5B6437562DD70FA6688C6333E84 /* Pods-Core-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 33DC377F603E6E9CE5554EF0EC9E02BE /* Pods-Core-dummy.m */; }; + 131E69057392CB70E1F9E8BA61AAB309 /* GHBackground.m in Sources */ = {isa = PBXBuildFile; fileRef = C124D3C1326C8260DBA30CBB3E96E453 /* GHBackground.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 13CE71A758FF204168A9801E1F695242 /* CCIFeaturesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 89FF1CB6FFED5315635EE8CBADA274C2 /* CCIFeaturesManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 144FEBEBAE6F2C4C96F8C1F7C8E5BCCE /* GherkinLanguages.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 024F1BFA1F5C914C134BCF9DEE64A78D /* GherkinLanguages.bundle */; }; + 14DEAF03175A8C55BFC909F4C1801EF9 /* CCIStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 0552564CCC68274EB114B7A64D598D4F /* CCIStep.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14F2B18FFD24D4D89601C814C7D7E4DC /* ImageDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1778866AEAC8C44E035E896079F89AB2 /* ImageDownloader.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 17E1022F5CDE697AE67BC2509BCDCF94 /* NetRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64EA67365050760C82B4410A49741CF3 /* NetRequest.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 19FF158C157329D235AF71AAB53ADACA /* NetMultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF872733CE64BD029A1AD2E609819268 /* NetMultipartFormData.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1A568D6CECD35803569032D4484C44B2 /* GHGherkinDialectProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 32532D9DE5706FC96085974F240572C5 /* GHGherkinDialectProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1B6B91EE4BBDEDD602A8B6E68FB4A376 /* CCILocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 81890B8400E3025A7A93365DE3898F99 /* CCILocation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BE4500E46B3019974E7DA25E13ED134 /* NetTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA565B9D1032B85422094A7A64AC658C /* NetTransformer.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1C020DECEC209AB9BC2E0D6B3070BAFD /* GHScenarioDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 990155647EA01472CEB25BD59F1824D5 /* GHScenarioDefinition.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1D43F7CC1D96FC85F8107AF2F08A81E4 /* CCILoggingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A5AC995988DFCCE0705EDDDA040C1EC /* CCILoggingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E89317DE0734B56D83C143ED59D5814 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + 1EA5110ABE668ED203140A72746192D7 /* RequestModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = D036B514C5E8E7C6D53654A520FBCAFC /* RequestModifier.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 21558EFEBD879226D60D094C8825A80B /* ConsoleDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D2806BDDE05BB656A21B0580369ADA7 /* ConsoleDestination.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2193444227A0D1DD4CF8FC5F42E4D982 /* GHParserException.h in Headers */ = {isa = PBXBuildFile; fileRef = 0693820A57511F4E33398A52B401BD9C /* GHParserException.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 225014332534358CB9AAF761F8F90D4B /* Pods-Core-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C0FE5B24513E16E99665A1BFDA597AE /* Pods-Core-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 231CFC69CCC10A5A032B5669DA477791 /* ObjcExceptionBridging-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97B032C2F74B48C801293BF2DD52F567 /* ObjcExceptionBridging-dummy.m */; }; + 242E05C725A85287849A84D8BD293A85 /* CCIStepsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A1008700022E9325453C8CECD8D71B9E /* CCIStepsManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 24C93725983A12A9239A59D40EBAA038 /* Pods-ArchitUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7EAFE6A941D9220D4DAD48D3F9D10F /* Pods-ArchitUITests-dummy.m */; }; + 2513A6DC3E7F3992C4223FAB8691B42E /* Pods-ArchitUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A789ACDF548A52ADE6E3F3CC8A093C5F /* Pods-ArchitUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 25BF76F86631B6A1FE6325F49BF3CB48 /* GHDataTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DCEB59DBD81630136214A71DD857E32 /* GHDataTable.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 266B03E59F034981A8D8EC781154449E /* GHGherkinDialect.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F5DD30454E46196B0025711A434F9 /* GHGherkinDialect.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 27CB724262DDB39A8161563F8EA3F172 /* GHHasTagsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEF7062B0BF8D10A2699B940473F555 /* GHHasTagsProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2929B7A117AE6E033F7C059BB28F9D54 /* GHParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 719C0B609A4CF5650DC5271C807E0EB9 /* GHParser.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2A565D3E80B26F63885D6F8A64F4CA90 /* CCIStepDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DB61AAAC05F4E4E0E8988F9FDE7F1AA /* CCIStepDefinition.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2B7AD418F2EF5145A0F64EDE5B2EB9B0 /* CCIHock.h in Headers */ = {isa = PBXBuildFile; fileRef = AC0499F00F455EC6DA3C5F4197D99BCB /* CCIHock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2DA1CB2598193DC6CBC6B52BA5B5A488 /* GHAstBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D71080F074D6ADB23EC163974386BD4 /* GHAstBuilder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2F288ED3641B2B4775884C462AE377E6 /* Kingfisher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEC4C5C0D9894F1608ECF4AA1B07DAD /* Kingfisher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F90120D20E6022A4076DF0CC308ADFB /* Cucumberish-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 02E495A5BB9CDACCACCD0DBE30DE1ED0 /* Cucumberish-dummy.m */; }; + 312837097D2DAE14B135232184AD00A8 /* CCIStep.m in Sources */ = {isa = PBXBuildFile; fileRef = C79358242879D3127D17078740D41FFA /* CCIStep.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3130C1F8D873C94DC829059468926987 /* GHTokenScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEA872E0A0B67DA1199F5CC862218FD /* GHTokenScanner.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 31D24DA6775E54B5B98647B97CA2A23E /* Kommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810EFCD05DCD0BEE4C35FBC5CFF3D411 /* Kommand.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 325F9F9566F1B1570A0400DC034A3247 /* HelperFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38D94846A5CD346D62433EA36DB78117 /* HelperFunctions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 32B92283834C6A0A76979EB318D1D099 /* AutoRotatingFileDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFDB653F29AFC0C536DDCC2F8B1B899C /* AutoRotatingFileDestination.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 337B7C4B17B21087732A2B2170F537D4 /* CurrentDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 917CEB139B2DD57B86BCE40B54ABFCF7 /* CurrentDispatcher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 347E267C86D7C5E0386D2790C49A180F /* NetResponse+URLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EF069576558D2E644F4FA351A1007AC /* NetResponse+URLResponse.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 364F78C03C67D26FF50F72BDD867D892 /* NetURLSession+Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD5B64BEEEB0E82D42B71E37B1E74DDC /* NetURLSession+Data.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 37E3439D5F5649D4A4D7CBE20814C994 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + 399330182B858D0D87F6F95686A5E7F9 /* Kommander.h in Headers */ = {isa = PBXBuildFile; fileRef = D06DEFFA68E8BDCCF3720E8A8D9DAA09 /* Kommander.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BBB1EBBD19C3AB446F90453B564E0A4 /* UserInfoFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 127AA63D48E5CB0A4000883D5F23E7D0 /* UserInfoFilter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3EC4933635344D02DB636500470E8CAD /* ImageTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AC7C905881720410817B9FE2FA1CB49 /* ImageTransition.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3EFF1EB46E9FCBFE65A26D3A0C0C96BB /* GHGherkinLanguageConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FD451E77F4E7D2A366131BA99AADF3CF /* GHGherkinLanguageConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3F6EB12E7F74110DF491E169E099DC9D /* BaseDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA9C4080B3B60A11B84CFB2C0C10C8C9 /* BaseDestination.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 411DEA49C6963285F84D423AA4E41D55 /* CCIBlockDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = F3DEEFAD9DA6698CDF2CD9F0E9E7B4CA /* CCIBlockDefinitions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 419A66DC7CCA52C3D54B98610F412E72 /* NetURLSession+Download.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93DF98BDE895DFEB375198C5E2C3C0E7 /* NetURLSession+Download.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 42A18808B310BEB20B4646D3FED0D438 /* GHGherkinLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 87B4DFCFC8497CA3E7442CF4FE55673D /* GHGherkinLine.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4407DB2436072E9358CB20C87698BABD /* GHExamples.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF0C23B444FE365419FB5A0C9E6F1BE /* GHExamples.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 445A2939EE7133C0AFEE2D6B8D002C7F /* PrePostFixLogFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86FF2BE732E2017353DC0ADCA9B9D0D /* PrePostFixLogFormatter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 447BDB5D42EA6C04156E1C284FC5056F /* AnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6ABF2311950829EF5F98457A36389D4 /* AnimatedImageView.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 44CA726228D100D56774854A021DE3E7 /* Pods-Domain-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 86B2B3F017862511356BF3EEE68B888B /* Pods-Domain-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 46F01848C415CED795AD46F9BA9A17A9 /* NetTaskMetrics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D8E4A7D7C63DC9265B9893D03B02558 /* NetTaskMetrics.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 47F120267BD3D086D42C6384932D82FA /* GHTableRow.h in Headers */ = {isa = PBXBuildFile; fileRef = DE23E812682CCFD62DA9D7B25902370D /* GHTableRow.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 480B137E2CD1B0BAB2FD46DEE357F0B0 /* CCIExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E93F14C3FC833DED3FA5E0CB946A764 /* CCIExample.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4881E456D6D306D4BD0D55F1E43B48C4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + 4A02A546484FD3426D258BEAA1D07A5E /* GHGherkinLineSpan.m in Sources */ = {isa = PBXBuildFile; fileRef = BB373B2B2E91704313660CA0F66AD6FB /* GHGherkinLineSpan.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4C079F276D78FCE815F5EBB3A6859133 /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE5F978C70DB73BFDE50DCD9391B0BE5 /* ImageCache.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4C344D0108F4ED1143A04DF74390EB0E /* .swift-version in Resources */ = {isa = PBXBuildFile; fileRef = 5169C87334029720F6E17D158ECB0A28 /* .swift-version */; }; + 4C893C3A249C0DD09B13712023FD7304 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + 4E22D2D51248EFB87EF0349F8C58DDD4 /* Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1589C165185593FB7B69A714F92F961E /* Kingfisher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4F1A6506DDB54703C7935747FEEB550E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + 4FCF471EDDA34DD54DA0F3842CF49C89 /* GHGherkinDialectProviderProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 68DE7FC880BB051360BACB0A8880970C /* GHGherkinDialectProviderProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 503A59EDE755226081081CEED1DCD5B5 /* Pods-DomainTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C6D6B5617EB213560D427F81EECA6F /* Pods-DomainTests-dummy.m */; }; + 50B005C06620EDE2B7C5FF3D4B02BB39 /* Cucumberish.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DE97AC266A92516C0139B4860B32610 /* Cucumberish.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50FC8EDEBB6C1810BF0DF98E3A70DCED /* URL+XCGAdditions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A1ECC686AEF48839C644422566579EF /* URL+XCGAdditions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 51478937D03B0C67ED99704A3B2D21BB /* Reusable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5172B96C1E26286778A4C6079E9FBE12 /* Reusable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 518006F5E9ABE7A3742B7F91AB2258FA /* KommandCancelledError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DC48FBEDA6F09BC8787BCD0C4B21BD8 /* KommandCancelledError.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 518F7251989027076D4319E457671798 /* Pods-CoreTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 598379A44F04CB77AA27D6523E196E54 /* Pods-CoreTests-dummy.m */; }; + 52416A6AC7387ECACCC45596498D96AD /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E523B74BB2B6DB84FEB7E50525A35866 /* CFNetwork.framework */; }; + 53E18AA935F29E65EEB1FCEED3035F20 /* GHStep.h in Headers */ = {isa = PBXBuildFile; fileRef = CE315FDC4F26443A9092E941EEEA1876 /* GHStep.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5423F5E90C38445C2C70673CE6AFFB54 /* MainDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92AC63201DF010FC16FA08D329ED5A71 /* MainDispatcher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5457AE40BD8B5084DDCE3C71E10A47A1 /* CCIFeaturesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 44263B067C45A490F610AB9818C19B01 /* CCIFeaturesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5492E776306374DF34FDF284A5A64B65 /* NetReachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA8DC3772EB96DD3E5BD0B3BE510620E /* NetReachability.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 555F2811A5380017DBA82FD9A907A71C /* GHFeature.m in Sources */ = {isa = PBXBuildFile; fileRef = CF07B002EC2017639A519F9C59204E60 /* GHFeature.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 56E81EEF4B273A45CBF38AFE79C06EBA /* CCIJSONDumper.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A4BAFE1D1959599D3219E156E8328BE /* CCIJSONDumper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5712C10C32BBC8580522EB9725E98664 /* GHNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C6B9CA0F6F5E2442A4067B74D2D3B34 /* GHNode.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 57526FDA59A5D311A20489E851EDF211 /* GHScenarioOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F2B901EC1A0827ED823DCB13B541AF9 /* GHScenarioOutline.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 578F72BF592FEC12E99ED50FCABC1979 /* NetTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DDB61DA3E813E04833121E76DDFFB3 /* NetTask.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 599651F977311AF3C3D2D2EB2E443F9D /* GHTableRow.m in Sources */ = {isa = PBXBuildFile; fileRef = E1C09E1C073F1350B0ACEBB550505416 /* GHTableRow.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 59D2576C76C3F7665B9831E04268B858 /* NSString+Formatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F986A35BFB685A700BD9896FF4EF5D9 /* NSString+Formatter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A0DAEEAA36A22BE0E597D058404EFD2 /* GHLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 589AFCEDBF784755427EB89289E36047 /* GHLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5ABEB0DBA79C9EC8E90CFA1B43393C6F /* CCIAroundHock.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DD61270413D8587F8EFA23DADC88632 /* CCIAroundHock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5ADD144FBCC3F241953A2ED36DA90006 /* TestDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90A2F28D71EE85A11EF8E507AB5AD895 /* TestDestination.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5B5D8AE167BD8E304CE474A9B8DBA2B4 /* Kingfisher.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B32F38F425C6DBCF4AD69F96FC4834C /* Kingfisher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5CB1E97E87EA861F0CA46364FA1D82E0 /* CCIScenarioDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = B12EC4587159A3E3339B3738838EFBD5 /* CCIScenarioDefinition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D26A20B10115EAAC82AA67219B914F7 /* NetURLSession+Upload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72063305E3ADA155EB457CB94D659186 /* NetURLSession+Upload.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5DD7E65BC7F21B4C02718193401D356A /* NSString+Trim.m in Sources */ = {isa = PBXBuildFile; fileRef = 9471BE4B988273354734C37BE0DC21F4 /* NSString+Trim.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5E632DDFA44C09C21110169843F23FBC /* ObjcExceptionBridging.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D4ECDBDBBAFCBAF7FDFE0FD6236AF91 /* ObjcExceptionBridging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F978FFABF9C8D142F1E477456003823 /* NetAuthorization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D37F1CD65E914D7CBAAF06AD142E961 /* NetAuthorization.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5FB2535CA93CC18996A8393A10ACFF1B /* CacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5847CC73FFA604FADBEC258F90A7F52B /* CacheSerializer.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6327175C4E0CB8EF4C9D5388DC0DC0CD /* GHGherkinLanguageSetting.m in Sources */ = {isa = PBXBuildFile; fileRef = 283192F63BB88978964150A6F66637DE /* GHGherkinLanguageSetting.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6360477D3C59ADCF1B2A84064F2D023A /* GHGherkinDialect.h in Headers */ = {isa = PBXBuildFile; fileRef = BC937B695EB156019AF75F8B90BC760C /* GHGherkinDialect.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 670703FBB7D2FFBE02375B608A2F3E1A /* FilterProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8A9688B146E1617BE63EC6A7E538467 /* FilterProtocol.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6E28875617E4F36C41B8D967A8EB61CE /* NetURLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = C39913A61C69ECE17F63E12771748A49 /* NetURLSession.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6EC5F2A5CB44095B545F0003F80B9F5A /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BCC674AE0D2A90265DBE2A2637FBB2 /* Resource.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6F172AE2BA037F0C909A9D947D59AAA8 /* NSArray+Hashes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BFC380FEA301BBA034FB710B0A76804 /* NSArray+Hashes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 71DC0C14DC24E3AFC91CFB4CAA98FDD9 /* GHGherkinDialectProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E3DACC5F82ECA03D42109E0C6B77A5 /* GHGherkinDialectProvider.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 76FA83265537D29800AC9D9979BCA924 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E8F2DFFE07B51FA3A2A0FB538F04DBC /* NibLoadable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7776AF1FEF112F6245DDFDDDE56E6D68 /* ObjectiveCMarker.m in Sources */ = {isa = PBXBuildFile; fileRef = 9551ADB9D573A9A4878DF8F17112A650 /* ObjectiveCMarker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 77FDBFDCEFB9A449C43C3A40EF5271CA /* GHParser+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 09B6BC129FC70C91D115252944C04CE3 /* GHParser+Extensions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A1C340BD3470E41BA8224C7E1CEBBC3 /* Pods-ArchitTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BDE70461FFB96B0F12CF5C388D89E94F /* Pods-ArchitTests-dummy.m */; }; + 7C663005430C858E5D86C20916FABAC2 /* ImagePrefetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEB25291CD253A8A1F7F455D81677C87 /* ImagePrefetcher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 80E3B85E43E1799738B3DA6D0B228EB0 /* ObjcExceptionBridging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AE3BEBF88AEB8861BDBC46832BD6697 /* ObjcExceptionBridging.framework */; }; + 80F5C59A429366988690F3D62D62826F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E64EFC30FE270B36BAA70D5C31FB432 /* UIKit.framework */; }; + 8275E4E972071F016A493A6FB0B40F40 /* Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049C712C1B79DB0BD7CF02446C5F4991 /* Placeholder.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 827908C12A394C1309860C7402996A76 /* Pods-DomainTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C9D4C509E0A2BC5CC77C09F946BCB9 /* Pods-DomainTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 82A5A2AB167C19E3E8F8E9080CD67ACB /* Kommander.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5589CEA036AA85F8B9ECD1717D36818F /* Kommander.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8448904574BA9E216EF2B8BC5D779068 /* NetServerTrust.swift in Sources */ = {isa = PBXBuildFile; fileRef = 302B7A6DF8D3B6BFAA5CBD7ABCD43A8A /* NetServerTrust.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 857C2FE94D315B6362134113FA009652 /* CCILoggingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEAFAD156E2A5C8489CA69CBB3FDBB8 /* CCILoggingManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8675C94B2A6FD104180C642A55DEE1F2 /* CCIExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B522DEE8F4DB082FECE75A9010BDADB /* CCIExample.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 886271C8BF2746B515121D676A264674 /* NetResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46E45DFC572385823168759E23393BFF /* NetResponse.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 89336A52BBA47EF814EEE974A534AA3D /* GHScenario.h in Headers */ = {isa = PBXBuildFile; fileRef = BAB40416E8E0EC13C9965BB164545F0E /* GHScenario.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A596628D1172E0BBE74C8B70C077905 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D95B1222FB6485CB626A7449573FF19 /* Box.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8A988F41A07E47F8D5E3732947B9F1BB /* NetContentType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAD52DD7A2ADAF0265DA9B7BA5614196 /* NetContentType.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8BABA99FEBA8069DB4DCD0F22F441069 /* GHStep.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C668F4BAFDDC55DBC24654ADB44DEF3 /* GHStep.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8D11993D294507A7EF4C13F0077EBF67 /* XCGLogger-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 209222D1F1EE679A7479C1E9468AD2D4 /* XCGLogger-dummy.m */; }; + 8F37FDAD26B5386D1E91576F4D2C579E /* UIButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D313E373EAF782C1EDCBE1F8D4B35B7F /* UIButton+Kingfisher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8F83D3A1439E462EF6DA5AFF408EC880 /* CCIArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 0458852D8F4EF599D95B6E92DD7A52AD /* CCIArgument.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8FBAAAF795A9215767FEA93457333F1D /* Kommander-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F17C4D07C1C72244041C64D336103E8A /* Kommander-dummy.m */; }; + 9147A3DFB908355B66812DE65402A128 /* GHGherkinLine.m in Sources */ = {isa = PBXBuildFile; fileRef = 8116E903ABDACA0722DCE04CFC6E3995 /* GHGherkinLine.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 91695834575E2AB820DE34B660735A90 /* GHHasDescriptionProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D90E2FEA217C023BC14D73A75B7278D /* GHHasDescriptionProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 916F615039ADEBFF29CD2B233DF5BE6D /* CCIJSONDumper.m in Sources */ = {isa = PBXBuildFile; fileRef = 552E8CBF921CF3F8FF4F52CBF82787D0 /* CCIJSONDumper.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 91A58AD15F502DD817DD676E14AD6B66 /* Reusable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F6FE3B02B7186A27A5CF0D1D661A54F /* Reusable-dummy.m */; }; + 92011EB8586C8B1B22A120645279393C /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBB6084406A8FA1D3882ACE24BBBC4E2 /* NibOwnerLoadable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 94E437332009CD5928DDF37A42E14004 /* Net.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F2C6C4BE3664B1941451CEB76FC1C8 /* Net.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 95F20504AE5CE445C423294D159485E1 /* CCIBackground.m in Sources */ = {isa = PBXBuildFile; fileRef = 280CC88593999D040602158CD7ADF1C9 /* CCIBackground.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 966270DF4CA76BC195BB0E8DABB541FE /* Pods-Archit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 885247A7BF6CCC8F0FB83008F1432EEA /* Pods-Archit-dummy.m */; }; + 96F21A7ED33C7F68A53E303922B7034C /* CCIFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = A1573E3ECC284EBCA32592F458E68F62 /* CCIFeature.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 977112B3C78B4D5CDE3F862372CE3D70 /* CCIHock.m in Sources */ = {isa = PBXBuildFile; fileRef = 57687BA7AFDEF345B0BADFC4D301D2D1 /* CCIHock.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 982CFC4903C2AAB0D8F7B27AEF922F45 /* Pods-Archit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8554460064553348A0170DBB2B665C /* Pods-Archit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A773350D6B7FDDAD34C2523EA1983B4 /* GHBackground.h in Headers */ = {isa = PBXBuildFile; fileRef = CCA11081C724388BA3B8994B4B5FDD3C /* GHBackground.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9B7CF3F9B7EAA68D6A13806DA7451F03 /* GHLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 08B8360C41083D8035B6E606A6DBCE3F /* GHLocation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9C2B0CEFD6D46C1D99ADE9F415FD545D /* UITableView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1E66BBA492F54AA5E363F69E79FFEAA /* UITableView+Reusable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9D6DC57549F30278BE6B993902CB38C0 /* Pods-ArchitTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A04D1F57C465AFA338DB3122EABD175A /* Pods-ArchitTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D8433877EEF871BDD4C52D2FED841C3 /* GHNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 55743C6CBE6477E747DFDEEF8B477C84 /* GHNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9E0B64984AD97AB40BF03A37983EC35C /* GHGherkinLanguageSetting.h in Headers */ = {isa = PBXBuildFile; fileRef = D188E1D30BAE02CD5ACECC273AC372C3 /* GHGherkinLanguageSetting.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A12D191EFBDB11F04A6DD5CBA3A497BB /* GHParser+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = B9A837B3EB58DC57E304B3E04DC0FEF8 /* GHParser+Extensions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A47513AAA9E650897D079552AD719B1D /* NetResponse+HTTPURLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940AD48F501BB7FDC72FD05AC76EFAB7 /* NetResponse+HTTPURLResponse.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A4C1986F220525D7D3C1CD9BEBCF5320 /* gherkin-languages.json in Resources */ = {isa = PBXBuildFile; fileRef = 78298952BE663DA372F7862BACD74848 /* gherkin-languages.json */; }; + A4D79FF5AA9398ECCC446AD6485712ED /* ImageView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DF285CD2ED31CDA6615B60DB6707BA4 /* ImageView+Kingfisher.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A4DF73A7A66BCB0711DED161B6348748 /* LogDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D36C136C1793DE836ADAC645C395E7 /* LogDetails.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A5DB00233E2F6344D95AA710210F9855 /* GHParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 79D7E6C88897758D8EA53B57205E4BE3 /* GHParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A6E1E980C9E36BABF9079D084510C50C /* NSArray+Hashes.m in Sources */ = {isa = PBXBuildFile; fileRef = C4FD7E63CE8C13F307D3B8E42F58E4EC /* NSArray+Hashes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A721D676182C131AFDE544CC2F8D5F56 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + A7D993D9C0850B594C508B8123E7CB5A /* NSString+Formatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 27EC930C02E33F84E1CE81238D94A80F /* NSString+Formatter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A9B82BE9934E812CD8A2470D0120E214 /* CCIArgument.h in Headers */ = {isa = PBXBuildFile; fileRef = D83D2F2AC2A421B7A0B5CF66E2DD75BD /* CCIArgument.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ABB39C4F6E127847DFB6BC8979E18F72 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC2C43D3EA7E7F62C4CCCF0D8C588F06 /* Image.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + ABE46FE3DE4313913C03D268C3F31009 /* NetError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8422FD8607F7E62209A911410F51D7B1 /* NetError.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + AC30A0FE40768E5B7544D80ABD80DC4A /* UICollectionView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2855453511DA3D7D812E1AA692CE0CC /* UICollectionView+Reusable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + ADA2FBDD515F79725F822B8346B1C154 /* XcodeColorsLogFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3632F1CBB5B9E2BC67F21B44065E1496 /* XcodeColorsLogFormatter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + AE1EDF8E65AC4244558141DD64B5E7FD /* GHGherkinLanguageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AF5D02ED6DD038A430BB8389EBBB02A /* GHGherkinLanguageConstants.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + AE65E9439900F353395A432B7EA2FEE0 /* GHTableCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CEC37C9AECE2940EDD3FEFD1815B9A4 /* GHTableCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AF6C316FB023469C303B1BE124A825AE /* CCIStepDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = EF3A943FBEA3AB9A6927AF33DE43F8F0 /* CCIStepDefinition.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B39E271B43A1E341A1BB68A351AF14B2 /* GHHasLocationProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C1E1451646FBAB00C5B9B6F471312C3 /* GHHasLocationProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B3CE2C47482E6C67201575ACB7927BCA /* Net.h in Headers */ = {isa = PBXBuildFile; fileRef = 84176253DDDBA214DE4A70D2B16ED15C /* Net.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5152FB9483578B74F2168101E3E072B /* GHComment.m in Sources */ = {isa = PBXBuildFile; fileRef = E46C9FD338ABD2E46E789E9BF5D633D8 /* GHComment.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B523A50D28CE2C84D9E2FD5A2B52CD2E /* Indicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33A598FBDF7AEB2198A1BF7E462541A1 /* Indicator.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B5880C43852C32D1A52BA78C14931D52 /* GHScenario.m in Sources */ = {isa = PBXBuildFile; fileRef = 247385816C28A2D0F418C6FAEDC05AF1 /* GHScenario.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B6495CFB7414A9CC51F1C33650368272 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + B684009BED94E45876B73CD59AC95BFE /* GHDocString.h in Headers */ = {isa = PBXBuildFile; fileRef = D3985EFB34342C3E89C38F04756E73A2 /* GHDocString.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B901615F30064AA769A71D4B71AA6CE3 /* NetResponse+Build.swift in Sources */ = {isa = PBXBuildFile; fileRef = F558D5D192AB512B2C547488FEB9E7A5 /* NetResponse+Build.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B91552B58FE81C86CA64E82F8632D1E4 /* GHStepArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 32EF88E31B89594CF1BF52AE3F8AFC1F /* GHStepArgument.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B93EF875C805A918FBD7B24BBFBA6BCA /* StoryboardBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4948F5126549E0FB3411465739B7433 /* StoryboardBased.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BA64071C9C10E14D75D41D5CD813B10C /* CCILocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DF6BBE7E43DB2364A9B0D38CE530851 /* CCILocation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BB6346706B07DB1368FEB5B9A319F48B /* GHHasStepsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D9AFE777FE7481AF1AB0F1BCE10A1F6D /* GHHasStepsProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB647D66B8244AD79D09D76FA4FBDEBA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + BB69D00427D01D38249B48B73605B7E9 /* LogFormatterProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41C39F595A72D5544DF40D592C8B4693 /* LogFormatterProtocol.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BCA0066D9DA92975699787191A9C280F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + BE99DDB8959688DB9695DCA7494A39E4 /* GHTokenMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 516B48924FFA28C2E93219EB040196F1 /* GHTokenMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF35347A195DF2232B482B05BC2D1722 /* CCIAroundHock.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AD50214589598F8F7D1F4D8541B44E3 /* CCIAroundHock.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C175C7CF94FC1ACB02CFAA83334C4ED4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + C2CC9FCDF0B02D683F22E129F5D35F25 /* Kingfisher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AF5F20DFC7975AE3C74C78441094F20 /* Kingfisher-dummy.m */; }; + C40D7FBD7DD8B366CB89564B406511F3 /* XCGLogger-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CDE7AF2EA81695CB38C86BBC025F384F /* XCGLogger-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C40F709E537035F4208B90871A65DF07 /* KingfisherManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88CE3E4C3B9BE233126726B126DD2F8C /* KingfisherManager.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C72D49310B9B454D0A40969A3378E118 /* NSString+Trim.h in Headers */ = {isa = PBXBuildFile; fileRef = 8647D5CA2DC3C052C9E3A4798DF0AB29 /* NSString+Trim.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C96C30663D16476EA65AB33615DE46AA /* NSObject+Dictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 19A9E7C075D34520056448079CA10CB3 /* NSObject+Dictionary.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C9F07D942847BAF21633F8B1D24DB010 /* GHAstBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F8DB3747431EF23E6BD537ED582113F /* GHAstBuilder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA893D46DF745C32064E5C3ECF9CF378 /* GHToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 07203E6001DA4D28FC9B5EF4006A6D45 /* GHToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CABF873D847F68F51F2DABBEF2921D37 /* NetTaskMetrics+URLSessionTaskMetrics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77FE5D389919ED2685B4717BF6908635 /* NetTaskMetrics+URLSessionTaskMetrics.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CB1E778A18E18EF37E9D17C822795ADB /* GHStepArgument.h in Headers */ = {isa = PBXBuildFile; fileRef = 736E7C57EFC76D466F48655D2D706476 /* GHStepArgument.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CBC4979F49026C733C2965C0A16BB063 /* AppleSystemLogDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EAAB904F80D7E850A156769F24BCC94 /* AppleSystemLogDestination.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CC7AF8272E28BD7CAEAF80B769A8E42A /* CCIBackground.h in Headers */ = {isa = PBXBuildFile; fileRef = D8AFEA284A9649421F49DC070EF5D249 /* CCIBackground.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CE39D91D0BB690C3A014A9FA4B6E2C4A /* BaseQueuedDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D9500BC14B04A176B982545ABC22158 /* BaseQueuedDestination.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CED6BC1F81E2BEDA1E30682E09A374D0 /* FileNameFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D981C24DE43915DCDE6AF4369F309A /* FileNameFilter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D01D28DF417A450E93130044E6AC32BD /* CCIStepsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DD002F3118549FC318E08DDA04483C4C /* CCIStepsManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D0BED64882233D4E636D5DD54A1D1A2F /* GHTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A506C557952D1F849B264E6B4D949D3 /* GHTag.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D18FCC0D2F39664A387177649B63E21A /* GHDocString.m in Sources */ = {isa = PBXBuildFile; fileRef = 7658ABF3F94439D812F0CDCE8F8055B2 /* GHDocString.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D431B161924A8DCC8F532687D58AD59E /* Base64LogFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72682A730F7B2AB8B698AB98C1F8BE51 /* Base64LogFormatter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D4C21B2C05BE7B8467CB3EB1CAD7CAD1 /* GHDataTable.m in Sources */ = {isa = PBXBuildFile; fileRef = A9724D9E2ADA44DD16AC57C867A37290 /* GHDataTable.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D53A7859509C220EB400C6C67E532AFB /* GHParserException.m in Sources */ = {isa = PBXBuildFile; fileRef = B29581C168F621CCCF1A23C071B5CD2F /* GHParserException.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D5F510C1918F6DE0AEBA4F75C1D1C5C0 /* GHScenarioOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CBA27520657D6545288B7386C2B261A /* GHScenarioOutline.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D5F9061787AB4384454FCA48D7AB57DC /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5662D40E78AAD333E69B4AA56C03EC /* Reusable.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D66018C5BFD7DABDB5838C19BAE3FA98 /* KingfisherOptionsInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DC1D92C5089A8E6D0C259A9571704A /* KingfisherOptionsInfo.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D693D1391BB584628B984893615436C9 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D55EEE3EC2DE00DF094CD4C605AEC614 /* XCTest.framework */; }; + D7639AEF0DD7A828243919B5FDD8E150 /* ThreadHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = FADBC8762995973B0DD96E4017B0B95E /* ThreadHelper.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D9D37E9A72367D9E7A630AF9322D31FF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */; }; + DA306B26CA4424083CD6C9F1C7060808 /* NetClient-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B9F29A654AF391298893AA3EFEE27378 /* NetClient-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DB4F5423BF8FF0B32443D41779C8EB11 /* CCIScenarioDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = B3512734BFB13288A3DA50876210F20B /* CCIScenarioDefinition.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DC0D523C7FBC155BE18A946723866612 /* GHGherkinLineProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = B406BF25F2781FDB6DF98AB9312F0D37 /* GHGherkinLineProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DC609F1AE4BCD83F1CE3A7D9D69DE445 /* TagFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB5E3D7F0E4F300EDEA6E8C981C4D760 /* TagFilter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DCF7D4CCBDD59823A44B262A41C7E9FB /* GHFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FDD3E5FF3EA5618961B4FB07E4F761B /* GHFeature.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DDEDA85C8025D170FC3C5A0FC6B9FD2B /* DispatchQueue+XCGAdditions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A35BC40D19E88B6D3857106A78512EF /* DispatchQueue+XCGAdditions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E17E4D6FEA6B87AE31B478E1446714E6 /* NetClient-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A29BE02AC796F62BA4DB2A1F10649D5 /* NetClient-dummy.m */; }; + E1A0A0F0D5CFD271A8F6AD41980C7E43 /* GHToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 4179A4BD2F63CD58DD7EFDD1C2D485CE /* GHToken.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E4A9930ACC30B142F671BE52FEEFB424 /* NetURLSessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F723B9B5E58FF163EBD6A9B92EE7B16 /* NetURLSessionDelegate.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E5FFC1E3DED9E093B42CA963C5B3ECD7 /* GHGherkinLineSpan.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CB88CCC0EDCBB1BFF3352D35116FA24 /* GHGherkinLineSpan.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E685C576F1A060B334C1FB759675F084 /* Cucumberish-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CB26E9E01266A1016C264B6F2BA870E1 /* Cucumberish-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E744C608F95EB6361766839E135D9B22 /* NetURLSessionTaskObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38A1247587CCB78098E809EC836EE56F /* NetURLSessionTaskObserver.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E81384DF91581A799533F8CA96B805FF /* CCIFeature.m in Sources */ = {isa = PBXBuildFile; fileRef = 289AC8BC81B1A2FB6F7585C7B8D3FE0A /* CCIFeature.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E8F1C92D1994449D49D6E7AFB4087B40 /* Pods-CoreTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FC0A1A134909DFF3806F903F538BC6E /* Pods-CoreTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA50D4F48AB601157CD85FA165DBC0E6 /* GHTokenScanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B02F00FC5B40530DB42C51CA132C901 /* GHTokenScanner.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EAFBC438AA244E0F4C4013A4E4C2C838 /* GHTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED1E6B48492D474140694458748C2B68 /* GHTableCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EFC53F45D1F211F4BBB1E45C1988C0A9 /* GHExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A2D5092FCD06374B8ED3404D9B5BF7B /* GHExamples.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F1898DCC76147ADFA9981A427A7B3133 /* NetURLSession+Stream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FE6206187579FA2E7B9D3F64B9FC234 /* NetURLSession+Stream.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F2B10D036D0A5CCEBC39744B33828B3C /* FileDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7979E474296ACAC3790F5E380263E6F /* FileDestination.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F3CA9E91B4B86BFB435A6520B26567F2 /* XCGLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AA940340D89913607E74C6A8498E486 /* XCGLogger.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F597FE5626EF7EBDB6437B5256EFB66B /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22493A26F7CEEA74E6D7EDA894C0F894 /* Filter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F80F9B3F1C5D88145E9762665DC43314 /* DestinationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0624018E09478E6B145E853F89EB7D90 /* DestinationProtocol.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F83D76D568A76D700515723D4A0F373D /* NetResponse+Cached​URLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 584981606FBFBBE70866FF2B01CDDBEA /* NetResponse+Cached​URLResponse.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FC37DF9AFC69916B4B1C6B6FB814EEC5 /* DevFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A53A873F2E916A66823C12D14ECD9DC1 /* DevFilter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FC4DAC18846C1685687DC91E44F661E0 /* GHScenarioDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A02E08E6B36D255D51BC3F85B1AAB4C /* GHScenarioDefinition.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FC4EEBAAA63FAD3189D087F6F3B65571 /* StoryboardSceneBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08BCF13011B49521532F9DF15E119906 /* StoryboardSceneBased.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FFBABBD3633F8BF1183557A3A5320234 /* GHHasRowsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = B729115D536BFE943B6BDC5F01180B70 /* GHHasRowsProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -231,349 +264,495 @@ remoteGlobalIDString = 2F9219DC3436F4A71BD490ADED213426; remoteInfo = "Cucumberish-GherkinLanguages"; }; - 06002BF5A1B0497928DF57B62E5BAA27 /* PBXContainerItemProxy */ = { + 1143DE0DB010785B69951F29E80FA24F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = E6AE18E7BA96DB0599AEB8F02C885BBC; + remoteInfo = XCGLogger; + }; + 1DFB29C13222DADAC7B04091B8F96635 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 68BBA27FABB4188F082A1A9FDD1A9B37; + remoteInfo = Cucumberish; + }; + 20DD979D927B37CBB1A019943483B8C1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 6F712943B3C5592E82604940D11CE08A; remoteInfo = Kingfisher; }; - 0D562A401B252DA1355D99E77F66EB7C /* PBXContainerItemProxy */ = { + 2EFD9F462448292770D150DE09FC522D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = E6AE18E7BA96DB0599AEB8F02C885BBC; + remoteInfo = XCGLogger; + }; + 36C1D0C2F07E4156A379E8A2167C08A3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B0B5B8A1476F8AA333AA7B53F47E96B; + remoteInfo = ObjcExceptionBridging; + }; + 372326D3A382B3BAEDD941A5AF707C7C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B0B5B8A1476F8AA333AA7B53F47E96B; + remoteInfo = ObjcExceptionBridging; + }; + 4843C92ED1F848A138DD920820363E89 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = E6AE18E7BA96DB0599AEB8F02C885BBC; + remoteInfo = XCGLogger; + }; + 4B213DE4F54DDB5A296767708948F303 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 69EAE86324AC6EEB091FB936BCE91285; + remoteInfo = NetClient; + }; + 4E55A98804B1DD47081CA7E8685E2620 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 1D84C81FAF98601CB305AD05624E3AD6; + remoteGlobalIDString = 69EAE86324AC6EEB091FB936BCE91285; + remoteInfo = NetClient; + }; + 6BEF2258BA5ED61DC55E2474E76CD6EF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3FDA40B8508AD3C18A8D7F9AA00C680E; remoteInfo = Reusable; }; - 7F39C1CD29E6DE38C6CF04253419EAE3 /* PBXContainerItemProxy */ = { + 6C3C8B5AFE493487D01792451001D459 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B0B5B8A1476F8AA333AA7B53F47E96B; + remoteInfo = ObjcExceptionBridging; + }; + 848AF9343B6AE663D8776E5622B028E5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 69EAE86324AC6EEB091FB936BCE91285; remoteInfo = NetClient; }; - 829121BBE44FE0A2DCFD278986E2528E /* PBXContainerItemProxy */ = { + 8685FF2EF53DA0004A38266B0659E9C8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 22315F6812B77D86273C98095D3BBC79; remoteInfo = Kommander; }; - 97E81FEBF4AADB74AEDBEDAEB67FDEF7 /* PBXContainerItemProxy */ = { + A77B4A39844DF54B62DEA4088C519960 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 69EAE86324AC6EEB091FB936BCE91285; - remoteInfo = NetClient; + remoteGlobalIDString = 5B0B5B8A1476F8AA333AA7B53F47E96B; + remoteInfo = ObjcExceptionBridging; }; - 98715BB1D2B0B820BA5A831DB5AE1A28 /* PBXContainerItemProxy */ = { + AC459263CF006AD5D39B049EB1FAEF51 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 69EAE86324AC6EEB091FB936BCE91285; - remoteInfo = NetClient; + remoteGlobalIDString = 5B0B5B8A1476F8AA333AA7B53F47E96B; + remoteInfo = ObjcExceptionBridging; }; - B610C7B701A228A5315CCC0C929E2074 /* PBXContainerItemProxy */ = { + ACE64CF5955B48235FB7CDEBD30472E9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 68BBA27FABB4188F082A1A9FDD1A9B37; - remoteInfo = Cucumberish; + remoteGlobalIDString = E6AE18E7BA96DB0599AEB8F02C885BBC; + remoteInfo = XCGLogger; + }; + C8276A809B5E608592A1291D9A5398CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = E6AE18E7BA96DB0599AEB8F02C885BBC; + remoteInfo = XCGLogger; + }; + CB9B0619F9402FEEADFC59DE77E3B540 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B0B5B8A1476F8AA333AA7B53F47E96B; + remoteInfo = ObjcExceptionBridging; + }; + CF94DCE4512ED688EC6BC3B4BAA60F8F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B0B5B8A1476F8AA333AA7B53F47E96B; + remoteInfo = ObjcExceptionBridging; + }; + E40EC53EBBF106E04DC10C48B485B891 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B0B5B8A1476F8AA333AA7B53F47E96B; + remoteInfo = ObjcExceptionBridging; + }; + EE19F9DF99633A80B3322D454ED29066 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = E6AE18E7BA96DB0599AEB8F02C885BBC; + remoteInfo = XCGLogger; + }; + F565716D7F4810091B0221BA53D18D3A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = E6AE18E7BA96DB0599AEB8F02C885BBC; + remoteInfo = XCGLogger; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 005F1EA4A4E62BECCBF270BAE6B8A222 /* CCIStepDefinition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIStepDefinition.m; path = Cucumberish/Core/Models/CCIStepDefinition.m; sourceTree = ""; }; - 00BC388DA8FBC50920FEFA8A469D8540 /* Net.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Net.swift; path = Core/Net.swift; sourceTree = ""; }; - 01288DE64D2DE752BF83B83EC6C758FB /* GHGherkinLine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinLine.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinLine.m; sourceTree = ""; }; - 0334B97C18F5A5181D889367D9BD6683 /* Reusable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Reusable-dummy.m"; sourceTree = ""; }; - 03DAD94ACD5BA857EB343CFF9D4F3F99 /* Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Indicator.swift; path = Sources/Indicator.swift; sourceTree = ""; }; + 024F1BFA1F5C914C134BCF9DEE64A78D /* GherkinLanguages.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = GherkinLanguages.bundle; path = GherkinLanguages.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 02E495A5BB9CDACCACCD0DBE30DE1ED0 /* Cucumberish-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Cucumberish-dummy.m"; sourceTree = ""; }; + 0458852D8F4EF599D95B6E92DD7A52AD /* CCIArgument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIArgument.m; path = Cucumberish/Core/Models/CCIArgument.m; sourceTree = ""; }; + 049C712C1B79DB0BD7CF02446C5F4991 /* Placeholder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Placeholder.swift; path = Sources/Placeholder.swift; sourceTree = ""; }; 04CB4E210232B9C02DA56949BCD4E6B8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 054740DE9C752377491F25745A067F75 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Image.swift; sourceTree = ""; }; - 0642777F482BEB8D29560A9F4DA519E4 /* NetTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetTask.swift; path = Core/NetTask.swift; sourceTree = ""; }; + 0552564CCC68274EB114B7A64D598D4F /* CCIStep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIStep.h; path = Cucumberish/Core/Models/CCIStep.h; sourceTree = ""; }; + 05E3DACC5F82ECA03D42109E0C6B77A5 /* GHGherkinDialectProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinDialectProvider.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialectProvider.m; sourceTree = ""; }; + 0624018E09478E6B145E853F89EB7D90 /* DestinationProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DestinationProtocol.swift; path = Sources/XCGLogger/Destinations/DestinationProtocol.swift; sourceTree = ""; }; + 0693820A57511F4E33398A52B401BD9C /* GHParserException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHParserException.h; path = Cucumberish/Dependencies/Gherkin/GHParserException.h; sourceTree = ""; }; 06A2035B4F67F24157E408A67BA56240 /* Pods-Archit-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Archit-resources.sh"; sourceTree = ""; }; 070B33C739C487B3842A891D416B5958 /* Pods-DomainTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DomainTests.debug.xcconfig"; sourceTree = ""; }; + 07203E6001DA4D28FC9B5EF4006A6D45 /* GHToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHToken.h; path = Cucumberish/Dependencies/Gherkin/GHToken.h; sourceTree = ""; }; 0765DD4F2C53115BC2CB9ABFC12273C3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 07965558AED140C574B015AF94F18CC8 /* NetRequest+URLRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetRequest+URLRequest.swift"; path = "Core/NetRequest+URLRequest.swift"; sourceTree = ""; }; + 08B8360C41083D8035B6E606A6DBCE3F /* GHLocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHLocation.m; path = Cucumberish/Dependencies/Gherkin/GHLocation.m; sourceTree = ""; }; + 08BCF13011B49521532F9DF15E119906 /* StoryboardSceneBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardSceneBased.swift; path = Sources/Storyboard/StoryboardSceneBased.swift; sourceTree = ""; }; + 09B6BC129FC70C91D115252944C04CE3 /* GHParser+Extensions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GHParser+Extensions.h"; path = "Cucumberish/Dependencies/Gherkin/GHParser+Extensions.h"; sourceTree = ""; }; + 09D0110497B78198A8771C61A499CD69 /* NSObject+Dictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Dictionary.h"; path = "Cucumberish/Utils/NSObject+Dictionary.h"; sourceTree = ""; }; 09D613AA7147EEC3CE2D31406F92B9A0 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 09E8E1D893F1AC92FABFA8678CD63A2D /* GHAstNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHAstNode.h; path = Cucumberish/Dependencies/Gherkin/GHAstNode.h; sourceTree = ""; }; 09EFCC168921B6990215221984644031 /* Pods-DomainTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DomainTests-resources.sh"; sourceTree = ""; }; + 0A4BAFE1D1959599D3219E156E8328BE /* CCIJSONDumper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIJSONDumper.h; path = Cucumberish/Core/Models/CCIJSONDumper.h; sourceTree = ""; }; + 0AA940340D89913607E74C6A8498E486 /* XCGLogger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XCGLogger.swift; path = Sources/XCGLogger/XCGLogger.swift; sourceTree = ""; }; 0AB2B51A6D227BD1629D6F6AF16F7E7A /* Pods-ArchitUITests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ArchitUITests-resources.sh"; sourceTree = ""; }; - 0ADC6A361EB44D2899FD424B13075748 /* NSString+Trim.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Trim.h"; path = "Cucumberish/Dependencies/Gherkin/NSString+Trim.h"; sourceTree = ""; }; - 0AE393F57DF2F0403688B38083F67349 /* NSArray+Hashes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Hashes.m"; path = "Cucumberish/Utils/NSArray+Hashes.m"; sourceTree = ""; }; - 0B468BD574B5061B9601D6915593BE94 /* Pods_ArchitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ArchitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 0B47BEE2C81FF9656D8D4FFA92A63E0B /* Pods-ArchitUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ArchitUITests.release.xcconfig"; sourceTree = ""; }; - 0F59B0670561DCCF6E34910B679FC872 /* UITableView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+Reusable.swift"; path = "Sources/View/UITableView+Reusable.swift"; sourceTree = ""; }; - 0F5AB438E442560442FA263C699F13FB /* GHTableCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTableCell.h; path = Cucumberish/Dependencies/Gherkin/GHTableCell.h; sourceTree = ""; }; - 113C082140CA691A5FFE918F903AB652 /* NSString+Formatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Formatter.m"; path = "Cucumberish/Utils/NSString+Formatter.m"; sourceTree = ""; }; - 1349F09EF50ED6E85CB8E7C12BD33465 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 139EB71FAA47D0582F1A43B72E04F7F7 /* ThreadHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThreadHelper.swift; path = Sources/ThreadHelper.swift; sourceTree = ""; }; - 13EAED2A3DC51CB65C37D7D5B5F77F7E /* GHExamples.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHExamples.m; path = Cucumberish/Dependencies/Gherkin/GHExamples.m; sourceTree = ""; }; + 0C668F4BAFDDC55DBC24654ADB44DEF3 /* GHStep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHStep.m; path = Cucumberish/Dependencies/Gherkin/GHStep.m; sourceTree = ""; }; + 0D2806BDDE05BB656A21B0580369ADA7 /* ConsoleDestination.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsoleDestination.swift; path = Sources/XCGLogger/Destinations/ConsoleDestination.swift; sourceTree = ""; }; + 0D8E4A7D7C63DC9265B9893D03B02558 /* NetTaskMetrics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetTaskMetrics.swift; path = Core/NetTaskMetrics.swift; sourceTree = ""; }; + 127AA63D48E5CB0A4000883D5F23E7D0 /* UserInfoFilter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserInfoFilter.swift; path = Sources/XCGLogger/Filters/UserInfoFilter.swift; sourceTree = ""; }; 13FC122766C0198A7B29A390C10E4A2A /* Pods-ArchitTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ArchitTests-frameworks.sh"; sourceTree = ""; }; - 148CAAD3E8300FB74FAF0B42BACBDBD6 /* CCIBackground.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIBackground.h; path = Cucumberish/Core/Models/CCIBackground.h; sourceTree = ""; }; - 1527E479BC8094BF764D794A7F8D1048 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1538939479EA6EFDC8D622E4B274A30E /* NetResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetResponse.swift; path = Core/NetResponse.swift; sourceTree = ""; }; + 1589C165185593FB7B69A714F92F961E /* Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kingfisher.swift; path = Sources/Kingfisher.swift; sourceTree = ""; }; 16A6173FEEE586769F692FDE36C7EDA4 /* Pods-ArchitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ArchitTests.debug.xcconfig"; sourceTree = ""; }; - 1708F96D13D5DC12EBBE06232FF6BDCE /* NetTask+URLSessionTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetTask+URLSessionTask.swift"; path = "URLSession/NetTask+URLSessionTask.swift"; sourceTree = ""; }; - 17AC558D2BA96344B1CD5F3772E3664F /* GHDataTable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHDataTable.h; path = Cucumberish/Dependencies/Gherkin/GHDataTable.h; sourceTree = ""; }; - 1844AD18D7BAAF435E81AD11A18568A3 /* Cucumberish-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Cucumberish-prefix.pch"; sourceTree = ""; }; + 175BBA1528D7CF40BD92A70126DC262E /* Net.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Net.framework; path = NetClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1778866AEAC8C44E035E896079F89AB2 /* ImageDownloader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloader.swift; path = Sources/ImageDownloader.swift; sourceTree = ""; }; + 17A167250DC2EDEE01DBAFF5B71AFC40 /* Reusable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-prefix.pch"; sourceTree = ""; }; + 18AEA03BD4222257CC534EABD98C31A0 /* XCGLogger.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = XCGLogger.xcconfig; sourceTree = ""; }; + 18E6502A9C5FCDC2320188C894359256 /* NetClient-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NetClient-prefix.pch"; sourceTree = ""; }; 18EB88F0DF5991EF500034BB99921FA9 /* Pods-Core-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Core-acknowledgements.markdown"; sourceTree = ""; }; + 19A9E7C075D34520056448079CA10CB3 /* NSObject+Dictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Dictionary.m"; path = "Cucumberish/Utils/NSObject+Dictionary.m"; sourceTree = ""; }; 1A145CA3A03A864043DF7885BC3FC8B7 /* Pods-CoreTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CoreTests-resources.sh"; sourceTree = ""; }; + 1A1ECC686AEF48839C644422566579EF /* URL+XCGAdditions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+XCGAdditions.swift"; path = "Sources/XCGLogger/Extensions/URL+XCGAdditions.swift"; sourceTree = ""; }; + 1AF5F20DFC7975AE3C74C78441094F20 /* Kingfisher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kingfisher-dummy.m"; sourceTree = ""; }; 1B766E86F5BA95880D2A0F1F1C64C54F /* Pods-ArchitTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ArchitTests-acknowledgements.markdown"; sourceTree = ""; }; - 1B8D75CF52E36C189210AC226107CAA0 /* GHComment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHComment.m; path = Cucumberish/Dependencies/Gherkin/GHComment.m; sourceTree = ""; }; - 1BA79E79EFDF19B359340C78FD1730D7 /* NetContentType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetContentType.swift; path = Core/NetContentType.swift; sourceTree = ""; }; - 1BF1B337EF01B0FC642267269AE20249 /* GHTableRow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTableRow.m; path = Cucumberish/Dependencies/Gherkin/GHTableRow.m; sourceTree = ""; }; 1C0FE5B24513E16E99665A1BFDA597AE /* Pods-Core-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Core-umbrella.h"; sourceTree = ""; }; 1C365F08CA60049024C6E549C4F3FC4F /* Pods-ArchitUITests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ArchitUITests-frameworks.sh"; sourceTree = ""; }; - 1CBCED0E7E1D7AB93C3DB1ADED7F293F /* GHAstBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHAstBuilder.h; path = Cucumberish/Dependencies/Gherkin/GHAstBuilder.h; sourceTree = ""; }; - 1CFA490007E22D006CC2794184790C17 /* NetClient.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NetClient.xcconfig; sourceTree = ""; }; - 1E83225AB05AC15D03FAC35A1696708E /* NibLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibLoadable.swift; path = Sources/View/NibLoadable.swift; sourceTree = ""; }; - 1FA4E80198570C22C1E01A1385215404 /* CCILoggingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCILoggingManager.h; path = Cucumberish/Core/Managers/CCILoggingManager.h; sourceTree = ""; }; - 20B157F63367D281AB6F3E986802F0AB /* GHAstBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHAstBuilder.m; path = Cucumberish/Dependencies/Gherkin/GHAstBuilder.m; sourceTree = ""; }; + 1C6534BB3D00F92E777C57AA07E3C4F2 /* Pods_Domain.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Domain.framework; path = "Pods-Domain.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1DE97AC266A92516C0139B4860B32610 /* Cucumberish.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Cucumberish.h; path = Cucumberish/Cucumberish.h; sourceTree = ""; }; + 1DF285CD2ED31CDA6615B60DB6707BA4 /* ImageView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageView+Kingfisher.swift"; path = "Sources/ImageView+Kingfisher.swift"; sourceTree = ""; }; + 1FE6206187579FA2E7B9D3F64B9FC234 /* NetURLSession+Stream.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetURLSession+Stream.swift"; path = "URLSession/NetURLSession+Stream.swift"; sourceTree = ""; }; + 209222D1F1EE679A7479C1E9468AD2D4 /* XCGLogger-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "XCGLogger-dummy.m"; sourceTree = ""; }; 214179387CD062C71B2573A909838F05 /* Pods-CoreTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CoreTests-frameworks.sh"; sourceTree = ""; }; - 22B90CB7A4F9024E828E354B38231AA5 /* CCIStep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIStep.h; path = Cucumberish/Core/Models/CCIStep.h; sourceTree = ""; }; - 23706B16B589D0042020560B31099266 /* Kingfisher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 244B14795B634653852E48BEEB445A00 /* UICollectionView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+Reusable.swift"; path = "Sources/View/UICollectionView+Reusable.swift"; sourceTree = ""; }; - 24AE46FDC746C3F9D0C613622109E360 /* KingfisherOptionsInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherOptionsInfo.swift; path = Sources/KingfisherOptionsInfo.swift; sourceTree = ""; }; - 2561F060BF61398A50B4489A92A3DAA0 /* GHTokenScanner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTokenScanner.h; path = Cucumberish/Dependencies/Gherkin/GHTokenScanner.h; sourceTree = ""; }; - 26870CAD6540FD871F7769F74A4E58C7 /* Cucumberish.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Cucumberish.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 282C408CEB8D37DD532573D6D02C3564 /* NetResponse+URLResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetResponse+URLResponse.swift"; path = "Core/NetResponse+URLResponse.swift"; sourceTree = ""; }; - 284C72D038CC2B770D49150D70299699 /* Net.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Net.h; path = Core/Net.h; sourceTree = ""; }; - 287DB8F94B0DADDFB5E439D75B2DDD3B /* Kingfisher.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.xcconfig; sourceTree = ""; }; + 22493A26F7CEEA74E6D7EDA894C0F894 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Filter.swift; sourceTree = ""; }; + 23725B3E391C2CA4E764B98EA6616FCA /* GHScenarioDefinition_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHScenarioDefinition_Private.h; path = Cucumberish/Dependencies/Gherkin/GHScenarioDefinition_Private.h; sourceTree = ""; }; + 24432C75FEC44700FD2A5BCD4C239F15 /* Reusable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Reusable.framework; path = Reusable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 247385816C28A2D0F418C6FAEDC05AF1 /* GHScenario.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHScenario.m; path = Cucumberish/Dependencies/Gherkin/GHScenario.m; sourceTree = ""; }; + 24CD43CB964E9343A1C3F27D9551E3FE /* Kingfisher.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.xcconfig; sourceTree = ""; }; + 272F4493B363C0E7240E5CD4E86EF054 /* Dispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Dispatcher.swift; path = Source/Dispatcher.swift; sourceTree = ""; }; + 27EC930C02E33F84E1CE81238D94A80F /* NSString+Formatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Formatter.m"; path = "Cucumberish/Utils/NSString+Formatter.m"; sourceTree = ""; }; + 27F0CF2CCE185770EB62463C19446F0D /* ResourceBundle-GherkinLanguages-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GherkinLanguages-Info.plist"; sourceTree = ""; }; + 280CC88593999D040602158CD7ADF1C9 /* CCIBackground.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIBackground.m; path = Cucumberish/Core/Models/CCIBackground.m; sourceTree = ""; }; + 283192F63BB88978964150A6F66637DE /* GHGherkinLanguageSetting.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinLanguageSetting.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinLanguageSetting.m; sourceTree = ""; }; + 289AC8BC81B1A2FB6F7585C7B8D3FE0A /* CCIFeature.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIFeature.m; path = Cucumberish/Core/Models/CCIFeature.m; sourceTree = ""; }; 28B3A7207EE2C825AA396316726E2203 /* Pods-Domain.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Domain.debug.xcconfig"; sourceTree = ""; }; - 2CF56BF0267472F44C12E56FEA6DE980 /* NetURLSessionTaskObserver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetURLSessionTaskObserver.swift; path = URLSession/NetURLSessionTaskObserver.swift; sourceTree = ""; }; - 2CF8357C712226C79181760059FC5BAE /* NSObject+Dictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Dictionary.m"; path = "Cucumberish/Utils/NSObject+Dictionary.m"; sourceTree = ""; }; - 2D5414F5E3AF6F1BB3BDB407BF55EABF /* Reusable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-prefix.pch"; sourceTree = ""; }; + 2A02E08E6B36D255D51BC3F85B1AAB4C /* GHScenarioDefinition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHScenarioDefinition.m; path = Cucumberish/Dependencies/Gherkin/GHScenarioDefinition.m; sourceTree = ""; }; + 2B32F38F425C6DBCF4AD69F96FC4834C /* Kingfisher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Kingfisher.h; path = Sources/Kingfisher.h; sourceTree = ""; }; + 2B522DEE8F4DB082FECE75A9010BDADB /* CCIExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIExample.h; path = Cucumberish/Core/Models/CCIExample.h; sourceTree = ""; }; + 2CBA27520657D6545288B7386C2B261A /* GHScenarioOutline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHScenarioOutline.h; path = Cucumberish/Dependencies/Gherkin/GHScenarioOutline.h; sourceTree = ""; }; + 2D4ECDBDBBAFCBAF7FDFE0FD6236AF91 /* ObjcExceptionBridging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObjcExceptionBridging.h; path = Sources/ObjcExceptionBridging/include/ObjcExceptionBridging.h; sourceTree = ""; }; 2D582B86547532E026BDF51F54D2008F /* Pods-Archit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Archit.debug.xcconfig"; sourceTree = ""; }; + 2D95B1222FB6485CB626A7449573FF19 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; + 2E64EFC30FE270B36BAA70D5C31FB432 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 2F723B9B5E58FF163EBD6A9B92EE7B16 /* NetURLSessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetURLSessionDelegate.swift; path = URLSession/NetURLSessionDelegate.swift; sourceTree = ""; }; 2FC0A1A134909DFF3806F903F538BC6E /* Pods-CoreTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CoreTests-umbrella.h"; sourceTree = ""; }; - 31408E233988E0CD98D7AC9DCB9C7B12 /* NetResponse+Build.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetResponse+Build.swift"; path = "Core/NetResponse+Build.swift"; sourceTree = ""; }; - 332B8501C0E8DFE0659B5D6C4175A7A6 /* GHHasStepsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasStepsProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasStepsProtocol.h; sourceTree = ""; }; + 302B7A6DF8D3B6BFAA5CBD7ABCD43A8A /* NetServerTrust.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetServerTrust.swift; path = Core/NetServerTrust.swift; sourceTree = ""; }; + 32532D9DE5706FC96085974F240572C5 /* GHGherkinDialectProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinDialectProvider.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialectProvider.h; sourceTree = ""; }; + 32EF88E31B89594CF1BF52AE3F8AFC1F /* GHStepArgument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHStepArgument.m; path = Cucumberish/Dependencies/Gherkin/GHStepArgument.m; sourceTree = ""; }; + 3342D73F450C731992C709364E409AB1 /* FormatIndicatedCacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormatIndicatedCacheSerializer.swift; path = Sources/FormatIndicatedCacheSerializer.swift; sourceTree = ""; }; + 33A598FBDF7AEB2198A1BF7E462541A1 /* Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Indicator.swift; path = Sources/Indicator.swift; sourceTree = ""; }; 33DC377F603E6E9CE5554EF0EC9E02BE /* Pods-Core-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Core-dummy.m"; sourceTree = ""; }; - 343D141795E76CCDB5000F20AB5794FD /* Kingfisher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-prefix.pch"; sourceTree = ""; }; - 375F60E0C7B722F2A802BB253404F787 /* NetURLSession+Download.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetURLSession+Download.swift"; path = "URLSession/NetURLSession+Download.swift"; sourceTree = ""; }; + 3632F1CBB5B9E2BC67F21B44065E1496 /* XcodeColorsLogFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XcodeColorsLogFormatter.swift; path = Sources/XCGLogger/LogFormatters/XcodeColorsLogFormatter.swift; sourceTree = ""; }; + 36D38A27BC5B8897613AAE16F3E553E5 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3809D5920B405BB206F4D732E79EDEFD /* Pods-ArchitUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ArchitUITests.debug.xcconfig"; sourceTree = ""; }; - 3BB97FD642FF1F06308A1F2DCFFA4A6A /* GHGherkinDialect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinDialect.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialect.m; sourceTree = ""; }; - 3C8A333DF860CECC280CF28E3E7043C1 /* Cucumberish-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Cucumberish-umbrella.h"; sourceTree = ""; }; - 3CFAB3CF7E40C45749BA4734EAD35D8C /* Pods_Domain.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Domain.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3FB3BB6C378B23060B372171851B2218 /* GHStepArgument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHStepArgument.m; path = Cucumberish/Dependencies/Gherkin/GHStepArgument.m; sourceTree = ""; }; - 41AB45B95C4478A8D016360B8825496D /* UIButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Kingfisher.swift"; path = "Sources/UIButton+Kingfisher.swift"; sourceTree = ""; }; - 41EADC89B86A15B01AF8DF2D85BAD4E2 /* GHParserException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHParserException.h; path = Cucumberish/Dependencies/Gherkin/GHParserException.h; sourceTree = ""; }; - 42C8A4358BDD417915B2286FE20CE493 /* KommandCancelledError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KommandCancelledError.swift; path = Source/KommandCancelledError.swift; sourceTree = ""; }; - 4338710AA51ACE3B66CB3F0F1C7A6F84 /* NSString+Trim.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Trim.m"; path = "Cucumberish/Dependencies/Gherkin/NSString+Trim.m"; sourceTree = ""; }; - 43E3EC9F49194963FD09E4DBC3F65C49 /* GHGherkinDialectProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinDialectProvider.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialectProvider.h; sourceTree = ""; }; - 4424C6206DD75D10DD1633BAA77D8BB6 /* FormatIndicatedCacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormatIndicatedCacheSerializer.swift; path = Sources/FormatIndicatedCacheSerializer.swift; sourceTree = ""; }; + 383B0EDA3F08D7963858E04777179246 /* Kommander.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kommander.xcconfig; sourceTree = ""; }; + 388D71F84F62D26C9DE0BD494FFF242C /* Cucumberish.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Cucumberish.modulemap; sourceTree = ""; }; + 38A1247587CCB78098E809EC836EE56F /* NetURLSessionTaskObserver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetURLSessionTaskObserver.swift; path = URLSession/NetURLSessionTaskObserver.swift; sourceTree = ""; }; + 38D94846A5CD346D62433EA36DB78117 /* HelperFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HelperFunctions.swift; path = Sources/XCGLogger/Misc/HelperFunctions.swift; sourceTree = ""; }; + 39DB0E5CDFD94637D8DD315CC37424FA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3A9E74153AD3B1646713859420B22FEF /* Cucumberish.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Cucumberish.framework; path = Cucumberish.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3AD50214589598F8F7D1F4D8541B44E3 /* CCIAroundHock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIAroundHock.m; path = Cucumberish/Core/Models/CCIAroundHock.m; sourceTree = ""; }; + 3C1E1451646FBAB00C5B9B6F471312C3 /* GHHasLocationProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasLocationProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasLocationProtocol.h; sourceTree = ""; }; + 3CEC37C9AECE2940EDD3FEFD1815B9A4 /* GHTableCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTableCell.h; path = Cucumberish/Dependencies/Gherkin/GHTableCell.h; sourceTree = ""; }; + 3D37F1CD65E914D7CBAAF06AD142E961 /* NetAuthorization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetAuthorization.swift; path = Core/NetAuthorization.swift; sourceTree = ""; }; + 3D9500BC14B04A176B982545ABC22158 /* BaseQueuedDestination.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BaseQueuedDestination.swift; path = Sources/XCGLogger/Destinations/BaseQueuedDestination.swift; sourceTree = ""; }; + 3DD61270413D8587F8EFA23DADC88632 /* CCIAroundHock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIAroundHock.h; path = Cucumberish/Core/Models/CCIAroundHock.h; sourceTree = ""; }; + 3EEF7062B0BF8D10A2699B940473F555 /* GHHasTagsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasTagsProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasTagsProtocol.h; sourceTree = ""; }; + 3FECBA62E1B86B79D69748298F0BDF0D /* ObjcExceptionBridging-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ObjcExceptionBridging-prefix.pch"; sourceTree = ""; }; + 4179A4BD2F63CD58DD7EFDD1C2D485CE /* GHToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHToken.m; path = Cucumberish/Dependencies/Gherkin/GHToken.m; sourceTree = ""; }; + 41C39F595A72D5544DF40D592C8B4693 /* LogFormatterProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LogFormatterProtocol.swift; path = Sources/XCGLogger/LogFormatters/LogFormatterProtocol.swift; sourceTree = ""; }; + 43D981C24DE43915DCDE6AF4369F309A /* FileNameFilter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileNameFilter.swift; path = Sources/XCGLogger/Filters/FileNameFilter.swift; sourceTree = ""; }; + 43F4BA3E1262D6147C24E0BCFF98A7C5 /* Pods_ArchitUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ArchitUITests.framework; path = "Pods-ArchitUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 44263B067C45A490F610AB9818C19B01 /* CCIFeaturesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIFeaturesManager.h; path = Cucumberish/Core/Managers/CCIFeaturesManager.h; sourceTree = ""; }; 44CA7A988FA43047D3751C332A052E30 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45C6D6B5617EB213560D427F81EECA6F /* Pods-DomainTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DomainTests-dummy.m"; sourceTree = ""; }; - 46B8A09331825C78350D66852896A914 /* GHScenarioDefinition_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHScenarioDefinition_Private.h; path = Cucumberish/Dependencies/Gherkin/GHScenarioDefinition_Private.h; sourceTree = ""; }; - 48445193109D6CBE932747DFF1F1813B /* GHHasRowsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasRowsProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasRowsProtocol.h; sourceTree = ""; }; - 487CC6F42840B7117BDF79AD5E905C2C /* GHScenario.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHScenario.h; path = Cucumberish/Dependencies/Gherkin/GHScenario.h; sourceTree = ""; }; - 49881B2B8818398E2DF3F70F2B30AA23 /* GHScenarioDefinition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHScenarioDefinition.h; path = Cucumberish/Dependencies/Gherkin/GHScenarioDefinition.h; sourceTree = ""; }; - 4A545A326EF80B5213DE086B13B6EEC9 /* Kommander.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Kommander.modulemap; sourceTree = ""; }; - 4B13FCBE12DE3189C4D06BED22583176 /* NetURLSession+Upload.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetURLSession+Upload.swift"; path = "URLSession/NetURLSession+Upload.swift"; sourceTree = ""; }; + 46E45DFC572385823168759E23393BFF /* NetResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetResponse.swift; path = Core/NetResponse.swift; sourceTree = ""; }; + 4A2D5092FCD06374B8ED3404D9B5BF7B /* GHExamples.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHExamples.m; path = Cucumberish/Dependencies/Gherkin/GHExamples.m; sourceTree = ""; }; + 4A35BC40D19E88B6D3857106A78512EF /* DispatchQueue+XCGAdditions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+XCGAdditions.swift"; path = "Sources/XCGLogger/Extensions/DispatchQueue+XCGAdditions.swift"; sourceTree = ""; }; + 4AF5D02ED6DD038A430BB8389EBBB02A /* GHGherkinLanguageConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinLanguageConstants.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinLanguageConstants.m; sourceTree = ""; }; + 4CEAFAD156E2A5C8489CA69CBB3FDBB8 /* CCILoggingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCILoggingManager.m; path = Cucumberish/Core/Managers/CCILoggingManager.m; sourceTree = ""; }; 4D7EAFE6A941D9220D4DAD48D3F9D10F /* Pods-ArchitUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ArchitUITests-dummy.m"; sourceTree = ""; }; - 501E02D9CC376317C3E23F484B565A0C /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/ImagePrefetcher.swift; sourceTree = ""; }; - 51157C4588E51B385A632144E785C987 /* Cucumberish.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Cucumberish.xcconfig; sourceTree = ""; }; - 536397E321221D950751E8012EDA84CA /* Kingfisher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kingfisher-dummy.m"; sourceTree = ""; }; - 53B066F45A9E349DEACE4C47C7047BB7 /* NetCacheControl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetCacheControl.swift; path = Core/NetCacheControl.swift; sourceTree = ""; }; - 5445AEC20BD2B1FD7608C457940102ED /* Cucumberish-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Cucumberish-dummy.m"; sourceTree = ""; }; - 577BAF94C97A10F39552C58D4BE3323E /* GHTokenMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTokenMatcher.m; path = Cucumberish/Dependencies/Gherkin/GHTokenMatcher.m; sourceTree = ""; }; - 580BC578B0E4F7F8BAB7DC278417F72E /* GHGherkinLineProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLineProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLineProtocol.h; sourceTree = ""; }; - 5876C2163B4639125BAD917C997DDB4A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 592763DC00332AD12F740470519C18CD /* Kommander.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kommander.xcconfig; sourceTree = ""; }; + 4DB61AAAC05F4E4E0E8988F9FDE7F1AA /* CCIStepDefinition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIStepDefinition.h; path = Cucumberish/Core/Models/CCIStepDefinition.h; sourceTree = ""; }; + 4DCEB59DBD81630136214A71DD857E32 /* GHDataTable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHDataTable.h; path = Cucumberish/Dependencies/Gherkin/GHDataTable.h; sourceTree = ""; }; + 4FDD3E5FF3EA5618961B4FB07E4F761B /* GHFeature.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHFeature.h; path = Cucumberish/Dependencies/Gherkin/GHFeature.h; sourceTree = ""; }; + 4FF6D625E298BE2BC6C1C5036BDE3228 /* NetRequest+Build.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetRequest+Build.swift"; path = "Core/NetRequest+Build.swift"; sourceTree = ""; }; + 5169C87334029720F6E17D158ECB0A28 /* .swift-version */ = {isa = PBXFileReference; includeInIndex = 1; path = ".swift-version"; sourceTree = ""; }; + 516B48924FFA28C2E93219EB040196F1 /* GHTokenMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTokenMatcher.h; path = Cucumberish/Dependencies/Gherkin/GHTokenMatcher.h; sourceTree = ""; }; + 5172B96C1E26286778A4C6079E9FBE12 /* Reusable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-umbrella.h"; sourceTree = ""; }; + 54D36C136C1793DE836ADAC645C395E7 /* LogDetails.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LogDetails.swift; path = Sources/XCGLogger/Misc/LogDetails.swift; sourceTree = ""; }; + 552E8CBF921CF3F8FF4F52CBF82787D0 /* CCIJSONDumper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIJSONDumper.m; path = Cucumberish/Core/Models/CCIJSONDumper.m; sourceTree = ""; }; + 55743C6CBE6477E747DFDEEF8B477C84 /* GHNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHNode.h; path = Cucumberish/Dependencies/Gherkin/GHNode.h; sourceTree = ""; }; + 5589CEA036AA85F8B9ECD1717D36818F /* Kommander.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kommander.swift; path = Source/Kommander.swift; sourceTree = ""; }; + 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 5743B7F59B6201AC0D0712C20BAC394B /* NetClient.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = NetClient.modulemap; sourceTree = ""; }; + 57687BA7AFDEF345B0BADFC4D301D2D1 /* CCIHock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIHock.m; path = Cucumberish/Core/Models/CCIHock.m; sourceTree = ""; }; + 5847CC73FFA604FADBEC258F90A7F52B /* CacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheSerializer.swift; path = Sources/CacheSerializer.swift; sourceTree = ""; }; + 584981606FBFBBE70866FF2B01CDDBEA /* NetResponse+Cached​URLResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetResponse+Cached​URLResponse.swift"; path = "Core/NetResponse+Cached​URLResponse.swift"; sourceTree = ""; }; + 589AFCEDBF784755427EB89289E36047 /* GHLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHLocation.h; path = Cucumberish/Dependencies/Gherkin/GHLocation.h; sourceTree = ""; }; 598379A44F04CB77AA27D6523E196E54 /* Pods-CoreTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CoreTests-dummy.m"; sourceTree = ""; }; - 5C930CF1943CC9DCAA6BBA7AF37B1B15 /* GHFeature.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHFeature.m; path = Cucumberish/Dependencies/Gherkin/GHFeature.m; sourceTree = ""; }; - 5CB12D9E1BB09E8EB9FDF9B163CB705D /* Pods_Archit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Archit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5E27A573743711820EFDA4FAF27117ED /* NetReachability.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetReachability.swift; path = Core/NetReachability.swift; sourceTree = ""; }; - 5F3801F8CB758F4FCC380AF6B492F655 /* ImageDownloader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloader.swift; path = Sources/ImageDownloader.swift; sourceTree = ""; }; + 5A29BE02AC796F62BA4DB2A1F10649D5 /* NetClient-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NetClient-dummy.m"; sourceTree = ""; }; + 5AC7C905881720410817B9FE2FA1CB49 /* ImageTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTransition.swift; path = Sources/ImageTransition.swift; sourceTree = ""; }; + 5AE3BEBF88AEB8861BDBC46832BD6697 /* ObjcExceptionBridging.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ObjcExceptionBridging.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BB0073F04C86CB83C780A8B30B7726E /* GHComment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHComment.h; path = Cucumberish/Dependencies/Gherkin/GHComment.h; sourceTree = ""; }; 5F616FFB7BFA4E34E72CD5F9B95E5A4E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5FA80097D76522879D00DEAF26BEF4DB /* String+MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+MD5.swift"; path = "Sources/String+MD5.swift"; sourceTree = ""; }; - 5FF5E11EA16625CCCC49BE84FDB13263 /* NetTaskMetrics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetTaskMetrics.swift; path = Core/NetTaskMetrics.swift; sourceTree = ""; }; - 60D9D99B109737B2724C9445ED57D519 /* GHStep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHStep.h; path = Cucumberish/Dependencies/Gherkin/GHStep.h; sourceTree = ""; }; - 6191781C6A5EFC4966B1B7319676943B /* CCIArgument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIArgument.m; path = Cucumberish/Core/Models/CCIArgument.m; sourceTree = ""; }; + 5F986A35BFB685A700BD9896FF4EF5D9 /* NSString+Formatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Formatter.h"; path = "Cucumberish/Utils/NSString+Formatter.h"; sourceTree = ""; }; 62F58D2543C335F96AD6688C9DF9C88C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 641A34B781924776A94DAC2164D616F9 /* Kommand.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kommand.swift; path = Source/Kommand.swift; sourceTree = ""; }; - 659341DA334E5B7D9CC04336BAFF4160 /* Kommander.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Kommander.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 65B865959D5C3AD675FCA9B905AFDA7F /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; + 64EA67365050760C82B4410A49741CF3 /* NetRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetRequest.swift; path = Core/NetRequest.swift; sourceTree = ""; }; 677A33CBA782D55A9424CFC2E2AFE5F5 /* Pods-Archit-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Archit-acknowledgements.plist"; sourceTree = ""; }; - 68D6EEF01B1A446FD5991942D0D6528C /* GHHasLocationProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasLocationProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasLocationProtocol.h; sourceTree = ""; }; + 68DE7FC880BB051360BACB0A8880970C /* GHGherkinDialectProviderProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinDialectProviderProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialectProviderProtocol.h; sourceTree = ""; }; 690CF362B156CA19B45EB39CB5581A57 /* Pods-Archit-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Archit-frameworks.sh"; sourceTree = ""; }; - 695246E9C7E67B1E1ABCD34E5F0D97C1 /* Reusable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-umbrella.h"; sourceTree = ""; }; - 6C5DF40AAB4E08D7F0F9EC9EBA65752F /* CCIExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIExample.h; path = Cucumberish/Core/Models/CCIExample.h; sourceTree = ""; }; + 6B5B5164932F7FD9F1088A46959C1E76 /* ObjcExceptionBridging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ObjcExceptionBridging.xcconfig; sourceTree = ""; }; + 6C6B9CA0F6F5E2442A4067B74D2D3B34 /* GHNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHNode.m; path = Cucumberish/Dependencies/Gherkin/GHNode.m; sourceTree = ""; }; 6C875240E691E363E5AE0E8E8227C3A3 /* Pods-DomainTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DomainTests-frameworks.sh"; sourceTree = ""; }; - 6CCBC453F3CBF7C12E3D09D6539ACF7A /* Kommander-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kommander-umbrella.h"; sourceTree = ""; }; - 6D0D40EB4E5AE8FC09497E4AAFB19DD3 /* CurrentDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CurrentDispatcher.swift; path = Source/CurrentDispatcher.swift; sourceTree = ""; }; - 6D85E8E7A84775ADF7069FC0F15B6A8E /* GHDataTable.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHDataTable.m; path = Cucumberish/Dependencies/Gherkin/GHDataTable.m; sourceTree = ""; }; - 6DB28BA7F616CE436C25C21C46038173 /* GHNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHNode.h; path = Cucumberish/Dependencies/Gherkin/GHNode.h; sourceTree = ""; }; - 70381D9724D60A372951F208A0A552BB /* Reusable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Reusable.modulemap; sourceTree = ""; }; - 70C0F70CF2574B424E4141004C69FD95 /* GHLocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHLocation.m; path = Cucumberish/Dependencies/Gherkin/GHLocation.m; sourceTree = ""; }; - 70FE0D29937F553FD6ED820CF6E91B75 /* NSArray+Hashes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Hashes.h"; path = "Cucumberish/Utils/NSArray+Hashes.h"; sourceTree = ""; }; - 71B70CAEA44530A452AD8B04D127782C /* Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reusable.swift; path = Sources/View/Reusable.swift; sourceTree = ""; }; - 722D714C5319B2F60FF9AB246250143F /* GHGherkinLanguageSetting.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinLanguageSetting.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinLanguageSetting.m; sourceTree = ""; }; - 7588BEF79C0FC540F64DE8C3EA41B288 /* CCIHock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIHock.m; path = Cucumberish/Core/Models/CCIHock.m; sourceTree = ""; }; + 6CB88CCC0EDCBB1BFF3352D35116FA24 /* GHGherkinLineSpan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLineSpan.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLineSpan.h; sourceTree = ""; }; + 6DF6BBE7E43DB2364A9B0D38CE530851 /* CCILocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCILocation.m; path = Cucumberish/Core/Models/CCILocation.m; sourceTree = ""; }; + 6E031FA5BCC86339320E4F120AF591FB /* Reusable.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Reusable.xcconfig; sourceTree = ""; }; + 6E93F14C3FC833DED3FA5E0CB946A764 /* CCIExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIExample.m; path = Cucumberish/Core/Models/CCIExample.m; sourceTree = ""; }; + 6EB6F7F9BF4D83227CF14535C40809F3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6F26CE83D5ABDEB9DD06D83AC9C0C28E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 719C0B609A4CF5650DC5271C807E0EB9 /* GHParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHParser.m; path = Cucumberish/Dependencies/Gherkin/GHParser.m; sourceTree = ""; }; + 72063305E3ADA155EB457CB94D659186 /* NetURLSession+Upload.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetURLSession+Upload.swift"; path = "URLSession/NetURLSession+Upload.swift"; sourceTree = ""; }; + 72682A730F7B2AB8B698AB98C1F8BE51 /* Base64LogFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Base64LogFormatter.swift; path = Sources/XCGLogger/LogFormatters/Base64LogFormatter.swift; sourceTree = ""; }; + 736E7C57EFC76D466F48655D2D706476 /* GHStepArgument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHStepArgument.h; path = Cucumberish/Dependencies/Gherkin/GHStepArgument.h; sourceTree = ""; }; + 74AA467DB101B341CF0DD110468F98E3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7658ABF3F94439D812F0CDCE8F8055B2 /* GHDocString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHDocString.m; path = Cucumberish/Dependencies/Gherkin/GHDocString.m; sourceTree = ""; }; 76C9D4C509E0A2BC5CC77C09F946BCB9 /* Pods-DomainTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DomainTests-umbrella.h"; sourceTree = ""; }; + 76E9A10230C1FFFED3BBC3C628C3DB87 /* Kingfisher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Kingfisher.modulemap; sourceTree = ""; }; + 7706E5140D81057771F7284126CF1516 /* ANSIColorLogFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ANSIColorLogFormatter.swift; path = Sources/XCGLogger/LogFormatters/ANSIColorLogFormatter.swift; sourceTree = ""; }; + 77FE5D389919ED2685B4717BF6908635 /* NetTaskMetrics+URLSessionTaskMetrics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetTaskMetrics+URLSessionTaskMetrics.swift"; path = "Core/NetTaskMetrics+URLSessionTaskMetrics.swift"; sourceTree = ""; }; + 78298952BE663DA372F7862BACD74848 /* gherkin-languages.json */ = {isa = PBXFileReference; includeInIndex = 1; name = "gherkin-languages.json"; path = "Cucumberish/Dependencies/Gherkin/gherkin-languages.json"; sourceTree = ""; }; 799AB5BC0DA35F7EB256BD820DD2EBB8 /* Pods-Archit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Archit.release.xcconfig"; sourceTree = ""; }; - 7A38ADE368813DE465BEB4D785373040 /* GHDocString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHDocString.h; path = Cucumberish/Dependencies/Gherkin/GHDocString.h; sourceTree = ""; }; - 7A3C7B9A55E284E5B3F8CB3C11B2C185 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 7B180D89CE60201D55199F6E752E32AA /* GHFeature.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHFeature.h; path = Cucumberish/Dependencies/Gherkin/GHFeature.h; sourceTree = ""; }; - 7B2FB3A427B7FE691F70DD5D916628A0 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; - 7C96F8D89CCB9EB78AB460C4D42A609D /* Kommander.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kommander.swift; path = Source/Kommander.swift; sourceTree = ""; }; - 7CCB38FD5B3ED5EAABA28B776B9A3278 /* NetURLSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetURLSession.swift; path = URLSession/NetURLSession.swift; sourceTree = ""; }; - 7D10CBBFBE1409D04EE2490922399DB1 /* Dispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Dispatcher.swift; path = Source/Dispatcher.swift; sourceTree = ""; }; - 7E68BEFB9D78E1C18B4586D13FAECA7F /* GHGherkinLineSpan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLineSpan.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLineSpan.h; sourceTree = ""; }; - 7E91B468D6A4421DCB89650E121954C2 /* Pods-DomainTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-DomainTests.modulemap"; sourceTree = ""; }; - 7E91CA9BD4CC4E04F00DD4E48093ABAD /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Filter.swift; sourceTree = ""; }; + 79D7E6C88897758D8EA53B57205E4BE3 /* GHParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHParser.h; path = Cucumberish/Dependencies/Gherkin/GHParser.h; sourceTree = ""; }; + 7BFC380FEA301BBA034FB710B0A76804 /* NSArray+Hashes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Hashes.h"; path = "Cucumberish/Utils/NSArray+Hashes.h"; sourceTree = ""; }; + 7DEA872E0A0B67DA1199F5CC862218FD /* GHTokenScanner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTokenScanner.m; path = Cucumberish/Dependencies/Gherkin/GHTokenScanner.m; sourceTree = ""; }; + 7E91B468D6A4421DCB89650E121954C2 /* Pods-DomainTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-DomainTests.modulemap"; sourceTree = ""; }; 7E9E16609A161C51161CB8A33D965A6B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 810A388F5CE676277077606F0DE85507 /* GHScenarioDefinition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHScenarioDefinition.m; path = Cucumberish/Dependencies/Gherkin/GHScenarioDefinition.m; sourceTree = ""; }; - 8281EF23B53CBB80EAC3F5F3B1F551B6 /* CCILocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCILocation.h; path = Cucumberish/Core/Models/CCILocation.h; sourceTree = ""; }; + 7EAAB904F80D7E850A156769F24BCC94 /* AppleSystemLogDestination.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleSystemLogDestination.swift; path = Sources/XCGLogger/Destinations/AppleSystemLogDestination.swift; sourceTree = ""; }; + 7EF069576558D2E644F4FA351A1007AC /* NetResponse+URLResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetResponse+URLResponse.swift"; path = "Core/NetResponse+URLResponse.swift"; sourceTree = ""; }; + 7F6FE3B02B7186A27A5CF0D1D661A54F /* Reusable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Reusable-dummy.m"; sourceTree = ""; }; + 7F8DB3747431EF23E6BD537ED582113F /* GHAstBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHAstBuilder.h; path = Cucumberish/Dependencies/Gherkin/GHAstBuilder.h; sourceTree = ""; }; + 800A06DEF441E24C02887CCB12466104 /* GHTag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTag.h; path = Cucumberish/Dependencies/Gherkin/GHTag.h; sourceTree = ""; }; + 809806B63801D68CB331823C47DCCB0B /* NetClient.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NetClient.xcconfig; sourceTree = ""; }; + 810EFCD05DCD0BEE4C35FBC5CFF3D411 /* Kommand.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kommand.swift; path = Source/Kommand.swift; sourceTree = ""; }; + 8116E903ABDACA0722DCE04CFC6E3995 /* GHGherkinLine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinLine.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinLine.m; sourceTree = ""; }; + 81530EA72074D8E365687C78BD9830B2 /* Cucumberish-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Cucumberish-prefix.pch"; sourceTree = ""; }; + 81890B8400E3025A7A93365DE3898F99 /* CCILocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCILocation.h; path = Cucumberish/Core/Models/CCILocation.h; sourceTree = ""; }; 83C6EF3D403F166BEF9373C6707EDAC2 /* Pods-Core.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Core.release.xcconfig"; sourceTree = ""; }; - 83E74A6E52CEFEE37B6E29ECD8C8077D /* Kingfisher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-umbrella.h"; sourceTree = ""; }; - 84C29405241D949ABDA5DC37D2A97128 /* GHParser+Extensions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GHParser+Extensions.m"; path = "Cucumberish/Dependencies/Gherkin/GHParser+Extensions.m"; sourceTree = ""; }; - 8507B1DF5D363C1471973B565283EB96 /* GHExamples.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHExamples.h; path = Cucumberish/Dependencies/Gherkin/GHExamples.h; sourceTree = ""; }; + 84176253DDDBA214DE4A70D2B16ED15C /* Net.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Net.h; path = Core/Net.h; sourceTree = ""; }; + 8422FD8607F7E62209A911410F51D7B1 /* NetError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetError.swift; path = Core/NetError.swift; sourceTree = ""; }; + 84D12BC4944210E4BD3FC93AEE7BFDC8 /* ObjcExceptionBridging.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = ObjcExceptionBridging.modulemap; sourceTree = ""; }; + 8647D5CA2DC3C052C9E3A4798DF0AB29 /* NSString+Trim.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Trim.h"; path = "Cucumberish/Dependencies/Gherkin/NSString+Trim.h"; sourceTree = ""; }; 86B2B3F017862511356BF3EEE68B888B /* Pods-Domain-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Domain-umbrella.h"; sourceTree = ""; }; - 8753D181F4A75B131BF35C8B5A58BAC6 /* ImageTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTransition.swift; path = Sources/ImageTransition.swift; sourceTree = ""; }; - 875548467F3020F98FBEF9D2CEC11ED8 /* GHStep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHStep.m; path = Cucumberish/Dependencies/Gherkin/GHStep.m; sourceTree = ""; }; - 87ABF7048062B4547BC16DC7FA1FCD55 /* NSString+Formatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Formatter.h"; path = "Cucumberish/Utils/NSString+Formatter.h"; sourceTree = ""; }; + 87B4DFCFC8497CA3E7442CF4FE55673D /* GHGherkinLine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLine.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLine.h; sourceTree = ""; }; 882C797FFD93A8E21656C9033972F2B8 /* Pods-CoreTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CoreTests.release.xcconfig"; sourceTree = ""; }; - 88463114FCA181C39E97B65B50241E77 /* CCIFeaturesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIFeaturesManager.m; path = Cucumberish/Core/Managers/CCIFeaturesManager.m; sourceTree = ""; }; 885247A7BF6CCC8F0FB83008F1432EEA /* Pods-Archit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Archit-dummy.m"; sourceTree = ""; }; - 890D648E4AEE1F97A0B4EB3F0AB0AB65 /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/ImageCache.swift; sourceTree = ""; }; - 89589E81B432D6584805B599EBBA353C /* Kommander-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kommander-dummy.m"; sourceTree = ""; }; + 88A6A05B9B5579FB89375C6829A443AA /* GHAstNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHAstNode.m; path = Cucumberish/Dependencies/Gherkin/GHAstNode.m; sourceTree = ""; }; + 88CE3E4C3B9BE233126726B126DD2F8C /* KingfisherManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherManager.swift; path = Sources/KingfisherManager.swift; sourceTree = ""; }; 89F240BC570AC47F0FC178D62760F0A5 /* Pods-Domain.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Domain.release.xcconfig"; sourceTree = ""; }; - 8A75E31860E403A59D3831C91CD2C6F7 /* GHComment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHComment.h; path = Cucumberish/Dependencies/Gherkin/GHComment.h; sourceTree = ""; }; - 8D52E535A0B97F24335F9C03AD998FE6 /* GHHasTagsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasTagsProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasTagsProtocol.h; sourceTree = ""; }; - 8FF3F0ACC5B661B1D6133483D8D375EA /* GHGherkinLanguageConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinLanguageConstants.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinLanguageConstants.m; sourceTree = ""; }; - 903D1CA879B0C56CB0831A2A83E40575 /* Pods_CoreTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CoreTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90F1271A95A025A32CD2CC5AFD3EEE3E /* Cucumberish.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Cucumberish.m; path = Cucumberish/Cucumberish.m; sourceTree = ""; }; - 9246FEB8CABA64B2CDED534B32A22465 /* NetMultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetMultipartFormData.swift; path = Core/NetMultipartFormData.swift; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 93C5232AC1C1892C763F818DC2C5B377 /* GHParser+Extensions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GHParser+Extensions.h"; path = "Cucumberish/Dependencies/Gherkin/GHParser+Extensions.h"; sourceTree = ""; }; - 93FB82FFD53B2E00189A44A86AD761AA /* GHParserException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHParserException.m; path = Cucumberish/Dependencies/Gherkin/GHParserException.m; sourceTree = ""; }; + 89FF1CB6FFED5315635EE8CBADA274C2 /* CCIFeaturesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIFeaturesManager.m; path = Cucumberish/Core/Managers/CCIFeaturesManager.m; sourceTree = ""; }; + 8A506C557952D1F849B264E6B4D949D3 /* GHTag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTag.m; path = Cucumberish/Dependencies/Gherkin/GHTag.m; sourceTree = ""; }; + 8B02F00FC5B40530DB42C51CA132C901 /* GHTokenScanner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTokenScanner.h; path = Cucumberish/Dependencies/Gherkin/GHTokenScanner.h; sourceTree = ""; }; + 8D90E2FEA217C023BC14D73A75B7278D /* GHHasDescriptionProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasDescriptionProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasDescriptionProtocol.h; sourceTree = ""; }; + 8E8F2DFFE07B51FA3A2A0FB538F04DBC /* NibLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibLoadable.swift; path = Sources/View/NibLoadable.swift; sourceTree = ""; }; + 8FA2C25C05947EBEE15D4B9EFDB7840D /* XCGLogger.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = XCGLogger.modulemap; sourceTree = ""; }; + 903030E0FF5B9A9C54E6B198C0EE940D /* Kommander.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Kommander.framework; path = Kommander.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 90A2F28D71EE85A11EF8E507AB5AD895 /* TestDestination.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TestDestination.swift; path = Sources/XCGLogger/Destinations/TestDestination.swift; sourceTree = ""; }; + 917CEB139B2DD57B86BCE40B54ABFCF7 /* CurrentDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CurrentDispatcher.swift; path = Source/CurrentDispatcher.swift; sourceTree = ""; }; + 92AC63201DF010FC16FA08D329ED5A71 /* MainDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainDispatcher.swift; path = Source/MainDispatcher.swift; sourceTree = ""; }; + 92BCC674AE0D2A90265DBE2A2637FBB2 /* Resource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resource.swift; path = Sources/Resource.swift; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 93DF98BDE895DFEB375198C5E2C3C0E7 /* NetURLSession+Download.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetURLSession+Download.swift"; path = "URLSession/NetURLSession+Download.swift"; sourceTree = ""; }; + 940AD48F501BB7FDC72FD05AC76EFAB7 /* NetResponse+HTTPURLResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetResponse+HTTPURLResponse.swift"; path = "Core/NetResponse+HTTPURLResponse.swift"; sourceTree = ""; }; + 9471BE4B988273354734C37BE0DC21F4 /* NSString+Trim.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Trim.m"; path = "Cucumberish/Dependencies/Gherkin/NSString+Trim.m"; sourceTree = ""; }; + 9551ADB9D573A9A4878DF8F17112A650 /* ObjectiveCMarker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ObjectiveCMarker.m; path = Sources/ObjcExceptionBridging/ObjectiveCMarker.m; sourceTree = ""; }; 969BD9D60F4EFB04F44CE5E3455F143A /* Pods-ArchitUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ArchitUITests-acknowledgements.plist"; sourceTree = ""; }; - 96A18659E1406BAF35B5EBD50D511207 /* Pods-CoreTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-CoreTests.modulemap"; sourceTree = ""; }; - 97267FEE7A041C463519A62F541DD3CC /* GHBackground.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHBackground.h; path = Cucumberish/Dependencies/Gherkin/GHBackground.h; sourceTree = ""; }; + 96A18659E1406BAF35B5EBD50D511207 /* Pods-CoreTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-CoreTests.modulemap"; sourceTree = ""; }; + 97B032C2F74B48C801293BF2DD52F567 /* ObjcExceptionBridging-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ObjcExceptionBridging-dummy.m"; sourceTree = ""; }; 9862748DC703866E85FE417177C0104D /* Pods-Core-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Core-resources.sh"; sourceTree = ""; }; - 98CC49745B5DC823A1D901CA75C4B73B /* MainDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainDispatcher.swift; path = Source/MainDispatcher.swift; sourceTree = ""; }; - 9A6BB1D572014B5EF05DFCD11342822F /* GHLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHLocation.h; path = Cucumberish/Dependencies/Gherkin/GHLocation.h; sourceTree = ""; }; - 9C7395779259014429357ED42A1EA179 /* GHParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHParser.h; path = Cucumberish/Dependencies/Gherkin/GHParser.h; sourceTree = ""; }; - 9DB5D251E969EF819A0CD86D44708C49 /* StoryboardSceneBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardSceneBased.swift; path = Sources/Storyboard/StoryboardSceneBased.swift; sourceTree = ""; }; - 9F92A73B85089F9AB722321FBE56706C /* GHScenario.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHScenario.m; path = Cucumberish/Dependencies/Gherkin/GHScenario.m; sourceTree = ""; }; + 990155647EA01472CEB25BD59F1824D5 /* GHScenarioDefinition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHScenarioDefinition.h; path = Cucumberish/Dependencies/Gherkin/GHScenarioDefinition.h; sourceTree = ""; }; + 9A5AC995988DFCCE0705EDDDA040C1EC /* CCILoggingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCILoggingManager.h; path = Cucumberish/Core/Managers/CCILoggingManager.h; sourceTree = ""; }; + 9D71080F074D6ADB23EC163974386BD4 /* GHAstBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHAstBuilder.m; path = Cucumberish/Dependencies/Gherkin/GHAstBuilder.m; sourceTree = ""; }; + 9DA7FD47E181978972C8FABACFFC7EE4 /* Pods_Archit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Archit.framework; path = "Pods-Archit.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9DC48FBEDA6F09BC8787BCD0C4B21BD8 /* KommandCancelledError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KommandCancelledError.swift; path = Source/KommandCancelledError.swift; sourceTree = ""; }; + 9E5662D40E78AAD333E69B4AA56C03EC /* Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reusable.swift; path = Sources/View/Reusable.swift; sourceTree = ""; }; + 9EF0C23B444FE365419FB5A0C9E6F1BE /* GHExamples.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHExamples.h; path = Cucumberish/Dependencies/Gherkin/GHExamples.h; sourceTree = ""; }; + 9F2B901EC1A0827ED823DCB13B541AF9 /* GHScenarioOutline.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHScenarioOutline.m; path = Cucumberish/Dependencies/Gherkin/GHScenarioOutline.m; sourceTree = ""; }; 9FAB7A7991C9133BF9565C813ED61CDC /* Pods-DomainTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DomainTests-acknowledgements.markdown"; sourceTree = ""; }; - A0408B5D6E1570ADC185144E4D0FD360 /* RequestModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestModifier.swift; path = Sources/RequestModifier.swift; sourceTree = ""; }; A04D1F57C465AFA338DB3122EABD175A /* Pods-ArchitTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ArchitTests-umbrella.h"; sourceTree = ""; }; + A1008700022E9325453C8CECD8D71B9E /* CCIStepsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIStepsManager.h; path = Cucumberish/Core/Managers/CCIStepsManager.h; sourceTree = ""; }; + A13E41155BAAD04E0AE171E2F709E942 /* String+MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+MD5.swift"; path = "Sources/String+MD5.swift"; sourceTree = ""; }; + A1573E3ECC284EBCA32592F458E68F62 /* CCIFeature.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIFeature.h; path = Cucumberish/Core/Models/CCIFeature.h; sourceTree = ""; }; A214800FC56DE44F3E2BF5641D59C437 /* Pods-Domain-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Domain-acknowledgements.plist"; sourceTree = ""; }; - A2D29FF5B5E65120C77D7AFEFB2C7BE8 /* gherkin-languages.json */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.json; name = "gherkin-languages.json"; path = "Cucumberish/Dependencies/Gherkin/gherkin-languages.json"; sourceTree = ""; }; - A380891CDC887163E0A4129F52063C22 /* ResourceBundle-GherkinLanguages-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GherkinLanguages-Info.plist"; sourceTree = ""; }; - A4A360A026778D59895ACC4233A5CDB2 /* NibOwnerLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibOwnerLoadable.swift; path = Sources/View/NibOwnerLoadable.swift; sourceTree = ""; }; - A582FAC173418DC981904BB68C1A3678 /* Reusable.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Reusable.xcconfig; sourceTree = ""; }; - A6507F8F37DE931141D9113A13272467 /* NetURLSession+Stream.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetURLSession+Stream.swift"; path = "URLSession/NetURLSession+Stream.swift"; sourceTree = ""; }; + A53A873F2E916A66823C12D14ECD9DC1 /* DevFilter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DevFilter.swift; path = Sources/XCGLogger/Filters/DevFilter.swift; sourceTree = ""; }; A789ACDF548A52ADE6E3F3CC8A093C5F /* Pods-ArchitUITests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ArchitUITests-umbrella.h"; sourceTree = ""; }; - A7C1792E42CF3E06691E8BEDE8468BBD /* Placeholder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Placeholder.swift; path = Sources/Placeholder.swift; sourceTree = ""; }; - A8B1EA6306D32026FBBD3B61C2176A5B /* GHTokenMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTokenMatcher.h; path = Cucumberish/Dependencies/Gherkin/GHTokenMatcher.h; sourceTree = ""; }; - A99FD97316822396200618A6E2380C99 /* GHGherkinDialectProviderProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinDialectProviderProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialectProviderProtocol.h; sourceTree = ""; }; - AADC38BE757DCD9543D6BC06E439952C /* AnimatedImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedImageView.swift; path = Sources/AnimatedImageView.swift; sourceTree = ""; }; - ACB5E70D98AA875B44E900EF2411163B /* KingfisherManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherManager.swift; path = Sources/KingfisherManager.swift; sourceTree = ""; }; + A9724D9E2ADA44DD16AC57C867A37290 /* GHDataTable.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHDataTable.m; path = Cucumberish/Dependencies/Gherkin/GHDataTable.m; sourceTree = ""; }; + AB5E3D7F0E4F300EDEA6E8C981C4D760 /* TagFilter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TagFilter.swift; path = Sources/XCGLogger/Filters/TagFilter.swift; sourceTree = ""; }; + ABD0EE1C07BCBF8B8B68667C7C0D4872 /* Pods_CoreTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_CoreTests.framework; path = "Pods-CoreTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + AC0499F00F455EC6DA3C5F4197D99BCB /* CCIHock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIHock.h; path = Cucumberish/Core/Models/CCIHock.h; sourceTree = ""; }; ACC5338598E07175135CD0DF2381DA2D /* Pods-Core-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Core-acknowledgements.plist"; sourceTree = ""; }; AD27C15D49A723F9D2F550322C928DF9 /* Pods-ArchitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ArchitTests.release.xcconfig"; sourceTree = ""; }; - AD587E676867C1B6250E18CE95132850 /* Net.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Net.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B0E22E920173EB96CFB5013598E34BC3 /* GHTokenScanner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTokenScanner.m; path = Cucumberish/Dependencies/Gherkin/GHTokenScanner.m; sourceTree = ""; }; - B0F504F41B52982765CD40346B19CF67 /* GHTableRow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTableRow.h; path = Cucumberish/Dependencies/Gherkin/GHTableRow.h; sourceTree = ""; }; - B2391930E1666717802262A587619B49 /* GHNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHNode.m; path = Cucumberish/Dependencies/Gherkin/GHNode.m; sourceTree = ""; }; - B321013D0FA8B826F572B1EDFF1D0634 /* ImageProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessor.swift; path = Sources/ImageProcessor.swift; sourceTree = ""; }; - B3DC205CEA85348126BE49485C97C1C7 /* CCILocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCILocation.m; path = Cucumberish/Core/Models/CCILocation.m; sourceTree = ""; }; - B3E39EF1DB22F72499549E7EDA489C3E /* GHStepArgument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHStepArgument.h; path = Cucumberish/Dependencies/Gherkin/GHStepArgument.h; sourceTree = ""; }; - B405F20EC25F983962733A85955FE794 /* CCILoggingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCILoggingManager.m; path = Cucumberish/Core/Managers/CCILoggingManager.m; sourceTree = ""; }; - B4BC84FF242FC46B48979E97C5109556 /* Pods-Core.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Core.modulemap"; sourceTree = ""; }; - B5DCA9F3CA7399787F1DCF8105F7074D /* Pods-ArchitTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-ArchitTests.modulemap"; sourceTree = ""; }; + AE0363BC153EEB6F5A3AADD8333D167A /* Kingfisher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Kingfisher.framework; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B034BC3F76A7EBBC1AF87C4DB16B6E3A /* Cucumberish.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Cucumberish.xcconfig; sourceTree = ""; }; + B12EC4587159A3E3339B3738838EFBD5 /* CCIScenarioDefinition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIScenarioDefinition.h; path = Cucumberish/Core/Models/CCIScenarioDefinition.h; sourceTree = ""; }; + B29581C168F621CCCF1A23C071B5CD2F /* GHParserException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHParserException.m; path = Cucumberish/Dependencies/Gherkin/GHParserException.m; sourceTree = ""; }; + B3512734BFB13288A3DA50876210F20B /* CCIScenarioDefinition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIScenarioDefinition.m; path = Cucumberish/Core/Models/CCIScenarioDefinition.m; sourceTree = ""; }; + B406BF25F2781FDB6DF98AB9312F0D37 /* GHGherkinLineProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLineProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLineProtocol.h; sourceTree = ""; }; + B4BC84FF242FC46B48979E97C5109556 /* Pods-Core.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-Core.modulemap"; sourceTree = ""; }; + B5DCA9F3CA7399787F1DCF8105F7074D /* Pods-ArchitTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-ArchitTests.modulemap"; sourceTree = ""; }; + B6A3EA28FF6080B82C0B8BA7E99CE611 /* Kommander-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kommander-prefix.pch"; sourceTree = ""; }; + B6ABF2311950829EF5F98457A36389D4 /* AnimatedImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedImageView.swift; path = Sources/AnimatedImageView.swift; sourceTree = ""; }; + B729115D536BFE943B6BDC5F01180B70 /* GHHasRowsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasRowsProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasRowsProtocol.h; sourceTree = ""; }; B836779A8878AEEC925E3BD7CD911633 /* Pods-CoreTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CoreTests-acknowledgements.markdown"; sourceTree = ""; }; - B9F53110434ACE4C44624377C38B4AE4 /* Resource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resource.swift; path = Sources/Resource.swift; sourceTree = ""; }; - BA9EA8AFEA10727188E0F300A24AF95C /* GHToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHToken.h; path = Cucumberish/Dependencies/Gherkin/GHToken.h; sourceTree = ""; }; - BB9386E51385352BC9FB9EF68E1D81A0 /* GHTag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTag.h; path = Cucumberish/Dependencies/Gherkin/GHTag.h; sourceTree = ""; }; - BBE21F0C99306E05E6C669C182DEC59A /* CCIJSONDumper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIJSONDumper.h; path = Cucumberish/Core/Models/CCIJSONDumper.h; sourceTree = ""; }; - BC244C19611F9AC4865AF33CEE2EA3CB /* NSObject+Dictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Dictionary.h"; path = "Cucumberish/Utils/NSObject+Dictionary.h"; sourceTree = ""; }; + B86FF2BE732E2017353DC0ADCA9B9D0D /* PrePostFixLogFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PrePostFixLogFormatter.swift; path = Sources/XCGLogger/LogFormatters/PrePostFixLogFormatter.swift; sourceTree = ""; }; + B9A837B3EB58DC57E304B3E04DC0FEF8 /* GHParser+Extensions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GHParser+Extensions.m"; path = "Cucumberish/Dependencies/Gherkin/GHParser+Extensions.m"; sourceTree = ""; }; + B9F29A654AF391298893AA3EFEE27378 /* NetClient-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NetClient-umbrella.h"; sourceTree = ""; }; + BA565B9D1032B85422094A7A64AC658C /* NetTransformer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetTransformer.swift; path = Core/NetTransformer.swift; sourceTree = ""; }; + BAB40416E8E0EC13C9965BB164545F0E /* GHScenario.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHScenario.h; path = Cucumberish/Dependencies/Gherkin/GHScenario.h; sourceTree = ""; }; + BAD52DD7A2ADAF0265DA9B7BA5614196 /* NetContentType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetContentType.swift; path = Core/NetContentType.swift; sourceTree = ""; }; + BB373B2B2E91704313660CA0F66AD6FB /* GHGherkinLineSpan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinLineSpan.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinLineSpan.m; sourceTree = ""; }; BC5C0F7ADBAA75597EEBE354F7C9AAB4 /* Pods-ArchitUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ArchitUITests-acknowledgements.markdown"; sourceTree = ""; }; - BC9CE88C9276E031C6BD54C214724E84 /* CacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheSerializer.swift; path = Sources/CacheSerializer.swift; sourceTree = ""; }; - BD6D4379BA57DF583CD5C154D4322229 /* NetClient.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = NetClient.modulemap; sourceTree = ""; }; - BD80ACF5BD6234CEBA25081B21AA77B8 /* GHBackground.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHBackground.m; path = Cucumberish/Dependencies/Gherkin/GHBackground.m; sourceTree = ""; }; + BC937B695EB156019AF75F8B90BC760C /* GHGherkinDialect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinDialect.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialect.h; sourceTree = ""; }; + BCEC4C5C0D9894F1608ECF4AA1B07DAD /* Kingfisher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-umbrella.h"; sourceTree = ""; }; + BD5B64BEEEB0E82D42B71E37B1E74DDC /* NetURLSession+Data.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetURLSession+Data.swift"; path = "URLSession/NetURLSession+Data.swift"; sourceTree = ""; }; BDE70461FFB96B0F12CF5C388D89E94F /* Pods-ArchitTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ArchitTests-dummy.m"; sourceTree = ""; }; - BEBA29B59731096F62CED32B152DFD00 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C014190CC863BBD187BB6C32507C8503 /* CCIBackground.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIBackground.m; path = Cucumberish/Core/Models/CCIBackground.m; sourceTree = ""; }; - C01BED710FCB5E750821A3A88F71BEE0 /* GHGherkinDialect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinDialect.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialect.h; sourceTree = ""; }; - C0451BBF5FC60311128765190C98988B /* NetResponse+HTTPURLResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetResponse+HTTPURLResponse.swift"; path = "Core/NetResponse+HTTPURLResponse.swift"; sourceTree = ""; }; - C08F6CD1B5A0195B8BF6ACBA85D3625C /* Cucumberish.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Cucumberish.modulemap; sourceTree = ""; }; - C16B5D14DCD613E6E5B4BA3E50599DAB /* CCIBlockDefinitions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIBlockDefinitions.h; path = Cucumberish/Core/CCIBlockDefinitions.h; sourceTree = ""; }; + C0DC1D92C5089A8E6D0C259A9571704A /* KingfisherOptionsInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherOptionsInfo.swift; path = Sources/KingfisherOptionsInfo.swift; sourceTree = ""; }; + C0DDB61DA3E813E04833121E76DDFFB3 /* NetTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetTask.swift; path = Core/NetTask.swift; sourceTree = ""; }; + C124D3C1326C8260DBA30CBB3E96E453 /* GHBackground.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHBackground.m; path = Cucumberish/Dependencies/Gherkin/GHBackground.m; sourceTree = ""; }; C1D1C5E8351C5299DF5A7BFBBAB13DEA /* Pods-Core.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Core.debug.xcconfig"; sourceTree = ""; }; - C32D5F2E0C0961EF22038D3DA794CDF3 /* CCIStepsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIStepsManager.m; path = Cucumberish/Core/Managers/CCIStepsManager.m; sourceTree = ""; }; - C34427298BDD3207657B7E12AE6A0758 /* NetTaskMetrics+URLSessionTaskMetrics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetTaskMetrics+URLSessionTaskMetrics.swift"; path = "Core/NetTaskMetrics+URLSessionTaskMetrics.swift"; sourceTree = ""; }; - C36BBA2B7AE2DD60A205636F6E1D7187 /* CCIJSONDumper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIJSONDumper.m; path = Cucumberish/Core/Models/CCIJSONDumper.m; sourceTree = ""; }; - C37B10AD078A86B6A416723CE59F2BDD /* StoryboardBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardBased.swift; path = Sources/Storyboard/StoryboardBased.swift; sourceTree = ""; }; - C3F8AA2B7E7FCA75FC659A865E76424C /* NetRequest+Build.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetRequest+Build.swift"; path = "Core/NetRequest+Build.swift"; sourceTree = ""; }; - C4B4DC22AF40366009034ADDD5EEA8C3 /* Pods-Domain.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Domain.modulemap"; sourceTree = ""; }; - C82878A79F72642DF34AA67AE26D4255 /* Pods_Core.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Core.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CAB8C9F222784365256C11AF61BC29BE /* Pods_DomainTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DomainTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CB70089C09285DD380F1BBC984D026B0 /* CCIAroundHock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIAroundHock.h; path = Cucumberish/Core/Models/CCIAroundHock.h; sourceTree = ""; }; - CD760E8D43115014133B68F69A29C961 /* GHParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHParser.m; path = Cucumberish/Dependencies/Gherkin/GHParser.m; sourceTree = ""; }; - CEA414BDD48FCE3BDAE22E5D5E91A3BC /* NetURLSessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetURLSessionDelegate.swift; path = URLSession/NetURLSessionDelegate.swift; sourceTree = ""; }; - CEE244E17488A6BE712EA61D93BDFC28 /* GHGherkinLanguageSetting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLanguageSetting.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLanguageSetting.h; sourceTree = ""; }; - CF0E32B1CEE6BA13241BDDA9683709A3 /* NetResponse+Cached​URLResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetResponse+Cached​URLResponse.swift"; path = "Core/NetResponse+Cached​URLResponse.swift"; sourceTree = ""; }; + C28AB4551A7D8E418237BD756B906E4D /* XCGLogger.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = XCGLogger.framework; path = XCGLogger.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C39913A61C69ECE17F63E12771748A49 /* NetURLSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetURLSession.swift; path = URLSession/NetURLSession.swift; sourceTree = ""; }; + C4B4DC22AF40366009034ADDD5EEA8C3 /* Pods-Domain.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-Domain.modulemap"; sourceTree = ""; }; + C4FD7E63CE8C13F307D3B8E42F58E4EC /* NSArray+Hashes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Hashes.m"; path = "Cucumberish/Utils/NSArray+Hashes.m"; sourceTree = ""; }; + C79358242879D3127D17078740D41FFA /* CCIStep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIStep.m; path = Cucumberish/Core/Models/CCIStep.m; sourceTree = ""; }; + CA8DC3772EB96DD3E5BD0B3BE510620E /* NetReachability.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetReachability.swift; path = Core/NetReachability.swift; sourceTree = ""; }; + CA9C4080B3B60A11B84CFB2C0C10C8C9 /* BaseDestination.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BaseDestination.swift; path = Sources/XCGLogger/Destinations/BaseDestination.swift; sourceTree = ""; }; + CB26E9E01266A1016C264B6F2BA870E1 /* Cucumberish-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Cucumberish-umbrella.h"; sourceTree = ""; }; + CCA11081C724388BA3B8994B4B5FDD3C /* GHBackground.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHBackground.h; path = Cucumberish/Dependencies/Gherkin/GHBackground.h; sourceTree = ""; }; + CD31386903D892F58FFDE449474BDC14 /* XCGLogger-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "XCGLogger-prefix.pch"; sourceTree = ""; }; + CDE7AF2EA81695CB38C86BBC025F384F /* XCGLogger-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "XCGLogger-umbrella.h"; sourceTree = ""; }; + CE315FDC4F26443A9092E941EEEA1876 /* GHStep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHStep.h; path = Cucumberish/Dependencies/Gherkin/GHStep.h; sourceTree = ""; }; + CEBBA9E5F9EDC5E7E7CF8E2A875CB53E /* Pods_ArchitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ArchitTests.framework; path = "Pods-ArchitTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + CF07B002EC2017639A519F9C59204E60 /* GHFeature.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHFeature.m; path = Cucumberish/Dependencies/Gherkin/GHFeature.m; sourceTree = ""; }; CF880E52430C729585447E0ED19EE4C9 /* Pods-DomainTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DomainTests-acknowledgements.plist"; sourceTree = ""; }; + CF961A5793F2FBBFDF38AA510754C4EE /* Pods_DomainTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_DomainTests.framework; path = "Pods-DomainTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; CFFDE271E0656856D9E780441AC19596 /* Pods-DomainTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DomainTests.release.xcconfig"; sourceTree = ""; }; - D0547828A3DE6F0B26D9099462895817 /* GHDocString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHDocString.m; path = Cucumberish/Dependencies/Gherkin/GHDocString.m; sourceTree = ""; }; - D1D26F501D99011AFA5E72E1B5827D59 /* GHToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHToken.m; path = Cucumberish/Dependencies/Gherkin/GHToken.m; sourceTree = ""; }; - D27F30E3BA0D97600ED5644A499A8A30 /* Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kingfisher.swift; path = Sources/Kingfisher.swift; sourceTree = ""; }; + D036B514C5E8E7C6D53654A520FBCAFC /* RequestModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestModifier.swift; path = Sources/RequestModifier.swift; sourceTree = ""; }; + D06DEFFA68E8BDCCF3720E8A8D9DAA09 /* Kommander.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Kommander.h; path = Source/Kommander.h; sourceTree = ""; }; + D188E1D30BAE02CD5ACECC273AC372C3 /* GHGherkinLanguageSetting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLanguageSetting.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLanguageSetting.h; sourceTree = ""; }; + D1E66BBA492F54AA5E363F69E79FFEAA /* UITableView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+Reusable.swift"; path = "Sources/View/UITableView+Reusable.swift"; sourceTree = ""; }; + D21F7CAA251E028DC99798301BEB9B92 /* NetTask+URLSessionTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetTask+URLSessionTask.swift"; path = "URLSession/NetTask+URLSessionTask.swift"; sourceTree = ""; }; D2F82F844E64998B7D898A67DA267D24 /* Pods-ArchitTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ArchitTests-resources.sh"; sourceTree = ""; }; - D53CE861CE4A32CC2A71CBB6A1FD1BC4 /* CCIArgument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIArgument.h; path = Cucumberish/Core/Models/CCIArgument.h; sourceTree = ""; }; + D313E373EAF782C1EDCBE1F8D4B35B7F /* UIButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Kingfisher.swift"; path = "Sources/UIButton+Kingfisher.swift"; sourceTree = ""; }; + D3985EFB34342C3E89C38F04756E73A2 /* GHDocString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHDocString.h; path = Cucumberish/Dependencies/Gherkin/GHDocString.h; sourceTree = ""; }; + D55EEE3EC2DE00DF094CD4C605AEC614 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; D5BEA86FDD966AAAA1566BB2B18B60C0 /* Pods-CoreTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CoreTests.debug.xcconfig"; sourceTree = ""; }; - D69F37EEB7FAEB6B2CD9C25C336D9D71 /* CCIScenarioDefinition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIScenarioDefinition.m; path = Cucumberish/Core/Models/CCIScenarioDefinition.m; sourceTree = ""; }; + D5F2C6C4BE3664B1941451CEB76FC1C8 /* Net.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Net.swift; path = Core/Net.swift; sourceTree = ""; }; D73567FDC5F0D54B3843E4CE85CDBB55 /* Pods-Domain-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Domain-resources.sh"; sourceTree = ""; }; - D8ED353F5B05B93A12E15F2A6A99815E /* NetRequest+URLRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetRequest+URLRequest.swift"; path = "Core/NetRequest+URLRequest.swift"; sourceTree = ""; }; - D8F0BE388E3707E325BD653441FD30FE /* NetRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetRequest.swift; path = Core/NetRequest.swift; sourceTree = ""; }; - D8F4395159892A1152B0850B4C7E5272 /* GHGherkinLanguageConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLanguageConstants.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLanguageConstants.h; sourceTree = ""; }; - D9EA26FBF2AB4775D19AB45D4E1DA09B /* GHHasDescriptionProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasDescriptionProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasDescriptionProtocol.h; sourceTree = ""; }; + D7979E474296ACAC3790F5E380263E6F /* FileDestination.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileDestination.swift; path = Sources/XCGLogger/Destinations/FileDestination.swift; sourceTree = ""; }; + D83D2F2AC2A421B7A0B5CF66E2DD75BD /* CCIArgument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIArgument.h; path = Cucumberish/Core/Models/CCIArgument.h; sourceTree = ""; }; + D8AFEA284A9649421F49DC070EF5D249 /* CCIBackground.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIBackground.h; path = Cucumberish/Core/Models/CCIBackground.h; sourceTree = ""; }; + D9AFE777FE7481AF1AB0F1BCE10A1F6D /* GHHasStepsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHHasStepsProtocol.h; path = Cucumberish/Dependencies/Gherkin/GHHasStepsProtocol.h; sourceTree = ""; }; DA8554460064553348A0170DBB2B665C /* Pods-Archit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Archit-umbrella.h"; sourceTree = ""; }; - DB52DC931E86084069140CF00472BF97 /* Kommander-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kommander-prefix.pch"; sourceTree = ""; }; - DBA0CA5018F27D26CA4A7CD8D9BAC6CA /* NetClient-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NetClient-dummy.m"; sourceTree = ""; }; - DCC849114E0E1EDC37690CA0FB2F9BF0 /* Kingfisher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Kingfisher.h; path = Sources/Kingfisher.h; sourceTree = ""; }; - DCCA7BF0F4C690712986A4C93D9C7591 /* NetError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetError.swift; path = Core/NetError.swift; sourceTree = ""; }; - DD614384264785CBE236EAB0BE75E044 /* CCIFeaturesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIFeaturesManager.h; path = Cucumberish/Core/Managers/CCIFeaturesManager.h; sourceTree = ""; }; + DC032BB5C053769E7CCC82B4C33C2E19 /* Kommander-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kommander-umbrella.h"; sourceTree = ""; }; + DD002F3118549FC318E08DDA04483C4C /* CCIStepsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIStepsManager.m; path = Cucumberish/Core/Managers/CCIStepsManager.m; sourceTree = ""; }; + DD88DF05E93303C5A097C7B48B10756C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DE23E812682CCFD62DA9D7B25902370D /* GHTableRow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHTableRow.h; path = Cucumberish/Dependencies/Gherkin/GHTableRow.h; sourceTree = ""; }; + DE25DB4D2D4E6ED3F317B7417A7D6AA2 /* Kommander.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Kommander.modulemap; sourceTree = ""; }; + DE5F978C70DB73BFDE50DCD9391B0BE5 /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/ImageCache.swift; sourceTree = ""; }; + DEB25291CD253A8A1F7F455D81677C87 /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/ImagePrefetcher.swift; sourceTree = ""; }; DF0D8E10D6BFBC54FD70C3DE684246C3 /* Pods-CoreTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CoreTests-acknowledgements.plist"; sourceTree = ""; }; - E0677000A0617BE4EC29561A32F9BD0F /* CCIFeature.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIFeature.m; path = Cucumberish/Core/Models/CCIFeature.m; sourceTree = ""; }; - E0C30FA2A497779FDFE246C66D753E38 /* NetAuthorization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetAuthorization.swift; path = Core/NetAuthorization.swift; sourceTree = ""; }; - E0DC10A40ED3F69D377C9C7DE17BE918 /* NetTransformer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetTransformer.swift; path = Core/NetTransformer.swift; sourceTree = ""; }; - E223322D994B498E2C46629FF8E8D713 /* CCIFeature.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIFeature.h; path = Cucumberish/Core/Models/CCIFeature.h; sourceTree = ""; }; - E37721444E14D2203953917EDA93A838 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - E3FEAAAF9BDB6671C7DA01DF94C3D39F /* NetClient-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NetClient-umbrella.h"; sourceTree = ""; }; - E403DC858CDE1DEB37E3EFA363F7AAE3 /* GHGherkinLineSpan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinLineSpan.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinLineSpan.m; sourceTree = ""; }; - E42E55B928456A19B339FDC8A18FB46E /* Kingfisher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Kingfisher.modulemap; sourceTree = ""; }; - E435C3EE7CF5D55A025A3429CEC80D06 /* Kommander.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Kommander.h; path = Source/Kommander.h; sourceTree = ""; }; + E0821091D933313BC630E83E179ACA4F /* Reusable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Reusable.modulemap; sourceTree = ""; }; + E1C09E1C073F1350B0ACEBB550505416 /* GHTableRow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTableRow.m; path = Cucumberish/Dependencies/Gherkin/GHTableRow.m; sourceTree = ""; }; + E347DAEA2CCBE0A8030261AC0200C22F /* Cucumberish.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Cucumberish.m; path = Cucumberish/Cucumberish.m; sourceTree = ""; }; + E35F5DD30454E46196B0025711A434F9 /* GHGherkinDialect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinDialect.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialect.m; sourceTree = ""; }; + E438CE442D914478C77EB6ACFBF5F55C /* Pods_Core.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Core.framework; path = "Pods-Core.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + E46C9FD338ABD2E46E789E9BF5D633D8 /* GHComment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHComment.m; path = Cucumberish/Dependencies/Gherkin/GHComment.m; sourceTree = ""; }; E4A49A80501F08526B4C63790F816664 /* Pods-Archit-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Archit-acknowledgements.markdown"; sourceTree = ""; }; + E523B74BB2B6DB84FEB7E50525A35866 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; E5F423AE2B2BB407D6C22839F271910D /* Pods-Domain-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Domain-acknowledgements.markdown"; sourceTree = ""; }; - E630F118AF1ED7AA212BDC40B6DF1D26 /* GHGherkinDialectProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHGherkinDialectProvider.m; path = Cucumberish/Dependencies/Gherkin/GHGherkinDialectProvider.m; sourceTree = ""; }; + E67D3F05D8BFB2B049B700F687A4614A /* Kingfisher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-prefix.pch"; sourceTree = ""; }; E7748B8EC45B7599B4E1709C740ACCEF /* Pods-ArchitTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ArchitTests-acknowledgements.plist"; sourceTree = ""; }; - E7F38C1D85DDE25FEC5600E42A8B7DA3 /* GHScenarioOutline.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHScenarioOutline.m; path = Cucumberish/Dependencies/Gherkin/GHScenarioOutline.m; sourceTree = ""; }; - E8CA6437AEC828CAAAEEB7F1D3CF2C51 /* NetURLSession+Data.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetURLSession+Data.swift"; path = "URLSession/NetURLSession+Data.swift"; sourceTree = ""; }; - E9002A3C06AD140F25653BC31D447623 /* ImageView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageView+Kingfisher.swift"; path = "Sources/ImageView+Kingfisher.swift"; sourceTree = ""; }; - EAC31E840258EC9B049D69CFD7991EEF /* Pods-Archit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Archit.modulemap"; sourceTree = ""; }; - EC529629E9E0578488AB23310F75CCF9 /* GHGherkinLine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLine.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLine.h; sourceTree = ""; }; - ECEAFE26FC2A189642450D341C2BE602 /* GHAstNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHAstNode.m; path = Cucumberish/Dependencies/Gherkin/GHAstNode.m; sourceTree = ""; }; - ED4501B6751A42CDC7968DC6A0395F56 /* GherkinLanguages.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GherkinLanguages.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - ED49AA4E1C396957E42F1473585BFDE6 /* CCIAroundHock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIAroundHock.m; path = Cucumberish/Core/Models/CCIAroundHock.m; sourceTree = ""; }; - ED7609E53D3BA4B54F4ADBA1402E49DD /* NetServerTrust.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetServerTrust.swift; path = Core/NetServerTrust.swift; sourceTree = ""; }; - ED83ADC717B3E66EFF07793F364B4FAB /* Reusable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Reusable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EDAD632CAB6F7099BB5243191EC0D284 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - EE5BCBB9E0C433671897AFC6375A07FC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - EFC7D998D706E658B794A9ADA917033B /* Pods-ArchitUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-ArchitUITests.modulemap"; sourceTree = ""; }; - F0DB998C7EC191CBEEECC7E28A8565DA /* CCIScenarioDefinition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIScenarioDefinition.h; path = Cucumberish/Core/Models/CCIScenarioDefinition.h; sourceTree = ""; }; - F16B831451363E8F683F2D7A136276CD /* Cucumberish.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Cucumberish.h; path = Cucumberish/Cucumberish.h; sourceTree = ""; }; + E8A9688B146E1617BE63EC6A7E538467 /* FilterProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilterProtocol.swift; path = Sources/XCGLogger/Filters/FilterProtocol.swift; sourceTree = ""; }; + EAC31E840258EC9B049D69CFD7991EEF /* Pods-Archit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-Archit.modulemap"; sourceTree = ""; }; + EBB6084406A8FA1D3882ACE24BBBC4E2 /* NibOwnerLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibOwnerLoadable.swift; path = Sources/View/NibOwnerLoadable.swift; sourceTree = ""; }; + ED1E6B48492D474140694458748C2B68 /* GHTableCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTableCell.m; path = Cucumberish/Dependencies/Gherkin/GHTableCell.m; sourceTree = ""; }; + EDA86AE18B1E499675F080E114B8EBCE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EF3A943FBEA3AB9A6927AF33DE43F8F0 /* CCIStepDefinition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIStepDefinition.m; path = Cucumberish/Core/Models/CCIStepDefinition.m; sourceTree = ""; }; + EFC7D998D706E658B794A9ADA917033B /* Pods-ArchitUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-ArchitUITests.modulemap"; sourceTree = ""; }; + EFDB653F29AFC0C536DDCC2F8B1B899C /* AutoRotatingFileDestination.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AutoRotatingFileDestination.swift; path = Sources/XCGLogger/Destinations/AutoRotatingFileDestination.swift; sourceTree = ""; }; + F17C4D07C1C72244041C64D336103E8A /* Kommander-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kommander-dummy.m"; sourceTree = ""; }; + F23E2D6F14D9EAA391BB5D4843B7B3CB /* GHTokenMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTokenMatcher.m; path = Cucumberish/Dependencies/Gherkin/GHTokenMatcher.m; sourceTree = ""; }; + F2855453511DA3D7D812E1AA692CE0CC /* UICollectionView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+Reusable.swift"; path = "Sources/View/UICollectionView+Reusable.swift"; sourceTree = ""; }; + F29F5A1B68A0F8A7BF9047789733A0F4 /* ObjcExceptionBridging.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ObjcExceptionBridging.framework; path = ObjcExceptionBridging.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F3DEEFAD9DA6698CDF2CD9F0E9E7B4CA /* CCIBlockDefinitions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIBlockDefinitions.h; path = Cucumberish/Core/CCIBlockDefinitions.h; sourceTree = ""; }; + F4948F5126549E0FB3411465739B7433 /* StoryboardBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardBased.swift; path = Sources/Storyboard/StoryboardBased.swift; sourceTree = ""; }; F508C634E8DB74799380F1DAA96F541C /* Pods-Domain-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Domain-dummy.m"; sourceTree = ""; }; - F6C179288DC23732983951BB936DB9A9 /* NetClient-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NetClient-prefix.pch"; sourceTree = ""; }; - F6E02F8085C083C037B4FCC60C7476A5 /* CCIStep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIStep.m; path = Cucumberish/Core/Models/CCIStep.m; sourceTree = ""; }; - F84FA095FB6C0D311E392E2D781CDAAB /* CCIHock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIHock.h; path = Cucumberish/Core/Models/CCIHock.h; sourceTree = ""; }; - F94175319F797AE2A0A31280CBC6DB76 /* GHTag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTag.m; path = Cucumberish/Dependencies/Gherkin/GHTag.m; sourceTree = ""; }; - F994AB9F800DB12A51955CEB5FDC77A4 /* CCIStepsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIStepsManager.h; path = Cucumberish/Core/Managers/CCIStepsManager.h; sourceTree = ""; }; - FBC4FEECBFD4603875DE87EE2AE08D8E /* GHTableCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GHTableCell.m; path = Cucumberish/Dependencies/Gherkin/GHTableCell.m; sourceTree = ""; }; - FC2AD36BE1D9D2D146666C876964F5BD /* GHScenarioOutline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHScenarioOutline.h; path = Cucumberish/Dependencies/Gherkin/GHScenarioOutline.h; sourceTree = ""; }; - FD79497C2D850A6B6F05B59864F2E804 /* CCIStepDefinition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CCIStepDefinition.h; path = Cucumberish/Core/Models/CCIStepDefinition.h; sourceTree = ""; }; - FDD5D51E51A4FD8FF180359B03B8678A /* CCIExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CCIExample.m; path = Cucumberish/Core/Models/CCIExample.m; sourceTree = ""; }; - FEC50D3882F966CB811B062A70EFB743 /* Pods_ArchitUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ArchitUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F558D5D192AB512B2C547488FEB9E7A5 /* NetResponse+Build.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NetResponse+Build.swift"; path = "Core/NetResponse+Build.swift"; sourceTree = ""; }; + F85206E038BF7A1DE4819B3CF2EC67B6 /* ImageProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessor.swift; path = Sources/ImageProcessor.swift; sourceTree = ""; }; + F9E1DCDB7FEECCDFC9EF05CD2ED343F7 /* NetCacheControl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetCacheControl.swift; path = Core/NetCacheControl.swift; sourceTree = ""; }; + FADBC8762995973B0DD96E4017B0B95E /* ThreadHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThreadHelper.swift; path = Sources/ThreadHelper.swift; sourceTree = ""; }; + FC2C43D3EA7E7F62C4CCCF0D8C588F06 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Image.swift; sourceTree = ""; }; + FCF4078A036BB2B0AA1433788C643E42 /* ObjcExceptionBridging-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ObjcExceptionBridging-umbrella.h"; sourceTree = ""; }; + FD451E77F4E7D2A366131BA99AADF3CF /* GHGherkinLanguageConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHGherkinLanguageConstants.h; path = Cucumberish/Dependencies/Gherkin/GHGherkinLanguageConstants.h; sourceTree = ""; }; + FE094F3E9D445A94931C7919BADF1390 /* GHAstNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GHAstNode.h; path = Cucumberish/Dependencies/Gherkin/GHAstNode.h; sourceTree = ""; }; + FF872733CE64BD029A1AD2E609819268 /* NetMultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetMultipartFormData.swift; path = Core/NetMultipartFormData.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -585,60 +764,61 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 0BD6A6F74CAF1D080DB3A7BBE825C331 /* Frameworks */ = { + 0CD3D9E133F44876BA0B056ABF7DABCC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AD037B6217A1DD1FF3B0EAF8373282B1 /* Foundation.framework in Frameworks */, + A721D676182C131AFDE544CC2F8D5F56 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 15F2B9FFCBB6B926CC3D55D349A6270B /* Frameworks */ = { + 4AF8078BAD55CA9AB1F38E566F60CF75 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6596B0F87EFC7E467E4C46BBBA147601 /* Foundation.framework in Frameworks */, + B6495CFB7414A9CC51F1C33650368272 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2947EF2EB964EEC88C76A70EABA69907 /* Frameworks */ = { + 4C146F478B96AEF2B978F256BE7D6055 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8D22849FF49639C9BE402EB47B97FFB0 /* Foundation.framework in Frameworks */, + 03ACFC15A6A3C99B2C4B7CFB5FB99B01 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 373AEAF65AA6C131ADC29F97B544CAC9 /* Frameworks */ = { + 593E7C083F563F36EDCEAFCA53BDFDA1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - EB1C7DF4A938FA2C277B203147652F0A /* Foundation.framework in Frameworks */, + 4C893C3A249C0DD09B13712023FD7304 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 403346305CE4CC2A4D3CBFFA2DC21A4E /* Frameworks */ = { + 59732DB5603B2543D049AE6D35E83C41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BB9C8B868FA5BDBD347B30E20A258E3E /* Foundation.framework in Frameworks */, + BB647D66B8244AD79D09D76FA4FBDEBA /* Foundation.framework in Frameworks */, + 80E3B85E43E1799738B3DA6D0B228EB0 /* ObjcExceptionBridging.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4AEB4AD04AC7A79E56EDDF79753F7B88 /* Frameworks */ = { + 83E8A67E9F05FA071037C1B448B0300D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BB68029A9C99B6C203E325ED5EF53089 /* Foundation.framework in Frameworks */, - 5DE70EC2AA0EFAD599CED24CFF4CA274 /* UIKit.framework in Frameworks */, + 4881E456D6D306D4BD0D55F1E43B48C4 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 99650007BBA13770C035315525BD3C84 /* Frameworks */ = { + 8815F24B654013E3DC3EAB7A12BDEF52 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8C67389D6328E71FEECB1FC7821A1E14 /* Foundation.framework in Frameworks */, + 37E3439D5F5649D4A4D7CBE20814C994 /* Foundation.framework in Frameworks */, + 80F5C59A429366988690F3D62D62826F /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -651,6 +831,22 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A0A5FF8A043362D3027C86F56B2A158E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B3F64CE4A4242C1994085B8CEE6339F /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A84C07F8F20CAD26DF2E23C84E086FDA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E89317DE0734B56D83C143ED59D5814 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C0B9722E352CF90C920286E6F029D3C0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -660,38 +856,106 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E77CA0801FF101D0F4F11C189B5EDCF8 /* Frameworks */ = { + D193E8D1DFD105207F457560B2C53A47 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D9D37E9A72367D9E7A630AF9322D31FF /* Foundation.framework in Frameworks */, + BCA0066D9DA92975699787191A9C280F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - EA95EF8CCBB3CDDF35082DA165BE7AFF /* Frameworks */ = { + E77CA0801FF101D0F4F11C189B5EDCF8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D9D37E9A72367D9E7A630AF9322D31FF /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FC56076F88870657CDEBF473E3251690 /* Frameworks */ = { + EA95EF8CCBB3CDDF35082DA165BE7AFF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F119D892301225D17A0037325D6905AC /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 14B8B9B15ECBE87983FF987239AB2D7B /* Frameworks */ = { + 00B2AB72D9CE406DEC87F5A2C3E25E62 /* Support Files */ = { isa = PBXGroup; children = ( - 1FEEE242688418B02290AA25A5143386 /* iOS */, + DD88DF05E93303C5A097C7B48B10756C /* Info.plist */, + 5743B7F59B6201AC0D0712C20BAC394B /* NetClient.modulemap */, + 809806B63801D68CB331823C47DCCB0B /* NetClient.xcconfig */, + 5A29BE02AC796F62BA4DB2A1F10649D5 /* NetClient-dummy.m */, + 18E6502A9C5FCDC2320188C894359256 /* NetClient-prefix.pch */, + B9F29A654AF391298893AA3EFEE27378 /* NetClient-umbrella.h */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/NetClient"; + sourceTree = ""; + }; + 0B3E1E09A1F1E7C8E5DB9BC26891BC74 /* SwiftLint */ = { + isa = PBXGroup; + children = ( + ); + name = SwiftLint; + path = SwiftLint; + sourceTree = ""; + }; + 0FBBD0F4131EA1CF965EDBBDCDC990F1 /* Products */ = { + isa = PBXGroup; + children = ( + 3A9E74153AD3B1646713859420B22FEF /* Cucumberish.framework */, + 024F1BFA1F5C914C134BCF9DEE64A78D /* GherkinLanguages.bundle */, + AE0363BC153EEB6F5A3AADD8333D167A /* Kingfisher.framework */, + 903030E0FF5B9A9C54E6B198C0EE940D /* Kommander.framework */, + 175BBA1528D7CF40BD92A70126DC262E /* Net.framework */, + F29F5A1B68A0F8A7BF9047789733A0F4 /* ObjcExceptionBridging.framework */, + 9DA7FD47E181978972C8FABACFFC7EE4 /* Pods_Archit.framework */, + CEBBA9E5F9EDC5E7E7CF8E2A875CB53E /* Pods_ArchitTests.framework */, + 43F4BA3E1262D6147C24E0BCFF98A7C5 /* Pods_ArchitUITests.framework */, + E438CE442D914478C77EB6ACFBF5F55C /* Pods_Core.framework */, + ABD0EE1C07BCBF8B8B68667C7C0D4872 /* Pods_CoreTests.framework */, + 1C6534BB3D00F92E777C57AA07E3C4F2 /* Pods_Domain.framework */, + CF961A5793F2FBBFDF38AA510754C4EE /* Pods_DomainTests.framework */, + 24432C75FEC44700FD2A5BCD4C239F15 /* Reusable.framework */, + C28AB4551A7D8E418237BD756B906E4D /* XCGLogger.framework */, + ); + name = Products; + sourceTree = ""; + }; + 13874F755E6FB6829565242DCFB5F823 /* Kingfisher */ = { + isa = PBXGroup; + children = ( + B6ABF2311950829EF5F98457A36389D4 /* AnimatedImageView.swift */, + 2D95B1222FB6485CB626A7449573FF19 /* Box.swift */, + 5847CC73FFA604FADBEC258F90A7F52B /* CacheSerializer.swift */, + 22493A26F7CEEA74E6D7EDA894C0F894 /* Filter.swift */, + 3342D73F450C731992C709364E409AB1 /* FormatIndicatedCacheSerializer.swift */, + FC2C43D3EA7E7F62C4CCCF0D8C588F06 /* Image.swift */, + DE5F978C70DB73BFDE50DCD9391B0BE5 /* ImageCache.swift */, + 1778866AEAC8C44E035E896079F89AB2 /* ImageDownloader.swift */, + DEB25291CD253A8A1F7F455D81677C87 /* ImagePrefetcher.swift */, + F85206E038BF7A1DE4819B3CF2EC67B6 /* ImageProcessor.swift */, + 5AC7C905881720410817B9FE2FA1CB49 /* ImageTransition.swift */, + 1DF285CD2ED31CDA6615B60DB6707BA4 /* ImageView+Kingfisher.swift */, + 33A598FBDF7AEB2198A1BF7E462541A1 /* Indicator.swift */, + 2B32F38F425C6DBCF4AD69F96FC4834C /* Kingfisher.h */, + 1589C165185593FB7B69A714F92F961E /* Kingfisher.swift */, + 88CE3E4C3B9BE233126726B126DD2F8C /* KingfisherManager.swift */, + C0DC1D92C5089A8E6D0C259A9571704A /* KingfisherOptionsInfo.swift */, + 049C712C1B79DB0BD7CF02446C5F4991 /* Placeholder.swift */, + D036B514C5E8E7C6D53654A520FBCAFC /* RequestModifier.swift */, + 92BCC674AE0D2A90265DBE2A2637FBB2 /* Resource.swift */, + A13E41155BAAD04E0AE171E2F709E942 /* String+MD5.swift */, + FADBC8762995973B0DD96E4017B0B95E /* ThreadHelper.swift */, + D313E373EAF782C1EDCBE1F8D4B35B7F /* UIButton+Kingfisher.swift */, + A15EA6F03AD3BA5EB5F631D43C9B9B7D /* Support Files */, + ); + name = Kingfisher; + path = Kingfisher; sourceTree = ""; }; 16CD8B956AAA3076E7EFC360A5866D16 /* Targets Support Files */ = { @@ -708,17 +972,6 @@ name = "Targets Support Files"; sourceTree = ""; }; - 1FEEE242688418B02290AA25A5143386 /* iOS */ = { - isa = PBXGroup; - children = ( - 7B2FB3A427B7FE691F70DD5D916628A0 /* CFNetwork.framework */, - E37721444E14D2203953917EDA93A838 /* Foundation.framework */, - EE5BCBB9E0C433671897AFC6375A07FC /* UIKit.framework */, - 7A3C7B9A55E284E5B3F8CB3C11B2C185 /* XCTest.framework */, - ); - name = iOS; - sourceTree = ""; - }; 2C676EA67281ED513F595C0DB109D0DC /* Pods-Archit */ = { isa = PBXGroup; children = ( @@ -737,34 +990,6 @@ path = "Target Support Files/Pods-Archit"; sourceTree = ""; }; - 34FE5308DA788AC8A66C31D1DE0D0402 /* Pods */ = { - isa = PBXGroup; - children = ( - E565C36751E34A5580B2043CDC2714B5 /* Cucumberish */, - 665A7E28F923BF3A645569F30E303047 /* Kingfisher */, - 355F7CB7704DB397468C7F4AFFC55319 /* Kommander */, - A547E48365A2B5EF5A27EA92633E7934 /* NetClient */, - 829694DFCE06582DBA762DFB78CAD789 /* Reusable */, - D78B7B03BD3831DF7D7962C9F3C87351 /* SwiftLint */, - ); - name = Pods; - sourceTree = ""; - }; - 355F7CB7704DB397468C7F4AFFC55319 /* Kommander */ = { - isa = PBXGroup; - children = ( - 6D0D40EB4E5AE8FC09497E4AAFB19DD3 /* CurrentDispatcher.swift */, - 7D10CBBFBE1409D04EE2490922399DB1 /* Dispatcher.swift */, - 641A34B781924776A94DAC2164D616F9 /* Kommand.swift */, - 42C8A4358BDD417915B2286FE20CE493 /* KommandCancelledError.swift */, - E435C3EE7CF5D55A025A3429CEC80D06 /* Kommander.h */, - 7C96F8D89CCB9EB78AB460C4D42A609D /* Kommander.swift */, - 98CC49745B5DC823A1D901CA75C4B73B /* MainDispatcher.swift */, - ABC1BBD0854E53CEF191EACF8DC21658 /* Support Files */, - ); - path = Kommander; - sourceTree = ""; - }; 3A7B270F5AB3D42B80428073FD2E254A /* Pods-DomainTests */ = { isa = PBXGroup; children = ( @@ -783,6 +1008,17 @@ path = "Target Support Files/Pods-DomainTests"; sourceTree = ""; }; + 43690DD8BE9BC9ABEAD9A3508B3E9D0D /* Reusable */ = { + isa = PBXGroup; + children = ( + F5C684E1CE2FBA3ADDC7FDA267FAFF83 /* Storyboard */, + B68D7986F9DEA530AC3D54AA81B981B2 /* Support Files */, + 752A05BB4D5A073A34965A35F197F76D /* View */, + ); + name = Reusable; + path = Reusable; + sourceTree = ""; + }; 4F5FD1B0CC00485D57E48A9E7E867DA2 /* Pods-Domain */ = { isa = PBXGroup; children = ( @@ -800,49 +1036,164 @@ path = "Target Support Files/Pods-Domain"; sourceTree = ""; }; - 5FE4DF0C316F23154AF6689B5C94CA72 /* Support Files */ = { + 522ACBF1214EDB6D452A48E7C0CF1121 /* Core */ = { isa = PBXGroup; children = ( - EDAD632CAB6F7099BB5243191EC0D284 /* Info.plist */, - E42E55B928456A19B339FDC8A18FB46E /* Kingfisher.modulemap */, - 287DB8F94B0DADDFB5E439D75B2DDD3B /* Kingfisher.xcconfig */, - 536397E321221D950751E8012EDA84CA /* Kingfisher-dummy.m */, - 343D141795E76CCDB5000F20AB5794FD /* Kingfisher-prefix.pch */, - 83E74A6E52CEFEE37B6E29ECD8C8077D /* Kingfisher-umbrella.h */, + 84176253DDDBA214DE4A70D2B16ED15C /* Net.h */, + D5F2C6C4BE3664B1941451CEB76FC1C8 /* Net.swift */, + 3D37F1CD65E914D7CBAAF06AD142E961 /* NetAuthorization.swift */, + F9E1DCDB7FEECCDFC9EF05CD2ED343F7 /* NetCacheControl.swift */, + BAD52DD7A2ADAF0265DA9B7BA5614196 /* NetContentType.swift */, + 8422FD8607F7E62209A911410F51D7B1 /* NetError.swift */, + FF872733CE64BD029A1AD2E609819268 /* NetMultipartFormData.swift */, + CA8DC3772EB96DD3E5BD0B3BE510620E /* NetReachability.swift */, + 64EA67365050760C82B4410A49741CF3 /* NetRequest.swift */, + 4FF6D625E298BE2BC6C1C5036BDE3228 /* NetRequest+Build.swift */, + 07965558AED140C574B015AF94F18CC8 /* NetRequest+URLRequest.swift */, + 46E45DFC572385823168759E23393BFF /* NetResponse.swift */, + F558D5D192AB512B2C547488FEB9E7A5 /* NetResponse+Build.swift */, + 584981606FBFBBE70866FF2B01CDDBEA /* NetResponse+Cached​URLResponse.swift */, + 940AD48F501BB7FDC72FD05AC76EFAB7 /* NetResponse+HTTPURLResponse.swift */, + 7EF069576558D2E644F4FA351A1007AC /* NetResponse+URLResponse.swift */, + 302B7A6DF8D3B6BFAA5CBD7ABCD43A8A /* NetServerTrust.swift */, + C0DDB61DA3E813E04833121E76DDFFB3 /* NetTask.swift */, + 0D8E4A7D7C63DC9265B9893D03B02558 /* NetTaskMetrics.swift */, + 77FE5D389919ED2685B4717BF6908635 /* NetTaskMetrics+URLSessionTaskMetrics.swift */, + BA565B9D1032B85422094A7A64AC658C /* NetTransformer.swift */, ); - name = "Support Files"; - path = "../Target Support Files/Kingfisher"; + name = Core; sourceTree = ""; }; - 665A7E28F923BF3A645569F30E303047 /* Kingfisher */ = { + 5C946EE0B852C3A31A08991E9B7790C7 /* URLSession */ = { isa = PBXGroup; children = ( - AADC38BE757DCD9543D6BC06E439952C /* AnimatedImageView.swift */, - 65B865959D5C3AD675FCA9B905AFDA7F /* Box.swift */, - BC9CE88C9276E031C6BD54C214724E84 /* CacheSerializer.swift */, - 7E91CA9BD4CC4E04F00DD4E48093ABAD /* Filter.swift */, - 4424C6206DD75D10DD1633BAA77D8BB6 /* FormatIndicatedCacheSerializer.swift */, - 054740DE9C752377491F25745A067F75 /* Image.swift */, - 890D648E4AEE1F97A0B4EB3F0AB0AB65 /* ImageCache.swift */, - 5F3801F8CB758F4FCC380AF6B492F655 /* ImageDownloader.swift */, - 501E02D9CC376317C3E23F484B565A0C /* ImagePrefetcher.swift */, - B321013D0FA8B826F572B1EDFF1D0634 /* ImageProcessor.swift */, - 8753D181F4A75B131BF35C8B5A58BAC6 /* ImageTransition.swift */, - E9002A3C06AD140F25653BC31D447623 /* ImageView+Kingfisher.swift */, - 03DAD94ACD5BA857EB343CFF9D4F3F99 /* Indicator.swift */, - DCC849114E0E1EDC37690CA0FB2F9BF0 /* Kingfisher.h */, - D27F30E3BA0D97600ED5644A499A8A30 /* Kingfisher.swift */, - ACB5E70D98AA875B44E900EF2411163B /* KingfisherManager.swift */, - 24AE46FDC746C3F9D0C613622109E360 /* KingfisherOptionsInfo.swift */, - A7C1792E42CF3E06691E8BEDE8468BBD /* Placeholder.swift */, - A0408B5D6E1570ADC185144E4D0FD360 /* RequestModifier.swift */, - B9F53110434ACE4C44624377C38B4AE4 /* Resource.swift */, - 5FA80097D76522879D00DEAF26BEF4DB /* String+MD5.swift */, - 139EB71FAA47D0582F1A43B72E04F7F7 /* ThreadHelper.swift */, - 41AB45B95C4478A8D016360B8825496D /* UIButton+Kingfisher.swift */, - 5FE4DF0C316F23154AF6689B5C94CA72 /* Support Files */, + D21F7CAA251E028DC99798301BEB9B92 /* NetTask+URLSessionTask.swift */, + C39913A61C69ECE17F63E12771748A49 /* NetURLSession.swift */, + BD5B64BEEEB0E82D42B71E37B1E74DDC /* NetURLSession+Data.swift */, + 93DF98BDE895DFEB375198C5E2C3C0E7 /* NetURLSession+Download.swift */, + 1FE6206187579FA2E7B9D3F64B9FC234 /* NetURLSession+Stream.swift */, + 72063305E3ADA155EB457CB94D659186 /* NetURLSession+Upload.swift */, + 2F723B9B5E58FF163EBD6A9B92EE7B16 /* NetURLSessionDelegate.swift */, + 38A1247587CCB78098E809EC836EE56F /* NetURLSessionTaskObserver.swift */, ); - path = Kingfisher; + name = URLSession; + sourceTree = ""; + }; + 62F74D8DD86772FBACC12BCF05007D9E /* Cucumberish */ = { + isa = PBXGroup; + children = ( + D83D2F2AC2A421B7A0B5CF66E2DD75BD /* CCIArgument.h */, + 0458852D8F4EF599D95B6E92DD7A52AD /* CCIArgument.m */, + 3DD61270413D8587F8EFA23DADC88632 /* CCIAroundHock.h */, + 3AD50214589598F8F7D1F4D8541B44E3 /* CCIAroundHock.m */, + D8AFEA284A9649421F49DC070EF5D249 /* CCIBackground.h */, + 280CC88593999D040602158CD7ADF1C9 /* CCIBackground.m */, + F3DEEFAD9DA6698CDF2CD9F0E9E7B4CA /* CCIBlockDefinitions.h */, + 2B522DEE8F4DB082FECE75A9010BDADB /* CCIExample.h */, + 6E93F14C3FC833DED3FA5E0CB946A764 /* CCIExample.m */, + A1573E3ECC284EBCA32592F458E68F62 /* CCIFeature.h */, + 289AC8BC81B1A2FB6F7585C7B8D3FE0A /* CCIFeature.m */, + 44263B067C45A490F610AB9818C19B01 /* CCIFeaturesManager.h */, + 89FF1CB6FFED5315635EE8CBADA274C2 /* CCIFeaturesManager.m */, + AC0499F00F455EC6DA3C5F4197D99BCB /* CCIHock.h */, + 57687BA7AFDEF345B0BADFC4D301D2D1 /* CCIHock.m */, + 0A4BAFE1D1959599D3219E156E8328BE /* CCIJSONDumper.h */, + 552E8CBF921CF3F8FF4F52CBF82787D0 /* CCIJSONDumper.m */, + 81890B8400E3025A7A93365DE3898F99 /* CCILocation.h */, + 6DF6BBE7E43DB2364A9B0D38CE530851 /* CCILocation.m */, + 9A5AC995988DFCCE0705EDDDA040C1EC /* CCILoggingManager.h */, + 4CEAFAD156E2A5C8489CA69CBB3FDBB8 /* CCILoggingManager.m */, + B12EC4587159A3E3339B3738838EFBD5 /* CCIScenarioDefinition.h */, + B3512734BFB13288A3DA50876210F20B /* CCIScenarioDefinition.m */, + 0552564CCC68274EB114B7A64D598D4F /* CCIStep.h */, + C79358242879D3127D17078740D41FFA /* CCIStep.m */, + 4DB61AAAC05F4E4E0E8988F9FDE7F1AA /* CCIStepDefinition.h */, + EF3A943FBEA3AB9A6927AF33DE43F8F0 /* CCIStepDefinition.m */, + A1008700022E9325453C8CECD8D71B9E /* CCIStepsManager.h */, + DD002F3118549FC318E08DDA04483C4C /* CCIStepsManager.m */, + 1DE97AC266A92516C0139B4860B32610 /* Cucumberish.h */, + E347DAEA2CCBE0A8030261AC0200C22F /* Cucumberish.m */, + 7F8DB3747431EF23E6BD537ED582113F /* GHAstBuilder.h */, + 9D71080F074D6ADB23EC163974386BD4 /* GHAstBuilder.m */, + FE094F3E9D445A94931C7919BADF1390 /* GHAstNode.h */, + 88A6A05B9B5579FB89375C6829A443AA /* GHAstNode.m */, + CCA11081C724388BA3B8994B4B5FDD3C /* GHBackground.h */, + C124D3C1326C8260DBA30CBB3E96E453 /* GHBackground.m */, + 5BB0073F04C86CB83C780A8B30B7726E /* GHComment.h */, + E46C9FD338ABD2E46E789E9BF5D633D8 /* GHComment.m */, + 4DCEB59DBD81630136214A71DD857E32 /* GHDataTable.h */, + A9724D9E2ADA44DD16AC57C867A37290 /* GHDataTable.m */, + D3985EFB34342C3E89C38F04756E73A2 /* GHDocString.h */, + 7658ABF3F94439D812F0CDCE8F8055B2 /* GHDocString.m */, + 9EF0C23B444FE365419FB5A0C9E6F1BE /* GHExamples.h */, + 4A2D5092FCD06374B8ED3404D9B5BF7B /* GHExamples.m */, + 4FDD3E5FF3EA5618961B4FB07E4F761B /* GHFeature.h */, + CF07B002EC2017639A519F9C59204E60 /* GHFeature.m */, + BC937B695EB156019AF75F8B90BC760C /* GHGherkinDialect.h */, + E35F5DD30454E46196B0025711A434F9 /* GHGherkinDialect.m */, + 32532D9DE5706FC96085974F240572C5 /* GHGherkinDialectProvider.h */, + 05E3DACC5F82ECA03D42109E0C6B77A5 /* GHGherkinDialectProvider.m */, + 68DE7FC880BB051360BACB0A8880970C /* GHGherkinDialectProviderProtocol.h */, + FD451E77F4E7D2A366131BA99AADF3CF /* GHGherkinLanguageConstants.h */, + 4AF5D02ED6DD038A430BB8389EBBB02A /* GHGherkinLanguageConstants.m */, + D188E1D30BAE02CD5ACECC273AC372C3 /* GHGherkinLanguageSetting.h */, + 283192F63BB88978964150A6F66637DE /* GHGherkinLanguageSetting.m */, + 87B4DFCFC8497CA3E7442CF4FE55673D /* GHGherkinLine.h */, + 8116E903ABDACA0722DCE04CFC6E3995 /* GHGherkinLine.m */, + B406BF25F2781FDB6DF98AB9312F0D37 /* GHGherkinLineProtocol.h */, + 6CB88CCC0EDCBB1BFF3352D35116FA24 /* GHGherkinLineSpan.h */, + BB373B2B2E91704313660CA0F66AD6FB /* GHGherkinLineSpan.m */, + 8D90E2FEA217C023BC14D73A75B7278D /* GHHasDescriptionProtocol.h */, + 3C1E1451646FBAB00C5B9B6F471312C3 /* GHHasLocationProtocol.h */, + B729115D536BFE943B6BDC5F01180B70 /* GHHasRowsProtocol.h */, + D9AFE777FE7481AF1AB0F1BCE10A1F6D /* GHHasStepsProtocol.h */, + 3EEF7062B0BF8D10A2699B940473F555 /* GHHasTagsProtocol.h */, + 589AFCEDBF784755427EB89289E36047 /* GHLocation.h */, + 08B8360C41083D8035B6E606A6DBCE3F /* GHLocation.m */, + 55743C6CBE6477E747DFDEEF8B477C84 /* GHNode.h */, + 6C6B9CA0F6F5E2442A4067B74D2D3B34 /* GHNode.m */, + 79D7E6C88897758D8EA53B57205E4BE3 /* GHParser.h */, + 719C0B609A4CF5650DC5271C807E0EB9 /* GHParser.m */, + 09B6BC129FC70C91D115252944C04CE3 /* GHParser+Extensions.h */, + B9A837B3EB58DC57E304B3E04DC0FEF8 /* GHParser+Extensions.m */, + 0693820A57511F4E33398A52B401BD9C /* GHParserException.h */, + B29581C168F621CCCF1A23C071B5CD2F /* GHParserException.m */, + BAB40416E8E0EC13C9965BB164545F0E /* GHScenario.h */, + 247385816C28A2D0F418C6FAEDC05AF1 /* GHScenario.m */, + 990155647EA01472CEB25BD59F1824D5 /* GHScenarioDefinition.h */, + 2A02E08E6B36D255D51BC3F85B1AAB4C /* GHScenarioDefinition.m */, + 23725B3E391C2CA4E764B98EA6616FCA /* GHScenarioDefinition_Private.h */, + 2CBA27520657D6545288B7386C2B261A /* GHScenarioOutline.h */, + 9F2B901EC1A0827ED823DCB13B541AF9 /* GHScenarioOutline.m */, + CE315FDC4F26443A9092E941EEEA1876 /* GHStep.h */, + 0C668F4BAFDDC55DBC24654ADB44DEF3 /* GHStep.m */, + 736E7C57EFC76D466F48655D2D706476 /* GHStepArgument.h */, + 32EF88E31B89594CF1BF52AE3F8AFC1F /* GHStepArgument.m */, + 3CEC37C9AECE2940EDD3FEFD1815B9A4 /* GHTableCell.h */, + ED1E6B48492D474140694458748C2B68 /* GHTableCell.m */, + DE23E812682CCFD62DA9D7B25902370D /* GHTableRow.h */, + E1C09E1C073F1350B0ACEBB550505416 /* GHTableRow.m */, + 800A06DEF441E24C02887CCB12466104 /* GHTag.h */, + 8A506C557952D1F849B264E6B4D949D3 /* GHTag.m */, + 07203E6001DA4D28FC9B5EF4006A6D45 /* GHToken.h */, + 4179A4BD2F63CD58DD7EFDD1C2D485CE /* GHToken.m */, + 516B48924FFA28C2E93219EB040196F1 /* GHTokenMatcher.h */, + F23E2D6F14D9EAA391BB5D4843B7B3CB /* GHTokenMatcher.m */, + 8B02F00FC5B40530DB42C51CA132C901 /* GHTokenScanner.h */, + 7DEA872E0A0B67DA1199F5CC862218FD /* GHTokenScanner.m */, + 7BFC380FEA301BBA034FB710B0A76804 /* NSArray+Hashes.h */, + C4FD7E63CE8C13F307D3B8E42F58E4EC /* NSArray+Hashes.m */, + 09D0110497B78198A8771C61A499CD69 /* NSObject+Dictionary.h */, + 19A9E7C075D34520056448079CA10CB3 /* NSObject+Dictionary.m */, + 5F986A35BFB685A700BD9896FF4EF5D9 /* NSString+Formatter.h */, + 27EC930C02E33F84E1CE81238D94A80F /* NSString+Formatter.m */, + 8647D5CA2DC3C052C9E3A4798DF0AB29 /* NSString+Trim.h */, + 9471BE4B988273354734C37BE0DC21F4 /* NSString+Trim.m */, + FA74E3CBAD456E1E5C1E7A3E4DEDFB46 /* Resources */, + 9ADF31C6795F8633B8CBC38028B57307 /* Support Files */, + ); + name = Cucumberish; + path = Cucumberish; sourceTree = ""; }; 6AE363A56673B838CEC77588C1A316E8 /* Pods-ArchitUITests */ = { @@ -863,117 +1214,151 @@ path = "Target Support Files/Pods-ArchitUITests"; sourceTree = ""; }; - 7237BC5BA778468E512EE4EDCD7C7F22 /* Core */ = { + 752A05BB4D5A073A34965A35F197F76D /* View */ = { isa = PBXGroup; children = ( - 284C72D038CC2B770D49150D70299699 /* Net.h */, - 00BC388DA8FBC50920FEFA8A469D8540 /* Net.swift */, - E0C30FA2A497779FDFE246C66D753E38 /* NetAuthorization.swift */, - 53B066F45A9E349DEACE4C47C7047BB7 /* NetCacheControl.swift */, - 1BA79E79EFDF19B359340C78FD1730D7 /* NetContentType.swift */, - DCCA7BF0F4C690712986A4C93D9C7591 /* NetError.swift */, - 9246FEB8CABA64B2CDED534B32A22465 /* NetMultipartFormData.swift */, - 5E27A573743711820EFDA4FAF27117ED /* NetReachability.swift */, - D8F0BE388E3707E325BD653441FD30FE /* NetRequest.swift */, - C3F8AA2B7E7FCA75FC659A865E76424C /* NetRequest+Build.swift */, - D8ED353F5B05B93A12E15F2A6A99815E /* NetRequest+URLRequest.swift */, - 1538939479EA6EFDC8D622E4B274A30E /* NetResponse.swift */, - 31408E233988E0CD98D7AC9DCB9C7B12 /* NetResponse+Build.swift */, - CF0E32B1CEE6BA13241BDDA9683709A3 /* NetResponse+Cached​URLResponse.swift */, - C0451BBF5FC60311128765190C98988B /* NetResponse+HTTPURLResponse.swift */, - 282C408CEB8D37DD532573D6D02C3564 /* NetResponse+URLResponse.swift */, - ED7609E53D3BA4B54F4ADBA1402E49DD /* NetServerTrust.swift */, - 0642777F482BEB8D29560A9F4DA519E4 /* NetTask.swift */, - 5FF5E11EA16625CCCC49BE84FDB13263 /* NetTaskMetrics.swift */, - C34427298BDD3207657B7E12AE6A0758 /* NetTaskMetrics+URLSessionTaskMetrics.swift */, - E0DC10A40ED3F69D377C9C7DE17BE918 /* NetTransformer.swift */, + 8E8F2DFFE07B51FA3A2A0FB538F04DBC /* NibLoadable.swift */, + EBB6084406A8FA1D3882ACE24BBBC4E2 /* NibOwnerLoadable.swift */, + 9E5662D40E78AAD333E69B4AA56C03EC /* Reusable.swift */, + F2855453511DA3D7D812E1AA692CE0CC /* UICollectionView+Reusable.swift */, + D1E66BBA492F54AA5E363F69E79FFEAA /* UITableView+Reusable.swift */, ); - name = Core; + name = View; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + D4222C174FC9D4FCBD645D509BCB4C4B /* Frameworks */, + 943B8D5BC2081FD8EBA63713D6FF6434 /* Pods */, + 0FBBD0F4131EA1CF965EDBBDCDC990F1 /* Products */, + 16CD8B956AAA3076E7EFC360A5866D16 /* Targets Support Files */, + ); + sourceTree = ""; + }; + 83FC7DB563250606D98915800E84DC3B /* XCGLogger */ = { + isa = PBXGroup; + children = ( + 98B59ECC8E5BB589B9FD826B4C8CCC7B /* Core */, + C6F8DE72804EB8BA39B3BF0A598945A4 /* Support Files */, + ); + name = XCGLogger; + path = XCGLogger; sourceTree = ""; }; - 72DAC291E6FED5C0E894213BC80AD848 /* Support Files */ = { + 8957168027CEB4617B05F77BE57ECE0F /* Support Files */ = { isa = PBXGroup; children = ( - 5876C2163B4639125BAD917C997DDB4A /* Info.plist */, - 70381D9724D60A372951F208A0A552BB /* Reusable.modulemap */, - A582FAC173418DC981904BB68C1A3678 /* Reusable.xcconfig */, - 0334B97C18F5A5181D889367D9BD6683 /* Reusable-dummy.m */, - 2D5414F5E3AF6F1BB3BDB407BF55EABF /* Reusable-prefix.pch */, - 695246E9C7E67B1E1ABCD34E5F0D97C1 /* Reusable-umbrella.h */, + 39DB0E5CDFD94637D8DD315CC37424FA /* Info.plist */, + DE25DB4D2D4E6ED3F317B7417A7D6AA2 /* Kommander.modulemap */, + 383B0EDA3F08D7963858E04777179246 /* Kommander.xcconfig */, + F17C4D07C1C72244041C64D336103E8A /* Kommander-dummy.m */, + B6A3EA28FF6080B82C0B8BA7E99CE611 /* Kommander-prefix.pch */, + DC032BB5C053769E7CCC82B4C33C2E19 /* Kommander-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Reusable"; + path = "../Target Support Files/Kommander"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 943B8D5BC2081FD8EBA63713D6FF6434 /* Pods */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 14B8B9B15ECBE87983FF987239AB2D7B /* Frameworks */, - 34FE5308DA788AC8A66C31D1DE0D0402 /* Pods */, - B0C3FE2BFBE5B827BF03719923F31030 /* Products */, - 16CD8B956AAA3076E7EFC360A5866D16 /* Targets Support Files */, + 62F74D8DD86772FBACC12BCF05007D9E /* Cucumberish */, + 13874F755E6FB6829565242DCFB5F823 /* Kingfisher */, + D69ACDC620315C75C0450CF55BA13872 /* Kommander */, + ADEB1BEB159EA08662F2245B5C3ED375 /* NetClient */, + D8BF91FD88F1FBCC903815ADFE502218 /* ObjcExceptionBridging */, + 43690DD8BE9BC9ABEAD9A3508B3E9D0D /* Reusable */, + 0B3E1E09A1F1E7C8E5DB9BC26891BC74 /* SwiftLint */, + 83FC7DB563250606D98915800E84DC3B /* XCGLogger */, ); + name = Pods; sourceTree = ""; }; - 829694DFCE06582DBA762DFB78CAD789 /* Reusable */ = { + 98B59ECC8E5BB589B9FD826B4C8CCC7B /* Core */ = { isa = PBXGroup; children = ( - BFFF890A8EFD8D789030D196F2364133 /* Storyboard */, - 72DAC291E6FED5C0E894213BC80AD848 /* Support Files */, - 976632446C4AE54DCDB6891C9277B4F8 /* View */, + 7706E5140D81057771F7284126CF1516 /* ANSIColorLogFormatter.swift */, + 7EAAB904F80D7E850A156769F24BCC94 /* AppleSystemLogDestination.swift */, + EFDB653F29AFC0C536DDCC2F8B1B899C /* AutoRotatingFileDestination.swift */, + 72682A730F7B2AB8B698AB98C1F8BE51 /* Base64LogFormatter.swift */, + CA9C4080B3B60A11B84CFB2C0C10C8C9 /* BaseDestination.swift */, + 3D9500BC14B04A176B982545ABC22158 /* BaseQueuedDestination.swift */, + 0D2806BDDE05BB656A21B0580369ADA7 /* ConsoleDestination.swift */, + 0624018E09478E6B145E853F89EB7D90 /* DestinationProtocol.swift */, + A53A873F2E916A66823C12D14ECD9DC1 /* DevFilter.swift */, + 4A35BC40D19E88B6D3857106A78512EF /* DispatchQueue+XCGAdditions.swift */, + D7979E474296ACAC3790F5E380263E6F /* FileDestination.swift */, + 43D981C24DE43915DCDE6AF4369F309A /* FileNameFilter.swift */, + E8A9688B146E1617BE63EC6A7E538467 /* FilterProtocol.swift */, + 38D94846A5CD346D62433EA36DB78117 /* HelperFunctions.swift */, + 54D36C136C1793DE836ADAC645C395E7 /* LogDetails.swift */, + 41C39F595A72D5544DF40D592C8B4693 /* LogFormatterProtocol.swift */, + B86FF2BE732E2017353DC0ADCA9B9D0D /* PrePostFixLogFormatter.swift */, + AB5E3D7F0E4F300EDEA6E8C981C4D760 /* TagFilter.swift */, + 90A2F28D71EE85A11EF8E507AB5AD895 /* TestDestination.swift */, + 1A1ECC686AEF48839C644422566579EF /* URL+XCGAdditions.swift */, + 127AA63D48E5CB0A4000883D5F23E7D0 /* UserInfoFilter.swift */, + 0AA940340D89913607E74C6A8498E486 /* XCGLogger.swift */, + 3632F1CBB5B9E2BC67F21B44065E1496 /* XcodeColorsLogFormatter.swift */, + AF92FFDE82DDAF8AC97DA25647E1DA5B /* Resources */, ); - path = Reusable; + name = Core; sourceTree = ""; }; - 8D306BF4D86EB4B784F03BDF60CB59B4 /* Support Files */ = { + 9ADF31C6795F8633B8CBC38028B57307 /* Support Files */ = { isa = PBXGroup; children = ( - 1527E479BC8094BF764D794A7F8D1048 /* Info.plist */, - BD6D4379BA57DF583CD5C154D4322229 /* NetClient.modulemap */, - 1CFA490007E22D006CC2794184790C17 /* NetClient.xcconfig */, - DBA0CA5018F27D26CA4A7CD8D9BAC6CA /* NetClient-dummy.m */, - F6C179288DC23732983951BB936DB9A9 /* NetClient-prefix.pch */, - E3FEAAAF9BDB6671C7DA01DF94C3D39F /* NetClient-umbrella.h */, + 388D71F84F62D26C9DE0BD494FFF242C /* Cucumberish.modulemap */, + B034BC3F76A7EBBC1AF87C4DB16B6E3A /* Cucumberish.xcconfig */, + 02E495A5BB9CDACCACCD0DBE30DE1ED0 /* Cucumberish-dummy.m */, + 81530EA72074D8E365687C78BD9830B2 /* Cucumberish-prefix.pch */, + CB26E9E01266A1016C264B6F2BA870E1 /* Cucumberish-umbrella.h */, + 74AA467DB101B341CF0DD110468F98E3 /* Info.plist */, + 27F0CF2CCE185770EB62463C19446F0D /* ResourceBundle-GherkinLanguages-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/NetClient"; + path = "../Target Support Files/Cucumberish"; sourceTree = ""; }; - 976632446C4AE54DCDB6891C9277B4F8 /* View */ = { + A15EA6F03AD3BA5EB5F631D43C9B9B7D /* Support Files */ = { isa = PBXGroup; children = ( - 1E83225AB05AC15D03FAC35A1696708E /* NibLoadable.swift */, - A4A360A026778D59895ACC4233A5CDB2 /* NibOwnerLoadable.swift */, - 71B70CAEA44530A452AD8B04D127782C /* Reusable.swift */, - 244B14795B634653852E48BEEB445A00 /* UICollectionView+Reusable.swift */, - 0F59B0670561DCCF6E34910B679FC872 /* UITableView+Reusable.swift */, + EDA86AE18B1E499675F080E114B8EBCE /* Info.plist */, + 76E9A10230C1FFFED3BBC3C628C3DB87 /* Kingfisher.modulemap */, + 24CD43CB964E9343A1C3F27D9551E3FE /* Kingfisher.xcconfig */, + 1AF5F20DFC7975AE3C74C78441094F20 /* Kingfisher-dummy.m */, + E67D3F05D8BFB2B049B700F687A4614A /* Kingfisher-prefix.pch */, + BCEC4C5C0D9894F1608ECF4AA1B07DAD /* Kingfisher-umbrella.h */, ); - name = View; + name = "Support Files"; + path = "../Target Support Files/Kingfisher"; sourceTree = ""; }; - A547E48365A2B5EF5A27EA92633E7934 /* NetClient */ = { + A8F4B07823C5E155CF7A3BE6F6EBEA1A /* Support Files */ = { isa = PBXGroup; children = ( - 7237BC5BA778468E512EE4EDCD7C7F22 /* Core */, - 8D306BF4D86EB4B784F03BDF60CB59B4 /* Support Files */, - EC5DFA665B6FCB39C906FFF38AFD0E4A /* URLSession */, + 6F26CE83D5ABDEB9DD06D83AC9C0C28E /* Info.plist */, + 84D12BC4944210E4BD3FC93AEE7BFDC8 /* ObjcExceptionBridging.modulemap */, + 6B5B5164932F7FD9F1088A46959C1E76 /* ObjcExceptionBridging.xcconfig */, + 97B032C2F74B48C801293BF2DD52F567 /* ObjcExceptionBridging-dummy.m */, + 3FECBA62E1B86B79D69748298F0BDF0D /* ObjcExceptionBridging-prefix.pch */, + FCF4078A036BB2B0AA1433788C643E42 /* ObjcExceptionBridging-umbrella.h */, ); - path = NetClient; + name = "Support Files"; + path = "../Target Support Files/ObjcExceptionBridging"; sourceTree = ""; }; - ABC1BBD0854E53CEF191EACF8DC21658 /* Support Files */ = { + AA43E5A2831D5211E92B0D592A611996 /* iOS */ = { isa = PBXGroup; children = ( - 1349F09EF50ED6E85CB8E7C12BD33465 /* Info.plist */, - 4A545A326EF80B5213DE086B13B6EEC9 /* Kommander.modulemap */, - 592763DC00332AD12F740470519C18CD /* Kommander.xcconfig */, - 89589E81B432D6584805B599EBBA353C /* Kommander-dummy.m */, - DB52DC931E86084069140CF00472BF97 /* Kommander-prefix.pch */, - 6CCBC453F3CBF7C12E3D09D6539ACF7A /* Kommander-umbrella.h */, + E523B74BB2B6DB84FEB7E50525A35866 /* CFNetwork.framework */, + 56F5A5E33B9AA536786348972054BE65 /* Foundation.framework */, + 2E64EFC30FE270B36BAA70D5C31FB432 /* UIKit.framework */, + D55EEE3EC2DE00DF094CD4C605AEC614 /* XCTest.framework */, ); - name = "Support Files"; - path = "../Target Support Files/Kommander"; + name = iOS; sourceTree = ""; }; AC0BE58B9BD3EB737BE28986618D6928 /* Pods-Core */ = { @@ -993,33 +1378,60 @@ path = "Target Support Files/Pods-Core"; sourceTree = ""; }; - B0C3FE2BFBE5B827BF03719923F31030 /* Products */ = { + ADEB1BEB159EA08662F2245B5C3ED375 /* NetClient */ = { isa = PBXGroup; children = ( - 26870CAD6540FD871F7769F74A4E58C7 /* Cucumberish.framework */, - ED4501B6751A42CDC7968DC6A0395F56 /* GherkinLanguages.bundle */, - 23706B16B589D0042020560B31099266 /* Kingfisher.framework */, - 659341DA334E5B7D9CC04336BAFF4160 /* Kommander.framework */, - AD587E676867C1B6250E18CE95132850 /* Net.framework */, - 5CB12D9E1BB09E8EB9FDF9B163CB705D /* Pods_Archit.framework */, - 0B468BD574B5061B9601D6915593BE94 /* Pods_ArchitTests.framework */, - FEC50D3882F966CB811B062A70EFB743 /* Pods_ArchitUITests.framework */, - C82878A79F72642DF34AA67AE26D4255 /* Pods_Core.framework */, - 903D1CA879B0C56CB0831A2A83E40575 /* Pods_CoreTests.framework */, - 3CFAB3CF7E40C45749BA4734EAD35D8C /* Pods_Domain.framework */, - CAB8C9F222784365256C11AF61BC29BE /* Pods_DomainTests.framework */, - ED83ADC717B3E66EFF07793F364B4FAB /* Reusable.framework */, + 522ACBF1214EDB6D452A48E7C0CF1121 /* Core */, + 00B2AB72D9CE406DEC87F5A2C3E25E62 /* Support Files */, + 5C946EE0B852C3A31A08991E9B7790C7 /* URLSession */, ); - name = Products; + name = NetClient; + path = NetClient; sourceTree = ""; }; - BFFF890A8EFD8D789030D196F2364133 /* Storyboard */ = { + AF92FFDE82DDAF8AC97DA25647E1DA5B /* Resources */ = { isa = PBXGroup; children = ( - C37B10AD078A86B6A416723CE59F2BDD /* StoryboardBased.swift */, - 9DB5D251E969EF819A0CD86D44708C49 /* StoryboardSceneBased.swift */, + 5169C87334029720F6E17D158ECB0A28 /* .swift-version */, ); - name = Storyboard; + name = Resources; + sourceTree = ""; + }; + B68D7986F9DEA530AC3D54AA81B981B2 /* Support Files */ = { + isa = PBXGroup; + children = ( + 6EB6F7F9BF4D83227CF14535C40809F3 /* Info.plist */, + E0821091D933313BC630E83E179ACA4F /* Reusable.modulemap */, + 6E031FA5BCC86339320E4F120AF591FB /* Reusable.xcconfig */, + 7F6FE3B02B7186A27A5CF0D1D661A54F /* Reusable-dummy.m */, + 17A167250DC2EDEE01DBAFF5B71AFC40 /* Reusable-prefix.pch */, + 5172B96C1E26286778A4C6079E9FBE12 /* Reusable-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Reusable"; + sourceTree = ""; + }; + C6F8DE72804EB8BA39B3BF0A598945A4 /* Support Files */ = { + isa = PBXGroup; + children = ( + 36D38A27BC5B8897613AAE16F3E553E5 /* Info.plist */, + 8FA2C25C05947EBEE15D4B9EFDB7840D /* XCGLogger.modulemap */, + 18AEA03BD4222257CC534EABD98C31A0 /* XCGLogger.xcconfig */, + 209222D1F1EE679A7479C1E9468AD2D4 /* XCGLogger-dummy.m */, + CD31386903D892F58FFDE449474BDC14 /* XCGLogger-prefix.pch */, + CDE7AF2EA81695CB38C86BBC025F384F /* XCGLogger-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/XCGLogger"; + sourceTree = ""; + }; + D4222C174FC9D4FCBD645D509BCB4C4B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5AE3BEBF88AEB8861BDBC46832BD6697 /* ObjcExceptionBridging.framework */, + AA43E5A2831D5211E92B0D592A611996 /* iOS */, + ); + name = Frameworks; sourceTree = ""; }; D58667525326B4EE0F5899E3941215CC /* Pods-ArchitTests */ = { @@ -1040,19 +1452,30 @@ path = "Target Support Files/Pods-ArchitTests"; sourceTree = ""; }; - D6B856C85827B31B99B41A31F23B1FE5 /* Resources */ = { + D69ACDC620315C75C0450CF55BA13872 /* Kommander */ = { isa = PBXGroup; children = ( - A2D29FF5B5E65120C77D7AFEFB2C7BE8 /* gherkin-languages.json */, + 917CEB139B2DD57B86BCE40B54ABFCF7 /* CurrentDispatcher.swift */, + 272F4493B363C0E7240E5CD4E86EF054 /* Dispatcher.swift */, + 810EFCD05DCD0BEE4C35FBC5CFF3D411 /* Kommand.swift */, + 9DC48FBEDA6F09BC8787BCD0C4B21BD8 /* KommandCancelledError.swift */, + D06DEFFA68E8BDCCF3720E8A8D9DAA09 /* Kommander.h */, + 5589CEA036AA85F8B9ECD1717D36818F /* Kommander.swift */, + 92AC63201DF010FC16FA08D329ED5A71 /* MainDispatcher.swift */, + 8957168027CEB4617B05F77BE57ECE0F /* Support Files */, ); - name = Resources; + name = Kommander; + path = Kommander; sourceTree = ""; }; - D78B7B03BD3831DF7D7962C9F3C87351 /* SwiftLint */ = { + D8BF91FD88F1FBCC903815ADFE502218 /* ObjcExceptionBridging */ = { isa = PBXGroup; children = ( + F8EEA1A79B995E43CB2B1794853DFBE1 /* ObjcExceptionBridging */, + A8F4B07823C5E155CF7A3BE6F6EBEA1A /* Support Files */, ); - path = SwiftLint; + name = ObjcExceptionBridging; + path = ObjcExceptionBridging; sourceTree = ""; }; D930D8A5C8ED1FD9C448A62416C8F6BD /* Pods-CoreTests */ = { @@ -1073,150 +1496,30 @@ path = "Target Support Files/Pods-CoreTests"; sourceTree = ""; }; - E565C36751E34A5580B2043CDC2714B5 /* Cucumberish */ = { + F5C684E1CE2FBA3ADDC7FDA267FAFF83 /* Storyboard */ = { isa = PBXGroup; children = ( - D53CE861CE4A32CC2A71CBB6A1FD1BC4 /* CCIArgument.h */, - 6191781C6A5EFC4966B1B7319676943B /* CCIArgument.m */, - CB70089C09285DD380F1BBC984D026B0 /* CCIAroundHock.h */, - ED49AA4E1C396957E42F1473585BFDE6 /* CCIAroundHock.m */, - 148CAAD3E8300FB74FAF0B42BACBDBD6 /* CCIBackground.h */, - C014190CC863BBD187BB6C32507C8503 /* CCIBackground.m */, - C16B5D14DCD613E6E5B4BA3E50599DAB /* CCIBlockDefinitions.h */, - 6C5DF40AAB4E08D7F0F9EC9EBA65752F /* CCIExample.h */, - FDD5D51E51A4FD8FF180359B03B8678A /* CCIExample.m */, - E223322D994B498E2C46629FF8E8D713 /* CCIFeature.h */, - E0677000A0617BE4EC29561A32F9BD0F /* CCIFeature.m */, - DD614384264785CBE236EAB0BE75E044 /* CCIFeaturesManager.h */, - 88463114FCA181C39E97B65B50241E77 /* CCIFeaturesManager.m */, - F84FA095FB6C0D311E392E2D781CDAAB /* CCIHock.h */, - 7588BEF79C0FC540F64DE8C3EA41B288 /* CCIHock.m */, - BBE21F0C99306E05E6C669C182DEC59A /* CCIJSONDumper.h */, - C36BBA2B7AE2DD60A205636F6E1D7187 /* CCIJSONDumper.m */, - 8281EF23B53CBB80EAC3F5F3B1F551B6 /* CCILocation.h */, - B3DC205CEA85348126BE49485C97C1C7 /* CCILocation.m */, - 1FA4E80198570C22C1E01A1385215404 /* CCILoggingManager.h */, - B405F20EC25F983962733A85955FE794 /* CCILoggingManager.m */, - F0DB998C7EC191CBEEECC7E28A8565DA /* CCIScenarioDefinition.h */, - D69F37EEB7FAEB6B2CD9C25C336D9D71 /* CCIScenarioDefinition.m */, - 22B90CB7A4F9024E828E354B38231AA5 /* CCIStep.h */, - F6E02F8085C083C037B4FCC60C7476A5 /* CCIStep.m */, - FD79497C2D850A6B6F05B59864F2E804 /* CCIStepDefinition.h */, - 005F1EA4A4E62BECCBF270BAE6B8A222 /* CCIStepDefinition.m */, - F994AB9F800DB12A51955CEB5FDC77A4 /* CCIStepsManager.h */, - C32D5F2E0C0961EF22038D3DA794CDF3 /* CCIStepsManager.m */, - F16B831451363E8F683F2D7A136276CD /* Cucumberish.h */, - 90F1271A95A025A32CD2CC5AFD3EEE3E /* Cucumberish.m */, - 1CBCED0E7E1D7AB93C3DB1ADED7F293F /* GHAstBuilder.h */, - 20B157F63367D281AB6F3E986802F0AB /* GHAstBuilder.m */, - 09E8E1D893F1AC92FABFA8678CD63A2D /* GHAstNode.h */, - ECEAFE26FC2A189642450D341C2BE602 /* GHAstNode.m */, - 97267FEE7A041C463519A62F541DD3CC /* GHBackground.h */, - BD80ACF5BD6234CEBA25081B21AA77B8 /* GHBackground.m */, - 8A75E31860E403A59D3831C91CD2C6F7 /* GHComment.h */, - 1B8D75CF52E36C189210AC226107CAA0 /* GHComment.m */, - 17AC558D2BA96344B1CD5F3772E3664F /* GHDataTable.h */, - 6D85E8E7A84775ADF7069FC0F15B6A8E /* GHDataTable.m */, - 7A38ADE368813DE465BEB4D785373040 /* GHDocString.h */, - D0547828A3DE6F0B26D9099462895817 /* GHDocString.m */, - 8507B1DF5D363C1471973B565283EB96 /* GHExamples.h */, - 13EAED2A3DC51CB65C37D7D5B5F77F7E /* GHExamples.m */, - 7B180D89CE60201D55199F6E752E32AA /* GHFeature.h */, - 5C930CF1943CC9DCAA6BBA7AF37B1B15 /* GHFeature.m */, - C01BED710FCB5E750821A3A88F71BEE0 /* GHGherkinDialect.h */, - 3BB97FD642FF1F06308A1F2DCFFA4A6A /* GHGherkinDialect.m */, - 43E3EC9F49194963FD09E4DBC3F65C49 /* GHGherkinDialectProvider.h */, - E630F118AF1ED7AA212BDC40B6DF1D26 /* GHGherkinDialectProvider.m */, - A99FD97316822396200618A6E2380C99 /* GHGherkinDialectProviderProtocol.h */, - D8F4395159892A1152B0850B4C7E5272 /* GHGherkinLanguageConstants.h */, - 8FF3F0ACC5B661B1D6133483D8D375EA /* GHGherkinLanguageConstants.m */, - CEE244E17488A6BE712EA61D93BDFC28 /* GHGherkinLanguageSetting.h */, - 722D714C5319B2F60FF9AB246250143F /* GHGherkinLanguageSetting.m */, - EC529629E9E0578488AB23310F75CCF9 /* GHGherkinLine.h */, - 01288DE64D2DE752BF83B83EC6C758FB /* GHGherkinLine.m */, - 580BC578B0E4F7F8BAB7DC278417F72E /* GHGherkinLineProtocol.h */, - 7E68BEFB9D78E1C18B4586D13FAECA7F /* GHGherkinLineSpan.h */, - E403DC858CDE1DEB37E3EFA363F7AAE3 /* GHGherkinLineSpan.m */, - D9EA26FBF2AB4775D19AB45D4E1DA09B /* GHHasDescriptionProtocol.h */, - 68D6EEF01B1A446FD5991942D0D6528C /* GHHasLocationProtocol.h */, - 48445193109D6CBE932747DFF1F1813B /* GHHasRowsProtocol.h */, - 332B8501C0E8DFE0659B5D6C4175A7A6 /* GHHasStepsProtocol.h */, - 8D52E535A0B97F24335F9C03AD998FE6 /* GHHasTagsProtocol.h */, - 9A6BB1D572014B5EF05DFCD11342822F /* GHLocation.h */, - 70C0F70CF2574B424E4141004C69FD95 /* GHLocation.m */, - 6DB28BA7F616CE436C25C21C46038173 /* GHNode.h */, - B2391930E1666717802262A587619B49 /* GHNode.m */, - 9C7395779259014429357ED42A1EA179 /* GHParser.h */, - CD760E8D43115014133B68F69A29C961 /* GHParser.m */, - 93C5232AC1C1892C763F818DC2C5B377 /* GHParser+Extensions.h */, - 84C29405241D949ABDA5DC37D2A97128 /* GHParser+Extensions.m */, - 41EADC89B86A15B01AF8DF2D85BAD4E2 /* GHParserException.h */, - 93FB82FFD53B2E00189A44A86AD761AA /* GHParserException.m */, - 487CC6F42840B7117BDF79AD5E905C2C /* GHScenario.h */, - 9F92A73B85089F9AB722321FBE56706C /* GHScenario.m */, - 49881B2B8818398E2DF3F70F2B30AA23 /* GHScenarioDefinition.h */, - 810A388F5CE676277077606F0DE85507 /* GHScenarioDefinition.m */, - 46B8A09331825C78350D66852896A914 /* GHScenarioDefinition_Private.h */, - FC2AD36BE1D9D2D146666C876964F5BD /* GHScenarioOutline.h */, - E7F38C1D85DDE25FEC5600E42A8B7DA3 /* GHScenarioOutline.m */, - 60D9D99B109737B2724C9445ED57D519 /* GHStep.h */, - 875548467F3020F98FBEF9D2CEC11ED8 /* GHStep.m */, - B3E39EF1DB22F72499549E7EDA489C3E /* GHStepArgument.h */, - 3FB3BB6C378B23060B372171851B2218 /* GHStepArgument.m */, - 0F5AB438E442560442FA263C699F13FB /* GHTableCell.h */, - FBC4FEECBFD4603875DE87EE2AE08D8E /* GHTableCell.m */, - B0F504F41B52982765CD40346B19CF67 /* GHTableRow.h */, - 1BF1B337EF01B0FC642267269AE20249 /* GHTableRow.m */, - BB9386E51385352BC9FB9EF68E1D81A0 /* GHTag.h */, - F94175319F797AE2A0A31280CBC6DB76 /* GHTag.m */, - BA9EA8AFEA10727188E0F300A24AF95C /* GHToken.h */, - D1D26F501D99011AFA5E72E1B5827D59 /* GHToken.m */, - A8B1EA6306D32026FBBD3B61C2176A5B /* GHTokenMatcher.h */, - 577BAF94C97A10F39552C58D4BE3323E /* GHTokenMatcher.m */, - 2561F060BF61398A50B4489A92A3DAA0 /* GHTokenScanner.h */, - B0E22E920173EB96CFB5013598E34BC3 /* GHTokenScanner.m */, - 70FE0D29937F553FD6ED820CF6E91B75 /* NSArray+Hashes.h */, - 0AE393F57DF2F0403688B38083F67349 /* NSArray+Hashes.m */, - BC244C19611F9AC4865AF33CEE2EA3CB /* NSObject+Dictionary.h */, - 2CF8357C712226C79181760059FC5BAE /* NSObject+Dictionary.m */, - 87ABF7048062B4547BC16DC7FA1FCD55 /* NSString+Formatter.h */, - 113C082140CA691A5FFE918F903AB652 /* NSString+Formatter.m */, - 0ADC6A361EB44D2899FD424B13075748 /* NSString+Trim.h */, - 4338710AA51ACE3B66CB3F0F1C7A6F84 /* NSString+Trim.m */, - D6B856C85827B31B99B41A31F23B1FE5 /* Resources */, - F4542FF10A70F63190BC289DFF513F13 /* Support Files */, + F4948F5126549E0FB3411465739B7433 /* StoryboardBased.swift */, + 08BCF13011B49521532F9DF15E119906 /* StoryboardSceneBased.swift */, ); - path = Cucumberish; + name = Storyboard; sourceTree = ""; }; - EC5DFA665B6FCB39C906FFF38AFD0E4A /* URLSession */ = { + F8EEA1A79B995E43CB2B1794853DFBE1 /* ObjcExceptionBridging */ = { isa = PBXGroup; children = ( - 1708F96D13D5DC12EBBE06232FF6BDCE /* NetTask+URLSessionTask.swift */, - 7CCB38FD5B3ED5EAABA28B776B9A3278 /* NetURLSession.swift */, - E8CA6437AEC828CAAAEEB7F1D3CF2C51 /* NetURLSession+Data.swift */, - 375F60E0C7B722F2A802BB253404F787 /* NetURLSession+Download.swift */, - A6507F8F37DE931141D9113A13272467 /* NetURLSession+Stream.swift */, - 4B13FCBE12DE3189C4D06BED22583176 /* NetURLSession+Upload.swift */, - CEA414BDD48FCE3BDAE22E5D5E91A3BC /* NetURLSessionDelegate.swift */, - 2CF56BF0267472F44C12E56FEA6DE980 /* NetURLSessionTaskObserver.swift */, + 2D4ECDBDBBAFCBAF7FDFE0FD6236AF91 /* ObjcExceptionBridging.h */, + 9551ADB9D573A9A4878DF8F17112A650 /* ObjectiveCMarker.m */, ); - name = URLSession; + name = ObjcExceptionBridging; sourceTree = ""; }; - F4542FF10A70F63190BC289DFF513F13 /* Support Files */ = { + FA74E3CBAD456E1E5C1E7A3E4DEDFB46 /* Resources */ = { isa = PBXGroup; children = ( - C08F6CD1B5A0195B8BF6ACBA85D3625C /* Cucumberish.modulemap */, - 51157C4588E51B385A632144E785C987 /* Cucumberish.xcconfig */, - 5445AEC20BD2B1FD7608C457940102ED /* Cucumberish-dummy.m */, - 1844AD18D7BAAF435E81AD11A18568A3 /* Cucumberish-prefix.pch */, - 3C8A333DF860CECC280CF28E3E7043C1 /* Cucumberish-umbrella.h */, - BEBA29B59731096F62CED32B152DFD00 /* Info.plist */, - A380891CDC887163E0A4129F52063C22 /* ResourceBundle-GherkinLanguages-Info.plist */, + 78298952BE663DA372F7862BACD74848 /* gherkin-languages.json */, ); - name = "Support Files"; - path = "../Target Support Files/Cucumberish"; + name = Resources; sourceTree = ""; }; /* End PBXGroup section */ @@ -1297,106 +1600,149 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 362F2F854307116057D955F5CE6B8EC6 /* Headers */ = { + 16373936124F0057C61B6F697D298869 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4C2361380820A274D78A9030E58D5C0F /* Pods-Core-umbrella.h in Headers */, + 827908C12A394C1309860C7402996A76 /* Pods-DomainTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 55BA48FB8BF214560848F826366839F0 /* Headers */ = { + 182A47F13C3537708778307EC01250D0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C8CF08E8554B51895A999659DDC6CDFC /* Pods-CoreTests-umbrella.h in Headers */, + 982CFC4903C2AAB0D8F7B27AEF922F45 /* Pods-Archit-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6972E0A9C2D0A6D0E4DF93513D57A7F3 /* Headers */ = { + 1A035238C89E268A7D08E24C4E402860 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B3CE2C47482E6C67201575ACB7927BCA /* Net.h in Headers */, - DA306B26CA4424083CD6C9F1C7060808 /* NetClient-umbrella.h in Headers */, + 225014332534358CB9AAF761F8F90D4B /* Pods-Core-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 739D995A46CB4B8473EC8C59C9E54537 /* Headers */ = { + 264CBCADD427C150D6917C431EE62C1F /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4E3D14C08AAEA84AA137B69E68593E9F /* Pods-Domain-umbrella.h in Headers */, + C40D7FBD7DD8B366CB89564B406511F3 /* XCGLogger-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 84676F7D46FF521291CDEB2AB04A454C /* Headers */ = { + 537141F273172D1C6B91BFBD1DC319A8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 2F288ED3641B2B4775884C462AE377E6 /* Kingfisher-umbrella.h in Headers */, - 5B5D8AE167BD8E304CE474A9B8DBA2B4 /* Kingfisher.h in Headers */, + 44CA726228D100D56774854A021DE3E7 /* Pods-Domain-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6972E0A9C2D0A6D0E4DF93513D57A7F3 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3CE2C47482E6C67201575ACB7927BCA /* Net.h in Headers */, + DA306B26CA4424083CD6C9F1C7060808 /* NetClient-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7DA8EC9CF537F24CDAB9570F3ACEF4BD /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E8F1C92D1994449D49D6E7AFB4087B40 /* Pods-CoreTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 98410B34F6CA73572E284CCDECCBD845 /* Headers */ = { + 84676F7D46FF521291CDEB2AB04A454C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9B37EC010B4BC458ED1CF39D9E21A70E /* Pods-ArchitUITests-umbrella.h in Headers */, + 2F288ED3641B2B4775884C462AE377E6 /* Kingfisher-umbrella.h in Headers */, + 5B5D8AE167BD8E304CE474A9B8DBA2B4 /* Kingfisher.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9A8889C3CE350339FF0772AF1CBFF386 /* Headers */ = { + 8E4430AF6874BB9DA22735AC056BC031 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 63434015B3CFC99210B6B4E07F75405D /* Pods-Archit-umbrella.h in Headers */, + 0C54AC5F3FCCBE79348541775C3CBD8A /* ObjcExceptionBridging-umbrella.h in Headers */, + 5E632DDFA44C09C21110169843F23FBC /* ObjcExceptionBridging.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A4806DCDD37B7564646CE9BCDAC52104 /* Headers */ = { + D289EF4168473D6A01946F5D7AA070FB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D935BDF0EC500D5396FEE01B8DBA178C /* Reusable-umbrella.h in Headers */, + 9D6DC57549F30278BE6B993902CB38C0 /* Pods-ArchitTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - E0DECB3A9B94187DB699E61AEFADFBC8 /* Headers */ = { + ECC83DF3FBBE744ED11818D30B84BD8C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 751C1C87B496B61443CD6C4C42C9BA8D /* Pods-ArchitTests-umbrella.h in Headers */, + 2513A6DC3E7F3992C4223FAB8691B42E /* Pods-ArchitUITests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - F922E62D5E7B67235D0DCB64C4776B02 /* Headers */ = { + F78047BA4381A2B138BD83C82CA6A63A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DF162C05F9D047382E99B598CAF5479C /* Pods-DomainTests-umbrella.h in Headers */, + 51478937D03B0C67ED99704A3B2D21BB /* Reusable-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 1D84C81FAF98601CB305AD05624E3AD6 /* Reusable */ = { + 07D8D160D0BEC9D509FBD22A52348504 /* Pods-Core */ = { isa = PBXNativeTarget; - buildConfigurationList = 32D679947AB949218590AD69FC1C65AD /* Build configuration list for PBXNativeTarget "Reusable" */; + buildConfigurationList = 698A860BBE61325637E5DA22EA82E91C /* Build configuration list for PBXNativeTarget "Pods-Core" */; buildPhases = ( - FD5F5A187862F757C82BEDAB6B05F5B9 /* Sources */, - 4AEB4AD04AC7A79E56EDDF79753F7B88 /* Frameworks */, - A4806DCDD37B7564646CE9BCDAC52104 /* Headers */, + 9CDB3B550DD0EB579653B8B65D1670C0 /* Sources */, + D193E8D1DFD105207F457560B2C53A47 /* Frameworks */, + 1A035238C89E268A7D08E24C4E402860 /* Headers */, ); buildRules = ( ); dependencies = ( + A02FA6EA6C33C8B44D8127075BA86FDC /* PBXTargetDependency */, + DD43363EFED3C9328D16370D048D8C85 /* PBXTargetDependency */, + 1D505DB398F14ADB7CA381ED6B9B3A66 /* PBXTargetDependency */, ); - name = Reusable; - productName = Reusable; - productReference = ED83ADC717B3E66EFF07793F364B4FAB /* Reusable.framework */; + name = "Pods-Core"; + productName = "Pods-Core"; + productReference = E438CE442D914478C77EB6ACFBF5F55C /* Pods_Core.framework */; + productType = "com.apple.product-type.framework"; + }; + 19C61632E6C69EB20C345EEA239FE24D /* Pods-Archit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7B172032A8DFBB0394B7B8216544082B /* Build configuration list for PBXNativeTarget "Pods-Archit" */; + buildPhases = ( + A8842EF097EFA826CB092B5EA85803BA /* Sources */, + A0A5FF8A043362D3027C86F56B2A158E /* Frameworks */, + 182A47F13C3537708778307EC01250D0 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + DF4E583E68B90CA76B3D39935F4EAFE8 /* PBXTargetDependency */, + 39911DB3263ADA625D527AF01174CF7F /* PBXTargetDependency */, + A0DFD94B61F5FC77B0CA115EDC5FDFC2 /* PBXTargetDependency */, + 3990F2E2F00B1FC74C6A2CEE9BC403B9 /* PBXTargetDependency */, + E48B305B398C982EBE73581E2653130D /* PBXTargetDependency */, + 01449406F85EF3C4E292C69AA2595F37 /* PBXTargetDependency */, + ); + name = "Pods-Archit"; + productName = "Pods-Archit"; + productReference = 9DA7FD47E181978972C8FABACFFC7EE4 /* Pods_Archit.framework */; productType = "com.apple.product-type.framework"; }; 22315F6812B77D86273C98095D3BBC79 /* Kommander */ = { @@ -1413,7 +1759,7 @@ ); name = Kommander; productName = Kommander; - productReference = 659341DA334E5B7D9CC04336BAFF4160 /* Kommander.framework */; + productReference = 903030E0FF5B9A9C54E6B198C0EE940D /* Kommander.framework */; productType = "com.apple.product-type.framework"; }; 2F9219DC3436F4A71BD490ADED213426 /* Cucumberish-GherkinLanguages */ = { @@ -1430,25 +1776,41 @@ ); name = "Cucumberish-GherkinLanguages"; productName = "Cucumberish-GherkinLanguages"; - productReference = ED4501B6751A42CDC7968DC6A0395F56 /* GherkinLanguages.bundle */; + productReference = 024F1BFA1F5C914C134BCF9DEE64A78D /* GherkinLanguages.bundle */; productType = "com.apple.product-type.bundle"; }; - 30BAD341035DBAEA11E3E3BC6981078A /* Pods-ArchitUITests */ = { + 3FDA40B8508AD3C18A8D7F9AA00C680E /* Reusable */ = { isa = PBXNativeTarget; - buildConfigurationList = 7791FE1A80B23D31D2F6110B51CEED8C /* Build configuration list for PBXNativeTarget "Pods-ArchitUITests" */; + buildConfigurationList = CCCCA0DABCA1114155872D150AACE5A2 /* Build configuration list for PBXNativeTarget "Reusable" */; buildPhases = ( - 56F0CB81545988DA1E0E6FD38214663A /* Sources */, - 99650007BBA13770C035315525BD3C84 /* Frameworks */, - 98410B34F6CA73572E284CCDECCBD845 /* Headers */, + C42A1E1165750BBC74BFF0F3B0120634 /* Sources */, + 8815F24B654013E3DC3EAB7A12BDEF52 /* Frameworks */, + F78047BA4381A2B138BD83C82CA6A63A /* Headers */, ); buildRules = ( ); dependencies = ( - CC684BC81C480155C5DBB6CA8020ABCF /* PBXTargetDependency */, ); - name = "Pods-ArchitUITests"; - productName = "Pods-ArchitUITests"; - productReference = FEC50D3882F966CB811B062A70EFB743 /* Pods_ArchitUITests.framework */; + name = Reusable; + productName = Reusable; + productReference = 24432C75FEC44700FD2A5BCD4C239F15 /* Reusable.framework */; + productType = "com.apple.product-type.framework"; + }; + 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */ = { + isa = PBXNativeTarget; + buildConfigurationList = C4195B567D4F3F2206FEDC07DA2C6626 /* Build configuration list for PBXNativeTarget "ObjcExceptionBridging" */; + buildPhases = ( + 75363A2730F54ADF4C39F84C448A861C /* Sources */, + 4AF8078BAD55CA9AB1F38E566F60CF75 /* Frameworks */, + 8E4430AF6874BB9DA22735AC056BC031 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ObjcExceptionBridging; + productName = ObjcExceptionBridging; + productReference = F29F5A1B68A0F8A7BF9047789733A0F4 /* ObjcExceptionBridging.framework */; productType = "com.apple.product-type.framework"; }; 68BBA27FABB4188F082A1A9FDD1A9B37 /* Cucumberish */ = { @@ -1467,7 +1829,7 @@ ); name = Cucumberish; productName = Cucumberish; - productReference = 26870CAD6540FD871F7769F74A4E58C7 /* Cucumberish.framework */; + productReference = 3A9E74153AD3B1646713859420B22FEF /* Cucumberish.framework */; productType = "com.apple.product-type.framework"; }; 69EAE86324AC6EEB091FB936BCE91285 /* NetClient */ = { @@ -1484,7 +1846,7 @@ ); name = NetClient; productName = NetClient; - productReference = AD587E676867C1B6250E18CE95132850 /* Net.framework */; + productReference = 175BBA1528D7CF40BD92A70126DC262E /* Net.framework */; productType = "com.apple.product-type.framework"; }; 6F712943B3C5592E82604940D11CE08A /* Kingfisher */ = { @@ -1501,115 +1863,123 @@ ); name = Kingfisher; productName = Kingfisher; - productReference = 23706B16B589D0042020560B31099266 /* Kingfisher.framework */; + productReference = AE0363BC153EEB6F5A3AADD8333D167A /* Kingfisher.framework */; productType = "com.apple.product-type.framework"; }; - 71F13B9A2CFD98DB1F3DD85BA52BB8D0 /* Pods-ArchitTests */ = { + 71BF2427B7455146EE704CE6651168EF /* Pods-CoreTests */ = { isa = PBXNativeTarget; - buildConfigurationList = FAB624B20D6EB2DBFFB710606CBF1F9A /* Build configuration list for PBXNativeTarget "Pods-ArchitTests" */; + buildConfigurationList = 9F3F5058E79FDEB47CEC7DE1C92B5078 /* Build configuration list for PBXNativeTarget "Pods-CoreTests" */; buildPhases = ( - 518A08DC507C53509B7F5168BAA85FC7 /* Sources */, - 403346305CE4CC2A4D3CBFFA2DC21A4E /* Frameworks */, - E0DECB3A9B94187DB699E61AEFADFBC8 /* Headers */, + 063FC465B3BEFC55B68B819E1154083F /* Sources */, + 4C146F478B96AEF2B978F256BE7D6055 /* Frameworks */, + 7DA8EC9CF537F24CDAB9570F3ACEF4BD /* Headers */, ); buildRules = ( ); dependencies = ( + 442E257D262579286588EB2F8915A603 /* PBXTargetDependency */, + 1FD15D573076F7A18AECF3C40CB4DF08 /* PBXTargetDependency */, + B6C65CD4DADCADAF3B93117D375E4D3E /* PBXTargetDependency */, ); - name = "Pods-ArchitTests"; - productName = "Pods-ArchitTests"; - productReference = 0B468BD574B5061B9601D6915593BE94 /* Pods_ArchitTests.framework */; + name = "Pods-CoreTests"; + productName = "Pods-CoreTests"; + productReference = ABD0EE1C07BCBF8B8B68667C7C0D4872 /* Pods_CoreTests.framework */; productType = "com.apple.product-type.framework"; }; - 8E93EACDB7BB5FBBF52AF4BED85FB317 /* Pods-Core */ = { + 7714EBE331D5395049D5020C484FD1BC /* Pods-DomainTests */ = { isa = PBXNativeTarget; - buildConfigurationList = BBE4A47CF2191E5437B0D29044761CFA /* Build configuration list for PBXNativeTarget "Pods-Core" */; + buildConfigurationList = 89F02D0314344D9D9BFCE20C7C90331C /* Build configuration list for PBXNativeTarget "Pods-DomainTests" */; buildPhases = ( - 98B97AC1D89379112943C04B85B3301F /* Sources */, - 0BD6A6F74CAF1D080DB3A7BBE825C331 /* Frameworks */, - 362F2F854307116057D955F5CE6B8EC6 /* Headers */, + 80290586E66C67C1971759BB20861187 /* Sources */, + 593E7C083F563F36EDCEAFCA53BDFDA1 /* Frameworks */, + 16373936124F0057C61B6F697D298869 /* Headers */, ); buildRules = ( ); dependencies = ( - 3FE352BBFACDD62795EEB50A1EC325EC /* PBXTargetDependency */, + 46E93239627BC18333DFE97F7FA935E5 /* PBXTargetDependency */, + 03FE5FF5C64A19C41E47D2BA1EC04D90 /* PBXTargetDependency */, ); - name = "Pods-Core"; - productName = "Pods-Core"; - productReference = C82878A79F72642DF34AA67AE26D4255 /* Pods_Core.framework */; + name = "Pods-DomainTests"; + productName = "Pods-DomainTests"; + productReference = CF961A5793F2FBBFDF38AA510754C4EE /* Pods_DomainTests.framework */; productType = "com.apple.product-type.framework"; }; - 9F9EF255A5BFEEE2D4369DE51577061C /* Pods-Domain */ = { + 8884CC7E492BBCBF1341CB5B6B387977 /* Pods-ArchitUITests */ = { isa = PBXNativeTarget; - buildConfigurationList = E2414923F43BCF250651C9FC1D30469B /* Build configuration list for PBXNativeTarget "Pods-Domain" */; + buildConfigurationList = B2DC16467E2171FFFCF97A3D189DBAB3 /* Build configuration list for PBXNativeTarget "Pods-ArchitUITests" */; buildPhases = ( - EAD51BCA862804A3EA7FA1EB27C24ECD /* Sources */, - 15F2B9FFCBB6B926CC3D55D349A6270B /* Frameworks */, - 739D995A46CB4B8473EC8C59C9E54537 /* Headers */, + 0FBB0F9096E9E6AFDFBAADAD2CAC0644 /* Sources */, + 0CD3D9E133F44876BA0B056ABF7DABCC /* Frameworks */, + ECC83DF3FBBE744ED11818D30B84BD8C /* Headers */, ); buildRules = ( ); dependencies = ( + C8E28CA91D77204C59F7277F7FE1C0A5 /* PBXTargetDependency */, + A4D032752C69769F95BA7697B4173D18 /* PBXTargetDependency */, + A83911B183C24C0B75646B2EED24C66F /* PBXTargetDependency */, ); - name = "Pods-Domain"; - productName = "Pods-Domain"; - productReference = 3CFAB3CF7E40C45749BA4734EAD35D8C /* Pods_Domain.framework */; + name = "Pods-ArchitUITests"; + productName = "Pods-ArchitUITests"; + productReference = 43F4BA3E1262D6147C24E0BCFF98A7C5 /* Pods_ArchitUITests.framework */; productType = "com.apple.product-type.framework"; }; - DCEF6D91A1D063900F69A6B5465BEFB4 /* Pods-CoreTests */ = { + AF6E903FEC7BD07F9D279B4EC1DFB39D /* Pods-Domain */ = { isa = PBXNativeTarget; - buildConfigurationList = 0463F8387E61D2DAA52011D42CB62C93 /* Build configuration list for PBXNativeTarget "Pods-CoreTests" */; + buildConfigurationList = 8A6CC7BA04335E320A3352B0A7588343 /* Build configuration list for PBXNativeTarget "Pods-Domain" */; buildPhases = ( - FB69A6A95ABA7B10120CB813663CBCD6 /* Sources */, - 2947EF2EB964EEC88C76A70EABA69907 /* Frameworks */, - 55BA48FB8BF214560848F826366839F0 /* Headers */, + 542AC1B789B4331FB66EA38241258C1C /* Sources */, + A84C07F8F20CAD26DF2E23C84E086FDA /* Frameworks */, + 537141F273172D1C6B91BFBD1DC319A8 /* Headers */, ); buildRules = ( ); dependencies = ( - D2EE8BE0B31E21886830621A01A3D872 /* PBXTargetDependency */, + 28E41E63CDD5D6CA91966CCECAB9B2B8 /* PBXTargetDependency */, + 7E8238E765879D709F197BDFB10486A2 /* PBXTargetDependency */, ); - name = "Pods-CoreTests"; - productName = "Pods-CoreTests"; - productReference = 903D1CA879B0C56CB0831A2A83E40575 /* Pods_CoreTests.framework */; + name = "Pods-Domain"; + productName = "Pods-Domain"; + productReference = 1C6534BB3D00F92E777C57AA07E3C4F2 /* Pods_Domain.framework */; productType = "com.apple.product-type.framework"; }; - F91BFF2DC26FC0A1946F897F4B39A860 /* Pods-DomainTests */ = { + E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */ = { isa = PBXNativeTarget; - buildConfigurationList = B6055929B8320C6017347ABFC1CA7E36 /* Build configuration list for PBXNativeTarget "Pods-DomainTests" */; + buildConfigurationList = E8581228C0892567BBAE53DDB6D925EC /* Build configuration list for PBXNativeTarget "XCGLogger" */; buildPhases = ( - F57C73B72ABD907B229D623FB8C9F94E /* Sources */, - 373AEAF65AA6C131ADC29F97B544CAC9 /* Frameworks */, - F922E62D5E7B67235D0DCB64C4776B02 /* Headers */, + 8F038459929D6EA8F318D4485CCEEC9F /* Sources */, + 59732DB5603B2543D049AE6D35E83C41 /* Frameworks */, + E2E3329A1D12F8D0C2EE81910D067F51 /* Resources */, + 264CBCADD427C150D6917C431EE62C1F /* Headers */, ); buildRules = ( ); dependencies = ( + E98C4BB9E532E63179BBA607CBE5E1D0 /* PBXTargetDependency */, ); - name = "Pods-DomainTests"; - productName = "Pods-DomainTests"; - productReference = CAB8C9F222784365256C11AF61BC29BE /* Pods_DomainTests.framework */; + name = XCGLogger; + productName = XCGLogger; + productReference = C28AB4551A7D8E418237BD756B906E4D /* XCGLogger.framework */; productType = "com.apple.product-type.framework"; }; - FF953D43CAF011AA2AC9E52E5FBFD799 /* Pods-Archit */ = { + ED3F441D585A60E14ECC9153C2A5A934 /* Pods-ArchitTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 9302AF5BCD3F1B2A8B5BA8FDCC9B0F60 /* Build configuration list for PBXNativeTarget "Pods-Archit" */; + buildConfigurationList = 75A7B02EED270EC751EF0CE987C63D66 /* Build configuration list for PBXNativeTarget "Pods-ArchitTests" */; buildPhases = ( - 2A948526856BD7F224C931C99C5A6CF3 /* Sources */, - FC56076F88870657CDEBF473E3251690 /* Frameworks */, - 9A8889C3CE350339FF0772AF1CBFF386 /* Headers */, + A700D6DBDBF7662387C05A4CC11865BE /* Sources */, + 83E8A67E9F05FA071037C1B448B0300D /* Frameworks */, + D289EF4168473D6A01946F5D7AA070FB /* Headers */, ); buildRules = ( ); dependencies = ( - 1B133210D560F9B97CBB3D1D5DDAE992 /* PBXTargetDependency */, - 51BDB7C0AE9130B54388D52F2B6B6B61 /* PBXTargetDependency */, - CFF83E873D334B76945D6A4CD832FBB1 /* PBXTargetDependency */, - 8797EDB1EFC2A43FCA8972C1904E30F3 /* PBXTargetDependency */, + 5307548803EDFEF7B0CF1C69F1024B0A /* PBXTargetDependency */, + 8D9297F485E8BDAF99DAC99713D4C71B /* PBXTargetDependency */, ); - name = "Pods-Archit"; - productName = "Pods-Archit"; - productReference = 5CB12D9E1BB09E8EB9FDF9B163CB705D /* Pods_Archit.framework */; + name = "Pods-ArchitTests"; + productName = "Pods-ArchitTests"; + productReference = CEBBA9E5F9EDC5E7E7CF8E2A875CB53E /* Pods_ArchitTests.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -1619,7 +1989,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0910; + LastUpgradeCheck = 0700; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -1629,7 +1999,7 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = B0C3FE2BFBE5B827BF03719923F31030 /* Products */; + productRefGroup = 0FBBD0F4131EA1CF965EDBBDCDC990F1 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -1638,14 +2008,16 @@ 6F712943B3C5592E82604940D11CE08A /* Kingfisher */, 22315F6812B77D86273C98095D3BBC79 /* Kommander */, 69EAE86324AC6EEB091FB936BCE91285 /* NetClient */, - FF953D43CAF011AA2AC9E52E5FBFD799 /* Pods-Archit */, - 71F13B9A2CFD98DB1F3DD85BA52BB8D0 /* Pods-ArchitTests */, - 30BAD341035DBAEA11E3E3BC6981078A /* Pods-ArchitUITests */, - 8E93EACDB7BB5FBBF52AF4BED85FB317 /* Pods-Core */, - DCEF6D91A1D063900F69A6B5465BEFB4 /* Pods-CoreTests */, - 9F9EF255A5BFEEE2D4369DE51577061C /* Pods-Domain */, - F91BFF2DC26FC0A1946F897F4B39A860 /* Pods-DomainTests */, - 1D84C81FAF98601CB305AD05624E3AD6 /* Reusable */, + 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */, + 19C61632E6C69EB20C345EEA239FE24D /* Pods-Archit */, + ED3F441D585A60E14ECC9153C2A5A934 /* Pods-ArchitTests */, + 8884CC7E492BBCBF1341CB5B6B387977 /* Pods-ArchitUITests */, + 07D8D160D0BEC9D509FBD22A52348504 /* Pods-Core */, + 71BF2427B7455146EE704CE6651168EF /* Pods-CoreTests */, + AF6E903FEC7BD07F9D279B4EC1DFB39D /* Pods-Domain */, + 7714EBE331D5395049D5020C484FD1BC /* Pods-DomainTests */, + 3FDA40B8508AD3C18A8D7F9AA00C680E /* Reusable */, + E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */, ); }; /* End PBXProject section */ @@ -1667,30 +2039,38 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E2E3329A1D12F8D0C2EE81910D067F51 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C344D0108F4ED1143A04DF74390EB0E /* .swift-version in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 2A948526856BD7F224C931C99C5A6CF3 /* Sources */ = { + 063FC465B3BEFC55B68B819E1154083F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3E1135BADE8012B984A6D63559BA6285 /* Pods-Archit-dummy.m in Sources */, + 518F7251989027076D4319E457671798 /* Pods-CoreTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 518A08DC507C53509B7F5168BAA85FC7 /* Sources */ = { + 0FBB0F9096E9E6AFDFBAADAD2CAC0644 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6D60129D27BA37EABD8BB2108CBA419D /* Pods-ArchitTests-dummy.m in Sources */, + 24C93725983A12A9239A59D40EBAA038 /* Pods-ArchitUITests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 56F0CB81545988DA1E0E6FD38214663A /* Sources */ = { + 542AC1B789B4331FB66EA38241258C1C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5C01B01A525A8D57696EA9505794F26F /* Pods-ArchitUITests-dummy.m in Sources */, + 070A5FEF730C74D8C0F4DEF56D3C940E /* Pods-Domain-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1701,6 +2081,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 75363A2730F54ADF4C39F84C448A861C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 231CFC69CCC10A5A032B5669DA477791 /* ObjcExceptionBridging-dummy.m in Sources */, + 7776AF1FEF112F6245DDFDDDE56E6D68 /* ObjectiveCMarker.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7EE53573C1B505200ECD9FB00A05D8A1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1758,11 +2147,66 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 98B97AC1D89379112943C04B85B3301F /* Sources */ = { + 80290586E66C67C1971759BB20861187 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 503A59EDE755226081081CEED1DCD5B5 /* Pods-DomainTests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8F038459929D6EA8F318D4485CCEEC9F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 06C360FAD51A87CBCA7DC2E536C9798C /* ANSIColorLogFormatter.swift in Sources */, + CBC4979F49026C733C2965C0A16BB063 /* AppleSystemLogDestination.swift in Sources */, + 32B92283834C6A0A76979EB318D1D099 /* AutoRotatingFileDestination.swift in Sources */, + D431B161924A8DCC8F532687D58AD59E /* Base64LogFormatter.swift in Sources */, + 3F6EB12E7F74110DF491E169E099DC9D /* BaseDestination.swift in Sources */, + CE39D91D0BB690C3A014A9FA4B6E2C4A /* BaseQueuedDestination.swift in Sources */, + 21558EFEBD879226D60D094C8825A80B /* ConsoleDestination.swift in Sources */, + F80F9B3F1C5D88145E9762665DC43314 /* DestinationProtocol.swift in Sources */, + FC37DF9AFC69916B4B1C6B6FB814EEC5 /* DevFilter.swift in Sources */, + DDEDA85C8025D170FC3C5A0FC6B9FD2B /* DispatchQueue+XCGAdditions.swift in Sources */, + F2B10D036D0A5CCEBC39744B33828B3C /* FileDestination.swift in Sources */, + CED6BC1F81E2BEDA1E30682E09A374D0 /* FileNameFilter.swift in Sources */, + 670703FBB7D2FFBE02375B608A2F3E1A /* FilterProtocol.swift in Sources */, + 325F9F9566F1B1570A0400DC034A3247 /* HelperFunctions.swift in Sources */, + A4DF73A7A66BCB0711DED161B6348748 /* LogDetails.swift in Sources */, + BB69D00427D01D38249B48B73605B7E9 /* LogFormatterProtocol.swift in Sources */, + 445A2939EE7133C0AFEE2D6B8D002C7F /* PrePostFixLogFormatter.swift in Sources */, + DC609F1AE4BCD83F1CE3A7D9D69DE445 /* TagFilter.swift in Sources */, + 5ADD144FBCC3F241953A2ED36DA90006 /* TestDestination.swift in Sources */, + 50FC8EDEBB6C1810BF0DF98E3A70DCED /* URL+XCGAdditions.swift in Sources */, + 3BBB1EBBD19C3AB446F90453B564E0A4 /* UserInfoFilter.swift in Sources */, + 8D11993D294507A7EF4C13F0077EBF67 /* XCGLogger-dummy.m in Sources */, + F3CA9E91B4B86BFB435A6520B26567F2 /* XCGLogger.swift in Sources */, + ADA2FBDD515F79725F822B8346B1C154 /* XcodeColorsLogFormatter.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9CDB3B550DD0EB579653B8B65D1670C0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1316C5B6437562DD70FA6688C6333E84 /* Pods-Core-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A700D6DBDBF7662387C05A4CC11865BE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4398D6EC401D888E75B1692DA45D30FE /* Pods-Core-dummy.m in Sources */, + 7A1C340BD3470E41BA8224C7E1CEBBC3 /* Pods-ArchitTests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A8842EF097EFA826CB092B5EA85803BA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 966270DF4CA76BC195BB0E8DABB541FE /* Pods-Archit-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1810,6 +2254,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C42A1E1165750BBC74BFF0F3B0120634 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 76FA83265537D29800AC9D9979BCA924 /* NibLoadable.swift in Sources */, + 92011EB8586C8B1B22A120645279393C /* NibOwnerLoadable.swift in Sources */, + 91A58AD15F502DD817DD676E14AD6B66 /* Reusable-dummy.m in Sources */, + D5F9061787AB4384454FCA48D7AB57DC /* Reusable.swift in Sources */, + B93EF875C805A918FBD7B24BBFBA6BCA /* StoryboardBased.swift in Sources */, + FC4EEBAAA63FAD3189D087F6F3B65571 /* StoryboardSceneBased.swift in Sources */, + AC30A0FE40768E5B7544D80ABD80DC4A /* UICollectionView+Reusable.swift in Sources */, + 9C2B0CEFD6D46C1D99ADE9F415FD545D /* UITableView+Reusable.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; DBE06D284B54E460C37D8DA088C4E3B0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1846,71 +2305,104 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - EAD51BCA862804A3EA7FA1EB27C24ECD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 893E3541D0995F326A31604B5C75BC13 /* Pods-Domain-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 01449406F85EF3C4E292C69AA2595F37 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = XCGLogger; + target = E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */; + targetProxy = ACE64CF5955B48235FB7CDEBD30472E9 /* PBXContainerItemProxy */; }; - F57C73B72ABD907B229D623FB8C9F94E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ACF7436162329C7EF8E4663269B532CF /* Pods-DomainTests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + 03FE5FF5C64A19C41E47D2BA1EC04D90 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = XCGLogger; + target = E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */; + targetProxy = C8276A809B5E608592A1291D9A5398CB /* PBXContainerItemProxy */; }; - FB69A6A95ABA7B10120CB813663CBCD6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 984450956C888C369434949AAD0AC352 /* Pods-CoreTests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + 1D505DB398F14ADB7CA381ED6B9B3A66 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = XCGLogger; + target = E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */; + targetProxy = 2EFD9F462448292770D150DE09FC522D /* PBXContainerItemProxy */; }; - FD5F5A187862F757C82BEDAB6B05F5B9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 65004652CBB204F661DE8075FE1A1E45 /* NibLoadable.swift in Sources */, - EC6E044374C790A0ED8C9550FBAB822D /* NibOwnerLoadable.swift in Sources */, - 23CCC46D32FA61F55B7D6106DCF2DC7E /* Reusable-dummy.m in Sources */, - 94FEC07DCA6CEF2C01116CFBBDCD0ACA /* Reusable.swift in Sources */, - CAC5D4482A80F8E428F50D4EF0F099F3 /* StoryboardBased.swift in Sources */, - 8DB8E1AE2EC0B6EDC06490FA77765C31 /* StoryboardSceneBased.swift in Sources */, - 0F1907D680315744BE454E4C7FE3D5FE /* UICollectionView+Reusable.swift in Sources */, - 8250CDE03A6A5DC3F2398DCB77C0B03C /* UITableView+Reusable.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + 1FD15D573076F7A18AECF3C40CB4DF08 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ObjcExceptionBridging; + target = 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */; + targetProxy = AC459263CF006AD5D39B049EB1FAEF51 /* PBXContainerItemProxy */; }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 1B133210D560F9B97CBB3D1D5DDAE992 /* PBXTargetDependency */ = { + 28E41E63CDD5D6CA91966CCECAB9B2B8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Kingfisher; - target = 6F712943B3C5592E82604940D11CE08A /* Kingfisher */; - targetProxy = 06002BF5A1B0497928DF57B62E5BAA27 /* PBXContainerItemProxy */; + name = ObjcExceptionBridging; + target = 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */; + targetProxy = CB9B0619F9402FEEADFC59DE77E3B540 /* PBXContainerItemProxy */; }; - 3FE352BBFACDD62795EEB50A1EC325EC /* PBXTargetDependency */ = { + 3990F2E2F00B1FC74C6A2CEE9BC403B9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NetClient; - target = 69EAE86324AC6EEB091FB936BCE91285 /* NetClient */; - targetProxy = 97E81FEBF4AADB74AEDBEDAEB67FDEF7 /* PBXContainerItemProxy */; + name = ObjcExceptionBridging; + target = 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */; + targetProxy = E40EC53EBBF106E04DC10C48B485B891 /* PBXContainerItemProxy */; }; - 51BDB7C0AE9130B54388D52F2B6B6B61 /* PBXTargetDependency */ = { + 39911DB3263ADA625D527AF01174CF7F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Kommander; target = 22315F6812B77D86273C98095D3BBC79 /* Kommander */; - targetProxy = 829121BBE44FE0A2DCFD278986E2528E /* PBXContainerItemProxy */; + targetProxy = 8685FF2EF53DA0004A38266B0659E9C8 /* PBXContainerItemProxy */; }; - 8797EDB1EFC2A43FCA8972C1904E30F3 /* PBXTargetDependency */ = { + 442E257D262579286588EB2F8915A603 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Reusable; - target = 1D84C81FAF98601CB305AD05624E3AD6 /* Reusable */; - targetProxy = 0D562A401B252DA1355D99E77F66EB7C /* PBXContainerItemProxy */; + name = NetClient; + target = 69EAE86324AC6EEB091FB936BCE91285 /* NetClient */; + targetProxy = 4E55A98804B1DD47081CA7E8685E2620 /* PBXContainerItemProxy */; + }; + 46E93239627BC18333DFE97F7FA935E5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ObjcExceptionBridging; + target = 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */; + targetProxy = CF94DCE4512ED688EC6BC3B4BAA60F8F /* PBXContainerItemProxy */; + }; + 5307548803EDFEF7B0CF1C69F1024B0A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ObjcExceptionBridging; + target = 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */; + targetProxy = 372326D3A382B3BAEDD941A5AF707C7C /* PBXContainerItemProxy */; + }; + 7E8238E765879D709F197BDFB10486A2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = XCGLogger; + target = E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */; + targetProxy = 4843C92ED1F848A138DD920820363E89 /* PBXContainerItemProxy */; + }; + 8D9297F485E8BDAF99DAC99713D4C71B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = XCGLogger; + target = E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */; + targetProxy = F565716D7F4810091B0221BA53D18D3A /* PBXContainerItemProxy */; + }; + A02FA6EA6C33C8B44D8127075BA86FDC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NetClient; + target = 69EAE86324AC6EEB091FB936BCE91285 /* NetClient */; + targetProxy = 848AF9343B6AE663D8776E5622B028E5 /* PBXContainerItemProxy */; + }; + A0DFD94B61F5FC77B0CA115EDC5FDFC2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NetClient; + target = 69EAE86324AC6EEB091FB936BCE91285 /* NetClient */; + targetProxy = 4B213DE4F54DDB5A296767708948F303 /* PBXContainerItemProxy */; + }; + A4D032752C69769F95BA7697B4173D18 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ObjcExceptionBridging; + target = 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */; + targetProxy = 6C3C8B5AFE493487D01792451001D459 /* PBXContainerItemProxy */; + }; + A83911B183C24C0B75646B2EED24C66F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = XCGLogger; + target = E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */; + targetProxy = EE19F9DF99633A80B3322D454ED29066 /* PBXContainerItemProxy */; }; ACB34E8D41B25FEFBCFF43E757089E2C /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -1918,30 +2410,48 @@ target = 2F9219DC3436F4A71BD490ADED213426 /* Cucumberish-GherkinLanguages */; targetProxy = 05BD26E8EC9291BAE46B0AAE44F26580 /* PBXContainerItemProxy */; }; - CC684BC81C480155C5DBB6CA8020ABCF /* PBXTargetDependency */ = { + B6C65CD4DADCADAF3B93117D375E4D3E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = XCGLogger; + target = E6AE18E7BA96DB0599AEB8F02C885BBC /* XCGLogger */; + targetProxy = 1143DE0DB010785B69951F29E80FA24F /* PBXContainerItemProxy */; + }; + C8E28CA91D77204C59F7277F7FE1C0A5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Cucumberish; target = 68BBA27FABB4188F082A1A9FDD1A9B37 /* Cucumberish */; - targetProxy = B610C7B701A228A5315CCC0C929E2074 /* PBXContainerItemProxy */; + targetProxy = 1DFB29C13222DADAC7B04091B8F96635 /* PBXContainerItemProxy */; }; - CFF83E873D334B76945D6A4CD832FBB1 /* PBXTargetDependency */ = { + DD43363EFED3C9328D16370D048D8C85 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NetClient; - target = 69EAE86324AC6EEB091FB936BCE91285 /* NetClient */; - targetProxy = 98715BB1D2B0B820BA5A831DB5AE1A28 /* PBXContainerItemProxy */; + name = ObjcExceptionBridging; + target = 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */; + targetProxy = 36C1D0C2F07E4156A379E8A2167C08A3 /* PBXContainerItemProxy */; }; - D2EE8BE0B31E21886830621A01A3D872 /* PBXTargetDependency */ = { + DF4E583E68B90CA76B3D39935F4EAFE8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NetClient; - target = 69EAE86324AC6EEB091FB936BCE91285 /* NetClient */; - targetProxy = 7F39C1CD29E6DE38C6CF04253419EAE3 /* PBXContainerItemProxy */; + name = Kingfisher; + target = 6F712943B3C5592E82604940D11CE08A /* Kingfisher */; + targetProxy = 20DD979D927B37CBB1A019943483B8C1 /* PBXContainerItemProxy */; + }; + E48B305B398C982EBE73581E2653130D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Reusable; + target = 3FDA40B8508AD3C18A8D7F9AA00C680E /* Reusable */; + targetProxy = 6BEF2258BA5ED61DC55E2474E76CD6EF /* PBXContainerItemProxy */; + }; + E98C4BB9E532E63179BBA607CBE5E1D0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ObjcExceptionBridging; + target = 5B0B5B8A1476F8AA333AA7B53F47E96B /* ObjcExceptionBridging */; + targetProxy = A77B4A39844DF54B62DEA4088C519960 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 074A7D80B43571CB047D449796AD1FD4 /* Debug */ = { + 0C56450175B0324F3DA3E6F8F4A11AC6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A582FAC173418DC981904BB68C1A3678 /* Reusable.xcconfig */; + baseConfigurationReference = 18AEA03BD4222257CC534EABD98C31A0 /* XCGLogger.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1952,13 +2462,13 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Reusable/Reusable-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Reusable/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/XCGLogger/XCGLogger-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/XCGLogger/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Reusable/Reusable.modulemap"; - PRODUCT_NAME = Reusable; + MODULEMAP_FILE = "Target Support Files/XCGLogger/XCGLogger.modulemap"; + PRODUCT_NAME = XCGLogger; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -1970,40 +2480,6 @@ }; name = Debug; }; - 0CCF946016322756CC81157CBC94CF9E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D5BEA86FDD966AAAA1566BB2B18B60C0 /* Pods-CoreTests.debug.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-CoreTests/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-CoreTests/Pods-CoreTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_CoreTests; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 12C4B864767C59600DBFA238F1E2F8BC /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2055,14 +2531,13 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; - 1781EC243954445A05998F0B6F5D8C5B /* Release */ = { + 1C66E7C3DFCAD8C6D4BCF2C7B2128A1C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 882C797FFD93A8E21656C9033972F2B8 /* Pods-CoreTests.release.xcconfig */; + baseConfigurationReference = 6B5B5164932F7FD9F1088A46959C1E76 /* ObjcExceptionBridging.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2073,20 +2548,47 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-CoreTests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ObjcExceptionBridging/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-CoreTests/Pods-CoreTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_CoreTests; + MODULEMAP_FILE = "Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.modulemap"; + PRODUCT_NAME = ObjcExceptionBridging; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 1E3644454530B7DDB8A3C0FAEF024A04 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6B5B5164932F7FD9F1088A46959C1E76 /* ObjcExceptionBridging.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ObjcExceptionBridging/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.modulemap"; + PRODUCT_NAME = ObjcExceptionBridging; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2096,7 +2598,7 @@ }; 1EAED51947C12C957B7F6111A53317A4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 51157C4588E51B385A632144E785C987 /* Cucumberish.xcconfig */; + baseConfigurationReference = B034BC3F76A7EBBC1AF87C4DB16B6E3A /* Cucumberish.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2127,7 +2629,7 @@ }; 2E26123081A1ABEC0EC77DA94F9AD9A6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 51157C4588E51B385A632144E785C987 /* Cucumberish.xcconfig */; + baseConfigurationReference = B034BC3F76A7EBBC1AF87C4DB16B6E3A /* Cucumberish.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2155,9 +2657,9 @@ }; name = Debug; }; - 3AD858EB880E365F473FB9F17B864F8E /* Release */ = { + 3517B6CC528D94EC9E33C4A2E05FB287 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CFFDE271E0656856D9E780441AC19596 /* Pods-DomainTests.release.xcconfig */; + baseConfigurationReference = 799AB5BC0DA35F7EB256BD820DD2EBB8 /* Pods-Archit.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2168,19 +2670,20 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-DomainTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Archit/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-DomainTests/Pods-DomainTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-Archit/Pods-Archit.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_DomainTests; + PRODUCT_NAME = Pods_Archit; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2188,9 +2691,9 @@ }; name = Release; }; - 44914D827228A4928DD2250EDC85BAC9 /* Release */ = { + 37B44FD87D4D504D7DAF373672EBD215 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A582FAC173418DC981904BB68C1A3678 /* Reusable.xcconfig */; + baseConfigurationReference = 16A6173FEEE586769F692FDE36C7EDA4 /* Pods-ArchitTests.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2201,28 +2704,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Reusable/Reusable-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Reusable/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ArchitTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Reusable/Reusable.modulemap"; - PRODUCT_NAME = Reusable; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-ArchitTests/Pods-ArchitTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_ArchitTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; 4963081614901E304B3623C38AE15583 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 592763DC00332AD12F740470519C18CD /* Kommander.xcconfig */; + baseConfigurationReference = 383B0EDA3F08D7963858E04777179246 /* Kommander.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2253,7 +2758,7 @@ }; 4CF9C4742EFC714CCF1EA4CFD4F68752 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 592763DC00332AD12F740470519C18CD /* Kommander.xcconfig */; + baseConfigurationReference = 383B0EDA3F08D7963858E04777179246 /* Kommander.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2285,7 +2790,7 @@ }; 576C583E88A92DC2279EB3BFC2CA8A6C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 287DB8F94B0DADDFB5E439D75B2DDD3B /* Kingfisher.xcconfig */; + baseConfigurationReference = 24CD43CB964E9343A1C3F27D9551E3FE /* Kingfisher.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2376,7 +2881,7 @@ }; 5E899639BF2E9C6E305070EE304AD7C1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1CFA490007E22D006CC2794184790C17 /* NetClient.xcconfig */; + baseConfigurationReference = 809806B63801D68CB331823C47DCCB0B /* NetClient.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2405,9 +2910,9 @@ }; name = Debug; }; - 70817C35A92570DF3B2A842CB3D8FB8F /* Release */ = { + 6492175056A767094F85A2FB3A89DDFC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 83C6EF3D403F166BEF9373C6707EDAC2 /* Pods-Core.release.xcconfig */; + baseConfigurationReference = 28B3A7207EE2C825AA396316726E2203 /* Pods-Domain.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2418,30 +2923,64 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Core/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Domain/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Core/Pods-Core.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-Domain/Pods-Domain.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_Core; + PRODUCT_NAME = Pods_Domain; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; + }; + 7224D0E21DC406BC22417CFED7E82F59 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D5BEA86FDD966AAAA1566BB2B18B60C0 /* Pods-CoreTests.debug.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-CoreTests/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-CoreTests/Pods-CoreTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_CoreTests; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; }; 75118BFB71D48090AACA47913F2CFBD8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1CFA490007E22D006CC2794184790C17 /* NetClient.xcconfig */; + baseConfigurationReference = 809806B63801D68CB331823C47DCCB0B /* NetClient.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2471,9 +3010,9 @@ }; name = Release; }; - 85F6C79863A720F25F9DDC2FB073DAF2 /* Release */ = { + 7EF6D6F9969B2A0C2C5097B9A51FEB4A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD27C15D49A723F9D2F550322C928DF9 /* Pods-ArchitTests.release.xcconfig */; + baseConfigurationReference = 6E031FA5BCC86339320E4F120AF591FB /* Reusable.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2484,19 +3023,52 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ArchitTests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Reusable/Reusable-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Reusable/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Reusable/Reusable.modulemap"; + PRODUCT_NAME = Reusable; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 84E2F904DD24CFAF56CE6BC53760D76C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CFFDE271E0656856D9E780441AC19596 /* Pods-DomainTests.release.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-DomainTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ArchitTests/Pods-ArchitTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-DomainTests/Pods-DomainTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_ArchitTests; + PRODUCT_NAME = Pods_DomainTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2506,7 +3078,7 @@ }; 8D3D7C1BE4908EEAD242F8EB5505CF87 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 51157C4588E51B385A632144E785C987 /* Cucumberish.xcconfig */; + baseConfigurationReference = B034BC3F76A7EBBC1AF87C4DB16B6E3A /* Cucumberish.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Cucumberish"; @@ -2522,7 +3094,7 @@ }; 909ED5FEA9B70B10C5CA37DF1D225490 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 51157C4588E51B385A632144E785C987 /* Cucumberish.xcconfig */; + baseConfigurationReference = B034BC3F76A7EBBC1AF87C4DB16B6E3A /* Cucumberish.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Cucumberish"; @@ -2536,9 +3108,9 @@ }; name = Debug; }; - 939BD4797131E032D4BB206F95E3F508 /* Debug */ = { + 9533E307B101DD7AC5A1C8BADEBFEF81 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 16A6173FEEE586769F692FDE36C7EDA4 /* Pods-ArchitTests.debug.xcconfig */; + baseConfigurationReference = 070B33C739C487B3842A891D416B5958 /* Pods-DomainTests.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2549,28 +3121,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ArchitTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-DomainTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ArchitTests/Pods-ArchitTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-DomainTests/Pods-DomainTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_ArchitTests; + PRODUCT_NAME = Pods_DomainTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 96B6878D6C9047589B8F516BAFCDDDA3 /* Debug */ = { + A1D03FCBE868AD2F6595DF35297A2B5B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 28B3A7207EE2C825AA396316726E2203 /* Pods-Domain.debug.xcconfig */; + baseConfigurationReference = 89F240BC570AC47F0FC178D62760F0A5 /* Pods-Domain.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2594,15 +3168,17 @@ PRODUCT_NAME = Pods_Domain; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - A63A0E62CDC1F3A2883F3B479477C61F /* Debug */ = { + A6F2931FE8AB6972564D5076EC0FEB4F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3809D5920B405BB206F4D732E79EDEFD /* Pods-ArchitUITests.debug.xcconfig */; + baseConfigurationReference = 6E031FA5BCC86339320E4F120AF591FB /* Reusable.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2613,28 +3189,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ArchitUITests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Reusable/Reusable-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Reusable/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_ArchitUITests; + MODULEMAP_FILE = "Target Support Files/Reusable/Reusable.modulemap"; + PRODUCT_NAME = Reusable; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B929DC6E50E3D00E98F374FDE6B07FB0 /* Debug */ = { + A838CED686586CE0116E7A3B651CCAD7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 070B33C739C487B3842A891D416B5958 /* Pods-DomainTests.debug.xcconfig */; + baseConfigurationReference = C1D1C5E8351C5299DF5A7BFBBAB13DEA /* Pods-Core.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2645,28 +3220,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-DomainTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Core/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-DomainTests/Pods-DomainTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-Core/Pods-Core.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_DomainTests; + PRODUCT_NAME = Pods_Core; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - BAE6E65C2FC5D236B3EDBD781E657654 /* Release */ = { + C595F3119132BBA9FECF053686DD7C1B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89F240BC570AC47F0FC178D62760F0A5 /* Pods-Domain.release.xcconfig */; + baseConfigurationReference = 2D582B86547532E026BDF51F54D2008F /* Pods-Archit.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2677,29 +3254,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Domain/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Archit/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Domain/Pods-Domain.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-Archit/Pods-Archit.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_Domain; + PRODUCT_NAME = Pods_Archit; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - D4D2A78CB286E991285A05F414CB0963 /* Release */ = { + D0764333EB800B829D444C6CD6EFC775 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0B47BEE2C81FF9656D8D4FFA92A63E0B /* Pods-ArchitUITests.release.xcconfig */; + baseConfigurationReference = 18AEA03BD4222257CC534EABD98C31A0 /* XCGLogger.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2710,19 +3288,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-ArchitUITests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/XCGLogger/XCGLogger-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/XCGLogger/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_ArchitUITests; + MODULEMAP_FILE = "Target Support Files/XCGLogger/XCGLogger.modulemap"; + PRODUCT_NAME = XCGLogger; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2730,9 +3307,9 @@ }; name = Release; }; - E254C809583B06042F40393FEDF36769 /* Debug */ = { + D12930DAAFDCBB229A6893AE9AA8CD1B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2D582B86547532E026BDF51F54D2008F /* Pods-Archit.debug.xcconfig */; + baseConfigurationReference = 0B47BEE2C81FF9656D8D4FFA92A63E0B /* Pods-ArchitUITests.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2743,30 +3320,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Archit/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ArchitUITests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Archit/Pods-Archit.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_Archit; + PRODUCT_NAME = Pods_ArchitUITests; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; E8652F35BF322A3957D0F62338910B79 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 287DB8F94B0DADDFB5E439D75B2DDD3B /* Kingfisher.xcconfig */; + baseConfigurationReference = 24CD43CB964E9343A1C3F27D9551E3FE /* Kingfisher.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2796,9 +3373,9 @@ }; name = Release; }; - FA5B64F4C35ACE220B346B650969901A /* Debug */ = { + EF640AF38A4BED81061535048813398C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C1D1C5E8351C5299DF5A7BFBBAB13DEA /* Pods-Core.debug.xcconfig */; + baseConfigurationReference = 882C797FFD93A8E21656C9033972F2B8 /* Pods-CoreTests.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2809,17 +3386,51 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Core/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-CoreTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Core/Pods-Core.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-CoreTests/Pods-CoreTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_Core; + PRODUCT_NAME = Pods_CoreTests; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + F787635D3CAB936E50BD734BBED2A6E7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3809D5920B405BB206F4D732E79EDEFD /* Pods-ArchitUITests.debug.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-ArchitUITests/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_ArchitUITests; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; @@ -2830,9 +3441,9 @@ }; name = Debug; }; - FC0630B8F08E5276388D9424EFEE4030 /* Release */ = { + F972945BA15643BD766C22C2C06FAEF8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 799AB5BC0DA35F7EB256BD820DD2EBB8 /* Pods-Archit.release.xcconfig */; + baseConfigurationReference = AD27C15D49A723F9D2F550322C928DF9 /* Pods-ArchitTests.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2843,17 +3454,51 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Archit/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ArchitTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Archit/Pods-Archit.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ArchitTests/Pods-ArchitTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_Archit; + PRODUCT_NAME = Pods_ArchitTests; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + FDF824587EE91623B60970679F9AA8D7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 83C6EF3D403F166BEF9373C6707EDAC2 /* Pods-Core.release.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Core/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Core/Pods-Core.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_Core; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -2867,15 +3512,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0463F8387E61D2DAA52011D42CB62C93 /* Build configuration list for PBXNativeTarget "Pods-CoreTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0CCF946016322756CC81157CBC94CF9E /* Debug */, - 1781EC243954445A05998F0B6F5D8C5B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 2B896BECE71D3981EF3DAAABD5A50A3E /* Build configuration list for PBXNativeTarget "NetClient" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2903,29 +3539,56 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 32D679947AB949218590AD69FC1C65AD /* Build configuration list for PBXNativeTarget "Reusable" */ = { + 4598CC59AFF3A3C3F087827EBA6ABECF /* Build configuration list for PBXNativeTarget "Cucumberish-GherkinLanguages" */ = { isa = XCConfigurationList; buildConfigurations = ( - 074A7D80B43571CB047D449796AD1FD4 /* Debug */, - 44914D827228A4928DD2250EDC85BAC9 /* Release */, + 909ED5FEA9B70B10C5CA37DF1D225490 /* Debug */, + 8D3D7C1BE4908EEAD242F8EB5505CF87 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4598CC59AFF3A3C3F087827EBA6ABECF /* Build configuration list for PBXNativeTarget "Cucumberish-GherkinLanguages" */ = { + 698A860BBE61325637E5DA22EA82E91C /* Build configuration list for PBXNativeTarget "Pods-Core" */ = { isa = XCConfigurationList; buildConfigurations = ( - 909ED5FEA9B70B10C5CA37DF1D225490 /* Debug */, - 8D3D7C1BE4908EEAD242F8EB5505CF87 /* Release */, + A838CED686586CE0116E7A3B651CCAD7 /* Debug */, + FDF824587EE91623B60970679F9AA8D7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7791FE1A80B23D31D2F6110B51CEED8C /* Build configuration list for PBXNativeTarget "Pods-ArchitUITests" */ = { + 75A7B02EED270EC751EF0CE987C63D66 /* Build configuration list for PBXNativeTarget "Pods-ArchitTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - A63A0E62CDC1F3A2883F3B479477C61F /* Debug */, - D4D2A78CB286E991285A05F414CB0963 /* Release */, + 37B44FD87D4D504D7DAF373672EBD215 /* Debug */, + F972945BA15643BD766C22C2C06FAEF8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7B172032A8DFBB0394B7B8216544082B /* Build configuration list for PBXNativeTarget "Pods-Archit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C595F3119132BBA9FECF053686DD7C1B /* Debug */, + 3517B6CC528D94EC9E33C4A2E05FB287 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 89F02D0314344D9D9BFCE20C7C90331C /* Build configuration list for PBXNativeTarget "Pods-DomainTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9533E307B101DD7AC5A1C8BADEBFEF81 /* Debug */, + 84E2F904DD24CFAF56CE6BC53760D76C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8A6CC7BA04335E320A3352B0A7588343 /* Build configuration list for PBXNativeTarget "Pods-Domain" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6492175056A767094F85A2FB3A89DDFC /* Debug */, + A1D03FCBE868AD2F6595DF35297A2B5B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -2939,56 +3602,56 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9302AF5BCD3F1B2A8B5BA8FDCC9B0F60 /* Build configuration list for PBXNativeTarget "Pods-Archit" */ = { + 9F3F5058E79FDEB47CEC7DE1C92B5078 /* Build configuration list for PBXNativeTarget "Pods-CoreTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - E254C809583B06042F40393FEDF36769 /* Debug */, - FC0630B8F08E5276388D9424EFEE4030 /* Release */, + 7224D0E21DC406BC22417CFED7E82F59 /* Debug */, + EF640AF38A4BED81061535048813398C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B6055929B8320C6017347ABFC1CA7E36 /* Build configuration list for PBXNativeTarget "Pods-DomainTests" */ = { + B2DC16467E2171FFFCF97A3D189DBAB3 /* Build configuration list for PBXNativeTarget "Pods-ArchitUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - B929DC6E50E3D00E98F374FDE6B07FB0 /* Debug */, - 3AD858EB880E365F473FB9F17B864F8E /* Release */, + F787635D3CAB936E50BD734BBED2A6E7 /* Debug */, + D12930DAAFDCBB229A6893AE9AA8CD1B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BBE4A47CF2191E5437B0D29044761CFA /* Build configuration list for PBXNativeTarget "Pods-Core" */ = { + C4195B567D4F3F2206FEDC07DA2C6626 /* Build configuration list for PBXNativeTarget "ObjcExceptionBridging" */ = { isa = XCConfigurationList; buildConfigurations = ( - FA5B64F4C35ACE220B346B650969901A /* Debug */, - 70817C35A92570DF3B2A842CB3D8FB8F /* Release */, + 1C66E7C3DFCAD8C6D4BCF2C7B2128A1C /* Debug */, + 1E3644454530B7DDB8A3C0FAEF024A04 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CD058521C7433D2BEC19AFDA890177C9 /* Build configuration list for PBXNativeTarget "Cucumberish" */ = { + CCCCA0DABCA1114155872D150AACE5A2 /* Build configuration list for PBXNativeTarget "Reusable" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2E26123081A1ABEC0EC77DA94F9AD9A6 /* Debug */, - 1EAED51947C12C957B7F6111A53317A4 /* Release */, + A6F2931FE8AB6972564D5076EC0FEB4F /* Debug */, + 7EF6D6F9969B2A0C2C5097B9A51FEB4A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E2414923F43BCF250651C9FC1D30469B /* Build configuration list for PBXNativeTarget "Pods-Domain" */ = { + CD058521C7433D2BEC19AFDA890177C9 /* Build configuration list for PBXNativeTarget "Cucumberish" */ = { isa = XCConfigurationList; buildConfigurations = ( - 96B6878D6C9047589B8F516BAFCDDDA3 /* Debug */, - BAE6E65C2FC5D236B3EDBD781E657654 /* Release */, + 2E26123081A1ABEC0EC77DA94F9AD9A6 /* Debug */, + 1EAED51947C12C957B7F6111A53317A4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FAB624B20D6EB2DBFFB710606CBF1F9A /* Build configuration list for PBXNativeTarget "Pods-ArchitTests" */ = { + E8581228C0892567BBAE53DDB6D925EC /* Build configuration list for PBXNativeTarget "XCGLogger" */ = { isa = XCConfigurationList; buildConfigurations = ( - 939BD4797131E032D4BB206F95E3F508 /* Debug */, - 85F6C79863A720F25F9DDC2FB073DAF2 /* Release */, + 0C56450175B0324F3DA3E6F8F4A11AC6 /* Debug */, + D0764333EB800B829D444C6CD6EFC775 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/ObjcExceptionBridging/Info.plist b/Pods/Target Support Files/ObjcExceptionBridging/Info.plist new file mode 100644 index 0000000..3c175b6 --- /dev/null +++ b/Pods/Target Support Files/ObjcExceptionBridging/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-dummy.m b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-dummy.m new file mode 100644 index 0000000..81536fb --- /dev/null +++ b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_ObjcExceptionBridging : NSObject +@end +@implementation PodsDummy_ObjcExceptionBridging +@end diff --git a/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-prefix.pch b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-umbrella.h b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-umbrella.h new file mode 100644 index 0000000..f7feb37 --- /dev/null +++ b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging-umbrella.h @@ -0,0 +1,17 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "ObjcExceptionBridging.h" + +FOUNDATION_EXPORT double ObjcExceptionBridgingVersionNumber; +FOUNDATION_EXPORT const unsigned char ObjcExceptionBridgingVersionString[]; + diff --git a/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.modulemap b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.modulemap new file mode 100644 index 0000000..e43fe8c --- /dev/null +++ b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.modulemap @@ -0,0 +1,6 @@ +framework module ObjcExceptionBridging { + umbrella header "ObjcExceptionBridging-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.xcconfig b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.xcconfig new file mode 100644 index 0000000..e45175f --- /dev/null +++ b/Pods/Target Support Files/ObjcExceptionBridging/ObjcExceptionBridging.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/ObjcExceptionBridging +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/Pods-Archit/Pods-Archit-acknowledgements.markdown b/Pods/Target Support Files/Pods-Archit/Pods-Archit-acknowledgements.markdown index 4db58e2..d5f43a5 100644 --- a/Pods/Target Support Files/Pods-Archit/Pods-Archit-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-Archit/Pods-Archit-acknowledgements.markdown @@ -51,6 +51,31 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## ObjcExceptionBridging + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## Reusable The MIT License (MIT) @@ -101,6 +126,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## XCGLogger + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## NetClient MIT License diff --git a/Pods/Target Support Files/Pods-Archit/Pods-Archit-acknowledgements.plist b/Pods/Target Support Files/Pods-Archit/Pods-Archit-acknowledgements.plist index e1ec348..db20f09 100644 --- a/Pods/Target Support Files/Pods-Archit/Pods-Archit-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-Archit/Pods-Archit-acknowledgements.plist @@ -78,6 +78,37 @@ SOFTWARE.
FooterText The MIT License (MIT) +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + ObjcExceptionBridging + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + Copyright (c) 2016 AliSoftware Permission is hereby granted, free of charge, to any person obtaining a copy @@ -136,6 +167,37 @@ SOFTWARE. Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + XCGLogger + Type + PSGroupSpecifier + FooterText MIT License diff --git a/Pods/Target Support Files/Pods-Archit/Pods-Archit-frameworks.sh b/Pods/Target Support Files/Pods-Archit/Pods-Archit-frameworks.sh index da24833..2ac1d04 100755 --- a/Pods/Target Support Files/Pods-Archit/Pods-Archit-frameworks.sh +++ b/Pods/Target Support Files/Pods-Archit/Pods-Archit-frameworks.sh @@ -104,13 +104,17 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework" install_framework "${BUILT_PRODUCTS_DIR}/Kommander/Kommander.framework" + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" install_framework "${BUILT_PRODUCTS_DIR}/Reusable/Reusable.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" install_framework "${BUILT_PRODUCTS_DIR}/NetClient/Net.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework" install_framework "${BUILT_PRODUCTS_DIR}/Kommander/Kommander.framework" + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" install_framework "${BUILT_PRODUCTS_DIR}/Reusable/Reusable.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" install_framework "${BUILT_PRODUCTS_DIR}/NetClient/Net.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then diff --git a/Pods/Target Support Files/Pods-Archit/Pods-Archit.debug.xcconfig b/Pods/Target Support Files/Pods-Archit/Pods-Archit.debug.xcconfig index 6ae107d..68a7b6b 100644 --- a/Pods/Target Support Files/Pods-Archit/Pods-Archit.debug.xcconfig +++ b/Pods/Target Support Files/Pods-Archit/Pods-Archit.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Kingfisher" "$PODS_CONFIGURATION_BUILD_DIR/Kommander" "$PODS_CONFIGURATION_BUILD_DIR/NetClient" "$PODS_CONFIGURATION_BUILD_DIR/Reusable" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Kingfisher" "$PODS_CONFIGURATION_BUILD_DIR/Kommander" "$PODS_CONFIGURATION_BUILD_DIR/NetClient" "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/Reusable" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kingfisher/Kingfisher.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kommander/Kommander.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Reusable/Reusable.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "Kingfisher" -framework "Kommander" -framework "Net" -framework "Reusable" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kingfisher/Kingfisher.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kommander/Kommander.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Reusable/Reusable.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "Kingfisher" -framework "Kommander" -framework "Net" -framework "ObjcExceptionBridging" -framework "Reusable" -framework "XCGLogger" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-Archit/Pods-Archit.release.xcconfig b/Pods/Target Support Files/Pods-Archit/Pods-Archit.release.xcconfig index 6ae107d..68a7b6b 100644 --- a/Pods/Target Support Files/Pods-Archit/Pods-Archit.release.xcconfig +++ b/Pods/Target Support Files/Pods-Archit/Pods-Archit.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Kingfisher" "$PODS_CONFIGURATION_BUILD_DIR/Kommander" "$PODS_CONFIGURATION_BUILD_DIR/NetClient" "$PODS_CONFIGURATION_BUILD_DIR/Reusable" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Kingfisher" "$PODS_CONFIGURATION_BUILD_DIR/Kommander" "$PODS_CONFIGURATION_BUILD_DIR/NetClient" "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/Reusable" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kingfisher/Kingfisher.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kommander/Kommander.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Reusable/Reusable.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "Kingfisher" -framework "Kommander" -framework "Net" -framework "Reusable" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kingfisher/Kingfisher.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kommander/Kommander.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Reusable/Reusable.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "Kingfisher" -framework "Kommander" -framework "Net" -framework "ObjcExceptionBridging" -framework "Reusable" -framework "XCGLogger" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-acknowledgements.markdown index d8c5fed..54b72cf 100644 --- a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-acknowledgements.markdown @@ -1,6 +1,31 @@ # Acknowledgements This application makes use of the following third party libraries: +## ObjcExceptionBridging + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## SwiftLint The MIT License (MIT) @@ -25,4 +50,29 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## XCGLogger + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-acknowledgements.plist b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-acknowledgements.plist index 88fb231..f4ecc0e 100644 --- a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-acknowledgements.plist @@ -16,6 +16,37 @@ FooterText The MIT License (MIT) +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + ObjcExceptionBridging + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + Copyright (c) 2015 Realm Inc. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -43,6 +74,37 @@ SOFTWARE. Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + XCGLogger + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-frameworks.sh b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-frameworks.sh index 88dd537..4dd1bd8 100755 --- a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests-frameworks.sh @@ -100,6 +100,15 @@ strip_invalid_archs() { fi } + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" +fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi diff --git a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests.debug.xcconfig b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests.debug.xcconfig index 7097e8b..96ea3d9 100644 --- a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests.debug.xcconfig @@ -1,7 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "ObjcExceptionBridging" -framework "XCGLogger" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests.release.xcconfig b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests.release.xcconfig index 7097e8b..96ea3d9 100644 --- a/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-ArchitTests/Pods-ArchitTests.release.xcconfig @@ -1,7 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "ObjcExceptionBridging" -framework "XCGLogger" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-acknowledgements.markdown b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-acknowledgements.markdown index 6d08da5..6442861 100644 --- a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-acknowledgements.markdown @@ -1,6 +1,31 @@ # Acknowledgements This application makes use of the following third party libraries: +## ObjcExceptionBridging + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## SwiftLint The MIT License (MIT) @@ -26,6 +51,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## XCGLogger + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## Cucumberish Copyright (c) 2016 Ahmed Ali (https://github.com/Ahmed-Ali) diff --git a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-acknowledgements.plist b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-acknowledgements.plist index 300de9b..eaf7b02 100644 --- a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-acknowledgements.plist @@ -16,6 +16,37 @@ FooterText The MIT License (MIT) +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + ObjcExceptionBridging + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + Copyright (c) 2015 Realm Inc. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -43,6 +74,37 @@ SOFTWARE. Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + XCGLogger + Type + PSGroupSpecifier + FooterText Copyright (c) 2016 Ahmed Ali (https://github.com/Ahmed-Ali) diff --git a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-frameworks.sh b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-frameworks.sh index 1a62e21..b05366f 100755 --- a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-frameworks.sh +++ b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests-frameworks.sh @@ -102,9 +102,13 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" install_framework "${BUILT_PRODUCTS_DIR}/Cucumberish/Cucumberish.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" install_framework "${BUILT_PRODUCTS_DIR}/Cucumberish/Cucumberish.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then diff --git a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.debug.xcconfig b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.debug.xcconfig index 584ae91..93307a8 100644 --- a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.debug.xcconfig @@ -1,9 +1,11 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Cucumberish" +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Cucumberish" "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 SRC_ROOT=@\"$(SRCROOT)\" HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Cucumberish/Cucumberish.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "Cucumberish" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Cucumberish/Cucumberish.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "Cucumberish" -framework "ObjcExceptionBridging" -framework "XCGLogger" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.release.xcconfig b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.release.xcconfig index 584ae91..93307a8 100644 --- a/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.release.xcconfig +++ b/Pods/Target Support Files/Pods-ArchitUITests/Pods-ArchitUITests.release.xcconfig @@ -1,9 +1,11 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Cucumberish" +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Cucumberish" "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 SRC_ROOT=@\"$(SRCROOT)\" HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Cucumberish/Cucumberish.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "Cucumberish" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Cucumberish/Cucumberish.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "Cucumberish" -framework "ObjcExceptionBridging" -framework "XCGLogger" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-Core/Pods-Core-acknowledgements.markdown b/Pods/Target Support Files/Pods-Core/Pods-Core-acknowledgements.markdown index 8dfaf70..97b74f9 100644 --- a/Pods/Target Support Files/Pods-Core/Pods-Core-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-Core/Pods-Core-acknowledgements.markdown @@ -1,6 +1,31 @@ # Acknowledgements This application makes use of the following third party libraries: +## ObjcExceptionBridging + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## SwiftLint The MIT License (MIT) @@ -26,6 +51,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## XCGLogger + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## NetClient MIT License diff --git a/Pods/Target Support Files/Pods-Core/Pods-Core-acknowledgements.plist b/Pods/Target Support Files/Pods-Core/Pods-Core-acknowledgements.plist index 3264c3c..ea2232f 100644 --- a/Pods/Target Support Files/Pods-Core/Pods-Core-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-Core/Pods-Core-acknowledgements.plist @@ -16,6 +16,37 @@ FooterText The MIT License (MIT) +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + ObjcExceptionBridging + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + Copyright (c) 2015 Realm Inc. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -43,6 +74,37 @@ SOFTWARE. Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + XCGLogger + Type + PSGroupSpecifier + FooterText MIT License diff --git a/Pods/Target Support Files/Pods-Core/Pods-Core.debug.xcconfig b/Pods/Target Support Files/Pods-Core/Pods-Core.debug.xcconfig index 7e8f81e..5337cc0 100644 --- a/Pods/Target Support Files/Pods-Core/Pods-Core.debug.xcconfig +++ b/Pods/Target Support Files/Pods-Core/Pods-Core.debug.xcconfig @@ -1,9 +1,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NetClient" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NetClient" "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "Net" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "Net" -framework "ObjcExceptionBridging" -framework "XCGLogger" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-Core/Pods-Core.release.xcconfig b/Pods/Target Support Files/Pods-Core/Pods-Core.release.xcconfig index 7e8f81e..5337cc0 100644 --- a/Pods/Target Support Files/Pods-Core/Pods-Core.release.xcconfig +++ b/Pods/Target Support Files/Pods-Core/Pods-Core.release.xcconfig @@ -1,9 +1,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NetClient" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NetClient" "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "Net" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "Net" -framework "ObjcExceptionBridging" -framework "XCGLogger" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-acknowledgements.markdown index 8dfaf70..97b74f9 100644 --- a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-acknowledgements.markdown @@ -1,6 +1,31 @@ # Acknowledgements This application makes use of the following third party libraries: +## ObjcExceptionBridging + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## SwiftLint The MIT License (MIT) @@ -26,6 +51,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## XCGLogger + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## NetClient MIT License diff --git a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-acknowledgements.plist b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-acknowledgements.plist index 3264c3c..ea2232f 100644 --- a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-acknowledgements.plist @@ -16,6 +16,37 @@ FooterText The MIT License (MIT) +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + ObjcExceptionBridging + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + Copyright (c) 2015 Realm Inc. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -43,6 +74,37 @@ SOFTWARE. Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + XCGLogger + Type + PSGroupSpecifier + FooterText MIT License diff --git a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-frameworks.sh b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-frameworks.sh index fd32094..342f29a 100755 --- a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests-frameworks.sh @@ -102,9 +102,13 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" install_framework "${BUILT_PRODUCTS_DIR}/NetClient/Net.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" install_framework "${BUILT_PRODUCTS_DIR}/NetClient/Net.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then diff --git a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests.debug.xcconfig b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests.debug.xcconfig index b5cfc6a..fe1d9df 100644 --- a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NetClient" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NetClient" "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "Net" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "Net" -framework "ObjcExceptionBridging" -framework "XCGLogger" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests.release.xcconfig b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests.release.xcconfig index b5cfc6a..fe1d9df 100644 --- a/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-CoreTests/Pods-CoreTests.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NetClient" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NetClient" "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" -OTHER_LDFLAGS = $(inherited) -framework "Net" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/NetClient/Net.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "Net" -framework "ObjcExceptionBridging" -framework "XCGLogger" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-Domain/Pods-Domain-acknowledgements.markdown b/Pods/Target Support Files/Pods-Domain/Pods-Domain-acknowledgements.markdown index d8c5fed..54b72cf 100644 --- a/Pods/Target Support Files/Pods-Domain/Pods-Domain-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-Domain/Pods-Domain-acknowledgements.markdown @@ -1,6 +1,31 @@ # Acknowledgements This application makes use of the following third party libraries: +## ObjcExceptionBridging + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## SwiftLint The MIT License (MIT) @@ -25,4 +50,29 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## XCGLogger + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-Domain/Pods-Domain-acknowledgements.plist b/Pods/Target Support Files/Pods-Domain/Pods-Domain-acknowledgements.plist index 88fb231..f4ecc0e 100644 --- a/Pods/Target Support Files/Pods-Domain/Pods-Domain-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-Domain/Pods-Domain-acknowledgements.plist @@ -16,6 +16,37 @@ FooterText The MIT License (MIT) +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + ObjcExceptionBridging + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + Copyright (c) 2015 Realm Inc. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -43,6 +74,37 @@ SOFTWARE. Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + XCGLogger + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-Domain/Pods-Domain.debug.xcconfig b/Pods/Target Support Files/Pods-Domain/Pods-Domain.debug.xcconfig index 6ebaf23..6d0a6b1 100644 --- a/Pods/Target Support Files/Pods-Domain/Pods-Domain.debug.xcconfig +++ b/Pods/Target Support Files/Pods-Domain/Pods-Domain.debug.xcconfig @@ -1,7 +1,10 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "ObjcExceptionBridging" -framework "XCGLogger" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-Domain/Pods-Domain.release.xcconfig b/Pods/Target Support Files/Pods-Domain/Pods-Domain.release.xcconfig index 6ebaf23..6d0a6b1 100644 --- a/Pods/Target Support Files/Pods-Domain/Pods-Domain.release.xcconfig +++ b/Pods/Target Support Files/Pods-Domain/Pods-Domain.release.xcconfig @@ -1,7 +1,10 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "ObjcExceptionBridging" -framework "XCGLogger" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-acknowledgements.markdown index d8c5fed..54b72cf 100644 --- a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-acknowledgements.markdown @@ -1,6 +1,31 @@ # Acknowledgements This application makes use of the following third party libraries: +## ObjcExceptionBridging + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## SwiftLint The MIT License (MIT) @@ -25,4 +50,29 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## XCGLogger + +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-acknowledgements.plist b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-acknowledgements.plist index 88fb231..f4ecc0e 100644 --- a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-acknowledgements.plist @@ -16,6 +16,37 @@ FooterText The MIT License (MIT) +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + ObjcExceptionBridging + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + Copyright (c) 2015 Realm Inc. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -43,6 +74,37 @@ SOFTWARE. Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + XCGLogger + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-frameworks.sh b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-frameworks.sh index 88dd537..4dd1bd8 100755 --- a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests-frameworks.sh @@ -100,6 +100,15 @@ strip_invalid_archs() { fi } + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework" + install_framework "${BUILT_PRODUCTS_DIR}/XCGLogger/XCGLogger.framework" +fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi diff --git a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests.debug.xcconfig b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests.debug.xcconfig index 7097e8b..96ea3d9 100644 --- a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests.debug.xcconfig @@ -1,7 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "ObjcExceptionBridging" -framework "XCGLogger" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests.release.xcconfig b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests.release.xcconfig index 7097e8b..96ea3d9 100644 --- a/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-DomainTests/Pods-DomainTests.release.xcconfig @@ -1,7 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/XCGLogger/XCGLogger.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_LDFLAGS = $(inherited) -framework "ObjcExceptionBridging" -framework "XCGLogger" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/XCGLogger/Info.plist b/Pods/Target Support Files/XCGLogger/Info.plist new file mode 100644 index 0000000..5f6d93f --- /dev/null +++ b/Pods/Target Support Files/XCGLogger/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 6.0.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/XCGLogger/XCGLogger-dummy.m b/Pods/Target Support Files/XCGLogger/XCGLogger-dummy.m new file mode 100644 index 0000000..3850b97 --- /dev/null +++ b/Pods/Target Support Files/XCGLogger/XCGLogger-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_XCGLogger : NSObject +@end +@implementation PodsDummy_XCGLogger +@end diff --git a/Pods/Target Support Files/XCGLogger/XCGLogger-prefix.pch b/Pods/Target Support Files/XCGLogger/XCGLogger-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/XCGLogger/XCGLogger-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/XCGLogger/XCGLogger-umbrella.h b/Pods/Target Support Files/XCGLogger/XCGLogger-umbrella.h new file mode 100644 index 0000000..4008b8f --- /dev/null +++ b/Pods/Target Support Files/XCGLogger/XCGLogger-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double XCGLoggerVersionNumber; +FOUNDATION_EXPORT const unsigned char XCGLoggerVersionString[]; + diff --git a/Pods/Target Support Files/XCGLogger/XCGLogger.modulemap b/Pods/Target Support Files/XCGLogger/XCGLogger.modulemap new file mode 100644 index 0000000..28cab08 --- /dev/null +++ b/Pods/Target Support Files/XCGLogger/XCGLogger.modulemap @@ -0,0 +1,6 @@ +framework module XCGLogger { + umbrella header "XCGLogger-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/XCGLogger/XCGLogger.xcconfig b/Pods/Target Support Files/XCGLogger/XCGLogger.xcconfig new file mode 100644 index 0000000..857a987 --- /dev/null +++ b/Pods/Target Support Files/XCGLogger/XCGLogger.xcconfig @@ -0,0 +1,12 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/XCGLogger +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjcExceptionBridging" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SwiftLint" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/XCGLogger +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +SWIFT_VERSION = 4.0 diff --git a/Pods/XCGLogger/.swift-version b/Pods/XCGLogger/.swift-version new file mode 100644 index 0000000..5186d07 --- /dev/null +++ b/Pods/XCGLogger/.swift-version @@ -0,0 +1 @@ +4.0 diff --git a/Pods/XCGLogger/LICENSE.txt b/Pods/XCGLogger/LICENSE.txt new file mode 100644 index 0000000..58aaa4d --- /dev/null +++ b/Pods/XCGLogger/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/XCGLogger/README.md b/Pods/XCGLogger/README.md new file mode 100644 index 0000000..48355ba --- /dev/null +++ b/Pods/XCGLogger/README.md @@ -0,0 +1,578 @@ +![XCGLogger][xcglogger-logo] + +[![badge-language]][swift.org] +[![badge-platforms]][swift.org] +[![badge-license]][license] + +[![badge-travis]][travis] +[![badge-swiftpm]][swiftpm] +[![badge-cocoapods]][cocoapods-xcglogger] +[![badge-carthage]][carthage] + +[![badge-sponsors]][cerebral-gardens] +[![badge-twitter]][twitter-davewoodx] + +## tl;dr +XCGLogger is the original debug log module for use in Swift projects. + +Swift does not include a C preprocessor so developers are unable to use the debug log `#define` macros they would use in Objective-C. This means our traditional way of generating nice debug logs no longer works. Resorting to just plain old `print` calls means you lose a lot of helpful information, or requires you to type a lot more code. + +XCGLogger allows you to log details to the console (and optionally a file, or other custom destinations), just like you would have with `NSLog()` or `print()`, but with additional information, such as the date, function name, filename and line number. + +Go from this: + +```Simple message``` + +to this: + +```2014-06-09 06:44:43.600 [Debug] [AppDelegate.swift:40] application(_:didFinishLaunchingWithOptions:): Simple message``` + +#### Example +Example + +### Communication _(Hat Tip AlamoFire)_ + +* If you need help, use [Stack Overflow][stackoverflow] (Tag '[xcglogger][stackoverflow]'). +* If you'd like to ask a general question, use [Stack Overflow][stackoverflow]. +* If you've found a bug, open an issue. +* If you have a feature request, open an issue. +* If you want to contribute, submit a pull request. +* If you use XCGLogger, please Star the project on [GitHub][github-xcglogger] + +## Installation + +### Git Submodule + +Execute: + +```git submodule add https://github.com/DaveWoodCom/XCGLogger.git``` + +in your repository folder. + +### [Carthage][carthage] + +Add the following line to your `Cartfile`. + +```github "DaveWoodCom/XCGLogger" ~> 6.0.1``` + +Then run `carthage update --no-use-binaries` or just `carthage update`. For details of the installation and usage of Carthage, visit [it's project page][carthage]. + +Developers running 5.0 and above in Swift will need to add `$(SRCROOT)/Carthage/Build/iOS/ObjcExceptionBridging.framework` to their Input Files in the Copy Carthage Frameworks Build Phase. + +### [CocoaPods][cocoapods] + +Add something similar to the following lines to your `Podfile`. You may need to adjust based on your platform, version/branch etc. + +``` +source 'https://github.com/CocoaPods/Specs.git' +platform :ios, '8.0' +use_frameworks! + +pod 'XCGLogger', '~> 6.0.1' +``` + +Specifying the pod `XCGLogger` on its own will include the core framework. We're starting to add subspecs to allow you to include optional components as well: + +`pod 'XCGLogger/UserInfoHelpers', '~> 6.0.1'`: Include some experimental code to help deal with using UserInfo dictionaries to tag log messages. + +Then run `pod install`. For details of the installation and usage of CocoaPods, visit [it's official web site][cocoapods]. + +Note: It's possible to use multiple pods with a mixture of Swift versions. You may need to ensure each pod is configured for the correct Swift version (check the targets in the pod project of your workspace). If you manually adjust the Swift version for a project, it'll reset the next time you run `pod install`. You can add a `post_install` hook into your podfile to automate setting the correct Swift versions. This is largely untested, and I'm not sure it's a good solution, but it seems to work: + +``` +post_install do |installer| + installer.pods_project.targets.each do |target| + if ['SomeTarget-iOS', 'SomeTarget-watchOS'].include? "#{target}" + print "Setting #{target}'s SWIFT_VERSION to 4.0\n" + target.build_configurations.each do |config| + config.build_settings['SWIFT_VERSION'] = '4.0' + end + else + print "Setting #{target}'s SWIFT_VERSION to Undefined (Xcode will automatically resolve)\n" + target.build_configurations.each do |config| + config.build_settings.delete('SWIFT_VERSION') + end + end + end + + print "Setting the default SWIFT_VERSION to 3.2\n" + installer.pods_project.build_configurations.each do |config| + config.build_settings['SWIFT_VERSION'] = '3.2' + end +end +``` + +You can adjust that to suit your needs of course. + +### [Swift Package Manager][swiftpm] + +Add the following entry to your package's dependencies: + +``` +.Package(url: "https://github.com/DaveWoodCom/XCGLogger.git", majorVersion: 6) +``` + +### Backwards Compatibility + +Use: +* XCGLogger version [6.0.1][xcglogger-6.0.1] for Swift 4.0 +* XCGLogger version [5.0.5][xcglogger-5.0.5] for Swift 3.0-3.2 +* XCGLogger version [3.6.0][xcglogger-3.6.0] for Swift 2.3 +* XCGLogger version [3.5.3][xcglogger-3.5.3] for Swift 2.2 +* XCGLogger version [3.2][xcglogger-3.2] for Swift 2.0-2.1 +* XCGLogger version [2.x][xcglogger-2.x] for Swift 1.2 +* XCGLogger version [1.x][xcglogger-1.x] for Swift 1.1 and below. + +## Basic Usage (Quick Start) + +_This quick start method is intended just to get you up and running with the logger. You should however use the [advanced usage below](#advanced-usage-recommended) to get the most out of this library._ + +Add the XCGLogger project as a subproject to your project, and add the appropriate library as a dependency of your target(s). +Under the `General` tab of your target, add `XCGLogger.framework` and `ObjcExceptionBridging.framework` to the `Embedded Binaries` section. + +Then, in each source file: + +```Swift +import XCGLogger +``` + +In your AppDelegate (or other global file), declare a global constant to the default XCGLogger instance. + +```Swift +let log = XCGLogger.default +``` + +In the +```Swift +application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? = nil) // iOS, tvOS +``` + +or + +```Swift +applicationDidFinishLaunching(_ notification: Notification) // macOS +``` + +function, configure the options you need: + +```Swift +log.setup(level: .debug, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: "path/to/file", fileLevel: .debug) +``` + +The value for `writeToFile:` can be a `String` or `URL`. If the file already exists, it will be cleared before we use it. Omit the parameter or set it to `nil` to log to the console only. You can optionally set a different log level for the file output using the `fileLevel:` parameter. Set it to `nil` or omit it to use the same log level as the console. + +Then, whenever you'd like to log something, use one of the convenience methods: + +```Swift +log.verbose("A verbose message, usually useful when working on a specific problem") +log.debug("A debug message") +log.info("An info message, probably useful to power users looking in console.app") +log.warning("A warning message, may indicate a possible error") +log.error("An error occurred, but it's recoverable, just info about what happened") +log.severe("A severe error occurred, we are likely about to crash now") +``` + +The different methods set the log level of the message. XCGLogger will only print messages with a log level that is greater to or equal to it's current log level setting. So a logger with a level of `.error` will only output log messages with a level of `.error`, or `.severe`. + +## Advanced Usage (Recommended) + +XCGLogger aims to be simple to use and get you up and running quickly with as few as 2 lines of code above. But it allows for much greater control and flexibility. + +A logger can be configured to deliver log messages to a variety of destinations. Using the basic setup above, the logger will output log messages to the standard Xcode debug console, and optionally a file if a path is provided. It's quite likely you'll want to send logs to more interesting places, such as the Apple System Console, a database, third party server, or another application such as [NSLogger][NSLogger]. This is accomplished by adding the destination to the logger. + +Here's an example of configuring the logger to output to the Apple System Log as well as a file. + +```Swift +// Create a logger object with no destinations +let log = XCGLogger(identifier: "advancedLogger", includeDefaultDestinations: false) + +// Create a destination for the system console log (via NSLog) +let systemDestination = AppleSystemLogDestination(identifier: "advancedLogger.systemDestination") + +// Optionally set some configuration options +systemDestination.outputLevel = .debug +systemDestination.showLogIdentifier = false +systemDestination.showFunctionName = true +systemDestination.showThreadName = true +systemDestination.showLevel = true +systemDestination.showFileName = true +systemDestination.showLineNumber = true +systemDestination.showDate = true + +// Add the destination to the logger +log.add(destination: systemDestination) + +// Create a file log destination +let fileDestination = FileDestination(writeToFile: "/path/to/file", identifier: "advancedLogger.fileDestination") + +// Optionally set some configuration options +fileDestination.outputLevel = .debug +fileDestination.showLogIdentifier = false +fileDestination.showFunctionName = true +fileDestination.showThreadName = true +fileDestination.showLevel = true +fileDestination.showFileName = true +fileDestination.showLineNumber = true +fileDestination.showDate = true + +// Process this destination in the background +fileDestination.logQueue = XCGLogger.logQueue + +// Add the destination to the logger +log.add(destination: fileDestination) + +// Add basic app info, version info etc, to the start of the logs +log.logAppDetails() +``` + +You can configure each log destination with different options depending on your needs. + +Another common usage pattern is to have multiple loggers, perhaps one for UI issues, one for networking, and another for data issues. + +Each log destination can have its own log level. As a convenience, you can set the log level on the log object itself and it will pass that level to each destination. Then set the destinations that need to be different. + +**Note**: A destination object can only be added to one logger object, adding it to a second will remove it from the first. + +### Initialization Using A Closure + +Alternatively you can use a closure to initialize your global variable, so that all initialization is done in one place +```Swift +let log: XCGLogger = { + let log = XCGLogger(identifier: "advancedLogger", includeDefaultDestinations: false) + + // Customize as needed + + return log +}() +``` + +**Note**: This creates the log object lazily, which means it's not created until it's actually needed. This delays the initial output of the app information details. Because of this, I recommend forcing the log object to be created at app launch by adding the line `let _ = log` at the top of your `didFinishLaunching` method if you don't already log something on app launch. + +### Log Anything + +You can log strings: + +```Swift +log.debug("Hi there!") +``` + +or pretty much anything you want: + +```Swift +log.debug(true) +log.debug(CGPoint(x: 1.1, y: 2.2)) +log.debug(MyEnum.Option) +log.debug((4, 2)) +log.debug(["Device": "iPhone", "Version": 7]) +``` + +### Filtering Log Messages + +New to XCGLogger 4, you can now create filters to apply to your logger (or to specific destinations). Create and configure your filters (examples below), and then add them to the logger or destination objects by setting the optional `filters` property to an array containing the filters. Filters are applied in the order they exist in the array. During processing, each filter is asked if the log message should be excluded from the log. If any filter excludes the log message, it's excluded. Filters have no way to reverse the exclusion of another filter. + +If a destination's `filters` property is `nil`, the log's `filters` property is used instead. To have one destination log everything, while having all other destinations filter something, add the filters to the log object and set the one destination's `filters` property to an empty array `[]`. + +**Note**: Unlike destinations, you can add the same filter object to multiple loggers and/or multiple destinations. + +#### Filter by Filename + +To exclude all log messages from a specific file, create an exclusion filter like so: + +```Swift +log.filters = [FileNameFilter(excludeFrom: ["AppDelegate.swift"], excludePathWhenMatching: true)] +``` + +`excludeFrom:` takes an `Array` or `Set` so you can specify multiple files at the same time. + +`excludePathWhenMatching:` defaults to `true` so you can omit it unless you want to match path's as well. + +To include log messages only for a specific set to files, create the filter using the `includeFrom:` initializer. It's also possible to just toggle the `inverse` property to flip the exclusion filter to an inclusion filter. + +#### Filter by Tag + +In order to filter log messages by tag, you must of course be able to set a tag on the log messages. Each log message can now have additional, user defined data attached to them, to be used by filters (and/or formatters etc). This is handled with a `userInfo: Dictionary` object. The dictionary key should be a namespaced string to avoid collisions with future additions. Official keys will begin with `com.cerebralgardens.xcglogger`. The tag key can be accessed by `XCGLogger.Constants.userInfoKeyTags`. You definitely don't want to be typing that, so feel free to create a global shortcut: `let tags = XCGLogger.Constants.userInfoKeyTags`. Now you can easily tag your logs: + +```Swift +let sensitiveTag = "Sensitive" +log.debug("A tagged log message", userInfo: [tags: sensitiveTag]) +``` + +The value for tags can be an `Array`, `Set`, or just a `String`, depending on your needs. They'll all work the same way when filtered. + +Depending on your workflow and usage, you'll probably create faster methods to set up the `userInfo` dictionary. See [below](#mixing-and-matching) for other possible shortcuts. + +Now that you have your logs tagged, you can filter easily: + +```Swift +log.filters = [TagFilter(excludeFrom: [sensitiveTag])] +``` + +Just like the `FileNameFilter`, you can use `includeFrom:` or toggle `inverse` to include only log messages that have the specified tags. + +#### Filter by Developer + +Filtering by developer is exactly like filtering by tag, only using the `userInfo` key of `XCGLogger.Constants.userInfoKeyDevs`. In fact, both filters are subclasses of the `UserInfoFilter` class that you can use to create additional filters. See [Extending XCGLogger](#extending-xcglogger) below. + +#### Mixing and Matching + +In large projects with multiple developers, you'll probably want to start tagging log messages, as well as indicate the developer that added the message. + +While extremely flexible, the `userInfo` dictionary can be a little cumbersome to use. There are a few possible methods you can use to simply things. I'm still testing these out myself so they're not officially part of the library yet (I'd love feedback or other suggestions). + +I have created some experimental code to help create the UserInfo dictionaries. (Include the optional `UserInfoHelpers` subspec if using CocoaPods). Check the iOS Demo app to see it in use. + +There are two structs that conform to the `UserInfoTaggingProtocol` protocol. `Tag` and `Dev`. + +You can create an extension on each of these that suit your project. For example: + +```Swift +extension Tag { + static let sensitive = Tag("sensitive") + static let ui = Tag("ui") + static let data = Tag("data") +} + +extension Dev { + static let dave = Dev("dave") + static let sabby = Dev("sabby") +} +``` + +Along with these types, there's an overloaded operator `|` that can be used to merge them together into a dictionary compatible with the `UserInfo:` parameter of the logging calls. + +Then you can log messages like this: + +```Swift +log.debug("A tagged log message", userInfo: Dev.dave | Tag.sensitive) +``` + +There are some current issues I see with these `UserInfoHelpers`, which is why I've made it optional/experimental for now. I'd love to hear comments/suggestions for improvements. + +1. The overloaded operator `|` merges dictionaries so long as there are no `Set`s. If one of the dictionaries contains a `Set`, it'll use one of them, without merging them. Preferring the left hand side if both sides have a set for the same key. +2. Since the `userInfo:` parameter needs a dictionary, you can't pass in a single Dev or Tag object. You need to use at least two with the `|` operator to have it automatically convert to a compatible dictionary. If you only want one Tag for example, you must access the `.dictionary` parameter manually: `userInfo: Tag("Blah").dictionary`. + +### Selectively Executing Code + +All log methods operate on closures. Using the same syntactic sugar as Swift's `assert()` function, this approach ensures we don't waste resources building log messages that won't be output anyway, while at the same time preserving a clean call site. + +For example, the following log statement won't waste resources if the debug log level is suppressed: + +```Swift +log.debug("The description of \(thisObject) is really expensive to create") +``` + +Similarly, let's say you have to iterate through a loop in order to do some calculation before logging the result. In Objective-C, you could put that code block between `#if` `#endif`, and prevent the code from running. But in Swift, previously you would need to still process that loop, wasting resources. With `XCGLogger` it's as simple as: + +```Swift +log.debug { + var total = 0.0 + for receipt in receipts { + total += receipt.total + } + + return "Total of all receipts: \(total)" +} +``` + +In cases where you wish to selectively execute code without generating a log line, return `nil`, or use one of the methods: `verboseExec`, `debugExec`, `infoExec`, `warningExec`, `errorExec`, and `severeExec`. + +### Custom Date Formats + +You can create your own `DateFormatter` object and assign it to the logger. + +```Swift +let dateFormatter = DateFormatter() +dateFormatter.dateFormat = "MM/dd/yyyy hh:mma" +dateFormatter.locale = Locale.current +log.dateFormatter = dateFormatter +``` + +### Enhancing Log Messages With Colour + +XCGLogger supports adding formatting codes to your log messages to enable colour in various places. The original option was to use the [XcodeColors plug-in][XcodeColors]. However, Xcode (as of version 8) no longer officially supports plug-ins. You can still view your logs in colour, just not in Xcode at the moment. You can use the ANSI colour support to add colour to your fileDestination objects and view your logs via a terminal window. This gives you some extra options such as adding Bold, Italics, or (please don't) Blinking! + +Once enabled, each log level can have its own colour. These colours can be customized as desired. If using multiple loggers, you could alternatively set each logger to its own colour. + +An example of setting up the ANSI formatter: + +```Swift +if let fileDestination: FileDestination = log.destination(withIdentifier: XCGLogger.Constants.fileDestinationIdentifier) as? FileDestination { + let ansiColorLogFormatter: ANSIColorLogFormatter = ANSIColorLogFormatter() + ansiColorLogFormatter.colorize(level: .verbose, with: .colorIndex(number: 244), options: [.faint]) + ansiColorLogFormatter.colorize(level: .debug, with: .black) + ansiColorLogFormatter.colorize(level: .info, with: .blue, options: [.underline]) + ansiColorLogFormatter.colorize(level: .warning, with: .red, options: [.faint]) + ansiColorLogFormatter.colorize(level: .error, with: .red, options: [.bold]) + ansiColorLogFormatter.colorize(level: .severe, with: .white, on: .red) + fileDestination.formatters = [ansiColorLogFormatter] +} +``` + +As with filters, you can use the same formatter objects for multiple loggers and/or multiple destinations. If a destination's `formatters` property is `nil`, the logger's `formatters` property will be used instead. + +See [Extending XCGLogger](#extending-xcglogger) below for info on creating your own custom formatters. + +### Alternate Configurations + +By using Swift build flags, different log levels can be used in debugging versus staging/production. +Go to Build Settings -> Swift Compiler - Custom Flags -> Other Swift Flags and add `-DDEBUG` to the Debug entry. + +```Swift +#if DEBUG + log.setup(level: .debug, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true) +#else + log.setup(level: .severe, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true) +#endif +``` + +You can set any number of options up in a similar fashion. See the updated iOSDemo app for an example of using different log destinations based on options, search for `USE_NSLOG`. + +### Background Log Processing + +By default, the supplied log destinations will process the logs on the thread they're called on. This is to ensure the log message is displayed immediately when debugging an application. You can add a breakpoint immediately after a log call and see the results when the breakpoint hits. + +However, if you're not actively debugging the application, processing the logs on the current thread can introduce a performance hit. You can now specify a destination process it's logs on a dispatch queue of your choice (or even use a default supplied one). + +```Swift +fileDestination.logQueue = XCGLogger.logQueue +``` + +or even + +```Swift +fileDestination.logQueue = DispatchQueue.global(qos: .background) +``` + +This works extremely well when combined with the [Alternate Configurations](#alternate-configurations) method above. + +```Swift +#if DEBUG + log.setup(level: .debug, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true) +#else + log.setup(level: .severe, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true) + if let consoleLog = log.logDestination(XCGLogger.Constants.baseConsoleDestinationIdentifier) as? ConsoleDestination { + consoleLog.logQueue = XCGLogger.logQueue + } +#endif +``` + +### Append To Existing Log File + +When using the advanced configuration of the logger (see [Advanced Usage above](#advanced-usage-recommended)), you can now specify that the logger append to an existing log file, instead of automatically overwriting it. + +Add the optional `shouldAppend:` parameter when initializing the `FileDestination` object. You can also add the `appendMarker:` parameter to add a marker to the log file indicating where a new instance of your app started appending. By default we'll add `-- ** ** ** --` if the parameter is omitted. Set it to `nil` to skip appending the marker. + +```let fileDestination = FileDestination(writeToFile: "/path/to/file", identifier: "advancedLogger.fileDestination", shouldAppend: true, appendMarker: "-- Relauched App --")``` + + +### Automatic Log File Rotation + +When logging to a file, you have the option to automatically rotate the log file to an archived destination, and have the logger automatically create a new log file in place of the old one. + +Create a destination using the `AutoRotatingFileDestination` class and set the following properties: + +`targetMaxFileSize`: Auto rotate once the file is larger than this + +`targetMaxTimeInterval`: Auto rotate after this many seconds + +`targetMaxLogFiles`: Number of archived log files to keep, older ones are automatically deleted + +Those are all guidelines for the logger, not hard limits. + +### Extending XCGLogger + +You can create alternate log destinations (besides the built in ones). Your custom log destination must implement the `DestinationProtocol` protocol. Instantiate your object, configure it, and then add it to the `XCGLogger` object with `add(destination:)`. There are two base destination classes (`BaseDestination` and `BaseQueuedDestination`) you can inherit from to handle most of the process for you, requiring you to only implement one additional method in your custom class. Take a look at `ConsoleDestination` and `FileDestination` for examples. + +You can also create custom filters or formatters. Take a look at the provided versions as a starting point. Note that filters and formatters have the ability to alter the log messages as they're processed. This means you can create a filter that strips passwords, highlights specific words, encrypts messages, etc. + +## Contributing + +XCGLogger is the best logger available for Swift because of the contributions from the community like you. There are many ways you can help continue to make it great. + +1. Star the project on [GitHub][github-xcglogger]. +2. Report issues/bugs you find. +3. Suggest features. +4. Submit pull requests. +5. Download and install one of my apps: [https://www.cerebralgardens.com/apps/][cerebral-gardens-apps] Try my newest app: [All the Rings][all-the-rings] + +**Note**: when submitting a pull request, please use lots of small commits verses one huge commit. It makes it much easier to merge in when there are several pull requests that need to be combined for a new version. + + + +## To Do + +- Add more examples of some advanced use cases +- Add additional log destination types +- Add Objective-C support +- Add Linux support + +## More + +If you find this library helpful, you'll definitely find these other tools helpful: + +Watchdog: http://watchdogforxcode.com/ +Slender: http://martiancraft.com/products/slender +Briefs: http://giveabrief.com/ + +Also, please check out some of my other projects: + +All the Rings: [App Store](https://itunes.apple.com/app/all-the-rings/id1186956966?pt=17255&ct=github&mt=8&at=11lMGu) +Rudoku: [App Store](https://itunes.apple.com/app/rudoku/id965105321?pt=17255&ct=github&mt=8&at=11lMGu) +TV Tune Up: https://www.cerebralgardens.com/tvtuneup + +### Change Log + +The change log is now in its own file: [CHANGELOG.md](CHANGELOG.md) + +[xcglogger-logo]: https://github.com/DaveWoodCom/XCGLogger/raw/master/ReadMeImages/XCGLoggerLogo_326x150.png +[swift.org]: https://swift.org/ +[license]: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +[travis]: https://travis-ci.org/DaveWoodCom/XCGLogger +[swiftpm]: https://swift.org/package-manager/ +[cocoapods]: https://cocoapods.org/ +[cocoapods-xcglogger]: https://cocoapods.org/pods/XCGLogger +[carthage]: https://github.com/Carthage/Carthage +[cerebral-gardens]: https://www.cerebralgardens.com/ +[cerebral-gardens-apps]: https://www.cerebralgardens.com/apps/ +[all-the-rings]: https://alltherings.fit/?s=GH3 +[twitter-davewoodx]: https://twitter.com/davewoodx +[github-xcglogger]: https://github.com/DaveWoodCom/XCGLogger +[stackoverflow]: http://stackoverflow.com/questions/tagged/xcglogger + +[badge-language]: https://img.shields.io/badge/Swift-1.x%20%7C%202.x%20%7C%203.x%20%7C%204.x-orange.svg?style=flat +[badge-platforms]: https://img.shields.io/badge/Platforms-macOS%20%7C%20iOS%20%7C%20tvOS%20%7C%20watchOS-lightgray.svg?style=flat +[badge-license]: https://img.shields.io/badge/License-MIT-lightgrey.svg?style=flat +[badge-travis]: https://img.shields.io/travis/DaveWoodCom/XCGLogger/master.svg?style=flat +[badge-swiftpm]: https://img.shields.io/badge/Swift_Package_Manager-v6.0.1-64a6dd.svg?style=flat +[badge-cocoapods]: https://img.shields.io/cocoapods/v/XCGLogger.svg?style=flat +[badge-carthage]: https://img.shields.io/badge/Carthage-v6.0.1-64a6dd.svg?style=flat + +[badge-sponsors]: https://img.shields.io/badge/Sponsors-Cerebral%20Gardens-orange.svg?style=flat +[badge-twitter]: https://img.shields.io/twitter/follow/DaveWoodX.svg?style=social + +[XcodeColors]: https://github.com/robbiehanson/XcodeColors +[KZLinkedConsole]: https://github.com/krzysztofzablocki/KZLinkedConsole +[NSLogger]: https://github.com/fpillet/NSLogger +[XCGLoggerNSLoggerConnector]: https://github.com/markuswinkler/XCGLoggerNSLoggerConnector +[Firelog]: http://jogabo.github.io/firelog/ +[Firebase]: https://www.firebase.com/ + +[xcglogger-6.0.1]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/6.0.1 +[xcglogger-5.0.5]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/5.0.5 +[xcglogger-3.6.0]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/3.6.0 +[xcglogger-3.5.3]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/3.5.3 +[xcglogger-3.2]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/3.2.0 +[xcglogger-2.x]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/2.4.0 +[xcglogger-1.x]: https://github.com/DaveWoodCom/XCGLogger/releases/tag/1.8.1 diff --git a/Pods/XCGLogger/Sources/XCGLogger/Destinations/AppleSystemLogDestination.swift b/Pods/XCGLogger/Sources/XCGLogger/Destinations/AppleSystemLogDestination.swift new file mode 100644 index 0000000..416067a --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Destinations/AppleSystemLogDestination.swift @@ -0,0 +1,38 @@ +// +// AppleSystemLogDestination.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Foundation +import Dispatch + +// MARK: - AppleSystemLogDestination +/// A standard destination that outputs log details to the Apple System Log using NSLog instead of print +open class AppleSystemLogDestination: BaseQueuedDestination { + // MARK: - Properties + /// Option: whether or not to output the date the log was created (Always false for this destination) + open override var showDate: Bool { + get { + return false + } + set { + // ignored, NSLog adds the date, so we always want showDate to be false in this subclass + } + } + + // MARK: - Overridden Methods + /// Print the log to the Apple System Log facility (using NSLog). + /// + /// - Parameters: + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + open override func write(message: String) { + NSLog("%@", message) + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Destinations/AutoRotatingFileDestination.swift b/Pods/XCGLogger/Sources/XCGLogger/Destinations/AutoRotatingFileDestination.swift new file mode 100644 index 0000000..b5ca113 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Destinations/AutoRotatingFileDestination.swift @@ -0,0 +1,285 @@ +// +// AutoRotatingFileDestination.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2017-03-31. +// Copyright © 2017 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Foundation + +// MARK: - AutoRotatingFileDestination +/// A destination that outputs log details to files in a log folder, with auto-rotate options (by size or by time) +open class AutoRotatingFileDestination: FileDestination { + // MARK: - Constants + public static let autoRotatingFileDefaultMaxFileSize: UInt64 = 1_048_576 + public static let autoRotatingFileDefaultMaxTimeInterval: TimeInterval = 600 + + // MARK: - Properties + /// Option: desired maximum size of a log file, if 0, no maximum (log files may exceed this, it's a guideline only) + open var targetMaxFileSize: UInt64 = autoRotatingFileDefaultMaxFileSize { + didSet { + if targetMaxFileSize < 1 { + targetMaxFileSize = .max + } + } + } + + /// Option: desired maximum time in seconds stored in a log file, if 0, no maximum (log files may exceed this, it's a guideline only) + open var targetMaxTimeInterval: TimeInterval = autoRotatingFileDefaultMaxTimeInterval { + didSet { + if targetMaxTimeInterval < 1 { + targetMaxTimeInterval = 0 + } + } + } + + /// Option: the desired number of archived log files to keep (number of log files may exceed this, it's a guideline only) + open var targetMaxLogFiles: UInt8 = 10 { + didSet { + cleanUpLogFiles() + } + } + + /// Option: the URL of the folder to store archived log files (defaults to the same folder as the initial log file) + open var archiveFolderURL: URL? = nil { + didSet { + guard let archiveFolderURL = archiveFolderURL else { return } + try? FileManager.default.createDirectory(at: archiveFolderURL, withIntermediateDirectories: true) + } + } + + /// Option: an optional closure to execute whenever the log is auto rotated + open var autoRotationCompletion: ((_ success: Bool) -> Void)? = nil + + /// A custom date formatter object to use as the suffix of archived log files + internal var _customArchiveSuffixDateFormatter: DateFormatter? = nil + /// The date formatter object to use as the suffix of archived log files + open var archiveSuffixDateFormatter: DateFormatter! { + get { + guard _customArchiveSuffixDateFormatter == nil else { return _customArchiveSuffixDateFormatter } + struct Statics { + static var archiveSuffixDateFormatter: DateFormatter = { + let defaultArchiveSuffixDateFormatter = DateFormatter() + defaultArchiveSuffixDateFormatter.locale = NSLocale.current + defaultArchiveSuffixDateFormatter.dateFormat = "_yyyy-MM-dd_HHmmss" + return defaultArchiveSuffixDateFormatter + }() + } + + return Statics.archiveSuffixDateFormatter + } + set { + _customArchiveSuffixDateFormatter = newValue + } + } + + /// Size of the current log file + internal var currentLogFileSize: UInt64 = 0 + + /// Start time of the current log file + internal var currentLogStartTimeInterval: TimeInterval = 0 + + /// The base file name of the log file + internal var baseFileName: String = "xcglogger" + + /// The extension of the log file name + internal var fileExtension: String = "log" + + // MARK: - Class Properties + /// A default folder for storing archived logs if one isn't supplied + open class var defaultLogFolderURL: URL { + #if os(OSX) + let defaultLogFolderURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("log") + try? FileManager.default.createDirectory(at: defaultLogFolderURL, withIntermediateDirectories: true) + return defaultLogFolderURL + #elseif os(iOS) || os(tvOS) || os(watchOS) + let urls = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask) + let defaultLogFolderURL = urls[urls.endIndex - 1].appendingPathComponent("log") + try? FileManager.default.createDirectory(at: defaultLogFolderURL, withIntermediateDirectories: true) + return defaultLogFolderURL + #endif + } + + // MARK: - Life Cycle + public init(owner: XCGLogger? = nil, writeToFile: Any, identifier: String = "", shouldAppend: Bool = false, appendMarker: String? = "-- ** ** ** --", attributes: [FileAttributeKey: Any]? = nil, maxFileSize: UInt64 = autoRotatingFileDefaultMaxFileSize, maxTimeInterval: TimeInterval = autoRotatingFileDefaultMaxTimeInterval, archiveSuffixDateFormatter: DateFormatter? = nil) { + super.init(owner: owner, writeToFile: writeToFile, identifier: identifier, shouldAppend: true, appendMarker: shouldAppend ? appendMarker : nil, attributes: attributes) + + currentLogStartTimeInterval = Date().timeIntervalSince1970 + self.archiveSuffixDateFormatter = archiveSuffixDateFormatter + self.shouldAppend = shouldAppend + self.targetMaxFileSize = maxFileSize + self.targetMaxTimeInterval = maxTimeInterval + + guard let writeToFileURL = writeToFileURL else { return } + + // Calculate some details for naming archived logs based on the current log file path/name + fileExtension = writeToFileURL.pathExtension + baseFileName = writeToFileURL.lastPathComponent + if let fileExtensionRange: Range = baseFileName.range(of: ".\(fileExtension)", options: .backwards), + fileExtensionRange.upperBound >= baseFileName.endIndex { + baseFileName = String(baseFileName[baseFileName.startIndex ..< fileExtensionRange.lowerBound]) + } + + let filePath: String = writeToFileURL.path + let logFileName: String = "\(baseFileName).\(fileExtension)" + if let logFileNameRange: Range = filePath.range(of: logFileName, options: .backwards), + logFileNameRange.upperBound >= filePath.endIndex { + let archiveFolderPath: String = String(filePath[filePath.startIndex ..< logFileNameRange.lowerBound]) + archiveFolderURL = URL(fileURLWithPath: "\(archiveFolderPath)") + } + if archiveFolderURL == nil { + archiveFolderURL = type(of: self).defaultLogFolderURL + } + + do { + // Initialize starting values for file size and start time so shouldRotate calculations are valid + let fileAttributes: [FileAttributeKey: Any] = try FileManager.default.attributesOfItem(atPath: filePath) + currentLogFileSize = fileAttributes[.size] as? UInt64 ?? 0 + currentLogStartTimeInterval = (fileAttributes[.creationDate] as? Date ?? Date()).timeIntervalSince1970 + } + catch let error as NSError { + owner?._logln("Unable to determine current file attributes of log file: \(error.localizedDescription)", level: .warning) + } + + // Because we always start by appending, regardless of the shouldAppend setting, we now need to handle the cases where we don't want to append or that we have now reached the rotation threshold for our current log file + if !shouldAppend || shouldRotate() { + rotateFile() + } + } + + /// Scan the log folder and delete log files that are no longer relevant. + /// + /// - Parameters: None. + /// + /// - Returns: Nothing. + /// + open func cleanUpLogFiles() { + var archivedFileURLs: [URL] = self.archivedFileURLs() + guard archivedFileURLs.count > Int(targetMaxLogFiles) else { return } + + archivedFileURLs.removeFirst(Int(targetMaxLogFiles)) + + let fileManager: FileManager = FileManager.default + for archivedFileURL in archivedFileURLs { + do { + try fileManager.removeItem(at: archivedFileURL) + } + catch let error as NSError { + owner?._logln("Unable to delete old archived log file \(archivedFileURL.path): \(error.localizedDescription)", level: .error) + } + } + } + + /// Delete all archived log files. + /// + /// - Parameters: None. + /// + /// - Returns: Nothing. + /// + open func purgeArchivedLogFiles() { + let fileManager: FileManager = FileManager.default + for archivedFileURL in archivedFileURLs() { + do { + try fileManager.removeItem(at: archivedFileURL) + } + catch let error as NSError { + owner?._logln("Unable to delete old archived log file \(archivedFileURL.path): \(error.localizedDescription)", level: .error) + } + } + } + + /// Get the URLs of the archived log files. + /// + /// - Parameters: None. + /// + /// - Returns: An array of file URLs pointing to previously archived log files, sorted with the most recent logs first. + /// + open func archivedFileURLs() -> [URL] { + let archiveFolderURL: URL = (self.archiveFolderURL ?? type(of: self).defaultLogFolderURL) + guard let fileURLs = try? FileManager.default.contentsOfDirectory(at: archiveFolderURL, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles]) else { return [] } + guard let identifierData: Data = identifier.data(using: .utf8) else { return [] } + + var archivedDetails: [(url: URL, timestamp: String)] = [] + for fileURL in fileURLs { + guard let archivedLogIdentifierOptionalData = try? fileURL.extendedAttribute(forName: XCGLogger.Constants.extendedAttributeArchivedLogIdentifierKey) else { continue } + guard let archivedLogIdentifierData = archivedLogIdentifierOptionalData else { continue } + guard archivedLogIdentifierData == identifierData else { continue } + + guard let timestampOptionalData = try? fileURL.extendedAttribute(forName: XCGLogger.Constants.extendedAttributeArchivedLogTimestampKey) else { continue } + guard let timestampData = timestampOptionalData else { continue } + guard let timestamp = String(data: timestampData, encoding: .utf8) else { continue } + + archivedDetails.append((fileURL, timestamp)) + } + + archivedDetails.sort(by: { (lhs, rhs) -> Bool in lhs.timestamp > rhs.timestamp }) + var archivedFileURLs: [URL] = [] + for archivedDetail in archivedDetails { + archivedFileURLs.append(archivedDetail.url) + } + + return archivedFileURLs + } + + /// Rotate the current log file. + /// + /// - Parameters: None. + /// + /// - Returns: Nothing. + /// + open func rotateFile() { + var archiveFolderURL: URL = (self.archiveFolderURL ?? type(of: self).defaultLogFolderURL) + archiveFolderURL = archiveFolderURL.appendingPathComponent("\(baseFileName)\(archiveSuffixDateFormatter.string(from: Date()))") + archiveFolderURL = archiveFolderURL.appendingPathExtension(fileExtension) + rotateFile(to: archiveFolderURL, closure: autoRotationCompletion) + + currentLogStartTimeInterval = Date().timeIntervalSince1970 + currentLogFileSize = 0 + + cleanUpLogFiles() + } + + /// Determine if the log file should be rotated. + /// + /// - Parameters: None. + /// + /// - Returns: + /// - true: The log file should be rotated. + /// - false: The log file doesn't have to be rotated. + /// + open func shouldRotate() -> Bool { + // Do not rotate until critical setup has been completed so that we do not accidentally rotate once to the defaultLogFolderURL before determining the desired log location + guard archiveFolderURL != nil else { return false } + + // File Size + guard currentLogFileSize < targetMaxFileSize else { return true } + + // Time Interval, zero = never rotate + guard targetMaxTimeInterval > 0 else { return false } + + // Time Interval, else check time + guard Date().timeIntervalSince1970 - currentLogStartTimeInterval < targetMaxTimeInterval else { return true } + + return false + } + + // MARK: - Overridden Methods + /// Write the log to the log file. + /// + /// - Parameters: + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + open override func write(message: String) { + currentLogFileSize += UInt64(message.characters.count) + + super.write(message: message) + + if shouldRotate() { + rotateFile() + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Destinations/BaseDestination.swift b/Pods/XCGLogger/Sources/XCGLogger/Destinations/BaseDestination.swift new file mode 100644 index 0000000..470d755 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Destinations/BaseDestination.swift @@ -0,0 +1,181 @@ +// +// BaseDestination.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Foundation + +// MARK: - BaseDestination +/// A base class destination that doesn't actually output the log anywhere and is intended to be subclassed +open class BaseDestination: DestinationProtocol, CustomDebugStringConvertible { + // MARK: - Properties + /// Logger that owns the destination object + open var owner: XCGLogger? + + /// Identifier for the destination (should be unique) + open var identifier: String + + /// Log level for this destination + open var outputLevel: XCGLogger.Level = .debug + + /// Flag whether or not we've logged the app details to this destination + open var haveLoggedAppDetails: Bool = false + + /// Array of log formatters to apply to messages before they're output + open var formatters: [LogFormatterProtocol]? = nil + + /// Array of log filters to apply to messages before they're output + open var filters: [FilterProtocol]? = nil + + /// Option: whether or not to output the log identifier + open var showLogIdentifier: Bool = false + + /// Option: whether or not to output the function name that generated the log + open var showFunctionName: Bool = true + + /// Option: whether or not to output the thread's name the log was created on + open var showThreadName: Bool = false + + /// Option: whether or not to output the fileName that generated the log + open var showFileName: Bool = true + + /// Option: whether or not to output the line number where the log was generated + open var showLineNumber: Bool = true + + /// Option: whether or not to output the log level of the log + open var showLevel: Bool = true + + /// Option: whether or not to output the date the log was created + open var showDate: Bool = true + + /// Option: override descriptions of log levels + open var levelDescriptions: [XCGLogger.Level: String] = [:] + + // MARK: - CustomDebugStringConvertible + open var debugDescription: String { + get { + return "\(extractTypeName(self)): \(identifier) - Level: \(outputLevel) showLogIdentifier: \(showLogIdentifier) showFunctionName: \(showFunctionName) showThreadName: \(showThreadName) showLevel: \(showLevel) showFileName: \(showFileName) showLineNumber: \(showLineNumber) showDate: \(showDate)" + } + } + + // MARK: - Life Cycle + public init(owner: XCGLogger? = nil, identifier: String = "") { + self.owner = owner + self.identifier = identifier + } + + // MARK: - Methods to Process Log Details + /// Process the log details. + /// + /// - Parameters: + /// - logDetails: Structure with all of the details for the log to process. + /// + /// - Returns: Nothing + /// + open func process(logDetails: LogDetails) { + guard let owner = owner else { return } + + var extendedDetails: String = "" + + if showDate { + extendedDetails += "\((owner.dateFormatter != nil) ? owner.dateFormatter!.string(from: logDetails.date) : logDetails.date.description) " + } + + if showLevel { + extendedDetails += "[\(levelDescriptions[logDetails.level] ?? owner.levelDescriptions[logDetails.level] ?? logDetails.level.description)] " + } + + if showLogIdentifier { + extendedDetails += "[\(owner.identifier)] " + } + + if showThreadName { + if Thread.isMainThread { + extendedDetails += "[main] " + } + else { + if let threadName = Thread.current.name, !threadName.isEmpty { + extendedDetails += "[\(threadName)] " + } + else if let queueName = DispatchQueue.currentQueueLabel, !queueName.isEmpty { + extendedDetails += "[\(queueName)] " + } + else { + extendedDetails += String(format: "[%p] ", Thread.current) + } + } + } + + if showFileName { + extendedDetails += "[\((logDetails.fileName as NSString).lastPathComponent)\((showLineNumber ? ":" + String(logDetails.lineNumber) : ""))] " + } + else if showLineNumber { + extendedDetails += "[\(logDetails.lineNumber)] " + } + + if showFunctionName { + extendedDetails += "\(logDetails.functionName) " + } + + output(logDetails: logDetails, message: "\(extendedDetails)> \(logDetails.message)") + } + + /// Process the log details (internal use, same as process(logDetails:) but omits function/file/line info). + /// + /// - Parameters: + /// - logDetails: Structure with all of the details for the log to process. + /// + /// - Returns: Nothing + /// + open func processInternal(logDetails: LogDetails) { + guard let owner = owner else { return } + + var extendedDetails: String = "" + + if showDate { + extendedDetails += "\((owner.dateFormatter != nil) ? owner.dateFormatter!.string(from: logDetails.date) : logDetails.date.description) " + } + + if showLevel { + extendedDetails += "[\(logDetails.level)] " + } + + if showLogIdentifier { + extendedDetails += "[\(owner.identifier)] " + } + + output(logDetails: logDetails, message: "\(extendedDetails)> \(logDetails.message)") + } + + // MARK: - Misc methods + /// Check if the destination's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - level: The log level to check. + /// + /// - Returns: + /// - true: Log destination is at the log level specified or lower. + /// - false: Log destination is at a higher log level. + /// + open func isEnabledFor(level: XCGLogger.Level) -> Bool { + return level >= self.outputLevel + } + + // MARK: - Methods that must be overridden in subclasses + /// Output the log to the destination. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + open func output(logDetails: LogDetails, message: String) { + // Do something with the text in an overridden version of this method + precondition(false, "Must override this") + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Destinations/BaseQueuedDestination.swift b/Pods/XCGLogger/Sources/XCGLogger/Destinations/BaseQueuedDestination.swift new file mode 100644 index 0000000..bd17d2d --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Destinations/BaseQueuedDestination.swift @@ -0,0 +1,64 @@ +// +// BaseQueuedDestination.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2017-04-02. +// Copyright © 2017 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Foundation +import Dispatch + +// MARK: - BaseQueuedDestination +/// A base class destination (with a possible DispatchQueue) that doesn't actually output the log anywhere and is intended to be subclassed +open class BaseQueuedDestination: BaseDestination { + // MARK: - Properties + /// The dispatch queue to process the log on + open var logQueue: DispatchQueue? = nil + + // MARK: - Life Cycle + + // MARK: - Overridden Methods + /// Apply filters and formatters to the message before queuing it to be written by the write method. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Message ready to be formatted for output. + /// + /// - Returns: Nothing + /// + open override func output(logDetails: LogDetails, message: String) { + let outputClosure = { + // Create mutable versions of our parameters + var logDetails = logDetails + var message = message + + // Apply filters, if any indicate we should drop the message, we abort before doing the actual logging + guard !self.shouldExclude(logDetails: &logDetails, message: &message) else { return } + + self.applyFormatters(logDetails: &logDetails, message: &message) + self.write(message: message) + } + + if let logQueue = logQueue { + logQueue.async(execute: outputClosure) + } + else { + outputClosure() + } + } + + // MARK: - Methods that must be overridden in subclasses + /// Write the log message to the destination. + /// + /// - Parameters: + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + open func write(message: String) { + // Do something with the message in an overridden version of this method + precondition(false, "Must override this") + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Destinations/ConsoleDestination.swift b/Pods/XCGLogger/Sources/XCGLogger/Destinations/ConsoleDestination.swift new file mode 100644 index 0000000..1683cdf --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Destinations/ConsoleDestination.swift @@ -0,0 +1,26 @@ +// +// ConsoleDestination.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Dispatch + +// MARK: - ConsoleDestination +/// A standard destination that outputs log details to the console +open class ConsoleDestination: BaseQueuedDestination { + // MARK: - Overridden Methods + /// Print the log to the console. + /// + /// - Parameters: + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + open override func write(message: String) { + print(message) + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Destinations/DestinationProtocol.swift b/Pods/XCGLogger/Sources/XCGLogger/Destinations/DestinationProtocol.swift new file mode 100644 index 0000000..d10e761 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Destinations/DestinationProtocol.swift @@ -0,0 +1,124 @@ +// +// DestinationProtocol.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +// MARK: - DestinationProtocol +/// Protocol for destination classes to conform to +public protocol DestinationProtocol: CustomDebugStringConvertible { + // MARK: - Properties + /// Logger that owns the destination object + var owner: XCGLogger? {get set} + + /// Identifier for the destination (should be unique) + var identifier: String {get set} + + /// Log level for this destination + var outputLevel: XCGLogger.Level {get set} + + /// Flag whether or not we've logged the app details to this destination + var haveLoggedAppDetails: Bool { get set } + + /// Array of log formatters to apply to messages before they're output + var formatters: [LogFormatterProtocol]? { get set } + + /// Array of log filters to apply to messages before they're output + var filters: [FilterProtocol]? { get set } + + // MARK: - Methods + /// Process the log details. + /// + /// - Parameters: + /// - logDetails: Structure with all of the details for the log to process. + /// + /// - Returns: Nothing + /// + func process(logDetails: LogDetails) + + /// Process the log details (internal use, same as processLogDetails but omits function/file/line info). + /// + /// - Parameters: + /// - logDetails: Structure with all of the details for the log to process. + /// + /// - Returns: Nothing + /// + func processInternal(logDetails: LogDetails) + + /// Check if the destination's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - level: The log level to check. + /// + /// - Returns: + /// - true: Log destination is at the log level specified or lower. + /// - false: Log destination is at a higher log level. + /// + func isEnabledFor(level: XCGLogger.Level) -> Bool + + /// Apply filters to determine if the log message should be logged. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: + /// - true: Drop this log message. + /// - false: Keep this log message and continue processing. + /// + func shouldExclude(logDetails: inout LogDetails, message: inout String) -> Bool + + /// Apply formatters. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + func applyFormatters(logDetails: inout LogDetails, message: inout String) +} + +extension DestinationProtocol { + + /// Iterate over all of the log filters in this destination, or the logger if none set for the destination. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: + /// - true: Drop this log message. + /// - false: Keep this log message and continue processing. + /// + public func shouldExclude(logDetails: inout LogDetails, message: inout String) -> Bool { + guard let filters = self.filters ?? self.owner?.filters, filters.count > 0 else { return false } + + for filter in filters { + if filter.shouldExclude(logDetails: &logDetails, message: &message) { + return true + } + } + + return false + } + + /// Iterate over all of the log formatters in this destination, or the logger if none set for the destination. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + public func applyFormatters(logDetails: inout LogDetails, message: inout String) { + guard let formatters = self.formatters ?? self.owner?.formatters, formatters.count > 0 else { return } + + for formatter in formatters { + formatter.format(logDetails: &logDetails, message: &message) + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Destinations/FileDestination.swift b/Pods/XCGLogger/Sources/XCGLogger/Destinations/FileDestination.swift new file mode 100644 index 0000000..c0f5def --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Destinations/FileDestination.swift @@ -0,0 +1,245 @@ +// +// FileDestination.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Foundation +import Dispatch + +// MARK: - FileDestination +/// A standard destination that outputs log details to a file +open class FileDestination: BaseQueuedDestination { + // MARK: - Properties + /// Logger that owns the destination object + open override var owner: XCGLogger? { + didSet { + if owner != nil { + openFile() + } + else { + closeFile() + } + } + } + + /// FileURL of the file to log to + open var writeToFileURL: URL? = nil { + didSet { + openFile() + } + } + + /// File handle for the log file + internal var logFileHandle: FileHandle? = nil + + /// Option: whether or not to append to the log file if it already exists + internal var shouldAppend: Bool + + /// Option: if appending to the log file, the string to output at the start to mark where the append took place + internal var appendMarker: String? + + /// Option: Attributes to use when creating a new file + internal var fileAttributes: [FileAttributeKey: Any]? = nil + + // MARK: - Life Cycle + public init(owner: XCGLogger? = nil, writeToFile: Any, identifier: String = "", shouldAppend: Bool = false, appendMarker: String? = "-- ** ** ** --", attributes: [FileAttributeKey: Any]? = nil) { + self.shouldAppend = shouldAppend + self.appendMarker = appendMarker + self.fileAttributes = attributes + + if writeToFile is NSString { + writeToFileURL = URL(fileURLWithPath: writeToFile as! String) + } + else if let writeToFile = writeToFile as? URL, writeToFile.isFileURL { + writeToFileURL = writeToFile + } + else { + writeToFileURL = nil + } + + super.init(owner: owner, identifier: identifier) + + if owner != nil { + openFile() + } + } + + deinit { + // close file stream if open + closeFile() + } + + // MARK: - File Handling Methods + /// Open the log file for writing. + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + private func openFile() { + guard let owner = owner else { return } + + if logFileHandle != nil { + closeFile() + } + + guard let writeToFileURL = writeToFileURL else { return } + + let fileManager: FileManager = FileManager.default + let fileExists: Bool = fileManager.fileExists(atPath: writeToFileURL.path) + if !shouldAppend || !fileExists { + fileManager.createFile(atPath: writeToFileURL.path, contents: nil, attributes: fileAttributes) + } + + do { + logFileHandle = try FileHandle(forWritingTo: writeToFileURL) + if fileExists && shouldAppend { + logFileHandle?.seekToEndOfFile() + + if let appendMarker = appendMarker, + let encodedData = "\(appendMarker)\n".data(using: String.Encoding.utf8) { + + _try({ + self.logFileHandle?.write(encodedData) + }, + catch: { (exception: NSException) in + print("Objective-C Exception occurred: \(exception)") + }) + } + } + } + catch let error as NSError { + owner._logln("Attempt to open log file for \(fileExists && shouldAppend ? "appending" : "writing") failed: \(error.localizedDescription)", level: .error, source: self) + logFileHandle = nil + return + } + + owner.logAppDetails(selectedDestination: self) + + let logDetails = LogDetails(level: .info, date: Date(), message: "XCGLogger " + (fileExists && shouldAppend ? "appending" : "writing") + " log to: " + writeToFileURL.absoluteString, functionName: "", fileName: "", lineNumber: 0, userInfo: XCGLogger.Constants.internalUserInfo) + owner._logln(logDetails.message, level: logDetails.level, source: self) + if owner.destination(withIdentifier: identifier) == nil { + processInternal(logDetails: logDetails) + } + } + + /// Close the log file. + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + private func closeFile() { + logFileHandle?.synchronizeFile() + logFileHandle?.closeFile() + logFileHandle = nil + } + + /// Force any buffered data to be written to the file. + /// + /// - Parameters: + /// - closure: An optional closure to execute after the file has been rotated. + /// + /// - Returns: Nothing. + /// + open func flush(closure: (() -> Void)? = nil) { + if let logQueue = logQueue { + logQueue.async { + self.logFileHandle?.synchronizeFile() + closure?() + } + } + else { + logFileHandle?.synchronizeFile() + closure?() + } + } + + /// Rotate the log file, storing the existing log file in the specified location. + /// + /// - Parameters: + /// - archiveToFile: FileURL or path (as String) to where the existing log file should be rotated to. + /// - closure: An optional closure to execute after the file has been rotated. + /// + /// - Returns: + /// - true: Log file rotated successfully. + /// - false: Error rotating the log file. + /// + @discardableResult open func rotateFile(to archiveToFile: Any, closure: ((_ success: Bool) -> Void)? = nil) -> Bool { + var archiveToFileURL: URL? = nil + + if archiveToFile is NSString { + archiveToFileURL = URL(fileURLWithPath: archiveToFile as! String) + } + else if let archiveToFile = archiveToFile as? URL, archiveToFile.isFileURL { + archiveToFileURL = archiveToFile + } + else { + closure?(false) + return false + } + + if let archiveToFileURL = archiveToFileURL, + let writeToFileURL = writeToFileURL { + + let fileManager: FileManager = FileManager.default + guard !fileManager.fileExists(atPath: archiveToFileURL.path) else { closure?(false); return false } + + closeFile() + haveLoggedAppDetails = false + + do { + try fileManager.moveItem(atPath: writeToFileURL.path, toPath: archiveToFileURL.path) + } + catch let error as NSError { + openFile() + owner?._logln("Unable to rotate file \(writeToFileURL.path) to \(archiveToFileURL.path): \(error.localizedDescription)", level: .error, source: self) + closure?(false) + return false + } + + do { + if let identifierData: Data = identifier.data(using: .utf8) { + try archiveToFileURL.setExtendedAttribute(data: identifierData, forName: XCGLogger.Constants.extendedAttributeArchivedLogIdentifierKey) + } + if let timestampData: Data = "\(Date().timeIntervalSince1970)".data(using: .utf8) { + try archiveToFileURL.setExtendedAttribute(data: timestampData, forName: XCGLogger.Constants.extendedAttributeArchivedLogTimestampKey) + } + } + catch let error as NSError { + owner?._logln("Unable to set extended file attributes on file \(archiveToFileURL.path): \(error.localizedDescription)", level: .error, source: self) + } + + owner?._logln("Rotated file \(writeToFileURL.path) to \(archiveToFileURL.path)", level: .info, source: self) + openFile() + closure?(true) + return true + } + + closure?(false) + return false + } + + // MARK: - Overridden Methods + /// Write the log to the log file. + /// + /// - Parameters: + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + open override func write(message: String) { + if let encodedData = "\(message)\n".data(using: String.Encoding.utf8) { + _try({ + self.logFileHandle?.write(encodedData) + }, + catch: { (exception: NSException) in + print("Objective-C Exception occurred: \(exception)") + }) + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Destinations/TestDestination.swift b/Pods/XCGLogger/Sources/XCGLogger/Destinations/TestDestination.swift new file mode 100644 index 0000000..3fb9851 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Destinations/TestDestination.swift @@ -0,0 +1,109 @@ +// +// TestDestination.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-08-26. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Dispatch + +// MARK: - TestDestination +/// A destination for testing, preload it with the expected logs, send your logs, then check for success +open class TestDestination: BaseQueuedDestination { + // MARK: - Properties + /// Array of all expected log messages + open var expectedLogMessages: [String] = [] + + /// Array of received, unexpected log messages + open var unexpectedLogMessages: [String] = [] + + /// Number of log messages still expected + open var remainingNumberOfExpectedLogMessages: Int { + get { + return expectedLogMessages.count + } + } + + /// Number of unexpected log messages + open var numberOfUnexpectedLogMessages: Int { + get { + return unexpectedLogMessages.count + } + } + + /// Add the messages you expect to be logged + /// + /// - Parameters: + /// - expectedLogMessage: The log message, formated as you expect it to be received. + /// + /// - Returns: Nothing + /// + open func add(expectedLogMessage message: String) { + sync { + expectedLogMessages.append(message) + } + } + + /// Execute a closure on the logQueue if it exists, otherwise just execute on the current thread + /// + /// - Parameters: + /// - closure: The closure to execute. + /// + /// - Returns: Nothing + /// + fileprivate func sync(closure: () -> ()) { + if let logQueue = logQueue { + logQueue.sync { + closure() + } + } + else { + closure() + } + } + + /// Reset our expectations etc for additional tests + /// + /// - Parameters: Nothing + /// + /// - Returns: Nothing + /// + open func reset() { + haveLoggedAppDetails = false + expectedLogMessages = [] + unexpectedLogMessages = [] + } + + // MARK: - Overridden Methods + /// Removes line from expected log messages if there's a match, otherwise adds to unexpected log messages. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + open override func output(logDetails: LogDetails, message: String) { + sync { + var logDetails = logDetails + var message = message + + // Apply filters, if any indicate we should drop the message, we abort before doing the actual logging + if self.shouldExclude(logDetails: &logDetails, message: &message) { + return + } + + applyFormatters(logDetails: &logDetails, message: &message) + + let index = expectedLogMessages.index(of: message) + if let index = index { + expectedLogMessages.remove(at: index) + } + else { + unexpectedLogMessages.append(message) + } + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Extensions/DispatchQueue+XCGAdditions.swift b/Pods/XCGLogger/Sources/XCGLogger/Extensions/DispatchQueue+XCGAdditions.swift new file mode 100644 index 0000000..0e17e2f --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Extensions/DispatchQueue+XCGAdditions.swift @@ -0,0 +1,19 @@ +// +// DispatchQueue+XCGAdditions.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-08-26. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Dispatch + +/// Extensions to the DispatchQueue class +extension DispatchQueue { + + /// Extract the current dispatch queue's label name (Temp workaround until this is added to Swift 3.0 properly) + public static var currentQueueLabel: String? { + return String(validatingUTF8: __dispatch_queue_get_label(nil)) + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Extensions/URL+XCGAdditions.swift b/Pods/XCGLogger/Sources/XCGLogger/Extensions/URL+XCGAdditions.swift new file mode 100644 index 0000000..0e79140 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Extensions/URL+XCGAdditions.swift @@ -0,0 +1,82 @@ +// +// URL+ExtendedAttributes.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2017-04-04. +// Copyright © 2017 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// +// Based on code by Martin-R here: https://stackoverflow.com/a/38343753/144857 + +import Foundation + +extension URL { + + /// Get extended attribute. + func extendedAttribute(forName name: String) throws -> Data? { + let data: Data? = try self.withUnsafeFileSystemRepresentation { (fileSystemPath: (UnsafePointer?)) -> Data? in + // Determine attribute size + let length = getxattr(fileSystemPath, name, nil, 0, 0, 0) + guard length >= 0 else { return nil } + + // Create buffer with required size + var data = Data(count: length) + + // Retrieve attribute + let result = data.withUnsafeMutableBytes { + getxattr(fileSystemPath, name, $0, data.count, 0, 0) + } + guard result >= 0 else { throw URL.posixError(errno) } + return data + } + + return data + } + + /// Set extended attribute. + func setExtendedAttribute(data: Data, forName name: String) throws { + try self.withUnsafeFileSystemRepresentation { fileSystemPath in + let result = data.withUnsafeBytes { + setxattr(fileSystemPath, name, $0, data.count, 0, 0) + } + guard result >= 0 else { throw URL.posixError(errno) } + } + } + + /// Remove extended attribute. + func removeExtendedAttribute(forName name: String) throws { + try self.withUnsafeFileSystemRepresentation { fileSystemPath in + let result = removexattr(fileSystemPath, name, 0) + guard result >= 0 else { throw URL.posixError(errno) } + } + } + + /// Get list of all extended attributes. + func listExtendedAttributes() throws -> [String] { + let list = try self.withUnsafeFileSystemRepresentation { (fileSystemPath: (UnsafePointer?)) -> [String] in + let length = listxattr(fileSystemPath, nil, 0, 0) + guard length >= 0 else { throw URL.posixError(errno) } + + // Create buffer with required size + var data = Data(count: length) + + // Retrieve attribute list + let result = data.withUnsafeMutableBytes { + listxattr(fileSystemPath, $0, data.count, 0) + } + guard result >= 0 else { throw URL.posixError(errno) } + + // Extract attribute names + let list = data.split(separator: 0).flatMap { + String(data: Data($0), encoding: .utf8) + } + return list + } + return list + } + + /// Helper function to create an NSError from a Unix errno. + private static func posixError(_ err: Int32) -> NSError { + return NSError(domain: NSPOSIXErrorDomain, code: Int(err), userInfo: [NSLocalizedDescriptionKey: String(cString: strerror(err))]) + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Filters/DevFilter.swift b/Pods/XCGLogger/Sources/XCGLogger/Filters/DevFilter.swift new file mode 100644 index 0000000..101f889 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Filters/DevFilter.swift @@ -0,0 +1,37 @@ +// +// DevFilter.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-09-01. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +// MARK: - DevFilter +/// Filter log messages by devs +open class DevFilter: UserInfoFilter { + + /// Initializer to create an inclusion list of devs to match against + /// + /// Note: Only log messages with a specific dev will be logged, all others will be excluded + /// + /// - Parameters: + /// - devs: Set or Array of devs to match against. + /// + public override init(includeFrom devs: S) where S.Iterator.Element == String { + super.init(includeFrom: devs) + userInfoKey = XCGLogger.Constants.userInfoKeyDevs + } + + /// Initializer to create an exclusion list of devs to match against + /// + /// Note: Log messages with a specific dev will be excluded from logging + /// + /// - Parameters: + /// - devs: Set or Array of devs to match against. + /// + public override init(excludeFrom devs: S) where S.Iterator.Element == String { + super.init(excludeFrom: devs) + userInfoKey = XCGLogger.Constants.userInfoKeyDevs + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Filters/FileNameFilter.swift b/Pods/XCGLogger/Sources/XCGLogger/Filters/FileNameFilter.swift new file mode 100644 index 0000000..a5f2d80 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Filters/FileNameFilter.swift @@ -0,0 +1,126 @@ +// +// FileNameFilter.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-08-31. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Foundation + +// MARK: - FileNameFilter +/// Filter log messages by fileName +open class FileNameFilter: FilterProtocol { + + /// Option to toggle the match results + open var inverse: Bool = false + + /// Option to match full path or just the fileName + private var excludePath: Bool = true + + /// Internal list of fileNames to match against + private var fileNamesToMatch: Set = [] + + /// Initializer to create an inclusion list of fileNames to match against + /// + /// Note: Only log messages from the specified files will be logged, all others will be excluded + /// + /// - Parameters: + /// - fileNames: Set or Array of fileNames to match against. + /// - excludePathWhenMatching: Whether or not to ignore the path for matches. **Default: true ** + /// + public init(includeFrom fileNames: S, excludePathWhenMatching: Bool = true) where S.Iterator.Element == String { + inverse = true + excludePath = excludePathWhenMatching + add(fileNames: fileNames) + } + + /// Initializer to create an exclusion list of fileNames to match against + /// + /// Note: Log messages from the specified files will be excluded from logging + /// + /// - Parameters: + /// - fileNames: Set or Array of fileNames to match against. + /// - excludePathWhenMatching: Whether or not to ignore the path for matches. **Default: true ** + /// + public init(excludeFrom fileNames: S, excludePathWhenMatching: Bool = true) where S.Iterator.Element == String { + inverse = false + excludePath = excludePathWhenMatching + add(fileNames: fileNames) + } + + /// Add another fileName to the list of names to match against. + /// + /// - Parameters: + /// - fileName: Name of the file to match against. + /// + /// - Returns: + /// - true: FileName added. + /// - false: FileName already added. + /// + @discardableResult open func add(fileName: String) -> Bool { + return fileNamesToMatch.insert(excludePath ? (fileName as NSString).lastPathComponent : fileName).inserted + } + + /// Add a list of fileNames to the list of names to match against. + /// + /// - Parameters: + /// - fileNames: Set or Array of fileNames to match against. + /// + /// - Returns: Nothing + /// + open func add(fileNames: S) where S.Iterator.Element == String { + for fileName in fileNames { + add(fileName: fileName) + } + } + + /// Clear the list of fileNames to match against. + /// + /// - Note: Doesn't change whether or not the filter is inclusive of exclusive + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + open func clear() { + fileNamesToMatch = [] + } + + /// Check if the log message should be excluded from logging. + /// + /// - Note: If the fileName matches + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: + /// - true: Drop this log message. + /// - false: Keep this log message and continue processing. + /// + open func shouldExclude(logDetails: inout LogDetails, message: inout String) -> Bool { + var matched: Bool = fileNamesToMatch.contains(excludePath ? (logDetails.fileName as NSString).lastPathComponent : logDetails.fileName) + if inverse { + matched = !matched + } + + return matched + } + + // MARK: - CustomDebugStringConvertible + open var debugDescription: String { + get { + var description: String = "\(extractTypeName(self)): " + (inverse ? "Including only matches for: " : "Excluding matches for: ") + if fileNamesToMatch.count > 5 { + description += "\n\t- " + fileNamesToMatch.sorted().joined(separator: "\n\t- ") + } + else { + description += fileNamesToMatch.sorted().joined(separator: ", ") + } + + return description + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Filters/FilterProtocol.swift b/Pods/XCGLogger/Sources/XCGLogger/Filters/FilterProtocol.swift new file mode 100644 index 0000000..acb3edb --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Filters/FilterProtocol.swift @@ -0,0 +1,25 @@ +// +// FilterProtocol.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-08-31. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +// MARK: - FilterProtocol +/// Protocol for log filter classes to conform to +public protocol FilterProtocol: CustomDebugStringConvertible { + + /// Check if the log message should be excluded from logging. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: + /// - true: Drop this log message. + /// - false: Keep this log message and continue processing. + /// + func shouldExclude(logDetails: inout LogDetails, message: inout String) -> Bool +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Filters/TagFilter.swift b/Pods/XCGLogger/Sources/XCGLogger/Filters/TagFilter.swift new file mode 100644 index 0000000..edb20f8 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Filters/TagFilter.swift @@ -0,0 +1,37 @@ +// +// TagFilter.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-09-01. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +// MARK: - TagFilter +/// Filter log messages by tags +open class TagFilter: UserInfoFilter { + + /// Initializer to create an inclusion list of tags to match against + /// + /// Note: Only log messages with a specific tag will be logged, all others will be excluded + /// + /// - Parameters: + /// - tags: Set or Array of tags to match against. + /// + public override init(includeFrom tags: S) where S.Iterator.Element == String { + super.init(includeFrom: tags) + userInfoKey = XCGLogger.Constants.userInfoKeyTags + } + + /// Initializer to create an exclusion list of tags to match against + /// + /// Note: Log messages with a specific tag will be excluded from logging + /// + /// - Parameters: + /// - tags: Set or Array of tags to match against. + /// + public override init(excludeFrom tags: S) where S.Iterator.Element == String { + super.init(excludeFrom: tags) + userInfoKey = XCGLogger.Constants.userInfoKeyTags + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Filters/UserInfoFilter.swift b/Pods/XCGLogger/Sources/XCGLogger/Filters/UserInfoFilter.swift new file mode 100644 index 0000000..a397c33 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Filters/UserInfoFilter.swift @@ -0,0 +1,143 @@ +// +// UserInfoFilter.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-09-01. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +// MARK: - UserInfoFilter +/// Filter log messages by the contents of a key in the UserInfo dictionary +/// Note: - This is intended to be subclassed, unlikely you'll use it directly +open class UserInfoFilter: FilterProtocol { + + /// The key to check in the LogDetails.userInfo dictionary + open var userInfoKey: String = "" + + /// Option to also apply the filter to internal messages (ie, app details, error's opening files etc) + open var applyFilterToInternalMessages: Bool = false + + /// Option to toggle the match results + open var inverse: Bool = false + + /// Internal list of items to match against + private var itemsToMatch: Set = [] + + /// Initializer to create an inclusion list of items to match against + /// + /// Note: Only log messages with a specific item will be logged, all others will be excluded + /// + /// - Parameters: + /// - items: Set or Array of items to match against. + /// + public init(includeFrom items: S) where S.Iterator.Element == String { + inverse = true + add(items: items) + } + + /// Initializer to create an exclusion list of items to match against + /// + /// Note: Log messages with a specific item will be excluded from logging + /// + /// - Parameters: + /// - items: Set or Array of items to match against. + /// + public init(excludeFrom items: S) where S.Iterator.Element == String { + inverse = false + add(items: items) + } + + /// Add another fileName to the list of names to match against. + /// + /// - Parameters: + /// - item: Item to match against. + /// + /// - Returns: + /// - true: FileName added. + /// - false: FileName already added. + /// + @discardableResult open func add(item: String) -> Bool { + return itemsToMatch.insert(item).inserted + } + + /// Add a list of fileNames to the list of names to match against. + /// + /// - Parameters: + /// - items: Set or Array of fileNames to match against. + /// + /// - Returns: Nothing + /// + open func add(items: S) where S.Iterator.Element == String { + for item in items { + add(item: item) + } + } + + /// Clear the list of fileNames to match against. + /// + /// - Note: Doesn't change whether or not the filter is inclusive of exclusive + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + open func clear() { + itemsToMatch = [] + } + + /// Check if the log message should be excluded from logging. + /// + /// - Note: If the fileName matches + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: + /// - true: Drop this log message. + /// - false: Keep this log message and continue processing. + /// + open func shouldExclude(logDetails: inout LogDetails, message: inout String) -> Bool { + var matched: Bool = false + + if !applyFilterToInternalMessages, + let isInternal = logDetails.userInfo[XCGLogger.Constants.userInfoKeyInternal] as? Bool, + isInternal { + return inverse + } + + if let messageItemsObject = logDetails.userInfo[userInfoKey] { + if let messageItemsSet: Set = messageItemsObject as? Set { + matched = itemsToMatch.intersection(messageItemsSet).count > 0 + } + else if let messageItemsArray: Array = messageItemsObject as? Array { + matched = itemsToMatch.intersection(messageItemsArray).count > 0 + } + else if let messageItem = messageItemsObject as? String { + matched = itemsToMatch.contains(messageItem) + } + } + + if inverse { + matched = !matched + } + + return matched + } + + // MARK: - CustomDebugStringConvertible + open var debugDescription: String { + get { + var description: String = "\(extractTypeName(self)): \(applyFilterToInternalMessages ? "(Filtering Internal) " : "")" + (inverse ? "Including only matches for: " : "Excluding matches for: ") + if itemsToMatch.count > 5 { + description += "\n\t- " + itemsToMatch.sorted().joined(separator: "\n\t- ") + } + else { + description += itemsToMatch.sorted().joined(separator: ", ") + } + + return description + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/ANSIColorLogFormatter.swift b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/ANSIColorLogFormatter.swift new file mode 100644 index 0000000..44b2b33 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/ANSIColorLogFormatter.swift @@ -0,0 +1,342 @@ +// +// ANSIColorLogFormatter.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-08-30. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +// MARK: - ANSIColorLogFormatter +/// A log formatter that will add ANSI colour codes to the message +open class ANSIColorLogFormatter: LogFormatterProtocol, CustomDebugStringConvertible { + + /// ANSI Escape code + public static let escape: String = "\u{001b}[" + + /// ANSI Reset colours code + public static let reset: String = "\(escape)m" + + /// Enum to specify ANSI colours + public enum ANSIColor: CustomStringConvertible { + case black + case red + case green + case yellow + case blue + case magenta + case cyan + case lightGrey, lightGray + case darkGrey, darkGray + case lightRed + case lightGreen + case lightYellow + case lightBlue + case lightMagenta + case lightCyan + case white + case `default` + case rgb(red: Int, green: Int, blue: Int) + case colorIndex(number: Int) + + public var foregroundCode: String { + switch self { + case .black: + return "30" + case .red: + return "31" + case .green: + return "32" + case .yellow: + return "33" + case .blue: + return "34" + case .magenta: + return "35" + case .cyan: + return "36" + case .lightGrey, .lightGray: + return "37" + case .darkGrey, .darkGray: + return "90" + case .lightRed: + return "91" + case .lightGreen: + return "92" + case .lightYellow: + return "93" + case .lightBlue: + return "94" + case .lightMagenta: + return "95" + case .lightCyan: + return "96" + case .white: + return "97" + case .default: // Note: Different from the default: at the end of a switch, this is the `default` colour + return "39" + case .rgb(let red, let green, let blue): + return "38;2;\(min(max(0, red), 255));\(min(max(0, green), 255));\(min(max(0, blue), 255))" + case .colorIndex(let number): + return "38;5;\(min(max(0, number), 255))" + } + } + + public var backgroundCode: String { + switch self { + case .black: + return "40" + case .red: + return "41" + case .green: + return "42" + case .yellow: + return "43" + case .blue: + return "44" + case .magenta: + return "45" + case .cyan: + return "46" + case .lightGrey, .lightGray: + return "47" + case .darkGrey, .darkGray: + return "100" + case .lightRed: + return "101" + case .lightGreen: + return "102" + case .lightYellow: + return "103" + case .lightBlue: + return "104" + case .lightMagenta: + return "105" + case .lightCyan: + return "106" + case .white: + return "107" + case .default: // Note: Different from the default: at the end of a switch, this is the `default` colour + return "49" + case .rgb(let red, let green, let blue): + return "48;2;\(min(max(0, red), 255));\(min(max(0, green), 255));\(min(max(0, blue), 255))" + case .colorIndex(let number): + return "48;5;\(min(max(0, number), 255))" + } + } + + /// Human readable description of this colour (CustomStringConvertible) + public var description: String { + switch self { + case .black: + return "Black" + case .red: + return "Red" + case .green: + return "Green" + case .yellow: + return "Yellow" + case .blue: + return "Blue" + case .magenta: + return "Magenta" + case .cyan: + return "Cyan" + case .lightGrey, .lightGray: + return "Light Grey" + case .darkGrey, .darkGray: + return "Dark Grey" + case .lightRed: + return "Light Red" + case .lightGreen: + return "Light Green" + case .lightYellow: + return "Light Yellow" + case .lightBlue: + return "Light Blue" + case .lightMagenta: + return "Light Magenta" + case .lightCyan: + return "Light Cyan" + case .white: + return "White" + case .default: // Note: Different from the default: at the end of a switch, this is the `default` colour + return "Default" + case .rgb(let red, let green, let blue): + return String(format: "(r: %d, g: %d, b: %d) #%02X%02X%02X", red, green, blue, red, green, blue) + case .colorIndex(let number): + return "ANSI color index: \(number)" + } + } + } + + /// Enum to specific ANSI options + public enum ANSIOption: CustomStringConvertible { + case bold + case faint + case italic + case underline + case blink + case blinkFast + case strikethrough + + public var code: String { + switch self { + case .bold: + return "1" + case .faint: + return "2" + case .italic: + return "3" + case .underline: + return "4" + case .blink: + return "5" + case .blinkFast: + return "6" + case .strikethrough: + return "9" + } + } + + public var description: String { + switch self { + case .bold: + return "Bold" + case .faint: + return "Faint" + case .italic: + return "Italic" + case .underline: + return "Underline" + case .blink: + return "Blink" + case .blinkFast: + return "Blink Fast" + case .strikethrough: + return "Strikethrough" + } + } + } + + /// Internal cache of the ANSI codes for each log level + internal var formatStrings: [XCGLogger.Level: String] = [:] + + /// Internal cache of the description for each log level + internal var descriptionStrings: [XCGLogger.Level: String] = [:] + + public init() { + resetFormatting() + } + + /// Set the colours and/or options for a specific log level. + /// + /// - Parameters: + /// - level: The log level. + /// - foregroundColor: The text colour of the message. **Default:** Restore default text colour + /// - backgroundColor: The background colour of the message. **Default:** Restore default background colour + /// - options: Array of ANSIOptions to apply to the message. **Default:** No options + /// + /// - Returns: Nothing + /// + open func colorize(level: XCGLogger.Level, with foregroundColor: ANSIColor = .default, on backgroundColor: ANSIColor = .default, options: [ANSIOption] = []) { + var codes: [String] = [foregroundColor.foregroundCode, backgroundColor.backgroundCode] + var description: String = "\(foregroundColor) on \(backgroundColor)" + + for option in options { + codes.append(option.code) + description += "/\(option)" + } + + formatStrings[level] = ANSIColorLogFormatter.escape + codes.joined(separator: ";") + "m" + descriptionStrings[level] = description + } + + /// Set the colours and/or options for a specific log level. + /// + /// - Parameters: + /// - level: The log level. + /// - custom: A specific ANSI code to use. + /// + /// - Returns: Nothing + /// + open func colorize(level: XCGLogger.Level, custom: String) { + if custom.hasPrefix(ANSIColorLogFormatter.escape) { + formatStrings[level] = "\(custom)" + descriptionStrings[level] = "Custom: \(custom[custom.index(custom.startIndex, offsetBy: ANSIColorLogFormatter.escape.lengthOfBytes(using: .utf8)) ..< custom.endIndex])" + } + else { + formatStrings[level] = ANSIColorLogFormatter.escape + "\(custom)" + descriptionStrings[level] = "Custom: \(custom)" + } + } + + /// Get the cached ANSI codes for the specified log level. + /// + /// - Parameters: + /// - level: The log level. + /// + /// - Returns: The ANSI codes for the specified log level. + /// + internal func formatString(for level: XCGLogger.Level) -> String { + return formatStrings[level] ?? ANSIColorLogFormatter.reset + } + + /// Apply a default set of colours. + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + open func resetFormatting() { + colorize(level: .verbose, with: .white, options: [.bold]) + colorize(level: .debug, with: .black) + colorize(level: .info, with: .blue) + colorize(level: .warning, with: .yellow) + colorize(level: .error, with: .red, options: [.bold]) + colorize(level: .severe, with: .white, on: .red) + colorize(level: .none) + } + + /// Clear all previously set colours. (Sets each log level back to default) + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + open func clearFormatting() { + colorize(level: .verbose) + colorize(level: .debug) + colorize(level: .info) + colorize(level: .warning) + colorize(level: .error) + colorize(level: .severe) + colorize(level: .none) + } + + // MARK: - LogFormatterProtocol + /// Apply some additional formatting to the message if appropriate. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: message with the additional formatting + /// + @discardableResult open func format(logDetails: inout LogDetails, message: inout String) -> String { + message = "\(formatString(for: logDetails.level))\(message)\(ANSIColorLogFormatter.reset)" + return message + } + + // MARK: - CustomDebugStringConvertible + open var debugDescription: String { + get { + var description: String = "\(extractTypeName(self)): " + for level in XCGLogger.Level.all { + description += "\n\t- \(level) > \(descriptionStrings[level] ?? "None")" + } + + return description + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/Base64LogFormatter.swift b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/Base64LogFormatter.swift new file mode 100644 index 0000000..63f5809 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/Base64LogFormatter.swift @@ -0,0 +1,40 @@ +// +// Base64LogFormatter.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-08-30. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +// MARK: - Base64LogFormatter +/// An example log formatter to show how encryption could be used to secure log messages, in this case, we just Base64 encode them +open class Base64LogFormatter: LogFormatterProtocol, CustomDebugStringConvertible { + + // MARK: - LogFormatterProtocol + /// Apply some additional formatting to the message if appropriate. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: message with the additional formatting + /// + @discardableResult open func format(logDetails: inout LogDetails, message: inout String) -> String { + guard let utf8Message = message.data(using: .utf8) else { return message } + + message = utf8Message.base64EncodedString() + return message + } + + /// Initializer, doesn't do anything other than make the class publicly available + public init() { + } + + // MARK: - CustomDebugStringConvertible + open var debugDescription: String { + get { + return "\(extractTypeName(self))" + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/LogFormatterProtocol.swift b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/LogFormatterProtocol.swift new file mode 100644 index 0000000..be34293 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/LogFormatterProtocol.swift @@ -0,0 +1,23 @@ +// +// LogFormatterProtocol.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-08-30. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +// MARK: - LogFormatterProtocol +/// Protocol for log formatter classes to conform to +public protocol LogFormatterProtocol: CustomDebugStringConvertible { + + /// Apply some additional formatting to the message if appropriate. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: Nothing + /// + @discardableResult func format(logDetails: inout LogDetails, message: inout String) -> String +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/PrePostFixLogFormatter.swift b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/PrePostFixLogFormatter.swift new file mode 100644 index 0000000..a2c563c --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/PrePostFixLogFormatter.swift @@ -0,0 +1,100 @@ +// +// PrePostFixLogFormatter.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-09-20. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +#if os(macOS) + import AppKit +#elseif os(iOS) || os(tvOS) || os(watchOS) + import UIKit +#endif + +// MARK: - PrePostFixLogFormatter +/// A log formatter that will optionally add a prefix, and/or postfix string to a message +open class PrePostFixLogFormatter: LogFormatterProtocol, CustomDebugStringConvertible { + + /// Internal cache of the prefix strings for each log level + internal var prefixStrings: [XCGLogger.Level: String] = [:] + + /// Internal cache of the postfix strings codes for each log level + internal var postfixStrings: [XCGLogger.Level: String] = [:] + + public init() { + } + + /// Set the prefix/postfix strings for a specific log level. + /// + /// - Parameters: + /// - prefix: A string to prepend to log messages. + /// - postfix: A string to postpend to log messages. + /// - level: The log level. + /// + /// - Returns: Nothing + /// + open func apply(prefix: String? = nil, postfix: String? = nil, to level: XCGLogger.Level? = nil) { + guard let level = level else { + guard prefix != nil || postfix != nil else { clearFormatting(); return } + + // No level specified, so, apply to all levels + for level in XCGLogger.Level.all { + self.apply(prefix: prefix, postfix: postfix, to: level) + } + return + } + + if let prefix = prefix { + prefixStrings[level] = prefix + } + else { + prefixStrings.removeValue(forKey: level) + } + + if let postfix = postfix { + postfixStrings[level] = postfix + } + else { + postfixStrings.removeValue(forKey: level) + } + } + + /// Clear all previously set colours. (Sets each log level back to default) + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + open func clearFormatting() { + prefixStrings = [:] + postfixStrings = [:] + } + + // MARK: - LogFormatterProtocol + /// Apply some additional formatting to the message if appropriate. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: message with the additional formatting + /// + @discardableResult open func format(logDetails: inout LogDetails, message: inout String) -> String { + message = "\(prefixStrings[logDetails.level] ?? "")\(message)\(postfixStrings[logDetails.level] ?? "")" + return message + } + + // MARK: - CustomDebugStringConvertible + open var debugDescription: String { + get { + var description: String = "\(extractTypeName(self)): " + for level in XCGLogger.Level.all { + description += "\n\t- \(level) > \(prefixStrings[level] ?? "None") | \(postfixStrings[level] ?? "None")" + } + + return description + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/XcodeColorsLogFormatter.swift b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/XcodeColorsLogFormatter.swift new file mode 100644 index 0000000..f6d878a --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/LogFormatters/XcodeColorsLogFormatter.swift @@ -0,0 +1,257 @@ +// +// XcodeColorsLogFormatter.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2016-08-30. +// Copyright © 2016 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +#if os(macOS) + import AppKit +#elseif os(iOS) || os(tvOS) || os(watchOS) + import UIKit +#endif + +// MARK: - XcodeColorsLogFormatter +/// A log formatter that will add colour codes for the [XcodeColor plug-in](https://github.com/robbiehanson/XcodeColors) to the message +open class XcodeColorsLogFormatter: LogFormatterProtocol, CustomDebugStringConvertible { + + /// XcodeColors escape code + public static let escape: String = "\u{001b}[" + + /// XcodeColors code to reset the foreground colour + public static let resetForeground = "\(escape)fg;" + + /// XcodeColors code to reset the background colour + public static let resetBackground = "\(escape)bg;" + + /// XcodeColors code to reset both the foreground and background colours + public static let reset: String = "\(escape);" + + /// Struct to store RGB values + public struct XcodeColor: CustomStringConvertible { + /// Red component + public var red: Int = 0 { + didSet { + guard red < 0 || red > 255 else { return } + red = 0 + } + } + + /// Green component + public var green: Int = 0 { + didSet { + guard green < 0 || green > 255 else { return } + green = 0 + } + } + + /// Blue component + public var blue: Int = 0 { + didSet { + guard blue < 0 || blue > 255 else { return } + blue = 0 + } + } + + /// Foreground code + public var foregroundCode: String { + return "fg\(red),\(green),\(blue)" + } + + /// Background code + public var backgroundCode: String { + return "bg\(red),\(green),\(blue)" + } + + public init(red: Int, green: Int, blue: Int) { + self.red = red + self.green = green + self.blue = blue + } + + public init(_ red: Int, _ green: Int, _ blue: Int) { + self.red = red + self.green = green + self.blue = blue + } + +#if os(macOS) + public init(color: NSColor) { + if let colorSpaceCorrected = color.usingColorSpaceName(NSColorSpaceName.calibratedRGB) { + self.red = Int(colorSpaceCorrected.redComponent * 255) + self.green = Int(colorSpaceCorrected.greenComponent * 255) + self.blue = Int(colorSpaceCorrected.blueComponent * 255) + } + } +#elseif os(iOS) || os(tvOS) || os(watchOS) + public init(color: UIColor) { + var redComponent: CGFloat = 0 + var greenComponent: CGFloat = 0 + var blueComponent: CGFloat = 0 + var alphaComponent: CGFloat = 0 + + color.getRed(&redComponent, green: &greenComponent, blue: &blueComponent, alpha:&alphaComponent) + + self.red = Int(redComponent * 255) + self.green = Int(greenComponent * 255) + self.blue = Int(blueComponent * 255) + } +#endif + + /// Human readable description of this colour (CustomStringConvertible) + public var description: String { + return String(format: "(r: %d, g: %d, b: %d) #%02X%02X%02X", red, green, blue, red, green, blue) + } + + /// Preset colour: Red + public static let red: XcodeColor = { return XcodeColor(red: 255, green: 0, blue: 0) }() + + /// Preset colour: Green + public static let green: XcodeColor = { return XcodeColor(red: 0, green: 255, blue: 0) }() + + /// Preset colour: Blue + public static let blue: XcodeColor = { return XcodeColor(red: 0, green: 0, blue: 255) }() + + /// Preset colour: Black + public static let black: XcodeColor = { return XcodeColor(red: 0, green: 0, blue: 0) }() + + /// Preset colour: White + public static let white: XcodeColor = { return XcodeColor(red: 255, green: 255, blue: 255) }() + + /// Preset colour: Light Grey + public static let lightGrey: XcodeColor = { return XcodeColor(red: 211, green: 211, blue: 211) }() + + /// Preset colour: Dark Grey + public static let darkGrey: XcodeColor = { return XcodeColor(red: 169, green: 169, blue: 169) }() + + /// Preset colour: Orange + public static let orange: XcodeColor = { return XcodeColor(red: 255, green: 165, blue: 0) }() + + /// Preset colour: Purple + public static let purple: XcodeColor = { return XcodeColor(red: 170, green: 0, blue: 170) }() + + /// Preset colour: Dark Green + public static let darkGreen: XcodeColor = { return XcodeColor(red: 0, green: 128, blue: 0) }() + + /// Preset colour: Cyan + public static let cyan: XcodeColor = { return XcodeColor(red: 0, green: 170, blue: 170) }() + } + + /// Internal cache of the XcodeColors codes for each log level + internal var formatStrings: [XCGLogger.Level: String] = [:] + + /// Internal cache of the description for each log level + internal var descriptionStrings: [XCGLogger.Level: String] = [:] + + public init() { + resetFormatting() + } + + /// Set the colours and/or options for a specific log level. + /// + /// - Parameters: + /// - level: The log level. + /// - foregroundColor: The text colour of the message. **Default:** Restore default text colour + /// - backgroundColor: The background colour of the message. **Default:** Restore default background colour + /// + /// - Returns: Nothing + /// + open func colorize(level: XCGLogger.Level, with foregroundColor: XcodeColor? = nil, on backgroundColor: XcodeColor? = nil) { + guard foregroundColor != nil || backgroundColor != nil else { + // neither set, use reset code + formatStrings[level] = XcodeColorsLogFormatter.reset + descriptionStrings[level] = "None" + return + } + + var formatString: String = "" + + if let foregroundColor = foregroundColor { + formatString += "\(XcodeColorsLogFormatter.escape)fg\(foregroundColor.red),\(foregroundColor.green),\(foregroundColor.blue);" + } + else { + formatString += XcodeColorsLogFormatter.resetForeground + } + + if let backgroundColor = backgroundColor { + formatString += "\(XcodeColorsLogFormatter.escape)bg\(backgroundColor.red),\(backgroundColor.green),\(backgroundColor.blue);" + } + else { + formatString += XcodeColorsLogFormatter.resetBackground + } + + formatStrings[level] = formatString + descriptionStrings[level] = "\(foregroundColor?.description ?? "Default") on \(backgroundColor?.description ?? "Default")" + } + + /// Get the cached XcodeColors codes for the specified log level. + /// + /// - Parameters: + /// - level: The log level. + /// + /// - Returns: The XcodeColors codes for the specified log level. + /// + internal func formatString(for level: XCGLogger.Level) -> String { + return formatStrings[level] ?? XcodeColorsLogFormatter.reset + } + + /// Apply a default set of colours. + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + open func resetFormatting() { + colorize(level: .verbose, with: .lightGrey) + colorize(level: .debug, with: .darkGrey) + colorize(level: .info, with: .blue) + colorize(level: .warning, with: .orange) + colorize(level: .error, with: .red) + colorize(level: .severe, with: .white, on: .red) + colorize(level: .none) + } + + /// Clear all previously set colours. (Sets each log level back to default) + /// + /// - Parameters: None + /// + /// - Returns: Nothing + /// + open func clearFormatting() { + colorize(level: .verbose) + colorize(level: .debug) + colorize(level: .info) + colorize(level: .warning) + colorize(level: .error) + colorize(level: .severe) + colorize(level: .none) + } + + // MARK: - LogFormatterProtocol + /// Apply some additional formatting to the message if appropriate. + /// + /// - Parameters: + /// - logDetails: The log details. + /// - message: Formatted/processed message ready for output. + /// + /// - Returns: message with the additional formatting + /// + @discardableResult open func format(logDetails: inout LogDetails, message: inout String) -> String { + message = "\(formatString(for: logDetails.level))\(message)\(XcodeColorsLogFormatter.reset)" + return message + } + + // MARK: - CustomDebugStringConvertible + open var debugDescription: String { + get { + var description: String = "\(extractTypeName(self)): " + for level in XCGLogger.Level.all { + description += "\n\t- \(level) > \(descriptionStrings[level] ?? "None")" + } + + return description + } + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Misc/HelperFunctions.swift b/Pods/XCGLogger/Sources/XCGLogger/Misc/HelperFunctions.swift new file mode 100644 index 0000000..d8aed1f --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Misc/HelperFunctions.swift @@ -0,0 +1,39 @@ +// +// HelperFunctions.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Foundation +import ObjcExceptionBridging + +/// Extract the type name from the given object +/// +/// - parameter someObject: the object for which you need the type name +/// +/// - returns: the type name of the object +func extractTypeName(_ someObject: Any) -> String { + return (someObject is Any.Type) ? "\(someObject)" : "\(type(of: someObject))" +} + +// MARK: - Swiftier interface to the Objective-C exception handling functions +/// Throw an Objective-C exception with the specified name/message/info +/// +/// - parameter name: The name of the exception to throw +/// - parameter message: The message to include in the exception (why it occurred) +/// - parameter userInfo: A dictionary with arbitrary info to be passed along with the exception +func _try(_ tryClosure: @escaping () -> (), catch catchClosure: @escaping (_ exception: NSException) -> (), finally finallyClosure: (() -> ())? = nil) { + _try_objc(tryClosure, catchClosure, finallyClosure ?? {}) +} + +/// Throw an Objective-C exception with the specified name/message/info +/// +/// - parameter name: The name of the exception to throw +/// - parameter message: The message to include in the exception (why it occurred) +/// - parameter userInfo: A dictionary with arbitrary info to be passed along with the exception +func _throw(name: String, message: String? = nil, userInfo: [AnyHashable: Any]? = nil) { + _throw_objc(NSException(name: NSExceptionName(rawValue: name), reason: message ?? name, userInfo: userInfo)) +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/Misc/LogDetails.swift b/Pods/XCGLogger/Sources/XCGLogger/Misc/LogDetails.swift new file mode 100644 index 0000000..c346f57 --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/Misc/LogDetails.swift @@ -0,0 +1,46 @@ +// +// LogDetails.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +import Foundation + +// MARK: - LogDetails +/// Data structure to hold all info about a log message, passed to destination classes +public struct LogDetails { + + /// Log level required to display this log + public var level: XCGLogger.Level + + /// Date this log was sent + public var date: Date + + /// The log message to display + public var message: String + + /// Name of the function that generated this log + public var functionName: String + + /// Name of the file the function exists in + public var fileName: String + + /// The line number that generated this log + public var lineNumber: Int + + /// Dictionary to store miscellaneous data about the log, can be used by formatters and filters etc. Please prefix any keys to help avoid collissions. + public var userInfo: [String: Any] + + public init(level: XCGLogger.Level, date: Date, message: String, functionName: String, fileName: String, lineNumber: Int, userInfo: [String: Any] = [:]) { + self.level = level + self.date = date + self.message = message + self.functionName = functionName + self.fileName = fileName + self.lineNumber = lineNumber + self.userInfo = userInfo + } +} diff --git a/Pods/XCGLogger/Sources/XCGLogger/XCGLogger.swift b/Pods/XCGLogger/Sources/XCGLogger/XCGLogger.swift new file mode 100644 index 0000000..546ad1b --- /dev/null +++ b/Pods/XCGLogger/Sources/XCGLogger/XCGLogger.swift @@ -0,0 +1,1219 @@ +// +// XCGLogger.swift +// XCGLogger: https://github.com/DaveWoodCom/XCGLogger +// +// Created by Dave Wood on 2014-06-06. +// Copyright © 2014 Dave Wood, Cerebral Gardens. +// Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt +// + +#if os(macOS) + import AppKit +#elseif os(iOS) || os(tvOS) || os(watchOS) + import UIKit +#endif + +// MARK: - XCGLogger +/// The main logging class +open class XCGLogger: CustomDebugStringConvertible { + // MARK: - Constants + public struct Constants { + /// Prefix identifier to use for all other identifiers + public static let baseIdentifier = "com.cerebralgardens.xcglogger" + + /// Identifier for the default instance of XCGLogger + public static let defaultInstanceIdentifier = "\(baseIdentifier).defaultInstance" + + /// Identifer for the Xcode console destination + public static let baseConsoleDestinationIdentifier = "\(baseIdentifier).logdestination.console" + + /// Identifier for the Apple System Log destination + public static let systemLogDestinationIdentifier = "\(baseIdentifier).logdestination.console.nslog" + + /// Identifier for the file logging destination + public static let fileDestinationIdentifier = "\(baseIdentifier).logdestination.file" + + /// Identifier for the default dispatch queue + public static let logQueueIdentifier = "\(baseIdentifier).queue" + + /// UserInfo Key - tags + public static let userInfoKeyTags = "\(baseIdentifier).tags" + + /// UserInfo Key - devs + public static let userInfoKeyDevs = "\(baseIdentifier).devs" + + /// UserInfo Key - internal + public static let userInfoKeyInternal = "\(baseIdentifier).internal" + + /// Library version number + public static let versionString = "6.0.1" + + /// Internal userInfo + internal static let internalUserInfo: [String: Any] = [XCGLogger.Constants.userInfoKeyInternal: true] + + /// Extended file attributed key to use when storing the logger's identifier on an archived log file + public static let extendedAttributeArchivedLogIdentifierKey = "\(baseIdentifier).archived.by" + + /// Extended file attributed key to use when storing the time a log file was archived + public static let extendedAttributeArchivedLogTimestampKey = "\(baseIdentifier).archived.at" + } + + // MARK: - Enums + /// Enum defining our log levels + public enum Level: Int, Comparable, CustomStringConvertible { + case verbose + case debug + case info + case warning + case error + case severe + case none + + public var description: String { + switch self { + case .verbose: + return "Verbose" + case .debug: + return "Debug" + case .info: + return "Info" + case .warning: + return "Warning" + case .error: + return "Error" + case .severe: + return "Severe" + case .none: + return "None" + } + } + + public static let all: [Level] = [.verbose, .debug, .info, .warning, .error, .severe] + } + + // MARK: - Default instance + /// The default XCGLogger object + open static var `default`: XCGLogger = { + struct Statics { + static let instance: XCGLogger = XCGLogger(identifier: XCGLogger.Constants.defaultInstanceIdentifier) + } + + return Statics.instance + }() + + // MARK: - Properties + /// Identifier for this logger object (should be unique) + open var identifier: String = "" + + /// The log level of this logger, any logs received at this level or higher will be output to the destinations + open var outputLevel: Level = .debug { + didSet { + for index in 0 ..< destinations.count { + destinations[index].outputLevel = outputLevel + } + } + } + + /// Option: a closure to execute whenever a logging method is called without a log message + open var noMessageClosure: () -> Any? = { return "" } + + /// Option: override descriptions of log levels + open var levelDescriptions: [XCGLogger.Level: String] = [:] + + /// Array of log formatters to apply to messages before they're output + open var formatters: [LogFormatterProtocol]? = nil + + /// Array of log filters to apply to messages before they're output + open var filters: [FilterProtocol]? = nil + + /// The default dispatch queue used for logging + open class var logQueue: DispatchQueue { + struct Statics { + static var logQueue = DispatchQueue(label: XCGLogger.Constants.logQueueIdentifier, attributes: []) + } + + return Statics.logQueue + } + + /// A custom date formatter object to use when displaying the dates of log messages (internal storage) + internal var _customDateFormatter: DateFormatter? = nil + /// The date formatter object to use when displaying the dates of log messages + open var dateFormatter: DateFormatter? { + get { + guard _customDateFormatter == nil else { return _customDateFormatter } + struct Statics { + static var dateFormatter: DateFormatter = { + let defaultDateFormatter = DateFormatter() + defaultDateFormatter.locale = NSLocale.current + defaultDateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS" + return defaultDateFormatter + }() + } + + return Statics.dateFormatter + } + set { + _customDateFormatter = newValue + } + } + + /// Array containing all of the destinations for this logger + open var destinations: [DestinationProtocol] = [] + + // MARK: - Life Cycle + public init(identifier: String = "", includeDefaultDestinations: Bool = true) { + self.identifier = identifier + + if includeDefaultDestinations { + // Setup a standard console destination + add(destination: ConsoleDestination(identifier: XCGLogger.Constants.baseConsoleDestinationIdentifier)) + } + } + + // MARK: - Setup methods + /// A shortcut method to configure the default logger instance. + /// + /// - Note: The function exists to get you up and running quickly, but it's recommended that you use the advanced usage configuration for most projects. See https://github.com/DaveWoodCom/XCGLogger/blob/master/README.md#advanced-usage-recommended + /// + /// - Parameters: + /// - level: The log level of this logger, any logs received at this level or higher will be output to the destinations. **Default:** Debug + /// - showLogIdentifier: Whether or not to output the log identifier. **Default:** false + /// - showFunctionName: Whether or not to output the function name that generated the log. **Default:** true + /// - showThreadName: Whether or not to output the thread's name the log was created on. **Default:** false + /// - showLevel: Whether or not to output the log level of the log. **Default:** true + /// - showFileNames: Whether or not to output the fileName that generated the log. **Default:** true + /// - showLineNumbers: Whether or not to output the line number where the log was generated. **Default:** true + /// - showDate: Whether or not to output the date the log was created. **Default:** true + /// - writeToFile: FileURL or path (as String) to a file to log all messages to (this file is overwritten each time the logger is created). **Default:** nil => no log file + /// - fileLevel: An alternate log level for the file destination. **Default:** nil => use the same log level as the console destination + /// + /// - Returns: Nothing + /// + open class func setup(level: Level = .debug, showLogIdentifier: Bool = false, showFunctionName: Bool = true, showThreadName: Bool = false, showLevel: Bool = true, showFileNames: Bool = true, showLineNumbers: Bool = true, showDate: Bool = true, writeToFile: Any? = nil, fileLevel: Level? = nil) { + self.default.setup(level: level, showLogIdentifier: showLogIdentifier, showFunctionName: showFunctionName, showThreadName: showThreadName, showLevel: showLevel, showFileNames: showFileNames, showLineNumbers: showLineNumbers, showDate: showDate, writeToFile: writeToFile) + } + + /// A shortcut method to configure the logger. + /// + /// - Note: The function exists to get you up and running quickly, but it's recommended that you use the advanced usage configuration for most projects. See https://github.com/DaveWoodCom/XCGLogger/blob/master/README.md#advanced-usage-recommended + /// + /// - Parameters: + /// - level: The log level of this logger, any logs received at this level or higher will be output to the destinations. **Default:** Debug + /// - showLogIdentifier: Whether or not to output the log identifier. **Default:** false + /// - showFunctionName: Whether or not to output the function name that generated the log. **Default:** true + /// - showThreadName: Whether or not to output the thread's name the log was created on. **Default:** false + /// - showLevel: Whether or not to output the log level of the log. **Default:** true + /// - showFileNames: Whether or not to output the fileName that generated the log. **Default:** true + /// - showLineNumbers: Whether or not to output the line number where the log was generated. **Default:** true + /// - showDate: Whether or not to output the date the log was created. **Default:** true + /// - writeToFile: FileURL or path (as String) to a file to log all messages to (this file is overwritten each time the logger is created). **Default:** nil => no log file + /// - fileLevel: An alternate log level for the file destination. **Default:** nil => use the same log level as the console destination + /// + /// - Returns: Nothing + /// + open func setup(level: Level = .debug, showLogIdentifier: Bool = false, showFunctionName: Bool = true, showThreadName: Bool = false, showLevel: Bool = true, showFileNames: Bool = true, showLineNumbers: Bool = true, showDate: Bool = true, writeToFile: Any? = nil, fileLevel: Level? = nil) { + outputLevel = level + + if let standardConsoleDestination = destination(withIdentifier: XCGLogger.Constants.baseConsoleDestinationIdentifier) as? ConsoleDestination { + standardConsoleDestination.showLogIdentifier = showLogIdentifier + standardConsoleDestination.showFunctionName = showFunctionName + standardConsoleDestination.showThreadName = showThreadName + standardConsoleDestination.showLevel = showLevel + standardConsoleDestination.showFileName = showFileNames + standardConsoleDestination.showLineNumber = showLineNumbers + standardConsoleDestination.showDate = showDate + standardConsoleDestination.outputLevel = level + } + + if let writeToFile: Any = writeToFile { + // We've been passed a file to use for logging, set up a file logger + let standardFileDestination: FileDestination = FileDestination(writeToFile: writeToFile, identifier: XCGLogger.Constants.fileDestinationIdentifier) + + standardFileDestination.showLogIdentifier = showLogIdentifier + standardFileDestination.showFunctionName = showFunctionName + standardFileDestination.showThreadName = showThreadName + standardFileDestination.showLevel = showLevel + standardFileDestination.showFileName = showFileNames + standardFileDestination.showLineNumber = showLineNumbers + standardFileDestination.showDate = showDate + standardFileDestination.outputLevel = fileLevel ?? level + + add(destination: standardFileDestination) + } + + logAppDetails() + } + + // MARK: - Logging methods + /// Log a message if the logger's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - level: Specified log level **Default:** *Debug*. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing + /// + open class func logln(_ closure: @autoclosure () -> Any?, level: Level = .debug, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(level, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log a message if the logger's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - level: Specified log level **Default:** *Debug*. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing + /// + open class func logln(_ level: Level = .debug, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.default.logln(level, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log a message if the logger's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - level: Specified log level **Default:** *Debug*. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing + /// + open class func logln(_ level: Level = .debug, functionName: String = #function, fileName: String = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.default.logln(level, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log a message if the logger's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - level: Specified log level **Default:** *Debug*. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing + /// + open func logln(_ closure: @autoclosure () -> Any?, level: Level = .debug, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(level, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log a message if the logger's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - level: Specified log level **Default:** *Debug*. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing + /// + open func logln(_ level: Level = .debug, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + logln(level, functionName: String(describing: functionName), fileName: String(describing: fileName), lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log a message if the logger's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - level: Specified log level **Default:** *Debug*. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing + /// + open func logln(_ level: Level = .debug, functionName: String = #function, fileName: String = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + let enabledDestinations = destinations.filter({$0.isEnabledFor(level: level)}) + guard enabledDestinations.count > 0 else { return } + guard let closureResult = closure() else { return } + + let logDetails: LogDetails = LogDetails(level: level, date: Date(), message: String(describing: closureResult), functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo) + for destination in enabledDestinations { + destination.process(logDetails: logDetails) + } + } + + /// Execute some code only when at the specified log level. + /// + /// - Parameters: + /// - level: Specified log level **Default:** *Debug*. + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open class func exec(_ level: Level = .debug, closure: () -> () = {}) { + self.default.exec(level, closure: closure) + } + + /// Execute some code only when at the specified log level. + /// + /// - Parameters: + /// - level: Specified log level **Default:** *Debug*. + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open func exec(_ level: Level = .debug, closure: () -> () = {}) { + guard isEnabledFor(level:level) else { return } + + closure() + } + + /// Generate logs to display your app's vitals (app name, version, etc) as well as XCGLogger's version and log level. + /// + /// - Parameters: + /// - selectedDestination: A specific destination to log the vitals on, if omitted, will log to all destinations + /// + /// - Returns: Nothing. + /// + open func logAppDetails(selectedDestination: DestinationProtocol? = nil) { + let date = Date() + + var buildString = "" + if let infoDictionary = Bundle.main.infoDictionary { + if let CFBundleShortVersionString = infoDictionary["CFBundleShortVersionString"] as? String { + buildString = "Version: \(CFBundleShortVersionString) " + } + if let CFBundleVersion = infoDictionary["CFBundleVersion"] as? String { + buildString += "Build: \(CFBundleVersion) " + } + } + + let processInfo: ProcessInfo = ProcessInfo.processInfo + let XCGLoggerVersionNumber = XCGLogger.Constants.versionString + + var logDetails: [LogDetails] = [] + logDetails.append(LogDetails(level: .info, date: date, message: "\(processInfo.processName) \(buildString)PID: \(processInfo.processIdentifier)", functionName: "", fileName: "", lineNumber: 0, userInfo: XCGLogger.Constants.internalUserInfo)) + logDetails.append(LogDetails(level: .info, date: date, message: "XCGLogger Version: \(XCGLoggerVersionNumber) - Level: \(outputLevel)", functionName: "", fileName: "", lineNumber: 0, userInfo: XCGLogger.Constants.internalUserInfo)) + + for var destination in (selectedDestination != nil ? [selectedDestination!] : destinations) where !destination.haveLoggedAppDetails { + for logDetail in logDetails { + guard destination.isEnabledFor(level:.info) else { continue } + + destination.haveLoggedAppDetails = true + destination.processInternal(logDetails: logDetail) + } + } + } + + // MARK: - Convenience logging methods + // MARK: * Verbose + /// Log something at the Verbose log level. This format of verbose() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func verbose(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.verbose, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.default.noMessageClosure) + } + + /// Log something at the Verbose log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func verbose(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.verbose, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Verbose log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open class func verbose(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.default.logln(.verbose, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Verbose log level. This format of verbose() isn't provided the object to log, instead the property *`noMessageClosure`* is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func verbose(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.verbose, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.noMessageClosure) + } + + /// Log something at the Verbose log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func verbose(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.verbose, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Verbose log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open func verbose(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.logln(.verbose, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + // MARK: * Debug + /// Log something at the Debug log level. This format of debug() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func debug(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.debug, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.default.noMessageClosure) + } + + /// Log something at the Debug log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func debug(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.debug, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Debug log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open class func debug(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.default.logln(.debug, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Debug log level. This format of debug() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func debug(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.debug, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.noMessageClosure) + } + + /// Log something at the Debug log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func debug(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.debug, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Debug log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open func debug(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.logln(.debug, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + // MARK: * Info + /// Log something at the Info log level. This format of info() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func info(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.info, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.default.noMessageClosure) + } + + /// Log something at the Info log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func info(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.info, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Info log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open class func info(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.default.logln(.info, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Info log level. This format of info() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func info(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.info, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.noMessageClosure) + } + + /// Log something at the Info log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func info(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.info, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Info log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open func info(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.logln(.info, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + // MARK: * Warning + /// Log something at the Warning log level. This format of warning() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func warning(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.warning, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.default.noMessageClosure) + } + + /// Log something at the Warning log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func warning(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.warning, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Warning log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open class func warning(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.default.logln(.warning, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Warning log level. This format of warning() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func warning(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.warning, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.noMessageClosure) + } + + /// Log something at the Warning log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func warning(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.warning, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Warning log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open func warning(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.logln(.warning, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + // MARK: * Error + /// Log something at the Error log level. This format of error() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func error(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.error, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.default.noMessageClosure) + } + + /// Log something at the Error log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func error(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.error, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Error log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open class func error(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.default.logln(.error, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Error log level. This format of error() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func error(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.error, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.noMessageClosure) + } + + /// Log something at the Error log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func error(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.error, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Error log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open func error(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.logln(.error, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + // MARK: * Severe + /// Log something at the Severe log level. This format of severe() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func severe(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.severe, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.default.noMessageClosure) + } + + /// Log something at the Severe log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open class func severe(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.default.logln(.severe, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Severe log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open class func severe(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.default.logln(.severe, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Severe log level. This format of severe() isn't provided the object to log, instead the property `noMessageClosure` is executed instead. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func severe(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.severe, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: self.noMessageClosure) + } + + /// Log something at the Severe log level. + /// + /// - Parameters: + /// - closure: A closure that returns the object to be logged. + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// + /// - Returns: Nothing. + /// + open func severe(_ closure: @autoclosure () -> Any?, functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:]) { + self.logln(.severe, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + /// Log something at the Severe log level. + /// + /// - Parameters: + /// - functionName: Normally omitted **Default:** *#function*. + /// - fileName: Normally omitted **Default:** *#file*. + /// - lineNumber: Normally omitted **Default:** *#line*. + /// - userInfo: Dictionary for adding arbitrary data to the log message, can be used by filters/formatters etc + /// - closure: A closure that returns the object to be logged. + /// + /// - Returns: Nothing. + /// + open func severe(_ functionName: StaticString = #function, fileName: StaticString = #file, lineNumber: Int = #line, userInfo: [String: Any] = [:], closure: () -> Any?) { + self.logln(.severe, functionName: functionName, fileName: fileName, lineNumber: lineNumber, userInfo: userInfo, closure: closure) + } + + // MARK: - Exec Methods + // MARK: * Verbose + /// Execute some code only when at the Verbose log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open class func verboseExec(_ closure: () -> () = {}) { + self.default.exec(XCGLogger.Level.verbose, closure: closure) + } + + /// Execute some code only when at the Verbose log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open func verboseExec(_ closure: () -> () = {}) { + self.exec(XCGLogger.Level.verbose, closure: closure) + } + + // MARK: * Debug + /// Execute some code only when at the Debug or lower log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open class func debugExec(_ closure: () -> () = {}) { + self.default.exec(XCGLogger.Level.debug, closure: closure) + } + + /// Execute some code only when at the Debug or lower log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open func debugExec(_ closure: () -> () = {}) { + self.exec(XCGLogger.Level.debug, closure: closure) + } + + // MARK: * Info + /// Execute some code only when at the Info or lower log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open class func infoExec(_ closure: () -> () = {}) { + self.default.exec(XCGLogger.Level.info, closure: closure) + } + + /// Execute some code only when at the Info or lower log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open func infoExec(_ closure: () -> () = {}) { + self.exec(XCGLogger.Level.info, closure: closure) + } + + // MARK: * Warning + /// Execute some code only when at the Warning or lower log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open class func warningExec(_ closure: () -> () = {}) { + self.default.exec(XCGLogger.Level.warning, closure: closure) + } + + /// Execute some code only when at the Warning or lower log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open func warningExec(_ closure: () -> () = {}) { + self.exec(XCGLogger.Level.warning, closure: closure) + } + + // MARK: * Error + /// Execute some code only when at the Error or lower log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open class func errorExec(_ closure: () -> () = {}) { + self.default.exec(XCGLogger.Level.error, closure: closure) + } + + /// Execute some code only when at the Error or lower log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open func errorExec(_ closure: () -> () = {}) { + self.exec(XCGLogger.Level.error, closure: closure) + } + + // MARK: * Severe + /// Execute some code only when at the Severe log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open class func severeExec(_ closure: () -> () = {}) { + self.default.exec(XCGLogger.Level.severe, closure: closure) + } + + /// Execute some code only when at the Severe log level. + /// + /// - Parameters: + /// - closure: The code closure to be executed. + /// + /// - Returns: Nothing. + /// + open func severeExec(_ closure: () -> () = {}) { + self.exec(XCGLogger.Level.severe, closure: closure) + } + + // MARK: - Log destination methods + /// Get the destination with the specified identifier. + /// + /// - Parameters: + /// - identifier: Identifier of the destination to return. + /// + /// - Returns: The destination with the specified identifier, if one exists, nil otherwise. + /// + open func destination(withIdentifier identifier: String) -> DestinationProtocol? { + for destination in destinations { + if destination.identifier == identifier { + return destination + } + } + + return nil + } + + /// Add a new destination to the logger. + /// + /// - Parameters: + /// - destination: The destination to add. + /// + /// - Returns: + /// - true: Log destination was added successfully. + /// - false: Failed to add the destination. + /// + @discardableResult open func add(destination: DestinationProtocol) -> Bool { + var destination = destination + + let existingDestination: DestinationProtocol? = self.destination(withIdentifier: destination.identifier) + if existingDestination != nil { + return false + } + + if let previousOwner = destination.owner { + previousOwner.remove(destination: destination) + } + + destination.owner = self + destinations.append(destination) + return true + } + + /// Remove the destination from the logger. + /// + /// - Parameters: + /// - destination: The destination to remove. + /// + /// - Returns: + /// - true: Log destination was removed successfully. + /// - false: Failed to remove the destination. + /// + @discardableResult open func remove(destination: DestinationProtocol) -> Bool { + guard destination.owner === self else { return false } + + let existingDestination: DestinationProtocol? = self.destination(withIdentifier: destination.identifier) + guard existingDestination != nil else { return false } + + // Make our parameter mutable + var destination = destination + destination.owner = nil + + destinations = destinations.filter({$0.owner != nil}) + return true + } + + /// Remove the destination with the specified identifier from the logger. + /// + /// - Parameters: + /// - identifier: The identifier of the destination to remove. + /// + /// - Returns: + /// - true: Log destination was removed successfully. + /// - false: Failed to remove the destination. + /// + @discardableResult open func remove(destinationWithIdentifier identifier: String) -> Bool { + guard let destination = destination(withIdentifier: identifier) else { return false } + return remove(destination: destination) + } + + // MARK: - Misc methods + /// Check if the logger's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - level: The log level to check. + /// + /// - Returns: + /// - true: Logger is at the log level specified or lower. + /// - false: Logger is at a higher log levelss. + /// + open func isEnabledFor(level: XCGLogger.Level) -> Bool { + return level >= self.outputLevel + } + + // MARK: - Private methods + /// Log a message if the logger's log level is equal to or lower than the specified level. + /// + /// - Parameters: + /// - message: Message to log. + /// - level: Specified log level. + /// - source: The destination calling this method + /// + /// - Returns: Nothing + /// + internal func _logln(_ message: String, level: Level = .debug, source sourceDestination: DestinationProtocol? = nil) { + let logDetails: LogDetails = LogDetails(level: level, date: Date(), message: message, functionName: "", fileName: "", lineNumber: 0, userInfo: XCGLogger.Constants.internalUserInfo) + for destination in self.destinations { + if level >= .error && sourceDestination?.identifier == destination.identifier { continue } + if (destination.isEnabledFor(level: level)) { + destination.processInternal(logDetails: logDetails) + } + } + } + + // MARK: - DebugPrintable + open var debugDescription: String { + get { + var description: String = "\(extractTypeName(self)): \(identifier) - destinations: \r" + for destination in destinations { + description += "\t \(destination.debugDescription)\r" + } + + return description + } + } +} + +// Implement Comparable for XCGLogger.Level +public func < (lhs: XCGLogger.Level, rhs: XCGLogger.Level) -> Bool { + return lhs.rawValue < rhs.rawValue +}