From b17c7cd9a392eff56f7b6566eba5b8d57c3079ba Mon Sep 17 00:00:00 2001 From: Koray Koska Date: Thu, 4 Jul 2019 01:49:06 +0200 Subject: [PATCH 1/6] Update dependencies --- Cartfile | 4 +- Example/Podfile | 6 +- Example/Podfile.lock | 52 +- Example/Pods/BigInt/README.md | 13 +- Example/Pods/BigInt/sources/BigInt.swift | 2 - Example/Pods/BigInt/sources/Hashable.swift | 16 +- .../BigInt/sources/String Conversion.swift | 32 +- Example/Pods/CryptoSwift/README.md | 222 +- .../Sources/CryptoSwift/AES.Cryptors.swift | 130 +- .../CryptoSwift/Sources/CryptoSwift/AES.swift | 42 +- .../Sources/CryptoSwift/Array+Extension.swift | 10 +- .../CryptoSwift/BatchedCollection.swift | 3 +- .../Sources/CryptoSwift/BlockDecryptor.swift | 85 + .../Sources/CryptoSwift/BlockEncryptor.swift | 57 + .../CryptoSwift/BlockMode/BlockMode.swift | 66 +- .../BlockMode/BlockModeOptions.swift | 15 +- .../BlockMode/BlockModeWorker.swift | 20 - .../Sources/CryptoSwift/BlockMode/CBC.swift | 31 +- .../Sources/CryptoSwift/BlockMode/CCM.swift | 359 ++ .../Sources/CryptoSwift/BlockMode/CFB.swift | 31 +- .../Sources/CryptoSwift/BlockMode/CTR.swift | 119 +- .../BlockMode/CipherModeWorker.swift | 61 + .../Sources/CryptoSwift/BlockMode/ECB.swift | 22 +- .../Sources/CryptoSwift/BlockMode/GCM.swift | 370 ++ .../Sources/CryptoSwift/BlockMode/OFB.swift | 31 +- .../Sources/CryptoSwift/BlockMode/PCBC.swift | 31 +- .../RandomAccessBlockModeWorker.swift | 18 - .../Sources/CryptoSwift/Blowfish.swift | 17 +- .../Sources/CryptoSwift/CBCMAC.swift | 104 + .../Sources/CryptoSwift/CMAC.swift | 85 +- .../Sources/CryptoSwift/ChaCha20.swift | 23 +- .../Sources/CryptoSwift/Checksum.swift | 198 +- .../Sources/CryptoSwift/CompactMap.swift | 2 +- ...andomAccessCryptor.swift => Cryptor.swift} | 8 +- .../Sources/CryptoSwift/Cryptors.swift | 12 +- .../Sources/CryptoSwift/Digest.swift | 2 +- .../Foundation/AES+Foundation.swift | 2 +- .../Foundation/Array+Foundation.swift | 6 +- .../Foundation/Blowfish+Foundation.swift | 2 +- .../Foundation/Data+Extension.swift | 32 +- .../Sources/CryptoSwift/HKDF.swift | 6 +- .../Sources/CryptoSwift/HMAC.swift | 13 +- .../Sources/CryptoSwift/Int+Extension.swift | 10 +- .../Sources/CryptoSwift/PKCS/PBKDF1.swift | 10 +- .../Sources/CryptoSwift/PKCS/PBKDF2.swift | 11 +- .../Sources/CryptoSwift/Padding.swift | 4 +- .../CryptoSwift/RandomBytesSequence.swift | 12 +- .../Sources/CryptoSwift/SHA1.swift | 10 +- .../Sources/CryptoSwift/SHA2.swift | 28 +- .../Sources/CryptoSwift/SHA3.swift | 6 +- .../Sources/CryptoSwift/Scrypt.swift | 256 + .../Sources/CryptoSwift/SecureBytes.swift | 6 +- .../Sources/CryptoSwift/StreamDecryptor.swift | 78 + .../Sources/CryptoSwift/StreamEncryptor.swift | 56 + .../CryptoSwift/String+Extension.swift | 4 + .../Sources/CryptoSwift/UInt128.swift | 90 + .../CryptoSwift/UInt32+Extension.swift | 6 +- .../CryptoSwift/UInt64+Extension.swift | 14 +- .../Sources/CryptoSwift/UInt8+Extension.swift | 6 +- .../Sources/CryptoSwift/Updatable.swift | 73 +- Example/Pods/Local Podspecs/Web3.podspec.json | 8 +- Example/Pods/Manifest.lock | 52 +- .../CwlCatchException/CwlCatchException.swift | 2 - .../CwlCatchBadInstruction.swift | 6 +- .../Mach/CwlPreconditionTesting.h | 2 + Example/Pods/Nimble/README.md | 134 +- .../Nimble/Adapters/AdapterProtocols.swift | 1 + .../Nimble/Adapters/AssertionRecorder.swift | 37 +- .../Nimble/Adapters/NMBExpectation.swift | 48 +- .../Nimble/Adapters/NMBObjCMatcher.swift | 40 +- .../Nimble/Adapters/NimbleEnvironment.swift | 18 +- .../Nimble/Adapters/NimbleXCTestHandler.swift | 26 +- .../Pods/Nimble/Sources/Nimble/DSL+Wait.swift | 16 +- Example/Pods/Nimble/Sources/Nimble/DSL.swift | 18 +- .../Nimble/Sources/Nimble/Expectation.swift | 35 +- .../Sources/Nimble/ExpectationMessage.swift | 33 +- .../Nimble/Sources/Nimble/Expression.swift | 6 +- .../Sources/Nimble/FailureMessage.swift | 1 + .../Sources/Nimble/Matchers/AllPass.swift | 9 +- ...{AsyncMatcherWrapper.swift => Async.swift} | 113 +- .../Sources/Nimble/Matchers/BeAKindOf.swift | 6 +- .../Nimble/Matchers/BeAnInstanceOf.swift | 8 +- .../Sources/Nimble/Matchers/BeCloseTo.swift | 41 +- .../Sources/Nimble/Matchers/BeEmpty.swift | 35 +- .../Nimble/Matchers/BeGreaterThan.swift | 26 +- .../Matchers/BeGreaterThanOrEqualTo.swift | 36 +- .../Nimble/Matchers/BeIdenticalTo.swift | 34 +- .../Sources/Nimble/Matchers/BeLessThan.swift | 36 +- .../Nimble/Matchers/BeLessThanOrEqual.swift | 35 +- .../Sources/Nimble/Matchers/BeLogical.swift | 47 +- .../Sources/Nimble/Matchers/BeNil.swift | 8 +- .../Sources/Nimble/Matchers/BeVoid.swift | 17 +- .../Sources/Nimble/Matchers/BeginWith.swift | 18 +- .../Sources/Nimble/Matchers/Contain.swift | 119 +- .../Matchers/ContainElementSatisfying.swift | 46 +- .../Nimble/Matchers/ElementsEqual.swift | 16 + .../Sources/Nimble/Matchers/EndWith.swift | 47 +- .../Sources/Nimble/Matchers/Equal.swift | 160 +- .../Sources/Nimble/Matchers/HaveCount.swift | 65 +- .../Sources/Nimble/Matchers/Match.swift | 17 +- .../Sources/Nimble/Matchers/MatchError.swift | 46 +- .../Nimble/Matchers/MatcherProtocols.swift | 25 +- .../Nimble/Matchers/PostNotification.swift | 94 +- .../Sources/Nimble/Matchers/Predicate.swift | 29 +- .../Nimble/Matchers/RaisesException.swift | 61 +- .../Nimble/Matchers/SatisfyAllOf.swift | 86 + .../Nimble/Matchers/SatisfyAnyOf.swift | 53 +- .../Nimble/Matchers/ThrowAssertion.swift | 35 +- .../Sources/Nimble/Matchers/ThrowError.swift | 84 +- .../Nimble/Utils/{Async.swift => Await.swift} | 38 +- .../Sources/Nimble/Utils/Functional.swift | 6 +- .../Sources/Nimble/Utils/Stringers.swift | 28 +- .../NimbleObjectiveC/CurrentTestCaseTracker.h | 9 - .../Nimble/Sources/NimbleObjectiveC/DSL.h | 6 + .../Nimble/Sources/NimbleObjectiveC/DSL.m | 17 +- .../NimbleObjectiveC/NMBExceptionCapture.m | 2 +- .../Sources/NimbleObjectiveC/NMBStringify.m | 5 + .../XCTestObservationCenter+Register.m | 7 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 4422 ++++++++--------- Example/Pods/PromiseKit/README.md | 145 +- Example/Pods/PromiseKit/Sources/AnyPromise.h | 13 +- Example/Pods/PromiseKit/Sources/AnyPromise.m | 10 +- .../Pods/PromiseKit/Sources/AnyPromise.swift | 28 +- Example/Pods/PromiseKit/Sources/Box.swift | 13 +- .../Pods/PromiseKit/Sources/Catchable.swift | 83 +- .../PromiseKit/Sources/Configuration.swift | 30 +- .../PromiseKit/Sources/Deprecations.swift | 4 +- Example/Pods/PromiseKit/Sources/Error.swift | 20 +- .../Pods/PromiseKit/Sources/Guarantee.swift | 186 +- .../Pods/PromiseKit/Sources/LogEvent.swift | 30 + Example/Pods/PromiseKit/Sources/Promise.swift | 25 +- .../Pods/PromiseKit/Sources/Resolver.swift | 34 +- .../Pods/PromiseKit/Sources/Thenable.swift | 87 +- Example/Pods/PromiseKit/Sources/after.swift | 8 +- Example/Pods/PromiseKit/Sources/hang.swift | 19 +- Example/Pods/PromiseKit/Sources/race.swift | 21 +- Example/Pods/PromiseKit/Sources/when.swift | 9 +- Example/Pods/Quick/README.md | 4 +- .../Pods/Quick/Sources/Quick/Behavior.swift | 2 +- .../Pods/Quick/Sources/Quick/Callsite.swift | 29 +- .../Quick/Configuration/Configuration.swift | 4 +- .../Pods/Quick/Sources/Quick/DSL/DSL.swift | 20 +- .../Quick/Sources/Quick/DSL/World+DSL.swift | 35 +- .../Quick/Sources/Quick/ErrorUtility.swift | 2 +- .../Pods/Quick/Sources/Quick/Example.swift | 15 +- .../Quick/Sources/Quick/ExampleMetadata.swift | 12 +- Example/Pods/Quick/Sources/Quick/Filter.swift | 12 +- .../Quick/NSBundle+CurrentTestBundle.swift | 4 +- .../NSString+C99ExtendedIdentifier.swift | 33 - .../Quick/QuickSelectedTestSuiteBuilder.swift | 2 +- .../Quick/Sources/Quick/QuickTestSuite.swift | 2 +- .../Quick/String+C99ExtendedIdentifier.swift | 46 + Example/Pods/Quick/Sources/Quick/World.swift | 18 +- .../Configuration/QuickConfiguration.m | 7 +- .../Sources/QuickObjectiveC/DSL/QCKDSL.m | 8 +- .../Sources/QuickObjectiveC/DSL/World+DSL.h | 20 - .../Quick/Sources/QuickObjectiveC/QuickSpec.h | 6 + .../Quick/Sources/QuickObjectiveC/QuickSpec.m | 14 +- .../Quick/Sources/QuickObjectiveC/World.h | 18 - .../XCTestSuite+QuickTestSuiteBuilder.m | 5 + Example/Pods/SipHash/LICENSE.md | 21 - Example/Pods/SipHash/README.md | 161 - .../SipHash/SipHash/Primitive Types.swift | 171 - .../Pods/SipHash/SipHash/RandomUInt64.swift | 39 - .../Pods/SipHash/SipHash/SipHashable.swift | 65 - Example/Pods/SipHash/SipHash/SipHasher.swift | 197 - .../Info.plist => BigInt/BigInt-Info.plist} | 2 +- .../BigInt/BigInt.xcconfig | 3 +- .../CryptoSwift/CryptoSwift-Info.plist | 26 + .../CryptoSwift/CryptoSwift.xcconfig | 8 +- .../Nimble/Nimble-Info.plist | 26 + .../Nimble/Nimble.xcconfig | 5 +- .../Pods-Web3_Tests-Info.plist | 26 + .../Pods-Web3_Tests-acknowledgements.markdown | 25 - .../Pods-Web3_Tests-acknowledgements.plist | 33 +- .../Pods-Web3_Tests-frameworks.sh | 30 +- .../Pods-Web3_Tests.debug.xcconfig | 8 +- .../Pods-Web3_Tests.release.xcconfig | 8 +- .../PromiseKit/PromiseKit-Info.plist | 26 + .../PromiseKit/PromiseKit.xcconfig | 4 +- .../Quick/Quick-Info.plist | 26 + .../Target Support Files/Quick/Quick.xcconfig | 7 +- .../SipHash/SipHash-dummy.m | 5 - .../SipHash/SipHash-prefix.pch | 12 - .../SipHash/SipHash-umbrella.h | 16 - .../SipHash/SipHash.modulemap | 6 - .../SipHash/SipHash.xcconfig | 9 - .../Target Support Files/Web3/Web3-Info.plist | 26 + .../Target Support Files/Web3/Web3.xcconfig | 4 +- .../secp256k1.swift-Info.plist | 26 + .../secp256k1.swift/secp256k1.swift.xcconfig | 6 +- Example/Web3.xcodeproj/project.pbxproj | 6 +- Package.swift | 8 +- Web3.podspec | 4 +- 194 files changed, 6533 insertions(+), 5110 deletions(-) create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift delete mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CipherModeWorker.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift delete mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift rename Example/Pods/CryptoSwift/Sources/CryptoSwift/{RandomAccessCryptor.swift => Cryptor.swift} (85%) create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift rename Example/Pods/Nimble/Sources/Nimble/Matchers/{AsyncMatcherWrapper.swift => Async.swift} (63%) create mode 100644 Example/Pods/Nimble/Sources/Nimble/Matchers/ElementsEqual.swift create mode 100644 Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift rename Example/Pods/Nimble/Sources/Nimble/Utils/{Async.swift => Await.swift} (93%) delete mode 100644 Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h create mode 100644 Example/Pods/PromiseKit/Sources/LogEvent.swift delete mode 100644 Example/Pods/Quick/Sources/Quick/NSString+C99ExtendedIdentifier.swift create mode 100644 Example/Pods/Quick/Sources/Quick/String+C99ExtendedIdentifier.swift delete mode 100644 Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h delete mode 100644 Example/Pods/Quick/Sources/QuickObjectiveC/World.h delete mode 100644 Example/Pods/SipHash/LICENSE.md delete mode 100644 Example/Pods/SipHash/README.md delete mode 100644 Example/Pods/SipHash/SipHash/Primitive Types.swift delete mode 100644 Example/Pods/SipHash/SipHash/RandomUInt64.swift delete mode 100644 Example/Pods/SipHash/SipHash/SipHashable.swift delete mode 100644 Example/Pods/SipHash/SipHash/SipHasher.swift rename Example/Pods/Target Support Files/{SipHash/Info.plist => BigInt/BigInt-Info.plist} (96%) create mode 100644 Example/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist create mode 100644 Example/Pods/Target Support Files/Nimble/Nimble-Info.plist create mode 100644 Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-Info.plist create mode 100644 Example/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist create mode 100644 Example/Pods/Target Support Files/Quick/Quick-Info.plist delete mode 100644 Example/Pods/Target Support Files/SipHash/SipHash-dummy.m delete mode 100644 Example/Pods/Target Support Files/SipHash/SipHash-prefix.pch delete mode 100644 Example/Pods/Target Support Files/SipHash/SipHash-umbrella.h delete mode 100644 Example/Pods/Target Support Files/SipHash/SipHash.modulemap delete mode 100644 Example/Pods/Target Support Files/SipHash/SipHash.xcconfig create mode 100644 Example/Pods/Target Support Files/Web3/Web3-Info.plist create mode 100644 Example/Pods/Target Support Files/secp256k1.swift/secp256k1.swift-Info.plist diff --git a/Cartfile b/Cartfile index 681cfac1..8c9562ff 100644 --- a/Cartfile +++ b/Cartfile @@ -1,4 +1,4 @@ -github "attaswift/BigInt" ~> 3.1 -github "krzyzanowskim/CryptoSwift" ~> 0.8 +github "attaswift/BigInt" ~> 4.0 +github "krzyzanowskim/CryptoSwift" ~> 1.0 github "Boilertalk/secp256k1.swift" ~> 0.1 github "mxcl/PromiseKit" ~> 6.0 diff --git a/Example/Podfile b/Example/Podfile index b9d67b53..26fe7669 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -3,7 +3,7 @@ target 'Web3_Tests' do pod 'Web3', :path => '../' pod 'Web3/PromiseKit', :path => '../' pod 'Web3/ContractABI', :path => '../' - - pod 'Quick', '~> 1.2.0' - pod 'Nimble', '~> 7.0.2' + + pod 'Quick', '~> 2.1.0' + pod 'Nimble', '~> 8.0.2' end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 12a5eb1c..f3224c0c 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,30 +1,28 @@ PODS: - - BigInt (3.1.0): - - SipHash (~> 1.2) - - CryptoSwift (0.9.0) - - Nimble (7.0.3) - - PromiseKit/CorePromise (6.2.4) - - Quick (1.2.0) + - BigInt (4.0.0) + - CryptoSwift (1.0.0) + - Nimble (8.0.2) + - PromiseKit/CorePromise (6.10.0) + - Quick (2.1.0) - secp256k1.swift (0.1.4) - - SipHash (1.2.2) - - Web3 (0.3.0): - - Web3/Core (= 0.3.0) - - Web3/HTTPExtension (= 0.3.0) - - Web3/ContractABI (0.3.0): + - Web3 (0.3.1): + - Web3/Core (= 0.3.1) + - Web3/HTTPExtension (= 0.3.1) + - Web3/ContractABI (0.3.1): - Web3/Core - - Web3/Core (0.3.0): - - BigInt (~> 3.1) - - CryptoSwift (~> 0.8) + - Web3/Core (0.3.1): + - BigInt (~> 4.0) + - CryptoSwift (~> 1.0) - secp256k1.swift (~> 0.1) - - Web3/HTTPExtension (0.3.0): + - Web3/HTTPExtension (0.3.1): - Web3/Core - - Web3/PromiseKit (0.3.0): + - Web3/PromiseKit (0.3.1): - PromiseKit/CorePromise (~> 6.0) - Web3/Core DEPENDENCIES: - - Nimble (~> 7.0.2) - - Quick (~> 1.2.0) + - Nimble (~> 8.0.2) + - Quick (~> 2.1.0) - Web3 (from `../`) - Web3/ContractABI (from `../`) - Web3/PromiseKit (from `../`) @@ -37,22 +35,20 @@ SPEC REPOS: - PromiseKit - Quick - secp256k1.swift - - SipHash EXTERNAL SOURCES: Web3: :path: "../" SPEC CHECKSUMS: - BigInt: 76b5dfdfa3e2e478d4ffdf161aeede5502e2742f - CryptoSwift: bca8c5b653dcc2d9734409242a070ff53bafac86 - Nimble: 7f5a9c447a33002645a071bddafbfb24ea70e0ac - PromiseKit: 625b1fc69944fc839503748101c5968cf54b527b - Quick: 58d203b1c5e27fff7229c4c1ae445ad7069a7a08 + BigInt: 2aad1a9942dc932ec8b84290d2c564a3d76f97ab + CryptoSwift: d81eeaa59dc5a8d03720fe919a6fd07b51f7439f + Nimble: 622629381bda1dd5678162f21f1368cec7cbba60 + PromiseKit: 1fdaeb6c0a94a5114fcb814ff3d772b86886ad4e + Quick: 4be43f6634acfa727dd106bdf3929ce125ffa79d secp256k1.swift: a7e7a214f6db6ce5db32cc6b2b45e5c4dd633634 - SipHash: fad90a4683e420c52ef28063063dbbce248ea6d4 - Web3: cbfa8062fe4dffd88249a1dbf51c845937f0dff3 + Web3: dbfb28278f2c87c8de8e7b87a2e24fd038db0926 -PODFILE CHECKSUM: 50a96c0fbb540a167dac95d16fafaeb3da752eca +PODFILE CHECKSUM: eb77564a1c4f7b215467898368b05a3e1fde7eb9 -COCOAPODS: 1.5.3 +COCOAPODS: 1.6.1 diff --git a/Example/Pods/BigInt/README.md b/Example/Pods/BigInt/README.md index 0cf7f1cd..e65483bb 100644 --- a/Example/Pods/BigInt/README.md +++ b/Example/Pods/BigInt/README.md @@ -100,6 +100,12 @@ BigInt can be used, distributed and modified under [the MIT license][license]. BigInt 3.0.0 requires Swift 4. (The last version with support for Swift 3.x was BigInt 2.1.0. The last version with support for Swift 2 was BigInt 1.3.0.) +| Swift Version | last BigInt Version| +| ------------- |:-------------------| +| 3.x | 2.1.0 | +| 4.0 | 3.1.0 | +| 4.2 | 4.0.0 | + BigInt deploys to macOS 10.10, iOS 9, watchOS 2 and tvOS 9. It has been tested on the latest OS releases only---however, as the module uses very few platform-provided APIs, there should be very few issues with earlier versions. @@ -114,22 +120,21 @@ Setup instructions: Add this to the dependency section of your `Package.swift` manifest: ```Swift - .Package(url: "https://github.com/attaswift/BigInt.git", from: "3.1.0") + .package(url: "https://github.com/attaswift/BigInt.git", from: "4.0.0") ``` - **CocoaPods:** Put this in your `Podfile`: ```Ruby - pod 'BigInt', '~> 3.1' + pod 'BigInt', '~> 4.0' ``` - **Carthage:** Put this in your `Cartfile`: ``` - github "attaswift/BigInt" ~> 3.1 + github "attaswift/BigInt" ~> 4.0 ``` - ## Implementation notes [`BigUInt`][BigUInt] is a `MutableCollectionType` of its 64-bit digits, with the least significant diff --git a/Example/Pods/BigInt/sources/BigInt.swift b/Example/Pods/BigInt/sources/BigInt.swift index 6976c200..11318ffc 100644 --- a/Example/Pods/BigInt/sources/BigInt.swift +++ b/Example/Pods/BigInt/sources/BigInt.swift @@ -6,8 +6,6 @@ // Copyright © 2016-2017 Károly Lőrentey. // -import SipHash - //MARK: BigInt /// An arbitary precision signed integer type, also known as a "big integer". diff --git a/Example/Pods/BigInt/sources/Hashable.swift b/Example/Pods/BigInt/sources/Hashable.swift index 7df0ff74..c5dc0e64 100644 --- a/Example/Pods/BigInt/sources/Hashable.swift +++ b/Example/Pods/BigInt/sources/Hashable.swift @@ -6,23 +6,21 @@ // Copyright © 2016-2017 Károly Lőrentey. // -import SipHash - -extension BigUInt: SipHashable { +extension BigUInt: Hashable { //MARK: Hashing /// Append this `BigUInt` to the specified hasher. - public func appendHashes(to hasher: inout SipHasher) { + public func hash(into hasher: inout Hasher) { for word in self.words { - hasher.append(word) + hasher.combine(word) } } } -extension BigInt: SipHashable { +extension BigInt: Hashable { /// Append this `BigInt` to the specified hasher. - public func appendHashes(to hasher: inout SipHasher) { - hasher.append(sign) - hasher.append(magnitude) + public func hash(into hasher: inout Hasher) { + hasher.combine(sign) + hasher.combine(magnitude) } } diff --git a/Example/Pods/BigInt/sources/String Conversion.swift b/Example/Pods/BigInt/sources/String Conversion.swift index 02df51ed..d6f340c9 100644 --- a/Example/Pods/BigInt/sources/String Conversion.swift +++ b/Example/Pods/BigInt/sources/String Conversion.swift @@ -36,12 +36,7 @@ extension BigUInt { /// - Parameter `text`: A string consisting of characters corresponding to numerals in the given radix. (0-9, a-z, A-Z) /// - Parameter `radix`: The base of the number system to use, or 10 if unspecified. /// - Returns: The integer represented by `text`, or nil if `text` contains a character that does not represent a numeral in `radix`. - public init?(_ text: String, radix: Int = 10) { - // FIXME Remove this member when SE-0183 is done - self.init(Substring(text), radix: radix) - } - - public init?(_ text: Substring, radix: Int = 10) { + public init?(_ text: S, radix: Int = 10) { precondition(radix > 1) let (charsPerWord, power) = BigUInt.charsPerWord(forRadix: radix) @@ -53,16 +48,14 @@ extension BigUInt { start = text.index(before: start) count += 1 if count == charsPerWord { - // FIXME Remove String conversion when SE-0183 is done - guard let d = Word(String(text[start ..< end]), radix: radix) else { return nil } + guard let d = Word.init(text[start ..< end], radix: radix) else { return nil } words.append(d) end = start count = 0 } } if start != end { - // FIXME Remove String conversion when SE-0183 is done - guard let d = Word(String(text[start ..< end]), radix: radix) else { return nil } + guard let d = Word.init(text[start ..< end], radix: radix) else { return nil } words.append(d) } @@ -88,21 +81,22 @@ extension BigInt { /// - Parameter `radix`: The base of the number system to use, or 10 if unspecified. /// - Returns: The integer represented by `text`, or nil if `text` contains a character that does not represent a numeral in `radix`. public init?(_ text: S, radix: Int = 10) { - self.init(Substring(text), radix: radix) - } - - init?(_ text: Substring, radix: Int = 10) { - var text = text + var magnitude: BigUInt? var sign: Sign = .plus if text.first == "-" { sign = .minus - text = text.dropFirst() + let text = text.dropFirst() + magnitude = BigUInt(text, radix: radix) } else if text.first == "+" { - text = text.dropFirst() + let text = text.dropFirst() + magnitude = BigUInt(text, radix: radix) + } + else { + magnitude = BigUInt(text, radix: radix) } - guard let magnitude = BigUInt(text, radix: radix) else { return nil } - self.magnitude = magnitude + guard let m = magnitude else { return nil } + self.magnitude = m self.sign = sign } } diff --git a/Example/Pods/CryptoSwift/README.md b/Example/Pods/CryptoSwift/README.md index 07449815..a239407d 100644 --- a/Example/Pods/CryptoSwift/README.md +++ b/Example/Pods/CryptoSwift/README.md @@ -1,24 +1,33 @@ -[![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20macOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) -[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) -[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/CryptoSwift.svg?style=flat&label=CocoaPods)](https://cocoapods.org/pods/CryptoSwift) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat&colorB=64A5DE)](https://github.com/Carthage/Carthage) -[![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg?style=flat&colorB=64A5DE)](https://github.com/apple/swift-package-manager) -[![Twitter](https://img.shields.io/badge/twitter-@krzyzanowskim-blue.svg?style=flat&colorB=64A5DE&label=Twitter)](http://twitter.com/krzyzanowskim) +[![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20Android%20%7CmacOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) + +[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0%20%7C%204.1%20%7C%204.2%20%7C%205.0-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/CryptoSwift.svg?style=flat&label=CocoaPods&colorA=28a745&&colorB=4E4E4E)](https://cocoapods.org/pods/CryptoSwift) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat&colorA=28a745&&colorB=4E4E4E)](https://github.com/Carthage/Carthage) +[![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg?style=flat&colorA=28a745&&colorB=4E4E4E)](https://github.com/apple/swift-package-manager) + +[![Twitter](https://img.shields.io/badge/Twitter-@krzyzanowskim-blue.svg?style=flat)](http://twitter.com/krzyzanowskim) # CryptoSwift -Crypto related functions and helpers for [Swift](https://swift.org) implemented in Swift. ([#PureSwift](https://twitter.com/hashtag/pureswift)) +Crypto related functions and helpers for [Swift](https://swift.org) implemented in Swift. ([#PureSwift](https://twitter.com/hashtag/pureswift)) + +**Note**: The `master` branch follows the latest currently released **version of Swift**. If you need an earlier version for an older version of Swift, you can specify its version in your Podfile or use the code on the branch for that version. Older branches are unsupported. Check [versions](#swift-versions-support) for details. + +--- + +If you find the project useful, please [support authors](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=92Z6U3LBHF9J4) to keep it alive. + +--- -# Table of Contents -- [Requirements](#requirements) -- [Features](#features) -- [Contribution](#contribution) -- [Installation](#installation) -- [Swift versions](#swift-versions-support) -- [Usage](#usage) -- [Author](#author) -- [License](#license) -- [Changelog](#changelog) +[Requirements](#requirements) +| [Features](#features) +| [Contribution](#contribution) +| [Installation](#installation) +| [Swift versions](#swift-versions-support) +| [How-to](#how-to) +| [Author](#author) +| [License](#license) +| [Changelog](#changelog) ## Requirements Good mood @@ -28,65 +37,70 @@ Good mood - Easy to use - Convenient extensions for String and Data - Support for incremental updates (stream, ...) -- iOS, macOS, AppleTV, watchOS, Linux support - -## Donation -[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=92Z6U3LBHF9J4) to make the CryptoSwift awesome! Thank you. +- iOS, Android, macOS, AppleTV, watchOS, Linux support #### Hash (Digest) -- [MD5](http://tools.ietf.org/html/rfc1321) -- [SHA1](http://tools.ietf.org/html/rfc3174) -- [SHA224](http://tools.ietf.org/html/rfc6234) -- [SHA256](http://tools.ietf.org/html/rfc6234) -- [SHA384](http://tools.ietf.org/html/rfc6234) -- [SHA512](http://tools.ietf.org/html/rfc6234) -- [SHA3](http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) + [MD5](http://tools.ietf.org/html/rfc1321) +| [SHA1](http://tools.ietf.org/html/rfc3174) +| [SHA224](http://tools.ietf.org/html/rfc6234) +| [SHA256](http://tools.ietf.org/html/rfc6234) +| [SHA384](http://tools.ietf.org/html/rfc6234) +| [SHA512](http://tools.ietf.org/html/rfc6234) +| [SHA3](http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) #### Cyclic Redundancy Check (CRC) -- [CRC32](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) -- [CRC16](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) + [CRC32](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) +| [CRC32C](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) +| [CRC16](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) #### Cipher -- [AES-128, AES-192, AES-256](http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) -- [ChaCha20](http://cr.yp.to/chacha/chacha-20080128.pdf) -- [Rabbit](https://tools.ietf.org/html/rfc4503) -- [Blowfish](https://www.schneier.com/academic/blowfish/) + [AES-128, AES-192, AES-256](http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) +| [ChaCha20](http://cr.yp.to/chacha/chacha-20080128.pdf) +| [Rabbit](https://tools.ietf.org/html/rfc4503) +| [Blowfish](https://www.schneier.com/academic/blowfish/) #### Message authenticators -- [Poly1305](http://cr.yp.to/mac/poly1305-20050329.pdf) -- [HMAC](https://www.ietf.org/rfc/rfc2104.txt) MD5, SHA1, SHA256 -- [CMAC](https://tools.ietf.org/html/rfc4493) + [Poly1305](http://cr.yp.to/mac/poly1305-20050329.pdf) +| [HMAC (MD5, SHA1, SHA256)](https://www.ietf.org/rfc/rfc2104.txt) +| [CMAC](https://tools.ietf.org/html/rfc4493) +| [CBC-MAC](https://en.wikipedia.org/wiki/CBC-MAC) -#### Cipher block mode +#### Cipher mode of operation - Electronic codebook ([ECB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_codebook_.28ECB.29)) - Cipher-block chaining ([CBC](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher-block_chaining_.28CBC.29)) - Propagating Cipher Block Chaining ([PCBC](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Propagating_Cipher_Block_Chaining_.28PCBC.29)) - Cipher feedback ([CFB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_feedback_.28CFB.29)) - Output Feedback ([OFB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_Feedback_.28OFB.29)) -- Counter ([CTR](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_.28CTR.29)) +- Counter Mode ([CTR](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_.28CTR.29)) +- Galois/Counter Mode ([GCM](https://csrc.nist.gov/publications/detail/sp/800-38d/final)) +- Counter with Cipher Block Chaining-Message Authentication Code ([CCM](https://csrc.nist.gov/publications/detail/sp/800-38c/final)) #### Password-Based Key Derivation Function - [PBKDF1](http://tools.ietf.org/html/rfc2898#section-5.1) (Password-Based Key Derivation Function 1) - [PBKDF2](http://tools.ietf.org/html/rfc2898#section-5.2) (Password-Based Key Derivation Function 2) - [HKDF](https://tools.ietf.org/html/rfc5869) (HMAC-based Extract-and-Expand Key Derivation Function) +- [Scrypt](https://tools.ietf.org/html/rfc7914) (The scrypt Password-Based Key Derivation Function) #### Data padding -- PKCS#5 -- [PKCS#7](http://tools.ietf.org/html/rfc5652#section-6.3) -- [Zero padding](https://en.wikipedia.org/wiki/Padding_(cryptography)#Zero_padding) -- No padding + PKCS#5 +| [PKCS#7](http://tools.ietf.org/html/rfc5652#section-6.3) +| [Zero padding](https://en.wikipedia.org/wiki/Padding_(cryptography)#Zero_padding) +| No padding #### Authenticated Encryption with Associated Data (AEAD) -- [AEAD_CHACHA20_POLY1305](https://tools.ietf.org/html/rfc7539#section-2.8) +- [AEAD\_CHACHA20\_POLY1305](https://tools.ietf.org/html/rfc7539#section-2.8) ## Why [Why?](https://github.com/krzyzanowskim/CryptoSwift/issues/5) [Because I can](https://github.com/krzyzanowskim/CryptoSwift/issues/5#issuecomment-53379391). +## How do I get involved? + +You want to help, great! Go ahead and fork our repo, make your changes and send us a pull request. + ## Contribution -For the latest version, please check [develop](https://github.com/krzyzanowskim/CryptoSwift/tree/develop) branch. Changes from this branch will be merged into the [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) branch at some point. +Check out [CONTRIBUTING.md](CONTRIBUTING.md) for more information on how to help with CryptoSwift. -- If you want to contribute, submit a [pull request](https://github.com/krzyzanowskim/CryptoSwift/pulls) against a development `develop` branch. - If you found a bug, [open an issue](https://github.com/krzyzanowskim/CryptoSwift/issues). - If you have a feature request, [open an issue](https://github.com/krzyzanowskim/CryptoSwift/issues). @@ -120,15 +134,16 @@ In the project, you'll find [single scheme](http://promisekit.org/news/2016/08/M - Swift 2.2, 2.3: branch [swift2](https://github.com/krzyzanowskim/CryptoSwift/tree/swift2) version <= 0.5.2 - Swift 3.1, branch [swift3](https://github.com/krzyzanowskim/CryptoSwift/tree/swift3) version <= 0.6.9 - Swift 3.2, branch [swift32](https://github.com/krzyzanowskim/CryptoSwift/tree/swift32) version = 0.7.0 -- Swift 4.0, branch [swift4](https://github.com/krzyzanowskim/CryptoSwift/tree/swift4) version >= 0.7.1 -- Swift 4.1, branch [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) version >= 0.9.0 +- Swift 4.0, branch [swift4](https://github.com/krzyzanowskim/CryptoSwift/tree/swift4) version <= 0.12.0 +- Swift 4.2, branch [swift42](https://github.com/krzyzanowskim/CryptoSwift/tree/swift42) version <= 0.15.0 +- Swift 5.0, branch [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) #### CocoaPods You can use [CocoaPods](http://cocoapods.org/?q=cryptoSwift). ```ruby -platform :ios, '8.0' +platform :ios, '10.0' use_frameworks! target 'MyApp' do @@ -142,7 +157,7 @@ or for newest version from specified branch of code: pod 'CryptoSwift', :git => "https://github.com/krzyzanowskim/CryptoSwift", :branch => "master" ``` -Bear in mind that CocoaPods will build CryptoSwift without [Whole-Module Optimization](https://swift.org/blog/whole-module-optimizations/) that my impact performance. You can change it manually after installation, or use [cocoapods-wholemodule](https://github.com/jedlewison/cocoapods-wholemodule) plugin. +Bear in mind that CocoaPods will build CryptoSwift without [Whole-Module Optimization](https://swift.org/blog/whole-module-optimizations/) that may impact performance. You can change it manually after installation, or use [cocoapods-wholemodule](https://github.com/jedlewison/cocoapods-wholemodule) plugin. #### Carthage You can use [Carthage](https://github.com/Carthage/Carthage). @@ -160,7 +175,7 @@ You can use [Swift Package Manager](https://swift.org/package-manager/) and spec ```swift dependencies: [ - .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMinor(from: "0.8.0")) + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMinor(from: "1.0.0")) ] ``` @@ -168,13 +183,15 @@ or more strict ```swift dependencies: [ - .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .exact("0.8.0")) + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .exact("1.0.0")) ] ``` See: [Package.swift - manual](http://blog.krzyzanowskim.com/2016/08/09/package-swift-manual/) + +--- -## Usage +## How-to * [Basics (data types, conversion, ...)](#basics) * [Digest (MD5, SHA...)](#calculate-digest) @@ -185,7 +202,8 @@ See: [Package.swift - manual](http://blog.krzyzanowskim.com/2016/08/09/package-s * [ChaCha20](#chacha20) * [Rabbit](#rabbit) * [Blowfish](#blowfish) -* [Advanced Encryption Standard (AES)](#aes) +* [AES - Advanced Encryption Standard](#aes) +* [AES-GCM](#aes-gcm) * [Authenticated Encryption with Associated Data (AEAD)](#aead) also check [Playground](/CryptoSwift.playground/Contents.swift) @@ -200,12 +218,12 @@ CryptoSwift uses array of bytes aka `Array` as a base type for all operat ##### Data types conversion -For you convenience **CryptoSwift** provides two functions to easily convert array of bytes to `Data` and another way around: +For your convenience, **CryptoSwift** provides two functions to easily convert an array of bytes to `Data` or `Data` to an array of bytes: Data from bytes: ```swift -let data = Data(bytes: [0x01, 0x02, 0x03]) +let data = Data( [0x01, 0x02, 0x03]) ``` `Data` to `Array` @@ -223,7 +241,7 @@ let hex = bytes.toHexString() // "010203" Build bytes out of `String` ```swift -let bytes: Array = "password".bytes // Array("password".utf8) +let bytes: Array = "cipherkey".bytes // Array("cipherkey".utf8) ``` Also... check out helpers that work with **Base64** encoded data: @@ -244,7 +262,7 @@ let digest = Digest.md5(bytes) ``` ```swift -let data = Data(bytes: [0x01, 0x02, 0x03]) +let data = Data( [0x01, 0x02, 0x03]) let hash = data.md5() let hash = data.sha1() @@ -295,7 +313,15 @@ try CMAC(key: key).authenticate(bytes) let password: Array = Array("s33krit".utf8) let salt: Array = Array("nacllcan".utf8) -try PKCS5.PBKDF2(password: password, salt: salt, iterations: 4096, variant: .sha256).calculate() +let key = try PKCS5.PBKDF2(password: password, salt: salt, iterations: 4096, variant: .sha256).calculate() +``` + +```swift +let password: Array = Array("s33krit".utf8) +let salt: Array = Array("nacllcan".utf8) +// Scrypt implementation does not implement work parallelization, so `p` parameter will +// increase the work time even in multicore systems +let key = try Scrypt(password: password, salt: salt, dkLen: 64, N: 16384, r: 8, p: 1).calculate() ``` ##### HMAC-based Key Derivation Function @@ -304,9 +330,10 @@ try PKCS5.PBKDF2(password: password, salt: salt, iterations: 4096, variant: .sha let password: Array = Array("s33krit".utf8) let salt: Array = Array("nacllcan".utf8) -try HKDF(password: password, salt: salt, variant: .sha256).calculate() +let key = try HKDF(password: password, salt: salt, variant: .sha256).calculate() ``` + ##### Data Padding Some content-encryption algorithms assume the input length is a multiple of `k` octets, where `k` is greater than one. For such algorithms, the input shall be padded. @@ -332,13 +359,13 @@ let decrypted = try Rabbit(key: key, iv: iv).decrypt(encrypted) ##### Blowfish ```swift -let encrypted = try Blowfish(key: key, blockMode: .CBC(iv: iv), padding: .pkcs7).encrypt(message) -let decrypted = try Blowfish(key: key, blockMode: .CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) +let encrypted = try Blowfish(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).encrypt(message) +let decrypted = try Blowfish(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) ``` ##### AES -Notice regarding padding: *Manual padding of data is optional, and CryptoSwift is using PKCS7 padding by default. If you need manually disable/enable padding, you can do this by setting parameter for __AES__ class* +Notice regarding padding: *Manual padding of data is optional, and CryptoSwift is using PKCS7 padding by default. If you need to manually disable/enable padding, you can do this by setting parameter for __AES__ class* Variant of AES encryption (AES-128, AES-192, AES-256) depends on given key length: @@ -348,13 +375,13 @@ Variant of AES encryption (AES-128, AES-192, AES-256) depends on given key lengt AES-256 example ```swift -try AES(key: [1,2,3,...,32], blockMode: .CBC(iv: [1,2,3,...,16]), padding: .pkcs7) +try AES(key: [1,2,3,...,32], blockMode: CBC(iv: [1,2,3,...,16]), padding: .pkcs7) ``` ###### All at once ```swift do { - let aes = try AES(key: "passwordpassword", iv: "drowssapdrowssap") // aes128 + let aes = try AES(key: "keykeykeykeykeyk", iv: "drowssapdrowssap") // aes128 let ciphertext = try aes.encrypt(Array("Nullam quis risus eget urna mollis ornare vel eu leo.".utf8)) } catch { } ``` @@ -365,7 +392,7 @@ Incremental operations use instance of Cryptor and encrypt/decrypt one part at a ```swift do { - var encryptor = try AES(key: "passwordpassword", iv: "drowssapdrowssap").makeEncryptor() + var encryptor = try AES(key: "keykeykeykeykeyk", iv: "drowssapdrowssap").makeEncryptor() var ciphertext = Array() // aggregate partial results @@ -391,8 +418,8 @@ let key: Array = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, let iv: Array = AES.randomIV(AES.blockSize) do { - let encrypted = try AES(key: key, blockMode: .CBC(iv: iv), padding: .pkcs7).encrypt(input) - let decrypted = try AES(key: key, blockMode: .CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) + let encrypted = try AES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).encrypt(input) + let decrypted = try AES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) } catch { print(error) } @@ -402,17 +429,68 @@ AES without data padding ```swift let input: Array = [0,1,2,3,4,5,6,7,8,9] -let encrypted: Array = try! AES(key: Array("secret0key000000".utf8), blockMode: .CBC(iv: Array("0123456789012345".utf8)), padding: .noPadding).encrypt(input) +let encrypted: Array = try! AES(key: Array("secret0key000000".utf8), blockMode: CBC(iv: Array("0123456789012345".utf8)), padding: .noPadding).encrypt(input) ``` Using convenience extensions ```swift -let plain = Data(bytes: [0x01, 0x02, 0x03]) +let plain = Data( [0x01, 0x02, 0x03]) let encrypted = try! plain.encrypt(ChaCha20(key: key, iv: iv)) let decrypted = try! encrypted.decrypt(ChaCha20(key: key, iv: iv)) ``` +##### AES-GCM + +The result of Galois/Counter Mode (GCM) encryption is ciphertext and **authentication tag**, that is later used to decryption. + +encryption + +```swift +do { + // In combined mode, the authentication tag is directly appended to the encrypted message. This is usually what you want. + let gcm = GCM(iv: iv, mode: .combined) + let aes = try AES(key: key, blockMode: gcm, padding: .noPadding) + let encrypted = try aes.encrypt(plaintext) + let tag = gcm.authenticationTag +catch { + // failed +} +``` + +decryption + +```swift +do { + // In combined mode, the authentication tag is appended to the encrypted message. This is usually what you want. + let gcm = GCM(iv: iv, mode: .combined) + let aes = try AES(key: key, blockMode: gcm, padding: .noPadding) + return try aes.decrypt(encrypted) +} catch { + // failed +} +``` + +**Note**: GCM instance is not intended to be reused. So you can't use the same `GCM` instance from encoding to also perform decoding. + +##### AES-CCM + +The result of Counter with Cipher Block Chaining-Message Authentication Code encryption is ciphertext and **authentication tag**, that is later used to decryption. + +```swift +do { + // The authentication tag is appended to the encrypted message. + let tagLength = 8 + let ccm = CCM(iv: iv, tagLength: tagLength, messageLength: ciphertext.count - tagLength, additionalAuthenticatedData: data) + let aes = try AES(key: key, blockMode: ccm, padding: .noPadding) + return try aes.decrypt(encrypted) +} catch { + // failed +} +``` + +Check documentation or CCM specification for valid parameters for CCM. + ##### AEAD ```swift @@ -426,6 +504,10 @@ CryptoSwift is owned and maintained by [Marcin Krzyżanowski](http://www.krzyzan You can follow me on Twitter at [@krzyzanowskim](http://twitter.com/krzyzanowskim) for project updates and releases. +# Cryptography Notice + +This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information. + ## License Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift index f3bd364a..a461cd61 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift @@ -16,128 +16,20 @@ // MARK: Cryptors extension AES: Cryptors { - public func makeEncryptor() throws -> AES.Encryptor { - return try AES.Encryptor(aes: self) - } - - public func makeDecryptor() throws -> AES.Decryptor { - return try AES.Decryptor(aes: self) - } -} - -// MARK: Encryptor - -extension AES { - public struct Encryptor: Updatable { - private var worker: BlockModeWorker - private let padding: Padding - private var accumulated = Array() - private var processedBytesTotalCount: Int = 0 - private let paddingRequired: Bool - - init(aes: AES) throws { - padding = aes.padding - worker = try aes.blockMode.worker(blockSize: AES.blockSize, cipherOperation: aes.encrypt) - paddingRequired = aes.blockMode.options.contains(.paddingRequired) - } - - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - accumulated += bytes - - if isLast { - accumulated = padding.add(to: accumulated, blockSize: AES.blockSize) - } - - var processedBytes = 0 - var encrypted = Array(reserveCapacity: accumulated.count) - for chunk in accumulated.batched(by: AES.blockSize) { - if isLast || (accumulated.count - processedBytes) >= AES.blockSize { - encrypted += worker.encrypt(chunk) - processedBytes += chunk.count - } - } - accumulated.removeFirst(processedBytes) - processedBytesTotalCount += processedBytes - return encrypted + public func makeEncryptor() throws -> Cryptor & Updatable { + let worker = try blockMode.worker(blockSize: AES.blockSize, cipherOperation: encrypt) + if worker is StreamModeWorker { + return try StreamEncryptor(blockSize: AES.blockSize, padding: padding, worker) } + return try BlockEncryptor(blockSize: AES.blockSize, padding: padding, worker) } -} - -// MARK: Decryptor - -extension AES { - public struct Decryptor: RandomAccessCryptor { - private var worker: BlockModeWorker - private let padding: Padding - private var accumulated = Array() - private var processedBytesTotalCount: Int = 0 - private let paddingRequired: Bool - - private var offset: Int = 0 - private var offsetToRemove: Int = 0 - - init(aes: AES) throws { - padding = aes.padding - - switch aes.blockMode { - case .CFB, .OFB, .CTR: - // CFB, OFB, CTR uses encryptBlock to decrypt - worker = try aes.blockMode.worker(blockSize: AES.blockSize, cipherOperation: aes.encrypt) - default: - worker = try aes.blockMode.worker(blockSize: AES.blockSize, cipherOperation: aes.decrypt) - } - - paddingRequired = aes.blockMode.options.contains(.paddingRequired) - } - - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - // prepend "offset" number of bytes at the beginning - if offset > 0 { - accumulated += Array(repeating: 0, count: offset) + bytes - offsetToRemove = offset - offset = 0 - } else { - accumulated += bytes - } - - var processedBytes = 0 - var plaintext = Array(reserveCapacity: accumulated.count) - for chunk in accumulated.batched(by: AES.blockSize) { - if isLast || (accumulated.count - processedBytes) >= AES.blockSize { - plaintext += worker.decrypt(chunk) - - // remove "offset" from the beginning of first chunk - if offsetToRemove > 0 { - plaintext.removeFirst(offsetToRemove) - offsetToRemove = 0 - } - - processedBytes += chunk.count - } - } - accumulated.removeFirst(processedBytes) - processedBytesTotalCount += processedBytes - - if isLast { - plaintext = padding.remove(from: plaintext, blockSize: AES.blockSize) - } - - return plaintext - } - - @discardableResult public mutating func seek(to position: Int) -> Bool { - guard var worker = self.worker as? RandomAccessBlockModeWorker else { - return false - } - - worker.counter = UInt(position / AES.blockSize) - self.worker = worker - - offset = position % AES.blockSize - - accumulated = [] - return true + public func makeDecryptor() throws -> Cryptor & Updatable { + let cipherOperation: CipherOperationOnBlock = blockMode.options.contains(.useEncryptToDecrypt) == true ? encrypt : decrypt + let worker = try blockMode.worker(blockSize: AES.blockSize, cipherOperation: cipherOperation) + if worker is StreamModeWorker { + return try StreamDecryptor(blockSize: AES.blockSize, padding: padding, worker) } + return try BlockDecryptor(blockSize: AES.blockSize, padding: padding, worker) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift index 89cf0d94..631b7d51 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift @@ -19,6 +19,8 @@ /// The Advanced Encryption Standard (AES) public final class AES: BlockCipher { public enum Error: Swift.Error { + /// Invalid key + case invalidKeySize /// Data padding is required case dataPaddingRequired /// Invalid Data @@ -41,25 +43,15 @@ public final class AES: BlockCipher { } } - private lazy var variantNr: Int = self.variant.Nr - private lazy var variantNb: Int = self.variant.Nb - private lazy var variantNk: Int = self.variant.Nk + private let variantNr: Int + private let variantNb: Int + private let variantNk: Int public static let blockSize: Int = 16 // 128 /8 public let keySize: Int - public var variant: Variant { - switch keySize * 8 { - case 128: - return .aes128 - case 192: - return .aes192 - case 256: - return .aes256 - default: - preconditionFailure("Unknown AES variant for given key.") - } - } + /// AES Variant + public let variant: Variant // Parameters let key: Key @@ -124,7 +116,23 @@ public final class AES: BlockCipher { self.key = Key(bytes: key) self.blockMode = blockMode self.padding = padding - keySize = self.key.count + self.keySize = self.key.count + + // Validate key size + switch keySize * 8 { + case 128: + variant = .aes128 + case 192: + variant = .aes192 + case 256: + variant = .aes256 + default: + throw Error.invalidKeySize + } + + variantNb = variant.Nb + variantNk = variant.Nk + variantNr = variant.Nr } internal func encrypt(block: ArraySlice) -> Array? { @@ -356,7 +364,7 @@ private extension AES { private func expandKey(_ key: Key, variant _: Variant) -> Array> { func convertExpandedKey(_ expanded: Array) -> Array> { - return expanded.batched(by: 4).map({ UInt32(bytes: $0.reversed()) }).batched(by: 4).map({ Array($0) }) + return expanded.batched(by: 4).map({ UInt32(bytes: $0.reversed()) }).batched(by: 4).map { Array($0) } } /* diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift index cee47094..752dcb82 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift @@ -20,7 +20,7 @@ extension Array { } var slice: ArraySlice { - return self[self.startIndex.. Array> { var words = Array>() words.reserveCapacity(count / chunksize) for idx in stride(from: chunksize, through: count, by: chunksize) { - words.append(Array(self[idx - chunksize.. UInt32 { + return Checksum.crc32c(self, seed: seed, reflect: reflect) + } + public func crc16(seed: UInt16? = nil) -> UInt16 { return Checksum.crc16(self, seed: seed) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift index 7c73fc55..575bc1fc 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift @@ -36,8 +36,7 @@ struct BatchedCollection: Collection { let size: Int typealias Index = BatchedCollectionIndex private func nextBreak(after idx: Base.Index) -> Base.Index { - return base.index(idx, offsetBy: size, limitedBy: base.endIndex) - ?? base.endIndex + return base.index(idx, offsetBy: size, limitedBy: base.endIndex) ?? base.endIndex } var startIndex: Index { diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift new file mode 100644 index 00000000..7990a402 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift @@ -0,0 +1,85 @@ +// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +public class BlockDecryptor: Cryptor, Updatable { + private let blockSize: Int + private let padding: Padding + private var worker: CipherModeWorker + private var accumulated = Array() + + init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { + self.blockSize = blockSize + self.padding = padding + self.worker = worker + } + + public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { + accumulated += bytes + + // If a worker (eg GCM) can combine ciphertext + tag + // we need to remove tag from the ciphertext. + if !isLast && accumulated.count < blockSize + worker.additionalBufferSize { + return [] + } + + let accumulatedWithoutSuffix: Array + if worker.additionalBufferSize > 0 { + // FIXME: how slow is that? + accumulatedWithoutSuffix = Array(accumulated.prefix(accumulated.count - worker.additionalBufferSize)) + } else { + accumulatedWithoutSuffix = accumulated + } + + var processedBytesCount = 0 + var plaintext = Array(reserveCapacity: accumulatedWithoutSuffix.count) + // Processing in a block-size manner. It's good for block modes, but bad for stream modes. + for var chunk in accumulatedWithoutSuffix.batched(by: blockSize) { + if isLast || (accumulatedWithoutSuffix.count - processedBytesCount) >= blockSize { + let isLastChunk = processedBytesCount + chunk.count == accumulatedWithoutSuffix.count + + if isLast, isLastChunk, var finalizingWorker = worker as? FinalizingDecryptModeWorker { + chunk = try finalizingWorker.willDecryptLast(bytes: chunk + accumulated.suffix(worker.additionalBufferSize)) // tag size + } + + if !chunk.isEmpty { + plaintext += worker.decrypt(block: chunk) + } + + if isLast, isLastChunk, var finalizingWorker = worker as? FinalizingDecryptModeWorker { + plaintext = Array(try finalizingWorker.didDecryptLast(bytes: plaintext.slice)) + } + + processedBytesCount += chunk.count + } + } + accumulated.removeFirst(processedBytesCount) // super-slow + + if isLast { + plaintext = padding.remove(from: plaintext, blockSize: blockSize) + } + + return plaintext + } + + public func seek(to position: Int) throws { + guard var worker = self.worker as? SeekableModeWorker else { + fatalError("Not supported") + } + + try worker.seek(to: position) + self.worker = worker + + accumulated = [] + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift new file mode 100644 index 00000000..ba3fe281 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift @@ -0,0 +1,57 @@ +// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// +final class BlockEncryptor: Cryptor, Updatable { + private let blockSize: Int + private var worker: CipherModeWorker + private let padding: Padding + // Accumulated bytes. Not all processed bytes. + private var accumulated = Array(reserveCapacity: 16) + + private var lastBlockRemainder = 0 + + init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { + self.blockSize = blockSize + self.padding = padding + self.worker = worker + } + + // MARK: Updatable + public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { + accumulated += bytes + + if isLast { + accumulated = padding.add(to: accumulated, blockSize: blockSize) + } + + var encrypted = Array(reserveCapacity: accumulated.count) + for chunk in accumulated.batched(by: blockSize) { + if isLast || chunk.count == blockSize { + encrypted += worker.encrypt(block: chunk) + } + } + + // Stream encrypts all, so it removes all elements + accumulated.removeFirst(encrypted.count) + + if var finalizingWorker = worker as? FinalizingEncryptModeWorker, isLast == true { + encrypted = Array(try finalizingWorker.finalize(encrypt: encrypted.slice)) + } + + return encrypted + } + + func seek(to: Int) throws { + fatalError("Not supported") + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift index be7bd963..b78e2746 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift @@ -13,64 +13,12 @@ // - This notice may not be removed or altered from any source or binary distribution. // -typealias CipherOperationOnBlock = (_ block: ArraySlice) -> Array? +public typealias CipherOperationOnBlock = (_ block: ArraySlice) -> Array? -public enum BlockMode { - case ECB, CBC(iv: Array), PCBC(iv: Array), CFB(iv: Array), OFB(iv: Array), CTR(iv: Array) - - public enum Error: Swift.Error { - /// Invalid key or IV - case invalidKeyOrInitializationVector - /// Invalid IV - case invalidInitializationVector - } - - func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> BlockModeWorker { - switch self { - case .ECB: - return ECBModeWorker(cipherOperation: cipherOperation) - case let .CBC(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return CBCModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - case let .PCBC(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return PCBCModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - case let .CFB(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return CFBModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - case let .OFB(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return OFBModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - case let .CTR(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return CTRModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - } - } - - var options: BlockModeOptions { - switch self { - case .ECB: - return .paddingRequired - case .CBC: - return [.initializationVectorRequired, .paddingRequired] - case .CFB: - return .initializationVectorRequired - case .CTR: - return .initializationVectorRequired - case .OFB: - return .initializationVectorRequired - case .PCBC: - return [.initializationVectorRequired, .paddingRequired] - } - } +public protocol BlockMode { + var options: BlockModeOption { get } + //TODO: doesn't have to be public + func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker } + +typealias StreamMode = BlockMode diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift index bff7fe50..64618494 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift @@ -13,10 +13,15 @@ // - This notice may not be removed or altered from any source or binary distribution. // -struct BlockModeOptions: OptionSet { - let rawValue: Int +public struct BlockModeOption: OptionSet { + public let rawValue: Int - static let none = BlockModeOptions(rawValue: 1 << 0) - static let initializationVectorRequired = BlockModeOptions(rawValue: 1 << 1) - static let paddingRequired = BlockModeOptions(rawValue: 1 << 2) + public init(rawValue: Int) { + self.rawValue = rawValue + } + + static let none = BlockModeOption(rawValue: 1 << 0) + static let initializationVectorRequired = BlockModeOption(rawValue: 1 << 1) + static let paddingRequired = BlockModeOption(rawValue: 1 << 2) + static let useEncryptToDecrypt = BlockModeOption(rawValue: 1 << 3) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift deleted file mode 100644 index c7beb4df..00000000 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -protocol BlockModeWorker { - var cipherOperation: CipherOperationOnBlock { get } - mutating func encrypt(_ plaintext: ArraySlice) -> Array - mutating func decrypt(_ ciphertext: ArraySlice) -> Array -} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift index a2b748a1..f98d9bf6 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift @@ -16,17 +16,42 @@ // Cipher-block chaining (CBC) // +public struct CBC: BlockMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .paddingRequired] + private let iv: Array + + public init(iv: Array) { + self.iv = iv + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return CBCModeWorker(blockSize: blockSize, iv: iv.slice, cipherOperation: cipherOperation) + } +} + struct CBCModeWorker: BlockModeWorker { let cipherOperation: CipherOperationOnBlock + var blockSize: Int + let additionalBufferSize: Int = 0 private let iv: ArraySlice private var prev: ArraySlice? - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.iv = iv self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(xor(prev ?? iv, plaintext)) else { return Array(plaintext) } @@ -34,7 +59,7 @@ struct CBCModeWorker: BlockModeWorker { return ciphertext } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { + mutating func decrypt(block ciphertext: ArraySlice) -> Array { guard let plaintext = cipherOperation(ciphertext) else { return Array(ciphertext) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift new file mode 100644 index 00000000..fb59ebe9 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift @@ -0,0 +1,359 @@ +//// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +// CCM mode combines the well known CBC-MAC with the well known counter mode of encryption. +// https://tools.ietf.org/html/rfc3610 +// https://csrc.nist.gov/publications/detail/sp/800-38c/final + +#if canImport(Darwin) +import Darwin +#else +import Glibc +#endif + + +/// Counter with Cipher Block Chaining-Message Authentication Code +public struct CCM: StreamMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + case invalidParameter + case fail + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + private let nonce: Array + private let additionalAuthenticatedData: Array? + private let tagLength: Int + private let messageLength: Int // total message length. need to know in advance + + // `authenticationTag` nil for encryption, known tag for decryption + /// For encryption, the value is set at the end of the encryption. + /// For decryption, this is a known Tag to validate against. + public var authenticationTag: Array? + + /// Initialize CCM + /// + /// - Parameters: + /// - iv: Initialization vector. Nonce. Valid length between 7 and 13 bytes. + /// - tagLength: Authentication tag length, in bytes. Value of {4, 6, 8, 10, 12, 14, 16}. + /// - messageLength: Plaintext message length (excluding tag if attached). Length have to be provided in advance. + /// - additionalAuthenticatedData: Additional authenticated data. + public init(iv: Array, tagLength: Int, messageLength: Int, additionalAuthenticatedData: Array? = nil) { + self.nonce = iv + self.tagLength = tagLength + self.additionalAuthenticatedData = additionalAuthenticatedData + self.messageLength = messageLength // - tagLength + } + + /// Initialize CCM + /// + /// - Parameters: + /// - iv: Initialization vector. Nonce. Valid length between 7 and 13 bytes. + /// - tagLength: Authentication tag length, in bytes. Value of {4, 6, 8, 10, 12, 14, 16}. + /// - messageLength: Plaintext message length (excluding tag if attached). Length have to be provided in advance. + /// - authenticationTag: Authentication Tag value if not concatenated to ciphertext. + /// - additionalAuthenticatedData: Additional authenticated data. + public init(iv: Array, tagLength: Int, messageLength: Int, authenticationTag: Array, additionalAuthenticatedData: Array? = nil) { + self.init(iv: iv, tagLength: tagLength, messageLength: messageLength, additionalAuthenticatedData: additionalAuthenticatedData) + self.authenticationTag = authenticationTag + } + + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if nonce.isEmpty { + throw Error.invalidInitializationVector + } + + return CCMModeWorker(blockSize: blockSize, nonce: nonce.slice, messageLength: messageLength, additionalAuthenticatedData: additionalAuthenticatedData, tagLength: tagLength, cipherOperation: cipherOperation) + } +} + +class CCMModeWorker: StreamModeWorker, SeekableModeWorker, CounterModeWorker, FinalizingEncryptModeWorker, FinalizingDecryptModeWorker { + typealias Counter = Int + var counter = 0 + + let cipherOperation: CipherOperationOnBlock + let blockSize: Int + private let tagLength: Int + private let messageLength: Int // total message length. need to know in advance + private let q: UInt8 + + let additionalBufferSize: Int + private var keystreamPosIdx = 0 + private let nonce: Array + private var last_y: ArraySlice = [] + private var keystream: Array = [] + // Known Tag used to validate during decryption + private var expectedTag: Array? + + public enum Error: Swift.Error { + case invalidParameter + } + + init(blockSize: Int, nonce: ArraySlice, messageLength: Int, additionalAuthenticatedData: [UInt8]?, expectedTag: Array? = nil, tagLength: Int, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = 16 // CCM is defined for 128 block size + self.tagLength = tagLength + self.additionalBufferSize = tagLength + self.messageLength = messageLength + self.expectedTag = expectedTag + self.cipherOperation = cipherOperation + self.nonce = Array(nonce) + self.q = UInt8(15 - nonce.count) // n = 15-q + + let hasAssociatedData = additionalAuthenticatedData != nil && !additionalAuthenticatedData!.isEmpty + processControlInformation(nonce: self.nonce, tagLength: tagLength, hasAssociatedData: hasAssociatedData) + + if let aad = additionalAuthenticatedData, hasAssociatedData { + process(aad: aad) + } + } + + // For the very first time setup new IV (aka y0) from the block0 + private func processControlInformation(nonce: [UInt8], tagLength: Int, hasAssociatedData: Bool) { + let block0 = try! format(nonce: nonce, Q: UInt32(messageLength), q: q, t: UInt8(tagLength), hasAssociatedData: hasAssociatedData).slice + let y0 = cipherOperation(block0)!.slice + last_y = y0 + } + + private func process(aad: [UInt8]) { + let encodedAAD = format(aad: aad) + + for block_i in encodedAAD.batched(by: 16) { + let y_i = cipherOperation(xor(block_i, last_y))!.slice + last_y = y_i + } + } + + private func S(i: Int) throws -> [UInt8] { + let ctr = try format(counter: i, nonce: nonce, q: q) + return cipherOperation(ctr.slice)! + } + + func seek(to position: Int) throws { + self.counter = position + keystream = try S(i: position) + let offset = position % blockSize + keystreamPosIdx = offset + } + + func encrypt(block plaintext: ArraySlice) -> Array { + var result = Array(reserveCapacity: plaintext.count) + + var processed = 0 + while processed < plaintext.count { + // Need a full block here to update keystream and do CBC + if keystream.isEmpty || keystreamPosIdx == blockSize { + // y[i], where i is the counter. Can encrypt 1 block at a time + counter += 1 + guard let S = try? S(i: counter) else { return Array(plaintext) } + let plaintextP = addPadding(Array(plaintext), blockSize: blockSize) + guard let y = cipherOperation(xor(last_y, plaintextP)) else { return Array(plaintext) } + last_y = y.slice + + keystream = S + keystreamPosIdx = 0 + } + + let xored: Array = xor(plaintext[plaintext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) + keystreamPosIdx += xored.count + processed += xored.count + result += xored + } + return result + } + + func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice { + // concatenate T at the end + guard let S0 = try? S(i: 0) else { return ciphertext } + + let computedTag = xor(last_y.prefix(tagLength), S0) as ArraySlice + return ciphertext + computedTag + } + + // Decryption is stream + // CBC is block + private var accumulatedPlaintext: [UInt8] = [] + + func decrypt(block ciphertext: ArraySlice) -> Array { + var output = Array(reserveCapacity: ciphertext.count) + + do { + var currentCounter = counter + var processed = 0 + while processed < ciphertext.count { + // Need a full block here to update keystream and do CBC + // New keystream for a new block + if keystream.isEmpty || keystreamPosIdx == blockSize { + currentCounter += 1 + guard let S = try? S(i: currentCounter) else { return Array(ciphertext) } + keystream = S + keystreamPosIdx = 0 + } + + let xored: Array = xor(ciphertext[ciphertext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) // plaintext + keystreamPosIdx += xored.count + processed += xored.count + output += xored + counter = currentCounter + } + } + + // Accumulate plaintext for the MAC calculations at the end. + // It would be good to process it together though, here. + accumulatedPlaintext += output + + // Shouldn't return plaintext until validate tag. + // With incremental update, can't validate tag until all block are processed. + return output + } + + func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice { + // concatenate T at the end + let computedTag = Array(last_y.prefix(tagLength)) + guard let expectedTag = self.expectedTag, expectedTag == computedTag else { + throw CCM.Error.fail + } + + return plaintext + } + + @discardableResult + func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice { + // get tag of additionalBufferSize size + // `ciphertext` contains at least additionalBufferSize bytes + // overwrite expectedTag property used later for verification + guard let S0 = try? S(i: 0) else { return ciphertext } + self.expectedTag = xor(ciphertext.suffix(tagLength), S0) as [UInt8] + return ciphertext[ciphertext.startIndex..) throws -> ArraySlice { + + // Calculate Tag, from the last CBC block, for accumulated plaintext. + var processed = 0 + for block in accumulatedPlaintext.batched(by: blockSize) { + let blockP = addPadding(Array(block), blockSize: blockSize) + guard let y = cipherOperation(xor(last_y, blockP)) else { return plaintext } + last_y = y.slice + processed += block.count + } + accumulatedPlaintext.removeFirst(processed) + return plaintext + } +} + +// Q - octet length of P +// q - octet length of Q. Maximum length (in octets) of payload. An element of {2,3,4,5,6,7,8} +// t - octet length of T (MAC length). An element of {4,6,8,10,12,14,16} +private func format(nonce N: [UInt8], Q: UInt32, q: UInt8, t: UInt8, hasAssociatedData: Bool) throws -> [UInt8] { + var flags0: UInt8 = 0 + + if hasAssociatedData { + // 7 bit + flags0 |= (1 << 6) + } + + // 6,5,4 bit is t in 3 bits + flags0 |= (((t-2)/2) & 0x07) << 3 + + // 3,2,1 bit is q in 3 bits + flags0 |= ((q-1) & 0x07) << 0 + + var block0: [UInt8] = Array(repeating: 0, count: 16) + block0[0] = flags0 + + // N in 1...(15-q) octets, n = 15-q + // n is an element of {7,8,9,10,11,12,13} + let n = 15-Int(q) + guard (n + Int(q)) == 15 else { + // n+q == 15 + throw CCMModeWorker.Error.invalidParameter + } + block0[1...n] = N[0...(n-1)] + + // Q in (16-q)...15 octets + block0[(16-Int(q))...15] = Q.bytes(totalBytes: Int(q)).slice + + return block0 +} + +/// Formatting of the Counter Blocks. Ctr[i] +/// The counter generation function. +/// Q - octet length of P +/// q - octet length of Q. Maximum length (in octets) of payload. An element of {2,3,4,5,6,7,8} +private func format(counter i: Int, nonce N: [UInt8], q: UInt8) throws -> [UInt8] { + var flags0: UInt8 = 0 + + // bit 8,7 is Reserved + // bit 4,5,6 shall be set to 0 + // 3,2,1 bit is q in 3 bits + flags0 |= ((q-1) & 0x07) << 0 + + var block = Array(repeating: 0, count: 16) // block[0] + block[0] = flags0 + + // N in 1...(15-q) octets, n = 15-q + // n is an element of {7,8,9,10,11,12,13} + let n = 15-Int(q) + guard (n + Int(q)) == 15 else { + // n+q == 15 + throw CCMModeWorker.Error.invalidParameter + } + block[1...n] = N[0...(n-1)] + + // [i]8q in (16-q)...15 octets + block[(16-Int(q))...15] = i.bytes(totalBytes: Int(q)).slice + + return block +} + +/// Resulting can be partitioned into 16-octet blocks +private func format(aad: [UInt8]) -> [UInt8] { + let a = aad.count + + switch Double(a) { + case 0..<65280: // 2^16-2^8 + // [a]16 + return addPadding(a.bytes(totalBytes: 2) + aad, blockSize: 16) + case 65280..<4_294_967_296: // 2^32 + // [a]32 + return addPadding([0xFF, 0xFE] + a.bytes(totalBytes: 4) + aad, blockSize: 16) + case 4_294_967_296.., blockSize: Int) -> Array { + if bytes.isEmpty { + return Array(repeating: 0, count: blockSize) + } + + let remainder = bytes.count % blockSize + if remainder == 0 { + return bytes + } + + let paddingCount = blockSize - remainder + if paddingCount > 0 { + return bytes + Array(repeating: 0, count: paddingCount) + } + return bytes +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift index dd579263..316283cb 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift @@ -16,17 +16,42 @@ // Cipher feedback (CFB) // +public struct CFB: BlockMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + private let iv: Array + + public init(iv: Array) { + self.iv = iv + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return CFBModeWorker(blockSize: blockSize, iv: iv.slice, cipherOperation: cipherOperation) + } +} + struct CFBModeWorker: BlockModeWorker { let cipherOperation: CipherOperationOnBlock + let blockSize: Int + let additionalBufferSize: Int = 0 private let iv: ArraySlice private var prev: ArraySlice? - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.iv = iv self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(prev ?? iv) else { return Array(plaintext) } @@ -34,7 +59,7 @@ struct CFBModeWorker: BlockModeWorker { return Array(prev ?? []) } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { + mutating func decrypt(block ciphertext: ArraySlice) -> Array { guard let plaintext = cipherOperation(prev ?? iv) else { return Array(ciphertext) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift index 55011d3b..2dc6a9ec 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift @@ -14,38 +14,121 @@ // // Counter (CTR) -// -struct CTRModeWorker: RandomAccessBlockModeWorker { - let cipherOperation: CipherOperationOnBlock - private let iv: ArraySlice - var counter: UInt = 0 +public struct CTR: StreamMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + private let iv: Array + private let counter: Int - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + public init(iv: Array, counter: Int = 0) { self.iv = iv + self.counter = counter + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return CTRModeWorker(blockSize: blockSize, iv: iv.slice, counter: counter, cipherOperation: cipherOperation) + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +struct CTRModeWorker: StreamModeWorker, SeekableModeWorker, CounterModeWorker { + typealias Counter = CTRCounter + + final class CTRCounter { + private let constPrefix: Array + private var value: UInt64 + //TODO: make it an updatable value, computing is too slow + var bytes: Array { + return constPrefix + value.bytes() + } + + init(_ initialValue: Array) { + let halfIndex = initialValue.startIndex.advanced(by: initialValue.count / 2) + constPrefix = Array(initialValue[initialValue.startIndex.., startAt index: Int) { + self.init(buildCounterValue(nonce, counter: UInt64(index))) + } + + static func +=(lhs: CTRCounter, rhs: Int) { + lhs.value += UInt64(rhs) + } + } + + let cipherOperation: CipherOperationOnBlock + let additionalBufferSize: Int = 0 + let iv: Array + var counter: CTRCounter + + private let blockSize: Int + + // The same keystream is used for the block length plaintext + // As new data is added, keystream suffix is used to xor operation. + private var keystream: Array + private var keystreamPosIdx = 0 + + init(blockSize: Int, iv: ArraySlice, counter: Int, cipherOperation: @escaping CipherOperationOnBlock) { self.cipherOperation = cipherOperation + self.blockSize = blockSize + self.iv = Array(iv) + + // the first keystream is calculated from the nonce = initial value of counter + self.counter = CTRCounter(nonce: Array(iv), startAt: counter) + self.keystream = Array(cipherOperation(self.counter.bytes.slice)!) } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { - let nonce = buildNonce(iv, counter: UInt64(counter)) - counter = counter + 1 + mutating func seek(to position: Int) throws { + let offset = position % blockSize + counter = CTRCounter(nonce: iv, startAt: position / blockSize) + keystream = Array(cipherOperation(counter.bytes.slice)!) + keystreamPosIdx = offset + } + + // plaintext is at most blockSize long + mutating func encrypt(block plaintext: ArraySlice) -> Array { + var result = Array(reserveCapacity: plaintext.count) + + var processed = 0 + while processed < plaintext.count { + // Update keystream + if keystreamPosIdx == blockSize { + counter += 1 + keystream = Array(cipherOperation(counter.bytes.slice)!) + keystreamPosIdx = 0 + } - guard let ciphertext = cipherOperation(nonce.slice) else { - return Array(plaintext) + let xored: Array = xor(plaintext[plaintext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) + keystreamPosIdx += xored.count + processed += xored.count + result += xored } - return xor(plaintext, ciphertext) + return result } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { - return encrypt(ciphertext) + mutating func decrypt(block ciphertext: ArraySlice) -> Array { + return encrypt(block: ciphertext) } } -private func buildNonce(_ iv: ArraySlice, counter: UInt64) -> Array { - let noncePartLen = AES.blockSize / 2 - let noncePrefix = Array(iv[iv.startIndex.., counter: UInt64) -> Array { + let noncePartLen = iv.count / 2 + let noncePrefix = iv[iv.startIndex.. +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +public protocol CipherModeWorker { + var cipherOperation: CipherOperationOnBlock { get } + + // Additional space needed when incrementally process data + // eg. for GCM combined mode + var additionalBufferSize: Int { get } + + mutating func encrypt(block plaintext: ArraySlice) -> Array + mutating func decrypt(block ciphertext: ArraySlice) -> Array +} + +/// Block workers use `BlockEncryptor` +public protocol BlockModeWorker: CipherModeWorker { + var blockSize: Int { get } +} + +public protocol CounterModeWorker: CipherModeWorker { + associatedtype Counter + var counter: Counter { get set } +} + +public protocol SeekableModeWorker: CipherModeWorker { + mutating func seek(to position: Int) throws +} + +/// Stream workers use `StreamEncryptor` +public protocol StreamModeWorker: CipherModeWorker { +} + +public protocol FinalizingEncryptModeWorker: CipherModeWorker { + // Any final calculations, eg. calculate tag + // Called after the last block is encrypted + mutating func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice +} + +public protocol FinalizingDecryptModeWorker: CipherModeWorker { + // Called before decryption, hence input is ciphertext. + // ciphertext is either a last block, or a tag (for stream workers) + @discardableResult + mutating func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice + // Called after decryption, hence input is ciphertext + mutating func didDecryptLast(bytes plaintext: ArraySlice) throws -> ArraySlice + // Any final calculations, eg. calculate tag + // Called after the last block is encrypted + mutating func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift index 68d8ae0d..ce410b30 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift @@ -16,22 +16,36 @@ // Electronic codebook (ECB) // +public struct ECB: BlockMode { + public let options: BlockModeOption = .paddingRequired + + public init() { + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + return ECBModeWorker(blockSize: blockSize, cipherOperation: cipherOperation) + } +} + struct ECBModeWorker: BlockModeWorker { typealias Element = Array let cipherOperation: CipherOperationOnBlock + let blockSize: Int + let additionalBufferSize: Int = 0 - init(cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(plaintext) else { return Array(plaintext) } return ciphertext } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { - return encrypt(ciphertext) + mutating func decrypt(block ciphertext: ArraySlice) -> Array { + return encrypt(block: ciphertext) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift new file mode 100644 index 00000000..d9bf5d94 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift @@ -0,0 +1,370 @@ +// +// CryptoSwift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +// Galois/Counter Mode (GCM) +// https://csrc.nist.gov/publications/detail/sp/800-38d/final +// ref: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.694.695&rep=rep1&type=pdf +// + +public final class GCM: BlockMode { + public enum Mode { + /// In combined mode, the authentication tag is directly appended to the encrypted message. This is usually what you want. + case combined + /// Some applications may need to store the authentication tag and the encrypted message at different locations. + case detached + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + /// Special symbol FAIL that indicates that the inputs are not authentic. + case fail + } + + private let iv: Array + private let additionalAuthenticatedData: Array? + private let mode: Mode + + /// Length of authentication tag, in bytes. + /// For encryption, the value is given as init parameter. + /// For decryption, the lenght of given authentication tag is used. + private let tagLength: Int + + // `authenticationTag` nil for encryption, known tag for decryption + /// For encryption, the value is set at the end of the encryption. + /// For decryption, this is a known Tag to validate against. + public var authenticationTag: Array? + + // encrypt + /// Possible tag lengths: 4,8,12,13,14,15,16 + public init(iv: Array, additionalAuthenticatedData: Array? = nil, tagLength: Int = 16, mode: Mode = .detached) { + self.iv = iv + self.additionalAuthenticatedData = additionalAuthenticatedData + self.mode = mode + self.tagLength = tagLength + } + + // decrypt + public convenience init(iv: Array, authenticationTag: Array, additionalAuthenticatedData: Array? = nil, mode: Mode = .detached) { + self.init(iv: iv, additionalAuthenticatedData: additionalAuthenticatedData, tagLength: authenticationTag.count, mode: mode) + self.authenticationTag = authenticationTag + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.isEmpty { + throw Error.invalidInitializationVector + } + + let worker = GCMModeWorker(iv: iv.slice, aad: additionalAuthenticatedData?.slice, expectedTag: authenticationTag, tagLength: tagLength, mode: mode, cipherOperation: cipherOperation) + worker.didCalculateTag = { [weak self] tag in + self?.authenticationTag = tag + } + return worker + } +} + +// MARK: - Worker + +final class GCMModeWorker: BlockModeWorker, FinalizingEncryptModeWorker, FinalizingDecryptModeWorker { + let cipherOperation: CipherOperationOnBlock + + // Callback called when authenticationTag is ready + var didCalculateTag: ((Array) -> Void)? + + private let tagLength: Int + // GCM nonce is 96-bits by default. It's the most effective length for the IV + private static let nonceSize = 12 + + // GCM is designed for 128-bit ciphers like AES (but not really for Blowfish). 64-bit mode is not implemented. + let blockSize = 16 // 128 bit + let additionalBufferSize: Int + private let iv: ArraySlice + private let mode: GCM.Mode + private var counter: UInt128 + private let eky0: UInt128 // move to GF? + private let h: UInt128 + + // Additional authenticated data + private let aad: ArraySlice? + // Known Tag used to validate during decryption + private var expectedTag: Array? + + // Note: need new worker to reset instance + // Use empty aad if not specified. AAD is optional. + private lazy var gf: GF = { + if let aad = aad { + return GF(aad: Array(aad), h: h, blockSize: blockSize) + } + return GF(aad: [UInt8](), h: h, blockSize: blockSize) + }() + + init(iv: ArraySlice, aad: ArraySlice? = nil, expectedTag: Array? = nil, tagLength: Int, mode: GCM.Mode, cipherOperation: @escaping CipherOperationOnBlock) { + self.cipherOperation = cipherOperation + self.iv = iv + self.mode = mode + self.aad = aad + self.expectedTag = expectedTag + self.tagLength = tagLength + h = UInt128(cipherOperation(Array(repeating: 0, count: blockSize).slice)!) // empty block + + if mode == .combined { + self.additionalBufferSize = tagLength + } else { + self.additionalBufferSize = 0 + } + + // Assume nonce is 12 bytes long, otherwise initial counter would be calulated from GHASH + // counter = GF.ghash(aad: [UInt8](), ciphertext: nonce) + if iv.count == GCMModeWorker.nonceSize { + counter = makeCounter(nonce: Array(self.iv)) + } else { + counter = GF.ghash(h: h, aad: [UInt8](), ciphertext: Array(iv), blockSize: blockSize) + } + + // Set constants + eky0 = UInt128(cipherOperation(counter.bytes.slice)!) + } + + func encrypt(block plaintext: ArraySlice) -> Array { + counter = incrementCounter(counter) + + guard let ekyN = cipherOperation(counter.bytes.slice) else { + return Array(plaintext) + } + + // plaintext block ^ ek1 + let ciphertext = xor(plaintext, ekyN) as Array + + // update ghash incrementally + gf.ghashUpdate(block: ciphertext) + + return Array(ciphertext) + } + + func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice { + // Calculate MAC tag. + let ghash = gf.ghashFinish() + let tag = Array((ghash ^ eky0).bytes.prefix(tagLength)) + + // Notify handler + didCalculateTag?(tag) + + switch mode { + case .combined: + return (ciphertext + tag).slice + case .detached: + return ciphertext + } + } + + func decrypt(block ciphertext: ArraySlice) -> Array { + counter = incrementCounter(counter) + + // update ghash incrementally + gf.ghashUpdate(block: Array(ciphertext)) + + guard let ekN = cipherOperation(counter.bytes.slice) else { + return Array(ciphertext) + } + + // ciphertext block ^ ek1 + let plaintext = xor(ciphertext, ekN) as Array + return plaintext + } + + // The authenticated decryption operation has five inputs: K, IV , C, A, and T. It has only a single + // output, either the plaintext value P or a special symbol FAIL that indicates that the inputs are not + // authentic. + @discardableResult + func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice { + // Validate tag + switch mode { + case .combined: + // overwrite expectedTag property used later for verification + self.expectedTag = Array(ciphertext.suffix(tagLength)) + return ciphertext[ciphertext.startIndex..) throws -> ArraySlice { + // Calculate MAC tag. + let ghash = gf.ghashFinish() + let computedTag = Array((ghash ^ eky0).bytes.prefix(tagLength)) + + // Validate tag + guard let expectedTag = self.expectedTag, computedTag == expectedTag else { + throw GCM.Error.fail + } + + return plaintext + } + + func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice { + // do nothing + return plaintext + } +} + +// MARK: - Local utils + +private func makeCounter(nonce: Array) -> UInt128 { + return UInt128(nonce + [0, 0, 0, 1]) +} + +// Successive counter values are generated using the function incr(), which treats the rightmost 32 +// bits of its argument as a nonnegative integer with the least significant bit on the right +private func incrementCounter(_ counter: UInt128) -> UInt128 { + let b = counter.i.b + 1 + let a = (b == 0 ? counter.i.a + 1 : counter.i.a) + return UInt128((a, b)) +} + +// If data is not a multiple of block size bytes long then the remainder is zero padded +// Note: It's similar to ZeroPadding, but it's not the same. +private func addPadding(_ bytes: Array, blockSize: Int) -> Array { + if bytes.isEmpty { + return Array(repeating: 0, count: blockSize) + } + + let remainder = bytes.count % blockSize + if remainder == 0 { + return bytes + } + + let paddingCount = blockSize - remainder + if paddingCount > 0 { + return bytes + Array(repeating: 0, count: paddingCount) + } + return bytes +} + +// MARK: - GF + +/// The Field GF(2^128) +private final class GF { + static let r = UInt128(a: 0xE100000000000000, b: 0) + + let blockSize: Int + let h: UInt128 + + // AAD won't change + let aadLength: Int + + // Updated for every consumed block + var ciphertextLength: Int + + // Start with 0 + var x: UInt128 + + init(aad: [UInt8], h: UInt128, blockSize: Int) { + self.blockSize = blockSize + aadLength = aad.count + ciphertextLength = 0 + self.h = h + x = 0 + + // Calculate for AAD at the begining + x = GF.calculateX(aad: aad, x: x, h: h, blockSize: blockSize) + } + + @discardableResult + func ghashUpdate(block ciphertextBlock: Array) -> UInt128 { + ciphertextLength += ciphertextBlock.count + x = GF.calculateX(block: addPadding(ciphertextBlock, blockSize: blockSize), x: x, h: h, blockSize: blockSize) + return x + } + + func ghashFinish() -> UInt128 { + // len(A) || len(C) + let len = UInt128(a: UInt64(aadLength * 8), b: UInt64(ciphertextLength * 8)) + x = GF.multiply((x ^ len), h) + return x + } + + // GHASH. One-time calculation + static func ghash(x startx: UInt128 = 0, h: UInt128, aad: Array, ciphertext: Array, blockSize: Int) -> UInt128 { + var x = calculateX(aad: aad, x: startx, h: h, blockSize: blockSize) + x = calculateX(ciphertext: ciphertext, x: x, h: h, blockSize: blockSize) + + // len(aad) || len(ciphertext) + let len = UInt128(a: UInt64(aad.count * 8), b: UInt64(ciphertext.count * 8)) + x = multiply((x ^ len), h) + + return x + } + + // Calculate Ciphertext part, for all blocks + // Not used with incremental calculation. + private static func calculateX(ciphertext: [UInt8], x startx: UInt128, h: UInt128, blockSize: Int) -> UInt128 { + let pciphertext = addPadding(ciphertext, blockSize: blockSize) + let blocksCount = pciphertext.count / blockSize + + var x = startx + for i in 0.., x: UInt128, h: UInt128, blockSize: Int) -> UInt128 { + let k = x ^ UInt128(ciphertextBlock) + return multiply(k, h) + } + + // Calculate AAD part, for all blocks + private static func calculateX(aad: [UInt8], x startx: UInt128, h: UInt128, blockSize: Int) -> UInt128 { + let paad = addPadding(aad, blockSize: blockSize) + let blocksCount = paad.count / blockSize + + var x = startx + for i in 0.. UInt128 { + var z: UInt128 = 0 + var v = x + var k = UInt128(a: 1 << 63, b: 0) + + for _ in 0..<128 { + if y & k == k { + z = z ^ v + } + + if v & 1 != 1 { + v = v >> 1 + } else { + v = (v >> 1) ^ r + } + + k = k >> 1 + } + + return z + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift index 70e43598..0f5c66a4 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift @@ -16,17 +16,42 @@ // Output Feedback (OFB) // +public struct OFB: BlockMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + private let iv: Array + + public init(iv: Array) { + self.iv = iv + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return OFBModeWorker(blockSize: blockSize, iv: iv.slice, cipherOperation: cipherOperation) + } +} + struct OFBModeWorker: BlockModeWorker { let cipherOperation: CipherOperationOnBlock + let blockSize: Int + let additionalBufferSize: Int = 0 private let iv: ArraySlice private var prev: ArraySlice? - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.iv = iv self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(prev ?? iv) else { return Array(plaintext) } @@ -34,7 +59,7 @@ struct OFBModeWorker: BlockModeWorker { return xor(plaintext, ciphertext) } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { + mutating func decrypt(block ciphertext: ArraySlice) -> Array { guard let decrypted = cipherOperation(prev ?? iv) else { return Array(ciphertext) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift index a6dd544f..846015d6 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift @@ -16,17 +16,42 @@ // Propagating Cipher Block Chaining (PCBC) // +public struct PCBC: BlockMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .paddingRequired] + private let iv: Array + + public init(iv: Array) { + self.iv = iv + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return PCBCModeWorker(blockSize: blockSize, iv: iv.slice, cipherOperation: cipherOperation) + } +} + struct PCBCModeWorker: BlockModeWorker { let cipherOperation: CipherOperationOnBlock + var blockSize: Int + let additionalBufferSize: Int = 0 private let iv: ArraySlice private var prev: ArraySlice? - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.iv = iv self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(xor(prev ?? iv, plaintext)) else { return Array(plaintext) } @@ -34,7 +59,7 @@ struct PCBCModeWorker: BlockModeWorker { return ciphertext } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { + mutating func decrypt(block ciphertext: ArraySlice) -> Array { guard let plaintext = cipherOperation(ciphertext) else { return Array(ciphertext) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift deleted file mode 100644 index aa143295..00000000 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -protocol RandomAccessBlockModeWorker: BlockModeWorker { - var counter: UInt { set get } -} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift index f95bfe23..34c771c2 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift @@ -25,6 +25,8 @@ public final class Blowfish { case invalidKeyOrInitializationVector /// Invalid IV case invalidInitializationVector + /// Invalid block mode + case invalidBlockMode } public static let blockSize: Int = 8 // 64 bit @@ -32,8 +34,8 @@ public final class Blowfish { private let blockMode: BlockMode private let padding: Padding - private var decryptWorker: BlockModeWorker! - private var encryptWorker: BlockModeWorker! + private var decryptWorker: CipherModeWorker! + private var encryptWorker: CipherModeWorker! private let N = 16 // rounds private var P: Array @@ -312,7 +314,7 @@ public final class Blowfish { ], ] - public init(key: Array, blockMode: BlockMode = .CBC(iv: Array(repeating: 0, count: Blowfish.blockSize)), padding: Padding) throws { + public init(key: Array, blockMode: BlockMode = CBC(iv: Array(repeating: 0, count: Blowfish.blockSize)), padding: Padding) throws { precondition(key.count >= 5 && key.count <= 56) self.blockMode = blockMode @@ -329,10 +331,9 @@ public final class Blowfish { private func setupBlockModeWorkers() throws { encryptWorker = try blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: encrypt) - switch blockMode { - case .CFB, .OFB, .CTR: + if blockMode.options.contains(.useEncryptToDecrypt) { decryptWorker = try blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: encrypt) - default: + } else { decryptWorker = try blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: decrypt) } } @@ -503,7 +504,7 @@ extension Blowfish: Cipher { out.reserveCapacity(bytes.count) for chunk in bytes.batched(by: Blowfish.blockSize) { - out += encryptWorker.encrypt(chunk) + out += encryptWorker.encrypt(block: chunk) } if blockMode.options.contains(.paddingRequired) && (out.count % Blowfish.blockSize != 0) { @@ -526,7 +527,7 @@ extension Blowfish: Cipher { out.reserveCapacity(bytes.count) for chunk in Array(bytes).batched(by: Blowfish.blockSize) { - out += decryptWorker.decrypt(chunk) // FIXME: copying here is innefective + out += decryptWorker.decrypt(block: chunk) // FIXME: copying here is innefective } out = padding.remove(from: out, blockSize: Blowfish.blockSize) diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift new file mode 100644 index 00000000..e14f2bd5 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift @@ -0,0 +1,104 @@ +// +// CryptoSwift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +public class CBCMAC: Authenticator { + public enum Error: Swift.Error { + case wrongKeyLength + } + + private let key: SecureBytes + + private static let BlockSize: Int = 16 + private static let Zero: Array = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] + private static let Rb: Array = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87] + + public init(key: Array) throws { + if key.count != 16 { + throw Error.wrongKeyLength + } + self.key = SecureBytes(bytes: key) + } + + // MARK: Authenticator + + public func authenticate(_ bytes: Array) throws -> Array { + let aes = try AES(key: Array(key), blockMode: CBC(iv: CBCMAC.Zero), padding: .noPadding) + + let l = try aes.encrypt(CBCMAC.Zero) + var subKey1 = leftShiftOneBit(l) + if (l[0] & 0x80) != 0 { + subKey1 = xor(CBCMAC.Rb, subKey1) + } + var subKey2 = leftShiftOneBit(subKey1) + if (subKey1[0] & 0x80) != 0 { + subKey2 = xor(CBCMAC.Rb, subKey2) + } + + let lastBlockComplete: Bool + let blockCount = (bytes.count + CBCMAC.BlockSize - 1) / CBCMAC.BlockSize + if blockCount == 0 { + lastBlockComplete = false + } else { + lastBlockComplete = bytes.count % CBCMAC.BlockSize == 0 + } + var paddedBytes = bytes + if !lastBlockComplete { + bitPadding(to: &paddedBytes, blockSize: CBCMAC.BlockSize) + } + + var blocks = Array(paddedBytes.batched(by: CBCMAC.BlockSize)) + var lastBlock = blocks.popLast()! + if lastBlockComplete { + lastBlock = xor(lastBlock, subKey1) + } else { + lastBlock = xor(lastBlock, subKey2) + } + + var x = Array(repeating: 0x00, count: CBCMAC.BlockSize) + var y = Array(repeating: 0x00, count: CBCMAC.BlockSize) + for block in blocks { + y = xor(block, x) + x = try aes.encrypt(y) + } + // the difference between CMAC and CBC-MAC is that CMAC xors the final block with a secret value + y = process(lastBlock: lastBlock, with: x) + return try aes.encrypt(y) + } + + func process(lastBlock: ArraySlice, with x: [UInt8]) -> [UInt8] { + return Array(lastBlock) + } + + // MARK: Helper methods + + /** + Performs left shift by one bit to the bit string aquired after concatenating al bytes in the byte array + - parameters: + - bytes: byte array + - returns: bit shifted bit string split again in array of bytes + */ + private func leftShiftOneBit(_ bytes: Array) -> Array { + var shifted = Array(repeating: 0x00, count: bytes.count) + let last = bytes.count - 1 + for index in 0.. = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] - private static let Rb: Array = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87] - - public init(key: Array) throws { - if key.count != 16 { - throw Error.wrongKeyLength - } - self.key = SecureBytes(bytes: key) - } - - // MARK: Authenticator - - public func authenticate(_ bytes: Array) throws -> Array { - let aes = try AES(key: Array(key), blockMode: .CBC(iv: CMAC.Zero), padding: .noPadding) - - let l = try aes.encrypt(CMAC.Zero) - var subKey1 = leftShiftOneBit(l) - if (l[0] & 0x80) != 0 { - subKey1 = xor(CMAC.Rb, subKey1) - } - var subKey2 = leftShiftOneBit(subKey1) - if (subKey1[0] & 0x80) != 0 { - subKey2 = xor(CMAC.Rb, subKey2) - } - - let lastBlockComplete: Bool - let blockCount = (bytes.count + CMAC.BlockSize - 1) / CMAC.BlockSize - if blockCount == 0 { - lastBlockComplete = false - } else { - lastBlockComplete = bytes.count % CMAC.BlockSize == 0 - } - var paddedBytes = bytes - if !lastBlockComplete { - bitPadding(to: &paddedBytes, blockSize: CMAC.BlockSize) - } - - var blocks = Array(paddedBytes.batched(by: CMAC.BlockSize)) - var lastBlock = blocks.popLast()! - if lastBlockComplete { - lastBlock = xor(lastBlock, subKey1) - } else { - lastBlock = xor(lastBlock, subKey2) - } - - var x = Array(repeating: 0x00, count: CMAC.BlockSize) - var y = Array(repeating: 0x00, count: CMAC.BlockSize) - for block in blocks { - y = xor(block, x) - x = try aes.encrypt(y) - } - y = xor(lastBlock, x) - return try aes.encrypt(y) - } - - // MARK: Helper methods - - /** - Performs left shift by one bit to the bit string aquired after concatenating al bytes in the byte array - - parameters: - - bytes: byte array - - returns: bit shifted bit string split again in array of bytes - */ - private func leftShiftOneBit(_ bytes: Array) -> Array { - var shifted = Array(repeating: 0x00, count: bytes.count) - let last = bytes.count - 1 - for index in 0.., with x: [UInt8]) -> [UInt8] { + return xor(lastBlock, x) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift index 2ec12dbb..250ee9d0 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift @@ -19,6 +19,7 @@ public final class ChaCha20: BlockCipher { public enum Error: Swift.Error { case invalidKeyOrInitializationVector + case notSupported } public static let blockSize = 64 // 512 / 8 @@ -254,7 +255,7 @@ extension ChaCha20: Cipher { // MARK: Encryptor extension ChaCha20 { - public struct Encryptor: Updatable { + public struct ChaChaEncryptor: Cryptor, Updatable { private var accumulated = Array() private let chacha: ChaCha20 @@ -275,13 +276,17 @@ extension ChaCha20 { } return encrypted } + + public func seek(to: Int) throws { + throw Error.notSupported + } } } // MARK: Decryptor extension ChaCha20 { - public struct Decryptor: Updatable { + public struct ChaChaDecryptor: Cryptor, Updatable { private var accumulated = Array() private var offset: Int = 0 @@ -320,17 +325,23 @@ extension ChaCha20 { return plaintext } + + public func seek(to: Int) throws { + throw Error.notSupported + } } } // MARK: Cryptors extension ChaCha20: Cryptors { - public func makeEncryptor() -> ChaCha20.Encryptor { - return Encryptor(chacha: self) + //TODO: Use BlockEncryptor/BlockDecryptor + + public func makeEncryptor() -> Cryptor & Updatable { + return ChaCha20.ChaChaEncryptor(chacha: self) } - public func makeDecryptor() -> ChaCha20.Decryptor { - return Decryptor(chacha: self) + public func makeDecryptor() -> Cryptor & Updatable { + return ChaCha20.ChaChaDecryptor(chacha: self) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift index 4f1182ab..1c4fd48c 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift @@ -16,91 +16,140 @@ /// CRC - cyclic redundancy check code. public final class Checksum { private static let table32: Array = [ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, - 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, - 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, - 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, - 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, - 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, - 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, - 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, - 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, - 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, - 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, - 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, - 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, - 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, - 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, - 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, - 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, - 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, + 0x0000_0000, 0x7707_3096, 0xEE0E_612C, 0x9909_51BA, 0x076D_C419, 0x706A_F48F, 0xE963_A535, 0x9E64_95A3, + 0x0EDB_8832, 0x79DC_B8A4, 0xE0D5_E91E, 0x97D2_D988, 0x09B6_4C2B, 0x7EB1_7CBD, 0xE7B8_2D07, 0x90BF_1D91, + 0x1DB7_1064, 0x6AB0_20F2, 0xF3B9_7148, 0x84BE_41DE, 0x1ADA_D47D, 0x6DDD_E4EB, 0xF4D4_B551, 0x83D3_85C7, + 0x136C_9856, 0x646B_A8C0, 0xFD62_F97A, 0x8A65_C9EC, 0x1401_5C4F, 0x6306_6CD9, 0xFA0F_3D63, 0x8D08_0DF5, + 0x3B6E_20C8, 0x4C69_105E, 0xD560_41E4, 0xA267_7172, 0x3C03_E4D1, 0x4B04_D447, 0xD20D_85FD, 0xA50A_B56B, + 0x35B5_A8FA, 0x42B2_986C, 0xDBBB_C9D6, 0xACBC_F940, 0x32D8_6CE3, 0x45DF_5C75, 0xDCD6_0DCF, 0xABD1_3D59, + 0x26D9_30AC, 0x51DE_003A, 0xC8D7_5180, 0xBFD0_6116, 0x21B4_F4B5, 0x56B3_C423, 0xCFBA_9599, 0xB8BD_A50F, + 0x2802_B89E, 0x5F05_8808, 0xC60C_D9B2, 0xB10B_E924, 0x2F6F_7C87, 0x5868_4C11, 0xC161_1DAB, 0xB666_2D3D, + 0x76DC_4190, 0x01DB_7106, 0x98D2_20BC, 0xEFD5_102A, 0x71B1_8589, 0x06B6_B51F, 0x9FBF_E4A5, 0xE8B8_D433, + 0x7807_C9A2, 0x0F00_F934, 0x9609_A88E, 0xE10E_9818, 0x7F6A_0DBB, 0x086D_3D2D, 0x9164_6C97, 0xE663_5C01, + 0x6B6B_51F4, 0x1C6C_6162, 0x8565_30D8, 0xF262_004E, 0x6C06_95ED, 0x1B01_A57B, 0x8208_F4C1, 0xF50F_C457, + 0x65B0_D9C6, 0x12B7_E950, 0x8BBE_B8EA, 0xFCB9_887C, 0x62DD_1DDF, 0x15DA_2D49, 0x8CD3_7CF3, 0xFBD4_4C65, + 0x4DB2_6158, 0x3AB5_51CE, 0xA3BC_0074, 0xD4BB_30E2, 0x4ADF_A541, 0x3DD8_95D7, 0xA4D1_C46D, 0xD3D6_F4FB, + 0x4369_E96A, 0x346E_D9FC, 0xAD67_8846, 0xDA60_B8D0, 0x4404_2D73, 0x3303_1DE5, 0xAA0A_4C5F, 0xDD0D_7CC9, + 0x5005_713C, 0x2702_41AA, 0xBE0B_1010, 0xC90C_2086, 0x5768_B525, 0x206F_85B3, 0xB966_D409, 0xCE61_E49F, + 0x5EDE_F90E, 0x29D9_C998, 0xB0D0_9822, 0xC7D7_A8B4, 0x59B3_3D17, 0x2EB4_0D81, 0xB7BD_5C3B, 0xC0BA_6CAD, + 0xEDB8_8320, 0x9ABF_B3B6, 0x03B6_E20C, 0x74B1_D29A, 0xEAD5_4739, 0x9DD2_77AF, 0x04DB_2615, 0x73DC_1683, + 0xE363_0B12, 0x9464_3B84, 0x0D6D_6A3E, 0x7A6A_5AA8, 0xE40E_CF0B, 0x9309_FF9D, 0x0A00_AE27, 0x7D07_9EB1, + 0xF00F_9344, 0x8708_A3D2, 0x1E01_F268, 0x6906_C2FE, 0xF762_575D, 0x8065_67CB, 0x196C_3671, 0x6E6B_06E7, + 0xFED4_1B76, 0x89D3_2BE0, 0x10DA_7A5A, 0x67DD_4ACC, 0xF9B9_DF6F, 0x8EBE_EFF9, 0x17B7_BE43, 0x60B0_8ED5, + 0xD6D6_A3E8, 0xA1D1_937E, 0x38D8_C2C4, 0x4FDF_F252, 0xD1BB_67F1, 0xA6BC_5767, 0x3FB5_06DD, 0x48B2_364B, + 0xD80D_2BDA, 0xAF0A_1B4C, 0x3603_4AF6, 0x4104_7A60, 0xDF60_EFC3, 0xA867_DF55, 0x316E_8EEF, 0x4669_BE79, + 0xCB61_B38C, 0xBC66_831A, 0x256F_D2A0, 0x5268_E236, 0xCC0C_7795, 0xBB0B_4703, 0x2202_16B9, 0x5505_262F, + 0xC5BA_3BBE, 0xB2BD_0B28, 0x2BB4_5A92, 0x5CB3_6A04, 0xC2D7_FFA7, 0xB5D0_CF31, 0x2CD9_9E8B, 0x5BDE_AE1D, + 0x9B64_C2B0, 0xEC63_F226, 0x756A_A39C, 0x026D_930A, 0x9C09_06A9, 0xEB0E_363F, 0x7207_6785, 0x0500_5713, + 0x95BF_4A82, 0xE2B8_7A14, 0x7BB1_2BAE, 0x0CB6_1B38, 0x92D2_8E9B, 0xE5D5_BE0D, 0x7CDC_EFB7, 0x0BDB_DF21, + 0x86D3_D2D4, 0xF1D4_E242, 0x68DD_B3F8, 0x1FDA_836E, 0x81BE_16CD, 0xF6B9_265B, 0x6FB0_77E1, 0x18B7_4777, + 0x8808_5AE6, 0xFF0F_6A70, 0x6606_3BCA, 0x1101_0B5C, 0x8F65_9EFF, 0xF862_AE69, 0x616B_FFD3, 0x166C_CF45, + 0xA00A_E278, 0xD70D_D2EE, 0x4E04_8354, 0x3903_B3C2, 0xA767_2661, 0xD060_16F7, 0x4969_474D, 0x3E6E_77DB, + 0xAED1_6A4A, 0xD9D6_5ADC, 0x40DF_0B66, 0x37D8_3BF0, 0xA9BC_AE53, 0xDEBB_9EC5, 0x47B2_CF7F, 0x30B5_FFE9, + 0xBDBD_F21C, 0xCABA_C28A, 0x53B3_9330, 0x24B4_A3A6, 0xBAD0_3605, 0xCDD7_0693, 0x54DE_5729, 0x23D9_67BF, + 0xB366_7A2E, 0xC461_4AB8, 0x5D68_1B02, 0x2A6F_2B94, 0xB40B_BE37, 0xC30C_8EA1, 0x5A05_DF1B, 0x2D02_EF8D, + ] + + private static let table32c: Array = [ + 0x0000_0000, 0xF26B_8303, 0xE13B_70F7, 0x1350_F3F4, 0xC79A_971F, 0x35F1_141C, 0x26A1_E7E8, 0xD4CA_64EB, + 0x8AD9_58CF, 0x78B2_DBCC, 0x6BE2_2838, 0x9989_AB3B, 0x4D43_CFD0, 0xBF28_4CD3, 0xAC78_BF27, 0x5E13_3C24, + 0x105E_C76F, 0xE235_446C, 0xF165_B798, 0x030E_349B, 0xD7C4_5070, 0x25AF_D373, 0x36FF_2087, 0xC494_A384, + 0x9A87_9FA0, 0x68EC_1CA3, 0x7BBC_EF57, 0x89D7_6C54, 0x5D1D_08BF, 0xAF76_8BBC, 0xBC26_7848, 0x4E4D_FB4B, + 0x20BD_8EDE, 0xD2D6_0DDD, 0xC186_FE29, 0x33ED_7D2A, 0xE727_19C1, 0x154C_9AC2, 0x061C_6936, 0xF477_EA35, + 0xAA64_D611, 0x580F_5512, 0x4B5F_A6E6, 0xB934_25E5, 0x6DFE_410E, 0x9F95_C20D, 0x8CC5_31F9, 0x7EAE_B2FA, + 0x30E3_49B1, 0xC288_CAB2, 0xD1D8_3946, 0x23B3_BA45, 0xF779_DEAE, 0x0512_5DAD, 0x1642_AE59, 0xE429_2D5A, + 0xBA3A_117E, 0x4851_927D, 0x5B01_6189, 0xA96A_E28A, 0x7DA0_8661, 0x8FCB_0562, 0x9C9B_F696, 0x6EF0_7595, + 0x417B_1DBC, 0xB310_9EBF, 0xA040_6D4B, 0x522B_EE48, 0x86E1_8AA3, 0x748A_09A0, 0x67DA_FA54, 0x95B1_7957, + 0xCBA2_4573, 0x39C9_C670, 0x2A99_3584, 0xD8F2_B687, 0x0C38_D26C, 0xFE53_516F, 0xED03_A29B, 0x1F68_2198, + 0x5125_DAD3, 0xA34E_59D0, 0xB01E_AA24, 0x4275_2927, 0x96BF_4DCC, 0x64D4_CECF, 0x7784_3D3B, 0x85EF_BE38, + 0xDBFC_821C, 0x2997_011F, 0x3AC7_F2EB, 0xC8AC_71E8, 0x1C66_1503, 0xEE0D_9600, 0xFD5D_65F4, 0x0F36_E6F7, + 0x61C6_9362, 0x93AD_1061, 0x80FD_E395, 0x7296_6096, 0xA65C_047D, 0x5437_877E, 0x4767_748A, 0xB50C_F789, + 0xEB1F_CBAD, 0x1974_48AE, 0x0A24_BB5A, 0xF84F_3859, 0x2C85_5CB2, 0xDEEE_DFB1, 0xCDBE_2C45, 0x3FD5_AF46, + 0x7198_540D, 0x83F3_D70E, 0x90A3_24FA, 0x62C8_A7F9, 0xB602_C312, 0x4469_4011, 0x5739_B3E5, 0xA552_30E6, + 0xFB41_0CC2, 0x092A_8FC1, 0x1A7A_7C35, 0xE811_FF36, 0x3CDB_9BDD, 0xCEB0_18DE, 0xDDE0_EB2A, 0x2F8B_6829, + 0x82F6_3B78, 0x709D_B87B, 0x63CD_4B8F, 0x91A6_C88C, 0x456C_AC67, 0xB707_2F64, 0xA457_DC90, 0x563C_5F93, + 0x082F_63B7, 0xFA44_E0B4, 0xE914_1340, 0x1B7F_9043, 0xCFB5_F4A8, 0x3DDE_77AB, 0x2E8E_845F, 0xDCE5_075C, + 0x92A8_FC17, 0x60C3_7F14, 0x7393_8CE0, 0x81F8_0FE3, 0x5532_6B08, 0xA759_E80B, 0xB409_1BFF, 0x4662_98FC, + 0x1871_A4D8, 0xEA1A_27DB, 0xF94A_D42F, 0x0B21_572C, 0xDFEB_33C7, 0x2D80_B0C4, 0x3ED0_4330, 0xCCBB_C033, + 0xA24B_B5A6, 0x5020_36A5, 0x4370_C551, 0xB11B_4652, 0x65D1_22B9, 0x97BA_A1BA, 0x84EA_524E, 0x7681_D14D, + 0x2892_ED69, 0xDAF9_6E6A, 0xC9A9_9D9E, 0x3BC2_1E9D, 0xEF08_7A76, 0x1D63_F975, 0x0E33_0A81, 0xFC58_8982, + 0xB215_72C9, 0x407E_F1CA, 0x532E_023E, 0xA145_813D, 0x758F_E5D6, 0x87E4_66D5, 0x94B4_9521, 0x66DF_1622, + 0x38CC_2A06, 0xCAA7_A905, 0xD9F7_5AF1, 0x2B9C_D9F2, 0xFF56_BD19, 0x0D3D_3E1A, 0x1E6D_CDEE, 0xEC06_4EED, + 0xC38D_26C4, 0x31E6_A5C7, 0x22B6_5633, 0xD0DD_D530, 0x0417_B1DB, 0xF67C_32D8, 0xE52C_C12C, 0x1747_422F, + 0x4954_7E0B, 0xBB3F_FD08, 0xA86F_0EFC, 0x5A04_8DFF, 0x8ECE_E914, 0x7CA5_6A17, 0x6FF5_99E3, 0x9D9E_1AE0, + 0xD3D3_E1AB, 0x21B8_62A8, 0x32E8_915C, 0xC083_125F, 0x1449_76B4, 0xE622_F5B7, 0xF572_0643, 0x0719_8540, + 0x590A_B964, 0xAB61_3A67, 0xB831_C993, 0x4A5A_4A90, 0x9E90_2E7B, 0x6CFB_AD78, 0x7FAB_5E8C, 0x8DC0_DD8F, + 0xE330_A81A, 0x115B_2B19, 0x020B_D8ED, 0xF060_5BEE, 0x24AA_3F05, 0xD6C1_BC06, 0xC591_4FF2, 0x37FA_CCF1, + 0x69E9_F0D5, 0x9B82_73D6, 0x88D2_8022, 0x7AB9_0321, 0xAE73_67CA, 0x5C18_E4C9, 0x4F48_173D, 0xBD23_943E, + 0xF36E_6F75, 0x0105_EC76, 0x1255_1F82, 0xE03E_9C81, 0x34F4_F86A, 0xC69F_7B69, 0xD5CF_889D, 0x27A4_0B9E, + 0x79B7_37BA, 0x8BDC_B4B9, 0x988C_474D, 0x6AE7_C44E, 0xBE2D_A0A5, 0x4C46_23A6, 0x5F16_D052, 0xAD7D_5351, ] private static let table16: Array = [ - 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, - 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, - 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, - 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, - 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, - 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, - 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, - 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, - 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, - 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, - 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, - 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, - 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, - 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, - 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, - 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, - 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, - 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, - 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, - 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, - 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, - 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, - 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, - 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, - 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, - 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, - 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, - 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, - 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, - 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, - 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, - 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040, + 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, + 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, + 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, + 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, + 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, + 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, + 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, + 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, + 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, + 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, + 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, + 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, + 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, + 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, + 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, + 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, + 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, + 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, + 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, + 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, + 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, + 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, + 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, + 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, + 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, + 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, + 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, + 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, + 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, + 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, + 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, + 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040, ] + /// Polynomial: 0xEDB88320 (Reversed) - IEEE func crc32(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - var crc: UInt32 = seed != nil ? seed! : 0xffffffff + var crc: UInt32 = seed != nil ? seed! : 0xFFFF_FFFF for chunk in message.batched(by: 256) { for b in chunk { - let idx = Int((crc ^ UInt32(reflect ? b : reversed(b))) & 0xff) + let idx = Int((crc ^ UInt32(reflect ? b : reversed(b))) & 0xFF) crc = (crc >> 8) ^ Checksum.table32[idx] } } - return (reflect ? crc : reversed(crc)) ^ 0xffffffff + return (reflect ? crc : reversed(crc)) ^ 0xFFFF_FFFF + } + + /// Polynomial: 0x82F63B78 (Reversed) - Castagnoli + func crc32c(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { + var crc: UInt32 = seed != nil ? seed! : 0xFFFF_FFFF + for chunk in message.batched(by: 256) { + for b in chunk { + let idx = Int((crc ^ UInt32(reflect ? b : reversed(b))) & 0xFF) + crc = (crc >> 8) ^ Checksum.table32c[idx] + } + } + return (reflect ? crc : reversed(crc)) ^ 0xFFFF_FFFF } + /// Polynomial: 0xA001 (Reversed) - IBM func crc16(_ message: Array, seed: UInt16? = nil) -> UInt16 { var crc: UInt16 = seed != nil ? seed! : 0x0000 for chunk in message.batched(by: 256) { for b in chunk { - crc = (crc >> 8) ^ Checksum.table16[Int((crc ^ UInt16(b)) & 0xff)] + crc = (crc >> 8) ^ Checksum.table16[Int((crc ^ UInt16(b)) & 0xFF)] } } return crc @@ -110,7 +159,7 @@ public final class Checksum { // MARK: Public interface public extension Checksum { - /// Calculate CRC32 + /// Calculate CRC32. /// /// - parameter message: Message /// - parameter seed: Seed value (Optional) @@ -121,6 +170,17 @@ public extension Checksum { return Checksum().crc32(message, seed: seed, reflect: reflect) } + /// Calculate CRC32C + /// + /// - parameter message: Message + /// - parameter seed: Seed value (Optional) + /// - parameter reflect: is reflect (default true) + /// + /// - returns: Calculated code + static func crc32c(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { + return Checksum().crc32c(message, seed: seed, reflect: reflect) + } + /// Calculate CRC16 /// /// - parameter message: Message diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift index 50c77297..74cf92a9 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift @@ -1,6 +1,6 @@ //// CryptoSwift // -// Copyright (C) 2014-__YEAR__ Marcin Krzyżanowski +// Copyright (C) 2014-2018 Marcin Krzyżanowski // This software is provided 'as-is', without any express or implied warranty. // // In no event will the authors be held liable for any damages arising from the use of this software. diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift similarity index 85% rename from Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift rename to Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift index b665778b..f79f4b35 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift @@ -13,12 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -/// Random access cryptor -public protocol RandomAccessCryptor: Updatable { +/// Cryptor (Encryptor or Decryptor) +public protocol Cryptor { /// Seek to position in file, if block mode allows random access. /// /// - parameter to: new value of counter - /// - /// - returns: true if seek succeed - @discardableResult mutating func seek(to: Int) -> Bool + mutating func seek(to: Int) throws } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift index 74af6466..4baa53bd 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift @@ -13,22 +13,20 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif /// Worker cryptor/decryptor of `Updatable` types public protocol Cryptors: class { - associatedtype EncryptorType: Updatable - associatedtype DecryptorType: Updatable /// Cryptor suitable for encryption - func makeEncryptor() throws -> EncryptorType + func makeEncryptor() throws -> Cryptor & Updatable /// Cryptor suitable for decryption - func makeDecryptor() throws -> DecryptorType + func makeDecryptor() throws -> Cryptor & Updatable /// Generate array of random bytes. Helper function. static func randomIV(_ blockSize: Int) -> Array diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift index a80f8a73..c3976ead 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift @@ -13,7 +13,7 @@ // - This notice may not be removed or altered from any source or binary distribution. // -@available(*, deprecated: 0.6.0, renamed: "Digest") +@available(*, renamed: "Digest") public typealias Hash = Digest /// Hash functions to calculate Digest. diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift index 063ffcc3..ba797337 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift @@ -18,6 +18,6 @@ import Foundation extension AES { /// Initialize with CBC block mode. public convenience init(key: String, iv: String, padding: Padding = .pkcs7) throws { - try self.init(key: key.bytes, blockMode: .CBC(iv: iv.bytes), padding: padding) + try self.init(key: key.bytes, blockMode: CBC(iv: iv.bytes), padding: padding) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift index 46059d59..ffab35d4 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift @@ -16,11 +16,11 @@ import Foundation public extension Array where Element == UInt8 { - public func toBase64() -> String? { - return Data(bytes: self).base64EncodedString() + func toBase64() -> String? { + return Data( self).base64EncodedString() } - public init(base64: String) { + init(base64: String) { self.init() guard let decodedData = Data(base64Encoded: base64) else { diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift index 7f8cb73b..be065b92 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift @@ -18,6 +18,6 @@ import Foundation extension Blowfish { /// Initialize with CBC block mode. public convenience init(key: String, iv: String, padding: Padding = .pkcs7) throws { - try self.init(key: key.bytes, blockMode: .CBC(iv: iv.bytes), padding: padding) + try self.init(key: key.bytes, blockMode: CBC(iv: iv.bytes), padding: padding) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift index 47c3697b..5da7329a 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift @@ -20,7 +20,7 @@ extension Data { public func checksum() -> UInt16 { var s: UInt32 = 0 var bytesArray = bytes - for i in 0.. Data { - return Data(bytes: Digest.md5(bytes)) + return Data( Digest.md5(bytes)) } public func sha1() -> Data { - return Data(bytes: Digest.sha1(bytes)) + return Data( Digest.sha1(bytes)) } public func sha224() -> Data { - return Data(bytes: Digest.sha224(bytes)) + return Data( Digest.sha224(bytes)) } public func sha256() -> Data { - return Data(bytes: Digest.sha256(bytes)) + return Data( Digest.sha256(bytes)) } public func sha384() -> Data { - return Data(bytes: Digest.sha384(bytes)) + return Data( Digest.sha384(bytes)) } public func sha512() -> Data { - return Data(bytes: Digest.sha512(bytes)) + return Data( Digest.sha512(bytes)) } public func sha3(_ variant: SHA3.Variant) -> Data { - return Data(bytes: Digest.sha3(bytes, variant: variant)) + return Data( Digest.sha3(bytes, variant: variant)) } public func crc32(seed: UInt32? = nil, reflect: Bool = true) -> Data { - return Data(bytes: Checksum.crc32(bytes, seed: seed, reflect: reflect).bytes()) + return Data( Checksum.crc32(bytes, seed: seed, reflect: reflect).bytes()) + } + + public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> Data { + return Data( Checksum.crc32c(bytes, seed: seed, reflect: reflect).bytes()) } public func crc16(seed: UInt16? = nil) -> Data { - return Data(bytes: Checksum.crc16(bytes, seed: seed).bytes()) + return Data( Checksum.crc16(bytes, seed: seed).bytes()) } public func encrypt(cipher: Cipher) throws -> Data { - return Data(bytes: try cipher.encrypt(bytes.slice)) + return Data( try cipher.encrypt(bytes.slice)) } public func decrypt(cipher: Cipher) throws -> Data { - return Data(bytes: try cipher.decrypt(bytes.slice)) + return Data( try cipher.decrypt(bytes.slice)) } public func authenticate(with authenticator: Authenticator) throws -> Data { - return Data(bytes: try authenticator.authenticate(bytes)) + return Data( try authenticator.authenticate(bytes)) } } extension Data { public init(hex: String) { - self.init(bytes: Array(hex: hex)) + self.init(Array(hex: hex)) } public var bytes: Array { diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift index 26be3738..daa8bbff 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift @@ -16,10 +16,10 @@ // https://www.ietf.org/rfc/rfc5869.txt // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif /// A key derivation function. diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift index 16c3f1a7..c5bfe3d3 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift @@ -37,7 +37,7 @@ public final class HMAC: Authenticator { } } - func calculateHash(_ bytes: Array) -> Array? { + func calculateHash(_ bytes: Array) -> Array { switch self { case .sha1: return Digest.sha1(bytes) @@ -72,9 +72,8 @@ public final class HMAC: Authenticator { self.key = key if key.count > variant.blockSize() { - if let hash = variant.calculateHash(key) { - self.key = hash - } + let hash = variant.calculateHash(key) + self.key = hash } if key.count < variant.blockSize() { @@ -94,10 +93,8 @@ public final class HMAC: Authenticator { ipad[idx] = key[idx] ^ ipad[idx] } - guard let ipadAndMessageHash = variant.calculateHash(ipad + bytes), - let result = variant.calculateHash(opad + ipadAndMessageHash) else { - throw Error.authenticateError - } + let ipadAndMessageHash = variant.calculateHash(ipad + bytes) + let result = variant.calculateHash(opad + ipadAndMessageHash) // return Array(result[0..<10]) // 80 bits return result diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift index deb057d3..98b14762 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift @@ -14,10 +14,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif /* array of bits */ @@ -30,9 +30,9 @@ extension Int { extension FixedWidthInteger { @_transparent func bytes(totalBytes: Int = MemoryLayout.size) -> Array { - return arrayOfBytes(value: self, length: totalBytes) + return arrayOfBytes(value: self.littleEndian, length: totalBytes) // TODO: adjust bytes order - // var value = self + // var value = self.littleEndian // return withUnsafeBytes(of: &value, Array.init).reversed() } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift index 15d6f062..953b36eb 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift @@ -19,7 +19,7 @@ public extension PKCS5 { /// PBKDF1 is recommended only for compatibility with existing /// applications since the keys it produces may not be large enough for /// some applications. - public struct PBKDF1 { + struct PBKDF1 { public enum Error: Swift.Error { case invalidInput case derivedKeyTooLong @@ -37,7 +37,7 @@ public extension PKCS5 { } } - fileprivate func calculateHash(_ bytes: Array) -> Array? { + fileprivate func calculateHash(_ bytes: Array) -> Array { switch self { case .sha1: return Digest.sha1(bytes) @@ -67,9 +67,7 @@ public extension PKCS5 { throw Error.derivedKeyTooLong } - guard let t1 = variant.calculateHash(password + salt) else { - throw Error.invalidInput - } + let t1 = variant.calculateHash(password + salt) self.iterations = iterations self.variant = variant @@ -81,7 +79,7 @@ public extension PKCS5 { public func calculate() -> Array { var t = t1 for _ in 2...iterations { - t = variant.calculateHash(t)! + t = variant.calculateHash(t) } return Array(t[0.., salt: Array, iterations: Int = 4096 /* c */, keyLength: Int? = nil /* dkLen */, variant: HMAC.Variant = .sha256) throws { precondition(iterations > 0) let prf = HMAC(key: password, variant: variant) - guard iterations > 0 && !password.isEmpty && !salt.isEmpty else { + guard iterations > 0 && !salt.isEmpty else { throw Error.invalidInput } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift index 6abfd5b9..cd6fad2b 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift @@ -24,7 +24,7 @@ public enum Padding: PaddingProtocol { public func add(to: Array, blockSize: Int) -> Array { switch self { case .noPadding: - return NoPadding().add(to: to, blockSize: blockSize) + return to // NoPadding().add(to: to, blockSize: blockSize) case .zeroPadding: return ZeroPadding().add(to: to, blockSize: blockSize) case .pkcs7: @@ -37,7 +37,7 @@ public enum Padding: PaddingProtocol { public func remove(from: Array, blockSize: Int?) -> Array { switch self { case .noPadding: - return NoPadding().remove(from: from, blockSize: blockSize) + return from //NoPadding().remove(from: from, blockSize: blockSize) case .zeroPadding: return ZeroPadding().remove(from: from, blockSize: blockSize) case .pkcs7: diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift index b88bbbb8..be7bdcb7 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift @@ -13,10 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc -#else +#if canImport(Darwin) import Darwin +#else + import Glibc #endif struct RandomBytesSequence: Sequence { @@ -24,8 +24,8 @@ struct RandomBytesSequence: Sequence { func makeIterator() -> AnyIterator { var count = 0 - return AnyIterator.init({ () -> UInt8? in - if count >= self.size { + return AnyIterator.init { () -> UInt8? in + guard count < self.size else { return nil } count = count + 1 @@ -45,6 +45,6 @@ struct RandomBytesSequence: Sequence { #else return UInt8(arc4random_uniform(UInt32(UInt8.max) + 1)) #endif - }) + } } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift index 79e420b0..61f6bce3 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift @@ -133,11 +133,11 @@ extension SHA1: Updatable { var result = Array(repeating: 0, count: SHA1.digestLength) var pos = 0 for idx in 0..> 8) & 0xff) - result[pos + 2] = UInt8((h >> 16) & 0xff) - result[pos + 3] = UInt8((h >> 24) & 0xff) + let h = accumulatedHash[idx] + result[pos + 0] = UInt8((h >> 24) & 0xff) + result[pos + 1] = UInt8((h >> 16) & 0xff) + result[pos + 2] = UInt8((h >> 8) & 0xff) + result[pos + 3] = UInt8(h & 0xff) pos += 4 } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift index 89a3b073..2e9940d3 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift @@ -315,25 +315,25 @@ extension SHA2: Updatable { case .sha224, .sha256: var pos = 0 for idx in 0..> 8) & 0xff) - result[pos + 2] = UInt8((h >> 16) & 0xff) - result[pos + 3] = UInt8((h >> 24) & 0xff) + let h = accumulatedHash32[idx] + result[pos + 0] = UInt8((h >> 24) & 0xff) + result[pos + 1] = UInt8((h >> 16) & 0xff) + result[pos + 2] = UInt8((h >> 8) & 0xff) + result[pos + 3] = UInt8(h & 0xff) pos += 4 } case .sha384, .sha512: var pos = 0 for idx in 0..> 8) & 0xff) - result[pos + 2] = UInt8((h >> 16) & 0xff) - result[pos + 3] = UInt8((h >> 24) & 0xff) - result[pos + 4] = UInt8((h >> 32) & 0xff) - result[pos + 5] = UInt8((h >> 40) & 0xff) - result[pos + 6] = UInt8((h >> 48) & 0xff) - result[pos + 7] = UInt8((h >> 56) & 0xff) + let h = accumulatedHash64[idx] + result[pos + 0] = UInt8((h >> 56) & 0xff) + result[pos + 1] = UInt8((h >> 48) & 0xff) + result[pos + 2] = UInt8((h >> 40) & 0xff) + result[pos + 3] = UInt8((h >> 32) & 0xff) + result[pos + 4] = UInt8((h >> 24) & 0xff) + result[pos + 5] = UInt8((h >> 16) & 0xff) + result[pos + 6] = UInt8((h >> 8) & 0xff) + result[pos + 7] = UInt8(h & 0xff) pos += 8 } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift index a4324791..b22fb5a1 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift @@ -17,10 +17,10 @@ // http://keccak.noekeon.org/specs_summary.html // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif public final class SHA3: DigestType { diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift new file mode 100644 index 00000000..b55a085e --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift @@ -0,0 +1,256 @@ +// +// CryptoSwift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +// +// https://tools.ietf.org/html/rfc7914 +// + +/// Implementation of the scrypt key derivation function. +public final class Scrypt { + enum Error: Swift.Error { + case nIsTooLarge + case rIsTooLarge + case nMustBeAPowerOf2GreaterThan1 + case invalidInput + } + + /// Configuration parameters. + private let salt: SecureBytes + private let password: SecureBytes + fileprivate let blocksize: Int // 128 * r + fileprivate let salsaBlock = UnsafeMutableRawPointer.allocate(byteCount: 64, alignment: 64) + private let dkLen: Int + private let N: Int + private let r: Int + private let p: Int + + /// - parameters: + /// - password: password + /// - salt: salt + /// - dkLen: output length + /// - N: determines extra memory used + /// - r: determines a block size + /// - p: determines parallelicity degree + public init(password: Array, salt: Array, dkLen: Int, N: Int, r: Int, p: Int) throws { + precondition(dkLen > 0) + precondition(N > 0) + precondition(r > 0) + precondition(p > 0) + + guard !(N < 2 || (N & (N - 1)) != 0) else { throw Error.nMustBeAPowerOf2GreaterThan1 } + + guard N <= .max / 128 / r else { throw Error.nIsTooLarge } + guard r <= .max / 128 / p else { throw Error.rIsTooLarge } + + guard !salt.isEmpty else { + throw Error.invalidInput + } + + blocksize = 128 * r + self.N = N + self.r = r + self.p = p + self.password = SecureBytes.init(bytes: password) + self.salt = SecureBytes.init(bytes: salt) + self.dkLen = dkLen + } + + /// Runs the key derivation function with a specific password. + public func calculate() throws -> [UInt8] { + // Allocate memory (as bytes for now) for further use in mixing steps + let B = UnsafeMutableRawPointer.allocate(byteCount: 128 * r * p, alignment: 64) + let XY = UnsafeMutableRawPointer.allocate(byteCount: 256 * r + 64, alignment: 64) + let V = UnsafeMutableRawPointer.allocate(byteCount: 128 * r * N, alignment: 64) + + // Deallocate memory when done + defer { + B.deallocate() + XY.deallocate() + V.deallocate() + } + + /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */ + // Expand the initial key + let barray = try PKCS5.PBKDF2(password: Array(password), salt: Array(salt), iterations: 1, keyLength: p * 128 * r, variant: .sha256).calculate() + barray.withUnsafeBytes { p in + B.copyMemory(from: p.baseAddress!, byteCount: barray.count) + } + + /* 2: for i = 0 to p - 1 do */ + // do the mixing + for i in 0 ..< p { + /* 3: B_i <-- MF(B_i, N) */ + smix(B + i * 128 * r, V.assumingMemoryBound(to: UInt32.self), XY.assumingMemoryBound(to: UInt32.self)) + } + + /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */ + let pointer = B.assumingMemoryBound(to: UInt8.self) + let bufferPointer = UnsafeBufferPointer(start: pointer, count: p * 128 * r) + let block = [UInt8](bufferPointer) + return try PKCS5.PBKDF2(password: Array(password), salt: block, iterations: 1, keyLength: dkLen, variant: .sha256).calculate() + } +} + +private extension Scrypt { + /// Computes `B = SMix_r(B, N)`. + /// + /// The input `block` must be `128*r` bytes in length; the temporary storage `v` must be `128*r*n` bytes in length; + /// the temporary storage `xy` must be `256*r + 64` bytes in length. The arrays `block`, `v`, and `xy` must be + /// aligned to a multiple of 64 bytes. + @inline(__always) func smix(_ block: UnsafeMutableRawPointer, _ v: UnsafeMutablePointer, _ xy: UnsafeMutablePointer) { + let X = xy + let Y = xy + 32 * r + let Z = xy + 64 * r + + /* 1: X <-- B */ + let typedBlock = block.assumingMemoryBound(to: UInt32.self) + X.assign(from: typedBlock, count: 32 * r) + + /* 2: for i = 0 to N - 1 do */ + for i in stride(from: 0, to: N, by: 2) { + /* 3: V_i <-- X */ + UnsafeMutableRawPointer(v + i * (32 * r)).copyMemory(from: X, byteCount: 128 * r) + + /* 4: X <-- H(X) */ + blockMixSalsa8(X, Y, Z) + + /* 3: V_i <-- X */ + UnsafeMutableRawPointer(v + (i + 1) * (32 * r)).copyMemory(from: Y, byteCount: 128 * r) + + /* 4: X <-- H(X) */ + blockMixSalsa8(Y, X, Z) + } + + /* 6: for i = 0 to N - 1 do */ + for _ in stride(from: 0, to: N, by: 2) { + /* + 7: j <-- Integerify (X) mod N + where Integerify (B[0] ... B[2 * r - 1]) is defined + as the result of interpreting B[2 * r - 1] as a little-endian integer. + */ + var j = Int(integerify(X) & UInt64(N - 1)) + + /* 8: X <-- H(X \xor V_j) */ + blockXor(X, v + j * 32 * r, 128 * r) + blockMixSalsa8(X, Y, Z) + + /* 7: j <-- Integerify(X) mod N */ + j = Int(integerify(Y) & UInt64(N - 1)) + + /* 8: X <-- H(X \xor V_j) */ + blockXor(Y, v + j * 32 * r, 128 * r) + blockMixSalsa8(Y, X, Z) + } + + /* 10: B' <-- X */ + for k in 0 ..< 32 * r { + UnsafeMutableRawPointer(block + 4 * k).storeBytes(of: X[k], as: UInt32.self) + } + } + + /// Returns the result of parsing `B_{2r-1}` as a little-endian integer. + @inline(__always) func integerify(_ block: UnsafeRawPointer) -> UInt64 { + let bi = block + (2 * r - 1) * 64 + return bi.load(as: UInt64.self).littleEndian + } + + /// Compute `bout = BlockMix_{salsa20/8, r}(bin)`. + /// + /// The input `bin` must be `128*r` bytes in length; the output `bout` must also be the same size. The temporary + /// space `x` must be 64 bytes. + @inline(__always) func blockMixSalsa8(_ bin: UnsafePointer, _ bout: UnsafeMutablePointer, _ x: UnsafeMutablePointer) { + /* 1: X <-- B_{2r - 1} */ + UnsafeMutableRawPointer(x).copyMemory(from: bin + (2 * r - 1) * 16, byteCount: 64) + + /* 2: for i = 0 to 2r - 1 do */ + for i in stride(from: 0, to: 2 * r, by: 2) { + /* 3: X <-- H(X \xor B_i) */ + blockXor(x, bin + i * 16, 64) + salsa20_8_typed(x) + + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + UnsafeMutableRawPointer(bout + i * 8).copyMemory(from: x, byteCount: 64) + + /* 3: X <-- H(X \xor B_i) */ + blockXor(x, bin + i * 16 + 16, 64) + salsa20_8_typed(x) + + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + UnsafeMutableRawPointer(bout + i * 8 + r * 16).copyMemory(from: x, byteCount: 64) + } + } + + @inline(__always) func salsa20_8_typed(_ block: UnsafeMutablePointer) { + salsaBlock.copyMemory(from: UnsafeRawPointer(block), byteCount: 64) + let salsaBlockTyped = salsaBlock.assumingMemoryBound(to: UInt32.self) + + for _ in stride(from: 0, to: 8, by: 2) { + salsaBlockTyped[4] ^= rotateLeft(salsaBlockTyped[0] &+ salsaBlockTyped[12], by: 7) + salsaBlockTyped[8] ^= rotateLeft(salsaBlockTyped[4] &+ salsaBlockTyped[0], by: 9) + salsaBlockTyped[12] ^= rotateLeft(salsaBlockTyped[8] &+ salsaBlockTyped[4], by: 13) + salsaBlockTyped[0] ^= rotateLeft(salsaBlockTyped[12] &+ salsaBlockTyped[8], by: 18) + + salsaBlockTyped[9] ^= rotateLeft(salsaBlockTyped[5] &+ salsaBlockTyped[1], by: 7) + salsaBlockTyped[13] ^= rotateLeft(salsaBlockTyped[9] &+ salsaBlockTyped[5], by: 9) + salsaBlockTyped[1] ^= rotateLeft(salsaBlockTyped[13] &+ salsaBlockTyped[9], by: 13) + salsaBlockTyped[5] ^= rotateLeft(salsaBlockTyped[1] &+ salsaBlockTyped[13], by: 18) + + salsaBlockTyped[14] ^= rotateLeft(salsaBlockTyped[10] &+ salsaBlockTyped[6], by: 7) + salsaBlockTyped[2] ^= rotateLeft(salsaBlockTyped[14] &+ salsaBlockTyped[10], by: 9) + salsaBlockTyped[6] ^= rotateLeft(salsaBlockTyped[2] &+ salsaBlockTyped[14], by: 13) + salsaBlockTyped[10] ^= rotateLeft(salsaBlockTyped[6] &+ salsaBlockTyped[2], by: 18) + + salsaBlockTyped[3] ^= rotateLeft(salsaBlockTyped[15] &+ salsaBlockTyped[11], by: 7) + salsaBlockTyped[7] ^= rotateLeft(salsaBlockTyped[3] &+ salsaBlockTyped[15], by: 9) + salsaBlockTyped[11] ^= rotateLeft(salsaBlockTyped[7] &+ salsaBlockTyped[3], by: 13) + salsaBlockTyped[15] ^= rotateLeft(salsaBlockTyped[11] &+ salsaBlockTyped[7], by: 18) + + salsaBlockTyped[1] ^= rotateLeft(salsaBlockTyped[0] &+ salsaBlockTyped[3], by: 7) + salsaBlockTyped[2] ^= rotateLeft(salsaBlockTyped[1] &+ salsaBlockTyped[0], by: 9) + salsaBlockTyped[3] ^= rotateLeft(salsaBlockTyped[2] &+ salsaBlockTyped[1], by: 13) + salsaBlockTyped[0] ^= rotateLeft(salsaBlockTyped[3] &+ salsaBlockTyped[2], by: 18) + + salsaBlockTyped[6] ^= rotateLeft(salsaBlockTyped[5] &+ salsaBlockTyped[4], by: 7) + salsaBlockTyped[7] ^= rotateLeft(salsaBlockTyped[6] &+ salsaBlockTyped[5], by: 9) + salsaBlockTyped[4] ^= rotateLeft(salsaBlockTyped[7] &+ salsaBlockTyped[6], by: 13) + salsaBlockTyped[5] ^= rotateLeft(salsaBlockTyped[4] &+ salsaBlockTyped[7], by: 18) + + salsaBlockTyped[11] ^= rotateLeft(salsaBlockTyped[10] &+ salsaBlockTyped[9], by: 7) + salsaBlockTyped[8] ^= rotateLeft(salsaBlockTyped[11] &+ salsaBlockTyped[10], by: 9) + salsaBlockTyped[9] ^= rotateLeft(salsaBlockTyped[8] &+ salsaBlockTyped[11], by: 13) + salsaBlockTyped[10] ^= rotateLeft(salsaBlockTyped[9] &+ salsaBlockTyped[8], by: 18) + + salsaBlockTyped[12] ^= rotateLeft(salsaBlockTyped[15] &+ salsaBlockTyped[14], by: 7) + salsaBlockTyped[13] ^= rotateLeft(salsaBlockTyped[12] &+ salsaBlockTyped[15], by: 9) + salsaBlockTyped[14] ^= rotateLeft(salsaBlockTyped[13] &+ salsaBlockTyped[12], by: 13) + salsaBlockTyped[15] ^= rotateLeft(salsaBlockTyped[14] &+ salsaBlockTyped[13], by: 18) + } + for i in 0 ..< 16 { + block[i] = block[i] &+ salsaBlockTyped[i] + } + } + + @inline(__always) func blockXor(_ dest: UnsafeMutableRawPointer, _ src: UnsafeRawPointer, _ len: Int) { + let D = dest.assumingMemoryBound(to: UInt64.self) + let S = src.assumingMemoryBound(to: UInt64.self) + let L = len / MemoryLayout.size + + for i in 0 ..< L { + D[i] ^= S[i] + } + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift index c603854a..61e7f693 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift @@ -13,10 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif typealias Key = SecureBytes diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift new file mode 100644 index 00000000..81ab2705 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift @@ -0,0 +1,78 @@ +// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +final class StreamDecryptor: Cryptor, Updatable { + private let blockSize: Int + private var worker: CipherModeWorker + private let padding: Padding + private var accumulated = Array() + + private var lastBlockRemainder = 0 + + init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { + self.blockSize = blockSize + self.padding = padding + self.worker = worker + } + + // MARK: Updatable + public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { + accumulated += bytes + + let toProcess = accumulated.prefix(max(accumulated.count - worker.additionalBufferSize, 0)) + + if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { + // will truncate suffix if needed + try finalizingWorker.willDecryptLast(bytes: accumulated.slice) + } + + var processedBytesCount = 0 + var plaintext = Array(reserveCapacity: bytes.count + worker.additionalBufferSize) + for chunk in toProcess.batched(by: blockSize) { + plaintext += worker.decrypt(block: chunk) + processedBytesCount += chunk.count + } + + if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { + plaintext = Array(try finalizingWorker.didDecryptLast(bytes: plaintext.slice)) + } + + // omit unecessary calculation if not needed + if padding != .noPadding { + lastBlockRemainder = plaintext.count.quotientAndRemainder(dividingBy: blockSize).remainder + } + + if isLast { + // CTR doesn't need padding. Really. Add padding to the last block if really want. but... don't. + plaintext = padding.remove(from: plaintext, blockSize: blockSize - lastBlockRemainder) + } + + accumulated.removeFirst(processedBytesCount) // super-slow + + if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { + plaintext = Array(try finalizingWorker.finalize(decrypt: plaintext.slice)) + } + + return plaintext + } + + public func seek(to position: Int) throws { + guard var worker = self.worker as? SeekableModeWorker else { + fatalError("Not supported") + } + + try worker.seek(to: position) + self.worker = worker + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift new file mode 100644 index 00000000..7cd54e3f --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift @@ -0,0 +1,56 @@ +// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +final class StreamEncryptor: Cryptor, Updatable { + private let blockSize: Int + private var worker: CipherModeWorker + private let padding: Padding + + private var lastBlockRemainder = 0 + + init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { + self.blockSize = blockSize + self.padding = padding + self.worker = worker + } + + // MARK: Updatable + public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { + var accumulated = Array(bytes) + if isLast { + // CTR doesn't need padding. Really. Add padding to the last block if really want. but... don't. + accumulated = padding.add(to: accumulated, blockSize: blockSize - lastBlockRemainder) + } + + var encrypted = Array(reserveCapacity: bytes.count) + for chunk in accumulated.batched(by: blockSize) { + encrypted += worker.encrypt(block: chunk) + } + + // omit unecessary calculation if not needed + if padding != .noPadding { + lastBlockRemainder = encrypted.count.quotientAndRemainder(dividingBy: blockSize).remainder + } + + if var finalizingWorker = worker as? FinalizingEncryptModeWorker, isLast == true { + encrypted = Array(try finalizingWorker.finalize(encrypt: encrypted.slice)) + } + + return encrypted + } + + func seek(to: Int) throws { + fatalError("Not supported") + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift index 2de7def4..b186e341 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift @@ -51,6 +51,10 @@ extension String { return bytes.crc32(seed: seed, reflect: reflect).bytes().toHexString() } + public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> String { + return bytes.crc32(seed: seed, reflect: reflect).bytes().toHexString() + } + public func crc16(seed: UInt16? = nil) -> String { return bytes.crc16(seed: seed).bytes().toHexString() } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift new file mode 100644 index 00000000..20157902 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift @@ -0,0 +1,90 @@ +// +// UInt128.swift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +import Foundation + +struct UInt128: Equatable, ExpressibleByIntegerLiteral { + let i: (a: UInt64, b: UInt64) + + typealias IntegerLiteralType = UInt64 + + init(integerLiteral value: IntegerLiteralType) { + self = UInt128(value) + } + + init(_ raw: Array) { + self = raw.prefix(MemoryLayout.stride).withUnsafeBytes({ (rawBufferPointer) -> UInt128 in + let arr = rawBufferPointer.bindMemory(to: UInt64.self) + return UInt128((arr[0].bigEndian, arr[1].bigEndian)) + }) + } + + init(_ raw: ArraySlice) { + self.init(Array(raw)) + } + + init(_ i: (a: UInt64, b: UInt64)) { + self.i = i + } + + init(a: UInt64, b: UInt64) { + self.init((a, b)) + } + + init(_ b: UInt64) { + self.init((0, b)) + } + + // Bytes + var bytes: Array { + var at = i.a.bigEndian + var bt = i.b.bigEndian + + let ar = Data(bytes: &at, count: MemoryLayout.size(ofValue: at)) + let br = Data(bytes: &bt, count: MemoryLayout.size(ofValue: bt)) + + var result = Data() + result.append(ar) + result.append(br) + return result.bytes + } + + static func ^(n1: UInt128, n2: UInt128) -> UInt128 { + return UInt128((n1.i.a ^ n2.i.a, n1.i.b ^ n2.i.b)) + } + + static func &(n1: UInt128, n2: UInt128) -> UInt128 { + return UInt128((n1.i.a & n2.i.a, n1.i.b & n2.i.b)) + } + + static func >>(value: UInt128, by: Int) -> UInt128 { + var result = value + for _ in 0..> 1 + let b = result.i.b >> 1 + ((result.i.a & 1) << 63) + result = UInt128((a, b)) + } + return result + } + + // Equatable. + static func ==(lhs: UInt128, rhs: UInt128) -> Bool { + return lhs.i == rhs.i + } + + static func !=(lhs: UInt128, rhs: UInt128) -> Bool { + return !(lhs == rhs) + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift index fdd2f734..0901148e 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift @@ -13,10 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif protocol _UInt32Type {} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift index 6c8d2c6e..44a77d93 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift @@ -30,13 +30,13 @@ extension UInt64 { let count = bytes.count let val0 = count > 0 ? UInt64(bytes[index.advanced(by: 0)]) << 56 : 0 - let val1 = count > 0 ? UInt64(bytes[index.advanced(by: 1)]) << 48 : 0 - let val2 = count > 0 ? UInt64(bytes[index.advanced(by: 2)]) << 40 : 0 - let val3 = count > 0 ? UInt64(bytes[index.advanced(by: 3)]) << 32 : 0 - let val4 = count > 0 ? UInt64(bytes[index.advanced(by: 4)]) << 24 : 0 - let val5 = count > 0 ? UInt64(bytes[index.advanced(by: 5)]) << 16 : 0 - let val6 = count > 0 ? UInt64(bytes[index.advanced(by: 6)]) << 8 : 0 - let val7 = count > 0 ? UInt64(bytes[index.advanced(by: 7)]) : 0 + let val1 = count > 1 ? UInt64(bytes[index.advanced(by: 1)]) << 48 : 0 + let val2 = count > 2 ? UInt64(bytes[index.advanced(by: 2)]) << 40 : 0 + let val3 = count > 3 ? UInt64(bytes[index.advanced(by: 3)]) << 32 : 0 + let val4 = count > 4 ? UInt64(bytes[index.advanced(by: 4)]) << 24 : 0 + let val5 = count > 5 ? UInt64(bytes[index.advanced(by: 5)]) << 16 : 0 + let val6 = count > 6 ? UInt64(bytes[index.advanced(by: 6)]) << 8 : 0 + let val7 = count > 7 ? UInt64(bytes[index.advanced(by: 7)]) : 0 self = val0 | val1 | val2 | val3 | val4 | val5 | val6 | val7 } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift index 64e06ffb..481d57fd 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift @@ -13,10 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif public protocol _UInt8Type {} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift index be29149a..23f16545 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift @@ -20,7 +20,7 @@ public protocol Updatable { /// /// - parameter bytes: Bytes to process. /// - parameter isLast: Indicate if given chunk is the last one. No more updates after this call. - /// - returns: Processed data or empty array. + /// - returns: Processed partial result data or empty array. mutating func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array /// Update given bytes in chunks. @@ -29,19 +29,8 @@ public protocol Updatable { /// - bytes: Bytes to process. /// - isLast: Indicate if given chunk is the last one. No more updates after this call. /// - output: Resulting bytes callback. - /// - Returns: Processed data or empty array. + /// - Returns: Processed partial result data or empty array. mutating func update(withBytes bytes: ArraySlice, isLast: Bool, output: (_ bytes: Array) -> Void) throws - - /// Finish updates. This may apply padding. - /// - parameter bytes: Bytes to process - /// - returns: Processed data. - mutating func finish(withBytes bytes: ArraySlice) throws -> Array - - /// Finish updates. This may apply padding. - /// - parameter bytes: Bytes to process - /// - parameter output: Resulting data - /// - returns: Processed data. - mutating func finish(withBytes bytes: ArraySlice, output: (_ bytes: Array) -> Void) throws } extension Updatable { @@ -52,16 +41,42 @@ extension Updatable { } } - @discardableResult + public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { + return try update(withBytes: bytes, isLast: isLast) + } + + public mutating func update(withBytes bytes: Array, isLast: Bool = false) throws -> Array { + return try update(withBytes: bytes.slice, isLast: isLast) + } + + public mutating func update(withBytes bytes: Array, isLast: Bool = false, output: (_ bytes: Array) -> Void) throws { + return try update(withBytes: bytes.slice, isLast: isLast, output: output) + } + + /// Finish updates. This may apply padding. + /// - parameter bytes: Bytes to process + /// - returns: Processed data. public mutating func finish(withBytes bytes: ArraySlice) throws -> Array { return try update(withBytes: bytes, isLast: true) } - @discardableResult + public mutating func finish(withBytes bytes: Array) throws -> Array { + return try finish(withBytes: bytes.slice) + } + + + /// Finish updates. May add padding. + /// + /// - Returns: Processed data + /// - Throws: Error public mutating func finish() throws -> Array { return try update(withBytes: [], isLast: true) } + /// Finish updates. This may apply padding. + /// - parameter bytes: Bytes to process + /// - parameter output: Resulting data + /// - returns: Processed data. public mutating func finish(withBytes bytes: ArraySlice, output: (_ bytes: Array) -> Void) throws { let processed = try update(withBytes: bytes, isLast: true) if !processed.isEmpty { @@ -69,27 +84,15 @@ extension Updatable { } } - public mutating func finish(output: (Array) -> Void) throws { - try finish(withBytes: [], output: output) - } -} - -extension Updatable { - @discardableResult - public mutating func update(withBytes bytes: Array, isLast: Bool = false) throws -> Array { - return try update(withBytes: bytes.slice, isLast: isLast) - } - - public mutating func update(withBytes bytes: Array, isLast: Bool = false, output: (_ bytes: Array) -> Void) throws { - return try update(withBytes: bytes.slice, isLast: isLast, output: output) - } - - @discardableResult - public mutating func finish(withBytes bytes: Array) throws -> Array { - return try finish(withBytes: bytes.slice) - } - public mutating func finish(withBytes bytes: Array, output: (_ bytes: Array) -> Void) throws { return try finish(withBytes: bytes.slice, output: output) } + + /// Finish updates. May add padding. + /// + /// - Parameter output: Processed data + /// - Throws: Error + public mutating func finish(output: (Array) -> Void) throws { + try finish(withBytes: [], output: output) + } } diff --git a/Example/Pods/Local Podspecs/Web3.podspec.json b/Example/Pods/Local Podspecs/Web3.podspec.json index 8d4aeaf2..f5582c16 100644 --- a/Example/Pods/Local Podspecs/Web3.podspec.json +++ b/Example/Pods/Local Podspecs/Web3.podspec.json @@ -1,6 +1,6 @@ { "name": "Web3", - "version": "0.3.0", + "version": "0.3.1", "summary": "Web3 library for Swift. Sign transactions and interact with Smart Contracts in the Ethereum Network.", "description": "Web3 library to sign transactions, interact with Smart Contracts, call\nSmart Contract methods and many things more, all through either a\nHTTP RPC interface provided by this library or a custom RPC interface\n(for example IPC,...).", "homepage": "https://github.com/Boilertalk/Web3.swift", @@ -13,7 +13,7 @@ }, "source": { "git": "https://github.com/Boilertalk/Web3.swift.git", - "tag": "0.3.0" + "tag": "0.3.1" }, "platforms": { "ios": "8.0", @@ -34,10 +34,10 @@ "source_files": "Web3/Classes/Core/**/*", "dependencies": { "BigInt": [ - "~> 3.1" + "~> 4.0" ], "CryptoSwift": [ - "~> 0.8" + "~> 1.0" ], "secp256k1.swift": [ "~> 0.1" diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 12a5eb1c..f3224c0c 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,30 +1,28 @@ PODS: - - BigInt (3.1.0): - - SipHash (~> 1.2) - - CryptoSwift (0.9.0) - - Nimble (7.0.3) - - PromiseKit/CorePromise (6.2.4) - - Quick (1.2.0) + - BigInt (4.0.0) + - CryptoSwift (1.0.0) + - Nimble (8.0.2) + - PromiseKit/CorePromise (6.10.0) + - Quick (2.1.0) - secp256k1.swift (0.1.4) - - SipHash (1.2.2) - - Web3 (0.3.0): - - Web3/Core (= 0.3.0) - - Web3/HTTPExtension (= 0.3.0) - - Web3/ContractABI (0.3.0): + - Web3 (0.3.1): + - Web3/Core (= 0.3.1) + - Web3/HTTPExtension (= 0.3.1) + - Web3/ContractABI (0.3.1): - Web3/Core - - Web3/Core (0.3.0): - - BigInt (~> 3.1) - - CryptoSwift (~> 0.8) + - Web3/Core (0.3.1): + - BigInt (~> 4.0) + - CryptoSwift (~> 1.0) - secp256k1.swift (~> 0.1) - - Web3/HTTPExtension (0.3.0): + - Web3/HTTPExtension (0.3.1): - Web3/Core - - Web3/PromiseKit (0.3.0): + - Web3/PromiseKit (0.3.1): - PromiseKit/CorePromise (~> 6.0) - Web3/Core DEPENDENCIES: - - Nimble (~> 7.0.2) - - Quick (~> 1.2.0) + - Nimble (~> 8.0.2) + - Quick (~> 2.1.0) - Web3 (from `../`) - Web3/ContractABI (from `../`) - Web3/PromiseKit (from `../`) @@ -37,22 +35,20 @@ SPEC REPOS: - PromiseKit - Quick - secp256k1.swift - - SipHash EXTERNAL SOURCES: Web3: :path: "../" SPEC CHECKSUMS: - BigInt: 76b5dfdfa3e2e478d4ffdf161aeede5502e2742f - CryptoSwift: bca8c5b653dcc2d9734409242a070ff53bafac86 - Nimble: 7f5a9c447a33002645a071bddafbfb24ea70e0ac - PromiseKit: 625b1fc69944fc839503748101c5968cf54b527b - Quick: 58d203b1c5e27fff7229c4c1ae445ad7069a7a08 + BigInt: 2aad1a9942dc932ec8b84290d2c564a3d76f97ab + CryptoSwift: d81eeaa59dc5a8d03720fe919a6fd07b51f7439f + Nimble: 622629381bda1dd5678162f21f1368cec7cbba60 + PromiseKit: 1fdaeb6c0a94a5114fcb814ff3d772b86886ad4e + Quick: 4be43f6634acfa727dd106bdf3929ce125ffa79d secp256k1.swift: a7e7a214f6db6ce5db32cc6b2b45e5c4dd633634 - SipHash: fad90a4683e420c52ef28063063dbbce248ea6d4 - Web3: cbfa8062fe4dffd88249a1dbf51c845937f0dff3 + Web3: dbfb28278f2c87c8de8e7b87a2e24fd038db0926 -PODFILE CHECKSUM: 50a96c0fbb540a167dac95d16fafaeb3da752eca +PODFILE CHECKSUM: eb77564a1c4f7b215467898368b05a3e1fde7eb9 -COCOAPODS: 1.5.3 +COCOAPODS: 1.6.1 diff --git a/Example/Pods/Nimble/Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift b/Example/Pods/Nimble/Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift index b1b7aad5..3e89e23b 100644 --- a/Example/Pods/Nimble/Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift +++ b/Example/Pods/Nimble/Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift @@ -25,13 +25,11 @@ import CwlCatchExceptionSupport #endif private func catchReturnTypeConverter(_ type: T.Type, block: () -> Void) -> T? { - // Get the type from an *instance*, instead of a receiving the type directly return catchExceptionOfKind(type, block) as? T } extension NSException { public static func catchException(in block: () -> Void) -> Self? { - // Use a dummy instance of Self to provide the type return catchReturnTypeConverter(self, block: block) } } diff --git a/Example/Pods/Nimble/Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift b/Example/Pods/Nimble/Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift index ca0568c0..f96ec635 100644 --- a/Example/Pods/Nimble/Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift +++ b/Example/Pods/Nimble/Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift @@ -97,8 +97,9 @@ import Foundation // Request the next mach message from the port request.Head.msgh_local_port = context.currentExceptionPort request.Head.msgh_size = UInt32(MemoryLayout.size) + let requestSize = request.Head.msgh_size try kernCheck { request.withMsgHeaderPointer { requestPtr in - mach_msg(requestPtr, MACH_RCV_MSG | MACH_RCV_INTERRUPT, 0, request.Head.msgh_size, context.currentExceptionPort, 0, UInt32(MACH_PORT_NULL)) + mach_msg(requestPtr, MACH_RCV_MSG | MACH_RCV_INTERRUPT, 0, requestSize, context.currentExceptionPort, 0, UInt32(MACH_PORT_NULL)) } } // Prepare the reply structure @@ -121,8 +122,9 @@ import Foundation } // Send the reply + let replySize = reply.Head.msgh_size try kernCheck { reply.withMsgHeaderPointer { replyPtr in - mach_msg(replyPtr, MACH_SEND_MSG, reply.Head.msgh_size, 0, UInt32(MACH_PORT_NULL), 0, UInt32(MACH_PORT_NULL)) + mach_msg(replyPtr, MACH_SEND_MSG, replySize, 0, UInt32(MACH_PORT_NULL), 0, UInt32(MACH_PORT_NULL)) } } } catch let error as NSError where (error.domain == NSMachErrorDomain && (error.code == Int(MACH_RCV_PORT_CHANGED) || error.code == Int(MACH_RCV_INVALID_NAME))) { // Port was already closed before we started or closed while we were listening. diff --git a/Example/Pods/Nimble/Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h b/Example/Pods/Nimble/Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h index f9dbedda..7c50da11 100644 --- a/Example/Pods/Nimble/Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h +++ b/Example/Pods/Nimble/Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h @@ -20,6 +20,8 @@ #import +extern bool _swift_reportFatalErrorsToDebugger; + //! Project version number for CwlUtils. FOUNDATION_EXPORT double CwlPreconditionTestingVersionNumber; diff --git a/Example/Pods/Nimble/README.md b/Example/Pods/Nimble/README.md index a190ac63..4f7f89bc 100644 --- a/Example/Pods/Nimble/README.md +++ b/Example/Pods/Nimble/README.md @@ -3,7 +3,9 @@ [![Build Status](https://travis-ci.org/Quick/Nimble.svg?branch=master)](https://travis-ci.org/Quick/Nimble) [![CocoaPods](https://img.shields.io/cocoapods/v/Nimble.svg)](https://cocoapods.org/pods/Nimble) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![Accio supported](https://img.shields.io/badge/Accio-supported-0A7CF5.svg?style=flat)](https://github.com/JamitLabs/Accio) [![Platforms](https://img.shields.io/cocoapods/p/Nimble.svg)](https://cocoapods.org/pods/Nimble) +[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com) Use Nimble to express the expected outcomes of Swift or Objective-C expressions. Inspired by @@ -69,6 +71,7 @@ expect(ocean.isClean).toEventually(beTruthy()) - [Installing Nimble](#installing-nimble) - [Installing Nimble as a Submodule](#installing-nimble-as-a-submodule) - [Installing Nimble via CocoaPods](#installing-nimble-via-cocoapods) + - [Installing Nimble via Accio](#installing-nimble-via-accio) - [Using Nimble without XCTest](#using-nimble-without-xctest) @@ -226,9 +229,9 @@ exception once evaluated: // that Nimble will catch. // (see https://github.com/Quick/Nimble/issues/220#issuecomment-172667064) let exception = NSException( - name: NSInternalInconsistencyException, - reason: "Not enough fish in the sea.", - userInfo: ["something": "is fishy"]) + name: NSInternalInconsistencyException, + reason: "Not enough fish in the sea.", + userInfo: ["something": "is fishy"]) expect { exception.raise() }.to(raiseException()) // Also, you can customize raiseException to be more specific @@ -306,8 +309,7 @@ In Nimble, it's easy to make expectations on values that are updated asynchronously. Just use `toEventually` or `toEventuallyNot`: ```swift -// Swift 3.0 and later - +// Swift DispatchQueue.main.async { ocean.add("dolphins") ocean.add("whales") @@ -316,17 +318,6 @@ expect(ocean).toEventually(contain("dolphins", "whales")) ``` -```swift -// Swift 2.3 and earlier - -dispatch_async(dispatch_get_main_queue()) { - ocean.add("dolphins") - ocean.add("whales") -} -expect(ocean).toEventually(contain("dolphins", "whales")) -``` - - ```objc // Objective-C @@ -714,7 +705,7 @@ expect(actual) ≈ expected expect(actual) ≈ (expected, delta) ``` -(Type Option-x to get ≈ on a U.S. keyboard) +(Type option+x to get `≈` on a U.S. keyboard) The former version uses the default delta of 0.0001. Here is yet another way to do this: @@ -725,7 +716,7 @@ expect(actual) ≈ expected ± delta expect(actual) == expected ± delta ``` -(Type Option-Shift-= to get ± on a U.S. keyboard) +(Type option+shift+= to get `±` on a U.S. keyboard) If you are comparing arrays of floating point numbers, you'll find the following useful: @@ -857,11 +848,7 @@ Notes: ## Swift Error Handling -If you're using Swift 2.0 or newer, you can use the `throwError` matcher to check if an error is thrown. - -Note: -The following code sample references the `Swift.Error` protocol. -This is `Swift.ErrorProtocol` in versions of Swift prior to version 3.0. +You can use the `throwError` matcher to check if an error is thrown. ```swift // Swift @@ -1043,10 +1030,10 @@ let turtles: [Turtle] = functionThatReturnsSomeTurtlesInAnyOrder() // [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]: expect(turtles).to(containElementSatisfying({ turtle in - return turtle.color == "green" + return turtle.color == "green" })) expect(turtles).to(containElementSatisfying({ turtle in - return turtle.color == "blue" + return turtle.color == "blue" }, "that is a turtle with color 'blue'")) // The second matcher will incorporate the provided string in the error message @@ -1069,10 +1056,10 @@ NSArray * __nonnull turtles = functionThatReturnsSomeTurtlesInAnyOrder // [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]: expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) { - return [[turtle color] isEqualToString:@"green"]; + return [[turtle color] isEqualToString:@"green"]; })); expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) { - return [[turtle color] isEqualToString:@"blue"]; + return [[turtle color] isEqualToString:@"blue"]; })); ``` @@ -1273,24 +1260,24 @@ value and return a `Predicate` closure. Take `equal`, for example: // Swift public func equal(expectedValue: T?) -> Predicate { - // Can be shortened to: - // Predicate { actual in ... } - // - // But shown with types here for clarity. - return Predicate { (actual: Expression) throws -> PredicateResult in - let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>") - if let actualValue = try actualExpression.evaluate() { - return PredicateResult( - bool: actualValue == expectedValue!, - message: msg - ) - } else { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) + // Can be shortened to: + // Predicate { actual in ... } + // + // But shown with types here for clarity. + return Predicate { (actualExpression: Expression) throws -> PredicateResult in + let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>") + if let actualValue = try actualExpression.evaluate() { + return PredicateResult( + bool: actualValue == expectedValue!, + message: msg + ) + } else { + return PredicateResult( + status: .fail, + message: msg.appendedBeNilHint() + ) + } } - } } ``` @@ -1382,11 +1369,11 @@ custom matchers should call `actualExpression.evaluate()`: // Swift public func beNil() -> Predicate { - // Predicate.simpleNilable(..) automatically generates ExpectationMessage for - // us based on the string we provide to it. Also, the 'Nilable' postfix indicates - // that this Predicate supports matching against nil actualExpressions, instead of - // always resulting in a PredicateStatus.fail result -- which is true for - // Predicate.simple(..) + // Predicate.simpleNilable(..) automatically generates ExpectationMessage for + // us based on the string we provide to it. Also, the 'Nilable' postfix indicates + // that this Predicate supports matching against nil actualExpressions, instead of + // always resulting in a PredicateStatus.fail result -- which is true for + // Predicate.simple(..) return Predicate.simpleNilable("be nil") { actualExpression in let actualValue = try actualExpression.evaluate() return PredicateStatus(bool: actualValue == nil) @@ -1412,9 +1399,9 @@ against the one provided to the matcher function, and passes if they are the sam // Swift public func haveDescription(description: String) -> Predicate { - return Predicate.simple("have description") { actual in - return PredicateStatus(bool: actual.evaluate().description == description) - } + return Predicate.simple("have description") { actual in + return PredicateStatus(bool: actual.evaluate().description == description) + } } ``` @@ -1489,7 +1476,7 @@ case expectedCustomValueTo(/* message: */ String, /* actual: */ String) // Emits standard error message without mentioning the actual value // eg - "expected to " -case expectedTo(/* message: */ String, /* actual: */ String) +case expectedTo(/* message: */ String) // ... } @@ -1526,13 +1513,13 @@ custom matcher. The example below defines the class method // Swift extension NMBObjCMatcher { - public class func beNilMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualBlock, failureMessage, location in - let block = ({ actualBlock() as NSObject? }) - let expr = Expression(expression: block, location: location) - return beNil().matches(expr, failureMessage: failureMessage) + public class func beNilMatcher() -> NMBObjCMatcher { + return NMBObjCMatcher { actualBlock, failureMessage, location in + let block = ({ actualBlock() as NSObject? }) + let expr = Expression(expression: block, location: location) + return beNil().matches(expr, failureMessage: failureMessage) + } } - } } ``` @@ -1551,7 +1538,7 @@ class method: // Objective-C FOUNDATION_EXPORT id beNil() { - return [NMBObjCMatcher beNilMatcher]; + return [NMBObjCMatcher beNilMatcher]; } ``` @@ -1673,11 +1660,11 @@ backported. The deprecating plan is a 3 major versions removal. Which is as follows: 1. Introduce new `Predicate` API, deprecation warning for old matcher APIs. - (Nimble `v7.x.x`) + (Nimble `v7.x.x` and `v8.x.x`) 2. Introduce warnings on migration-path features (`.predicate`, `Predicate`-constructors with similar arguments to old API). (Nimble - `v8.x.x`) - 3. Remove old API. (Nimble `v9.x.x`) + `v9.x.x`) + 3. Remove old API. (Nimble `v10.x.x`) # Installing Nimble @@ -1726,6 +1713,27 @@ end Finally run `pod install`. +## Installing Nimble via Accio + +Add the following to your Package.swift: + +```swift +.package(url: "https://github.com/Quick/Nimble.git", .upToNextMajor(from: "8.0.1")), +``` + +Next, add `Nimble` to your App targets dependencies like so: + +```swift +.testTarget( + name: "AppTests", + dependencies: [ + "Nimble", + ] +), +``` + +Then run `accio update`. + ## Using Nimble without XCTest Nimble is integrated with XCTest to allow it work well when used in Xcode test diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift index 2e58fdf9..abaf5328 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift @@ -13,5 +13,6 @@ public protocol AssertionHandler { /// /// @see AssertionHandler public var NimbleAssertionHandler: AssertionHandler = { () -> AssertionHandler in + // swiftlint:disable:previous identifier_name return isXCTestAvailable() ? NimbleXCTestHandler() : NimbleXCTestUnavailableHandler() }() diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift index 740c3923..0f5df599 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift @@ -37,21 +37,48 @@ public class AssertionRecorder: AssertionHandler { } } +extension NMBExceptionCapture { + internal func tryBlockThrows(_ unsafeBlock: () throws -> Void) throws { + var catchedError: Error? + tryBlock { + do { + try unsafeBlock() + } catch { + catchedError = error + } + } + if let error = catchedError { + throw error + } + } +} + /// Allows you to temporarily replace the current Nimble assertion handler with /// the one provided for the scope of the closure. /// /// Once the closure finishes, then the original Nimble assertion handler is restored. /// /// @see AssertionHandler -public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler, closure: () throws -> Void) { +public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler, + file: FileString = #file, + line: UInt = #line, + closure: () throws -> Void) { let environment = NimbleEnvironment.activeInstance let oldRecorder = environment.assertionHandler let capturer = NMBExceptionCapture(handler: nil, finally: ({ environment.assertionHandler = oldRecorder })) environment.assertionHandler = tempAssertionHandler - capturer.tryBlock { - try! closure() + + do { + try capturer.tryBlockThrows { + try closure() + } + } catch { + let failureMessage = FailureMessage() + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + let location = SourceLocation(file: file, line: line) + tempAssertionHandler.assert(false, message: failureMessage, location: location) } } @@ -65,7 +92,7 @@ public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler, closu /// assertion handler when this is true. Defaults to false. /// /// @see gatherFailingExpectations -public func gatherExpectations(silently: Bool = false, closure: @escaping () -> Void) -> [AssertionRecord] { +public func gatherExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord] { let previousRecorder = NimbleEnvironment.activeInstance.assertionHandler let recorder = AssertionRecorder() let handlers: [AssertionHandler] @@ -92,7 +119,7 @@ public func gatherExpectations(silently: Bool = false, closure: @escaping () -> /// /// @see gatherExpectations /// @see raiseException source for an example use case. -public func gatherFailingExpectations(silently: Bool = false, closure: @escaping () -> Void) -> [AssertionRecord] { +public func gatherFailingExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord] { let assertions = gatherExpectations(silently: silently, closure: closure) return assertions.filter { assertion in !assertion.success diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift index 88d94062..5338a465 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift @@ -1,10 +1,10 @@ import Foundation -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE private func from(objcPredicate: NMBPredicate) -> Predicate { return Predicate { actualExpression in - let result = objcPredicate.satisfies(({ try! actualExpression.evaluate() }), + let result = objcPredicate.satisfies(({ try actualExpression.evaluate() }), location: actualExpression.location) return result.toSwift() } @@ -15,6 +15,7 @@ internal struct ObjCMatcherWrapper: Matcher { func matches(_ actualExpression: Expression, failureMessage: FailureMessage) -> Bool { return matcher.matches( + // swiftlint:disable:next force_try ({ try! actualExpression.evaluate() }), failureMessage: failureMessage, location: actualExpression.location) @@ -22,6 +23,7 @@ internal struct ObjCMatcherWrapper: Matcher { func doesNotMatch(_ actualExpression: Expression, failureMessage: FailureMessage) -> Bool { return matcher.doesNotMatch( + // swiftlint:disable:next force_try ({ try! actualExpression.evaluate() }), failureMessage: failureMessage, location: actualExpression.location) @@ -30,13 +32,15 @@ internal struct ObjCMatcherWrapper: Matcher { // Equivalent to Expectation, but for Nimble's Objective-C interface public class NMBExpectation: NSObject { - internal let _actualBlock: () -> NSObject! + // swiftlint:disable identifier_name + internal let _actualBlock: () -> NSObject? internal var _negative: Bool internal let _file: FileString internal let _line: UInt internal var _timeout: TimeInterval = 1.0 + // swiftlint:enable identifier_name - @objc public init(actualBlock: @escaping () -> NSObject!, negative: Bool, file: FileString, line: UInt) { + @objc public init(actualBlock: @escaping () -> NSObject?, negative: Bool, file: FileString, line: UInt) { self._actualBlock = actualBlock self._negative = negative self._file = file @@ -50,49 +54,49 @@ public class NMBExpectation: NSObject { } @objc public var withTimeout: (TimeInterval) -> NMBExpectation { - return ({ timeout in self._timeout = timeout + return { timeout in self._timeout = timeout return self - }) + } } @objc public var to: (NMBMatcher) -> Void { - return ({ matcher in + return { matcher in if let pred = matcher as? NMBPredicate { self.expectValue.to(from(objcPredicate: pred)) } else { self.expectValue.to(ObjCMatcherWrapper(matcher: matcher)) } - }) + } } @objc public var toWithDescription: (NMBMatcher, String) -> Void { - return ({ matcher, description in + return { matcher, description in if let pred = matcher as? NMBPredicate { self.expectValue.to(from(objcPredicate: pred), description: description) } else { self.expectValue.to(ObjCMatcherWrapper(matcher: matcher), description: description) } - }) + } } @objc public var toNot: (NMBMatcher) -> Void { - return ({ matcher in + return { matcher in if let pred = matcher as? NMBPredicate { self.expectValue.toNot(from(objcPredicate: pred)) } else { self.expectValue.toNot(ObjCMatcherWrapper(matcher: matcher)) } - }) + } } @objc public var toNotWithDescription: (NMBMatcher, String) -> Void { - return ({ matcher, description in + return { matcher, description in if let pred = matcher as? NMBPredicate { self.expectValue.toNot(from(objcPredicate: pred), description: description) } else { self.expectValue.toNot(ObjCMatcherWrapper(matcher: matcher), description: description) } - }) + } } @objc public var notTo: (NMBMatcher) -> Void { return toNot } @@ -100,7 +104,7 @@ public class NMBExpectation: NSObject { @objc public var notToWithDescription: (NMBMatcher, String) -> Void { return toNotWithDescription } @objc public var toEventually: (NMBMatcher) -> Void { - return ({ matcher in + return { matcher in if let pred = matcher as? NMBPredicate { self.expectValue.toEventually( from(objcPredicate: pred), @@ -114,11 +118,11 @@ public class NMBExpectation: NSObject { description: nil ) } - }) + } } @objc public var toEventuallyWithDescription: (NMBMatcher, String) -> Void { - return ({ matcher, description in + return { matcher, description in if let pred = matcher as? NMBPredicate { self.expectValue.toEventually( from(objcPredicate: pred), @@ -132,11 +136,11 @@ public class NMBExpectation: NSObject { description: description ) } - }) + } } @objc public var toEventuallyNot: (NMBMatcher) -> Void { - return ({ matcher in + return { matcher in if let pred = matcher as? NMBPredicate { self.expectValue.toEventuallyNot( from(objcPredicate: pred), @@ -150,11 +154,11 @@ public class NMBExpectation: NSObject { description: nil ) } - }) + } } @objc public var toEventuallyNotWithDescription: (NMBMatcher, String) -> Void { - return ({ matcher, description in + return { matcher, description in if let pred = matcher as? NMBPredicate { self.expectValue.toEventuallyNot( from(objcPredicate: pred), @@ -168,7 +172,7 @@ public class NMBExpectation: NSObject { description: description ) } - }) + } } @objc public var toNotEventually: (NMBMatcher) -> Void { diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift index 9ba2ffac..a91efe33 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift @@ -1,15 +1,17 @@ import Foundation -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) // swiftlint:disable line_length -public typealias MatcherBlock = (_ actualExpression: Expression, _ failureMessage: FailureMessage) -> Bool -public typealias FullMatcherBlock = (_ actualExpression: Expression, _ failureMessage: FailureMessage, _ shouldNotMatch: Bool) -> Bool +public typealias MatcherBlock = (_ actualExpression: Expression, _ failureMessage: FailureMessage) throws -> Bool +public typealias FullMatcherBlock = (_ actualExpression: Expression, _ failureMessage: FailureMessage, _ shouldNotMatch: Bool) throws -> Bool // swiftlint:enable line_length public class NMBObjCMatcher: NSObject, NMBMatcher { + // swiftlint:disable identifier_name let _match: MatcherBlock let _doesNotMatch: MatcherBlock + // swiftlint:enable identifier_name let canMatchNil: Bool public init(canMatchNil: Bool, matcher: @escaping MatcherBlock, notMatcher: @escaping MatcherBlock) { @@ -24,7 +26,7 @@ public class NMBObjCMatcher: NSObject, NMBMatcher { public convenience init(canMatchNil: Bool, matcher: @escaping MatcherBlock) { self.init(canMatchNil: canMatchNil, matcher: matcher, notMatcher: ({ actualExpression, failureMessage in - return !matcher(actualExpression, failureMessage) + return try !matcher(actualExpression, failureMessage) })) } @@ -34,9 +36,9 @@ public class NMBObjCMatcher: NSObject, NMBMatcher { public convenience init(canMatchNil: Bool, matcher: @escaping FullMatcherBlock) { self.init(canMatchNil: canMatchNil, matcher: ({ actualExpression, failureMessage in - return matcher(actualExpression, failureMessage, false) + return try matcher(actualExpression, failureMessage, false) }), notMatcher: ({ actualExpression, failureMessage in - return matcher(actualExpression, failureMessage, true) + return try matcher(actualExpression, failureMessage, true) })) } @@ -55,11 +57,16 @@ public class NMBObjCMatcher: NSObject, NMBMatcher { return true } - public func matches(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + public func matches(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let expr = Expression(expression: actualBlock, location: location) - let result = _match( - expr, - failureMessage) + let result: Bool + do { + result = try _match(expr, failureMessage) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } + if self.canMatch(Expression(expression: actualBlock, location: location), failureMessage: failureMessage) { return result } else { @@ -67,11 +74,16 @@ public class NMBObjCMatcher: NSObject, NMBMatcher { } } - public func doesNotMatch(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + public func doesNotMatch(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let expr = Expression(expression: actualBlock, location: location) - let result = _doesNotMatch( - expr, - failureMessage) + let result: Bool + do { + result = try _doesNotMatch(expr, failureMessage) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } + if self.canMatch(Expression(expression: actualBlock, location: location), failureMessage: failureMessage) { return result } else { diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift index e1b54323..1b2e8c0b 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift @@ -3,7 +3,7 @@ import Foundation /// "Global" state of Nimble is stored here. Only DSL functions should access / be aware of this /// class' existence -internal class NimbleEnvironment { +internal class NimbleEnvironment: NSObject { static var activeInstance: NimbleEnvironment { get { let env = Thread.current.threadDictionary["NimbleEnvironment"] @@ -20,6 +20,7 @@ internal class NimbleEnvironment { } } + // swiftlint:disable:next todo // TODO: eventually migrate the global to this environment value var assertionHandler: AssertionHandler { get { return NimbleAssertionHandler } @@ -29,17 +30,14 @@ internal class NimbleEnvironment { var suppressTVOSAssertionWarning: Bool = false var awaiter: Awaiter - init() { - let timeoutQueue: DispatchQueue - if #available(OSX 10.10, *) { - timeoutQueue = DispatchQueue.global(qos: .userInitiated) - } else { - timeoutQueue = DispatchQueue.global(priority: .high) - } - + override init() { + let timeoutQueue = DispatchQueue.global(qos: .userInitiated) awaiter = Awaiter( waitLock: AssertionWaitLock(), asyncQueue: .main, - timeoutQueue: timeoutQueue) + timeoutQueue: timeoutQueue + ) + + super.init() } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift index 0ad85909..719bf44d 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift @@ -42,18 +42,29 @@ class NimbleXCTestUnavailableHandler: AssertionHandler { private(set) var currentTestCase: XCTestCase? + private var stashed_swift_reportFatalErrorsToDebugger: Bool = false + @objc func testCaseWillStart(_ testCase: XCTestCase) { + #if swift(>=3.2) + stashed_swift_reportFatalErrorsToDebugger = _swift_reportFatalErrorsToDebugger + _swift_reportFatalErrorsToDebugger = false + #endif + currentTestCase = testCase } @objc func testCaseDidFinish(_ testCase: XCTestCase) { currentTestCase = nil + + #if swift(>=3.2) + _swift_reportFatalErrorsToDebugger = stashed_swift_reportFatalErrorsToDebugger + #endif } } #endif func isXCTestAvailable() -> Bool { -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) // XCTest is weakly linked and so may not be present return NSClassFromString("XCTestCase") != nil #else @@ -61,20 +72,19 @@ func isXCTestAvailable() -> Bool { #endif } -private func recordFailure(_ message: String, location: SourceLocation) { +public func recordFailure(_ message: String, location: SourceLocation) { #if SWIFT_PACKAGE XCTFail("\(message)", file: location.file, line: location.line) #else if let testCase = CurrentTestCaseTracker.sharedInstance.currentTestCase { - #if swift(>=4) let line = Int(location.line) - #else - let line = location.line - #endif testCase.recordFailure(withDescription: message, inFile: location.file, atLine: line, expected: true) } else { - let msg = "Attempted to report a test failure to XCTest while no test case was running. " + - "The failure was:\n\"\(message)\"\nIt occurred at: \(location.file):\(location.line)" + let msg = """ + Attempted to report a test failure to XCTest while no test case was running. The failure was: + \"\(message)\" + It occurred at: \(location.file):\(location.line) + """ NSException(name: .internalInconsistencyException, reason: msg, userInfo: nil).raise() } #endif diff --git a/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift b/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift index a84682f9..c049417a 100644 --- a/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift +++ b/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift @@ -14,7 +14,7 @@ internal class NMBWait: NSObject { // About these kind of lines, `@objc` attributes are only required for Objective-C // support, so that should be conditional on Darwin platforms and normal Xcode builds // (non-SwiftPM builds). -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc internal class func until( timeout: TimeInterval, @@ -87,13 +87,19 @@ internal class NMBWait: NSObject { } } -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc(untilFile:line:action:) - internal class func until(_ file: FileString = #file, line: UInt = #line, action: @escaping (() -> Void) -> Void) { + internal class func until( + _ file: FileString = #file, + line: UInt = #line, + action: @escaping (@escaping () -> Void) -> Void) { until(timeout: 1, file: file, line: line, action: action) } #else - internal class func until(_ file: FileString = #file, line: UInt = #line, action: @escaping (() -> Void) -> Void) { + internal class func until( + _ file: FileString = #file, + line: UInt = #line, + action: @escaping (@escaping () -> Void) -> Void) { until(timeout: 1, file: file, line: line, action: action) } #endif @@ -111,6 +117,6 @@ internal func blockedRunLoopErrorMessageFor(_ fnName: String, leeway: TimeInterv /// /// This function manages the main run loop (`NSRunLoop.mainRunLoop()`) while this function /// is executing. Any attempts to touch the run loop may cause non-deterministic behavior. -public func waitUntil(timeout: TimeInterval = 1, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) -> Void) { +public func waitUntil(timeout: TimeInterval = AsyncDefaults.Timeout, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) -> Void) { NMBWait.until(timeout: timeout, file: file, line: line, action: action) } diff --git a/Example/Pods/Nimble/Sources/Nimble/DSL.swift b/Example/Pods/Nimble/Sources/Nimble/DSL.swift index e49bb0c3..d6dc9cc4 100644 --- a/Example/Pods/Nimble/Sources/Nimble/DSL.swift +++ b/Example/Pods/Nimble/Sources/Nimble/DSL.swift @@ -43,12 +43,13 @@ internal func nimblePrecondition( line: UInt = #line) { let result = expr() if !result { -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - let e = NSException( +#if canImport(Darwin) + let exception = NSException( name: NSExceptionName(name()), reason: message(), - userInfo: nil) - e.raise() + userInfo: nil + ) + exception.raise() #else preconditionFailure("\(name()) - \(message())", file: file, line: line) #endif @@ -56,9 +57,12 @@ internal func nimblePrecondition( } internal func internalError(_ msg: String, file: FileString = #file, line: UInt = #line) -> Never { + // swiftlint:disable line_length fatalError( - "Nimble Bug Found: \(msg) at \(file):\(line).\n" + - "Please file a bug to Nimble: https://github.com/Quick/Nimble/issues with the " + - "code snippet that caused this error." + """ + Nimble Bug Found: \(msg) at \(file):\(line). + Please file a bug to Nimble: https://github.com/Quick/Nimble/issues with the code snippet that caused this error. + """ ) + // swiftlint:enable line_length } diff --git a/Example/Pods/Nimble/Sources/Nimble/Expectation.swift b/Example/Pods/Nimble/Sources/Nimble/Expectation.swift index e3f616a9..41625a12 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Expectation.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Expectation.swift @@ -1,23 +1,5 @@ import Foundation -// Deprecated -internal func expressionMatches(_ expression: Expression, matcher: U, to: String, description: String?) -> (Bool, FailureMessage) - where U: Matcher, U.ValueType == T { - let msg = FailureMessage() - msg.userDescription = description - msg.to = to - do { - let pass = try matcher.matches(expression, failureMessage: msg) - if msg.actualValue == "" { - msg.actualValue = "<\(stringify(try expression.evaluate()))>" - } - return (pass, msg) - } catch let error { - msg.stringValue = "unexpected error thrown: <\(error)>" - return (false, msg) - } -} - // Deprecated internal func expressionDoesNotMatch(_ expression: Expression, matcher: U, toNot: String, description: String?) -> (Bool, FailureMessage) where U: Matcher, U.ValueType == T { @@ -75,6 +57,10 @@ public struct Expectation { public let expression: Expression + public init(expression: Expression) { + self.expression = expression + } + public func verify(_ pass: Bool, _ message: FailureMessage) { let handler = NimbleEnvironment.activeInstance.assertionHandler handler.assert(pass, message: message, location: expression.location) @@ -85,8 +71,15 @@ public struct Expectation { /// DEPRECATED: Tests the actual value using a matcher to match. public func to(_ matcher: U, description: String? = nil) where U: Matcher, U.ValueType == T { - let (pass, msg) = expressionMatches(expression, matcher: matcher, to: "to", description: description) - verify(pass, msg) + let (pass, msg) = execute( + expression, + .toMatch, + matcher.predicate, + to: "to", + description: description, + captureExceptions: false + ) + verify(pass, msg) } /// DEPRECATED: Tests the actual value using a matcher to not match. @@ -127,6 +120,6 @@ public struct Expectation { } // see: - // - AsyncMatcherWrapper for extension + // - `async` for extension // - NMBExpectation for Objective-C interface } diff --git a/Example/Pods/Nimble/Sources/Nimble/ExpectationMessage.swift b/Example/Pods/Nimble/Sources/Nimble/ExpectationMessage.swift index 992ee0ef..b0cbcc32 100644 --- a/Example/Pods/Nimble/Sources/Nimble/ExpectationMessage.swift +++ b/Example/Pods/Nimble/Sources/Nimble/ExpectationMessage.swift @@ -75,6 +75,7 @@ public indirect enum ExpectationMessage { } internal func visitLeafs(_ f: (ExpectationMessage) -> ExpectationMessage) -> ExpectationMessage { + // swiftlint:disable:previous identifier_name switch self { case .fail, .expectedTo, .expectedActualValueTo, .expectedCustomValueTo: return f(self) @@ -90,6 +91,7 @@ public indirect enum ExpectationMessage { /// Replaces a primary expectation with one returned by f. Preserves all composite expectations /// that were built upon it (aka - all appended(message:) and appended(details:). public func replacedExpectation(_ f: @escaping (ExpectationMessage) -> ExpectationMessage) -> ExpectationMessage { + // swiftlint:disable:previous identifier_name func walk(_ msg: ExpectationMessage) -> ExpectationMessage { switch msg { case .fail, .expectedTo, .expectedActualValueTo, .expectedCustomValueTo: @@ -124,6 +126,7 @@ public indirect enum ExpectationMessage { return visitLeafs(walk) } + // swiftlint:disable:next todo // TODO: test & verify correct behavior internal func prepended(message: String) -> ExpectationMessage { return .prepends(message, self) @@ -152,8 +155,10 @@ public indirect enum ExpectationMessage { // Backwards compatibility: converts ExpectationMessage tree to FailureMessage internal func update(failureMessage: FailureMessage) { switch self { - case let .fail(msg): + case let .fail(msg) where !msg.isEmpty: failureMessage.stringValue = msg + case .fail: + break case let .expectedTo(msg): failureMessage.actualValue = nil failureMessage.postfixMessage = msg @@ -181,32 +186,32 @@ public indirect enum ExpectationMessage { extension FailureMessage { internal func toExpectationMessage() -> ExpectationMessage { - let defaultMsg = FailureMessage() - if expected != defaultMsg.expected || _stringValueOverride != nil { + let defaultMessage = FailureMessage() + if expected != defaultMessage.expected || _stringValueOverride != nil { return .fail(stringValue) } - var msg: ExpectationMessage = .fail(userDescription ?? "") + var message: ExpectationMessage = .fail(userDescription ?? "") if actualValue != "" && actualValue != nil { - msg = .expectedCustomValueTo(postfixMessage, actualValue ?? "") - } else if postfixMessage != defaultMsg.postfixMessage { + message = .expectedCustomValueTo(postfixMessage, actualValue ?? "") + } else if postfixMessage != defaultMessage.postfixMessage { if actualValue == nil { - msg = .expectedTo(postfixMessage) + message = .expectedTo(postfixMessage) } else { - msg = .expectedActualValueTo(postfixMessage) + message = .expectedActualValueTo(postfixMessage) } } - if postfixActual != defaultMsg.postfixActual { - msg = .appends(msg, postfixActual) + if postfixActual != defaultMessage.postfixActual { + message = .appends(message, postfixActual) } - if let m = extendedMessage { - msg = .details(msg, m) + if let extended = extendedMessage { + message = .details(message, extended) } - return msg + return message } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) public class NMBExpectationMessage: NSObject { private let msg: ExpectationMessage diff --git a/Example/Pods/Nimble/Sources/Nimble/Expression.swift b/Example/Pods/Nimble/Sources/Nimble/Expression.swift index 5a233fd9..dcc42e4e 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Expression.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Expression.swift @@ -4,12 +4,12 @@ import Foundation // closure once; even if repeat calls to the returned closure internal func memoizedClosure(_ closure: @escaping () throws -> T) -> (Bool) throws -> T { var cache: T? - return ({ withoutCaching in + return { withoutCaching in if withoutCaching || cache == nil { cache = try closure() } return cache! - }) + } } /// Expression represents the closure of the value inside expect(...). @@ -24,8 +24,10 @@ internal func memoizedClosure(_ closure: @escaping () throws -> T) -> (Bool) /// This provides a common consumable API for matchers to utilize to allow /// Nimble to change internals to how the captured closure is managed. public struct Expression { + // swiftlint:disable identifier_name internal let _expression: (Bool) throws -> T? internal let _withoutCaching: Bool + // swiftlint:enable identifier_name public let location: SourceLocation public let isClosure: Bool diff --git a/Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift b/Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift index 2bc57ebd..503b540e 100644 --- a/Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift +++ b/Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift @@ -28,6 +28,7 @@ public class FailureMessage: NSObject { } } + // swiftlint:disable:next identifier_name internal var _stringValueOverride: String? internal var hasOverriddenStringValue: Bool { return _stringValueOverride != nil diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift index 8affa62e..dbbccb9c 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift @@ -63,12 +63,12 @@ private func createPredicate(_ elementMatcher: Predicate) } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func allPassMatcher(_ matcher: NMBMatcher) -> NMBPredicate { return NMBPredicate { actualExpression in let location = actualExpression.location - let actualValue = try! actualExpression.evaluate() + let actualValue = try actualExpression.evaluate() var nsObjects = [NSObject]() var collectionIsUsable = true @@ -99,10 +99,11 @@ extension NMBObjCMatcher { let expr = Expression(expression: ({ nsObjects }), location: location) let pred: Predicate<[NSObject]> = createPredicate(Predicate { expr in if let predicate = matcher as? NMBPredicate { - return predicate.satisfies(({ try! expr.evaluate() }), location: expr.location).toSwift() + return predicate.satisfies(({ try expr.evaluate() }), location: expr.location).toSwift() } else { let failureMessage = FailureMessage() let result = matcher.matches( + // swiftlint:disable:next force_try ({ try! expr.evaluate() }), failureMessage: failureMessage, location: expr.location @@ -114,7 +115,7 @@ extension NMBObjCMatcher { ) } }) - return try! pred.satisfies(expr).toObjectiveC() + return try pred.satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/AsyncMatcherWrapper.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift similarity index 63% rename from Example/Pods/Nimble/Sources/Nimble/Matchers/AsyncMatcherWrapper.swift rename to Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift index 3cba8b00..5022fe21 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/AsyncMatcherWrapper.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift @@ -23,92 +23,29 @@ private func async(style: ExpectationStyle, predicate: Predicate, timeout: } switch result { case .completed: return lastPredicateResult! - case .timedOut: return PredicateResult(status: .fail, message: lastPredicateResult!.message) + case .timedOut: + let message = lastPredicateResult?.message ?? .fail("timed out before returning a value") + return PredicateResult(status: .fail, message: message) case let .errorThrown(error): return PredicateResult(status: .fail, message: .fail("unexpected error thrown: <\(error)>")) case let .raisedException(exception): return PredicateResult(status: .fail, message: .fail("unexpected exception raised: \(exception)")) case .blockedRunLoop: // swiftlint:disable:next line_length - return PredicateResult(status: .fail, message: lastPredicateResult!.message.appended(message: " (timed out, but main thread was unresponsive).")) + let message = lastPredicateResult?.message.appended(message: " (timed out, but main run loop was unresponsive).") ?? + .fail("main run loop was unresponsive") + return PredicateResult(status: .fail, message: message) case .incomplete: - internalError("Reached .incomplete state for toEventually(...).") - } - } -} - -// Deprecated -internal struct AsyncMatcherWrapper: Matcher - where U: Matcher, U.ValueType == T { - let fullMatcher: U - let timeoutInterval: TimeInterval - let pollInterval: TimeInterval - - init(fullMatcher: U, timeoutInterval: TimeInterval = AsyncDefaults.Timeout, pollInterval: TimeInterval = AsyncDefaults.PollInterval) { - self.fullMatcher = fullMatcher - self.timeoutInterval = timeoutInterval - self.pollInterval = pollInterval - } - - func matches(_ actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - let uncachedExpression = actualExpression.withoutCaching() - let fnName = "expect(...).toEventually(...)" - let result = pollBlock( - pollInterval: pollInterval, - timeoutInterval: timeoutInterval, - file: actualExpression.location.file, - line: actualExpression.location.line, - fnName: fnName) { - try self.fullMatcher.matches(uncachedExpression, failureMessage: failureMessage) - } - switch result { - case let .completed(isSuccessful): return isSuccessful - case .timedOut: return false - case let .errorThrown(error): - failureMessage.stringValue = "an unexpected error thrown: <\(error)>" - return false - case let .raisedException(exception): - failureMessage.stringValue = "an unexpected exception thrown: <\(exception)>" - return false - case .blockedRunLoop: - failureMessage.postfixMessage += " (timed out, but main thread was unresponsive)." - return false - case .incomplete: - internalError("Reached .incomplete state for toEventually(...).") - } - } - - func doesNotMatch(_ actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - let uncachedExpression = actualExpression.withoutCaching() - let result = pollBlock( - pollInterval: pollInterval, - timeoutInterval: timeoutInterval, - file: actualExpression.location.file, - line: actualExpression.location.line, - fnName: "expect(...).toEventuallyNot(...)") { - try self.fullMatcher.doesNotMatch(uncachedExpression, failureMessage: failureMessage) - } - switch result { - case let .completed(isSuccessful): return isSuccessful - case .timedOut: return false - case let .errorThrown(error): - failureMessage.stringValue = "an unexpected error thrown: <\(error)>" - return false - case let .raisedException(exception): - failureMessage.stringValue = "an unexpected exception thrown: <\(exception)>" - return false - case .blockedRunLoop: - failureMessage.postfixMessage += " (timed out, but main thread was unresponsive)." - return false - case .incomplete: - internalError("Reached .incomplete state for toEventuallyNot(...).") + internalError("Reached .incomplete state for \(fnName)(...).") } } } private let toEventuallyRequiresClosureError = FailureMessage( - // swiftlint:disable:next line_length - stringValue: "expect(...).toEventually(...) requires an explicit closure (eg - expect { ... }.toEventually(...) )\nSwift 1.2 @autoclosure behavior has changed in an incompatible way for Nimble to function" + stringValue: """ + expect(...).toEventually(...) requires an explicit closure (eg - expect { ... }.toEventually(...) ) + Swift 1.2 @autoclosure behavior has changed in an incompatible way for Nimble to function + """ ) extension Expectation { @@ -182,14 +119,19 @@ extension Expectation { public func toEventually(_ matcher: U, timeout: TimeInterval = AsyncDefaults.Timeout, pollInterval: TimeInterval = AsyncDefaults.PollInterval, description: String? = nil) where U: Matcher, U.ValueType == T { if expression.isClosure { - let (pass, msg) = expressionMatches( + let (pass, msg) = execute( expression, - matcher: AsyncMatcherWrapper( - fullMatcher: matcher, - timeoutInterval: timeout, - pollInterval: pollInterval), + .toMatch, + async( + style: .toMatch, + predicate: matcher.predicate, + timeout: timeout, + poll: pollInterval, + fnName: "toEventually" + ), to: "to eventually", - description: description + description: description, + captureExceptions: false ) verify(pass, msg) } else { @@ -208,10 +150,13 @@ extension Expectation { if expression.isClosure { let (pass, msg) = expressionDoesNotMatch( expression, - matcher: AsyncMatcherWrapper( - fullMatcher: matcher, - timeoutInterval: timeout, - pollInterval: pollInterval), + matcher: async( + style: .toNotMatch, + predicate: matcher.predicate, + timeout: timeout, + poll: pollInterval, + fnName: "toEventuallyNot" + ), toNot: "to eventually not", description: description ) diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift index 56745251..3a68b09c 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift @@ -29,7 +29,7 @@ public func beAKindOf(_ expectedType: T.Type) -> Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) /// A Nimble matcher that succeeds when the actual value is an instance of the given class. /// @see beAnInstanceOf if you want to match against the exact class @@ -59,8 +59,8 @@ public func beAKindOf(_ expectedClass: AnyClass) -> Predicate { extension NMBObjCMatcher { @objc public class func beAKindOfMatcher(_ expected: AnyClass) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - return try! beAKindOf(expected).matches(actualExpression, failureMessage: failureMessage) + return NMBPredicate { actualExpression in + return try beAKindOf(expected).satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift index 70c56615..3cef3a7b 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift @@ -33,7 +33,7 @@ public func beAnInstanceOf(_ expectedClass: AnyClass) -> Predicate { } else { actualString = "" } - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + #if canImport(Darwin) let matches = instance != nil && instance!.isMember(of: expectedClass) #else let matches = instance != nil && type(of: instance!) == expectedClass @@ -45,11 +45,11 @@ public func beAnInstanceOf(_ expectedClass: AnyClass) -> Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func beAnInstanceOfMatcher(_ expected: AnyClass) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - return try! beAnInstanceOf(expected).matches(actualExpression, failureMessage: failureMessage) + return NMBPredicate { actualExpression in + return try beAnInstanceOf(expected).satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift index dfb4e285..4396180a 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift @@ -1,5 +1,6 @@ import Foundation +// swiftlint:disable:next identifier_name public let DefaultDelta = 0.0001 internal func isCloseTo(_ actualValue: NMBDoubleConvertible?, @@ -34,37 +35,55 @@ public func beCloseTo(_ expectedValue: NMBDoubleConvertible, within delta: Doubl } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) public class NMBObjCBeCloseToMatcher: NSObject, NMBMatcher { + // swiftlint:disable identifier_name var _expected: NSNumber var _delta: CDouble + // swiftlint:enable identifier_name init(expected: NSNumber, within: CDouble) { _expected = expected _delta = within } - @objc public func matches(_ actualExpression: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + @objc public func matches(_ actualExpression: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let actualBlock: () -> NMBDoubleConvertible? = ({ return actualExpression() as? NMBDoubleConvertible }) let expr = Expression(expression: actualBlock, location: location) - let matcher = beCloseTo(self._expected, within: self._delta) - return try! matcher.matches(expr, failureMessage: failureMessage) + let predicate = beCloseTo(self._expected, within: self._delta) + + do { + let result = try predicate.satisfies(expr) + result.message.update(failureMessage: failureMessage) + return result.toBoolean(expectation: .toMatch) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } } - @objc public func doesNotMatch(_ actualExpression: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + @objc public func doesNotMatch(_ actualExpression: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let actualBlock: () -> NMBDoubleConvertible? = ({ return actualExpression() as? NMBDoubleConvertible }) let expr = Expression(expression: actualBlock, location: location) - let matcher = beCloseTo(self._expected, within: self._delta) - return try! matcher.doesNotMatch(expr, failureMessage: failureMessage) + let predicate = beCloseTo(self._expected, within: self._delta) + + do { + let result = try predicate.satisfies(expr) + result.message.update(failureMessage: failureMessage) + return result.toBoolean(expectation: .toNotMatch) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } } @objc public var within: (CDouble) -> NMBObjCBeCloseToMatcher { - return ({ delta in + return { delta in return NMBObjCBeCloseToMatcher(expected: self._expected, within: delta) - }) + } } } @@ -98,14 +117,17 @@ public func beCloseTo(_ expectedValues: [Double], within delta: Double = Default infix operator ≈ : ComparisonPrecedence +// swiftlint:disable:next identifier_name public func ≈(lhs: Expectation<[Double]>, rhs: [Double]) { lhs.to(beCloseTo(rhs)) } +// swiftlint:disable:next identifier_name public func ≈(lhs: Expectation, rhs: NMBDoubleConvertible) { lhs.to(beCloseTo(rhs)) } +// swiftlint:disable:next identifier_name public func ≈(lhs: Expectation, rhs: (expected: NMBDoubleConvertible, delta: Double)) { lhs.to(beCloseTo(rhs.expected, within: rhs.delta)) } @@ -121,6 +143,7 @@ precedencegroup PlusMinusOperatorPrecedence { } infix operator ± : PlusMinusOperatorPrecedence +// swiftlint:disable:next identifier_name public func ±(lhs: NMBDoubleConvertible, rhs: Double) -> (expected: NMBDoubleConvertible, delta: Double) { return (expected: lhs, delta: rhs) } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift index 3cbc15dd..860287f0 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift @@ -4,15 +4,36 @@ import Foundation /// means the are no items in that collection. For strings, it is an empty string. public func beEmpty() -> Predicate { return Predicate.simple("be empty") { actualExpression in - let actualSeq = try actualExpression.evaluate() - if actualSeq == nil { + guard let actual = try actualExpression.evaluate() else { return .fail } - var generator = actualSeq!.makeIterator() + var generator = actual.makeIterator() return PredicateStatus(bool: generator.next() == nil) } } +/// A Nimble matcher that succeeds when a value is "empty". For collections, this +/// means the are no items in that collection. For strings, it is an empty string. +public func beEmpty() -> Predicate { + return Predicate.simple("be empty") { actualExpression in + guard let actual = try actualExpression.evaluate() else { + return .fail + } + return PredicateStatus(bool: actual.isEmpty) + } +} + +/// A Nimble matcher that succeeds when a value is "empty". For collections, this +/// means the are no items in that collection. For strings, it is an empty string. +public func beEmpty() -> Predicate { + return Predicate.simple("be empty") { actualExpression in + guard let actual = try actualExpression.evaluate() else { + return .fail + } + return PredicateStatus(bool: actual.isEmpty) + } +} + /// A Nimble matcher that succeeds when a value is "empty". For collections, this /// means the are no items in that collection. For strings, it is an empty string. public func beEmpty() -> Predicate { @@ -61,19 +82,19 @@ public func beEmpty() -> Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func beEmptyMatcher() -> NMBPredicate { return NMBPredicate { actualExpression in let location = actualExpression.location - let actualValue = try! actualExpression.evaluate() + let actualValue = try actualExpression.evaluate() if let value = actualValue as? NMBCollection { let expr = Expression(expression: ({ value as NMBCollection }), location: location) - return try! beEmpty().satisfies(expr).toObjectiveC() + return try beEmpty().satisfies(expr).toObjectiveC() } else if let value = actualValue as? NSString { let expr = Expression(expression: ({ value as String }), location: location) - return try! beEmpty().satisfies(expr).toObjectiveC() + return try beEmpty().satisfies(expr).toObjectiveC() } else if let actualValue = actualValue { // swiftlint:disable:next line_length let badTypeErrorMsg = "be empty (only works for NSArrays, NSSets, NSIndexSets, NSDictionaries, NSHashTables, and NSStrings)" diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift index 8717f97d..782c771c 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift @@ -11,31 +11,33 @@ public func beGreaterThan(_ expectedValue: T?) -> Predicate { } } +public func >(lhs: Expectation, rhs: T) { + lhs.to(beGreaterThan(rhs)) +} + +#if canImport(Darwin) || !compiler(>=5.1) /// A Nimble matcher that succeeds when the actual value is greater than the expected value. public func beGreaterThan(_ expectedValue: NMBComparable?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be greater than <\(stringify(expectedValue))>" + let errorMessage = "be greater than <\(stringify(expectedValue))>" + return Predicate.simple(errorMessage) { actualExpression in let actualValue = try actualExpression.evaluate() let matches = actualValue != nil && actualValue!.NMB_compare(expectedValue) == ComparisonResult.orderedDescending - return matches - }.requireNonNil -} - -public func >(lhs: Expectation, rhs: T) { - lhs.to(beGreaterThan(rhs)) + return PredicateStatus(bool: matches) + } } public func > (lhs: Expectation, rhs: NMBComparable?) { lhs.to(beGreaterThan(rhs)) } +#endif -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beGreaterThanMatcher(_ expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beGreaterThanMatcher(_ expected: NMBComparable?) -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { $0 as? NMBComparable } - return try! beGreaterThan(expected).matches(expr, failureMessage: failureMessage) + return try beGreaterThan(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift index 55d8e7bc..c3fc5238 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift @@ -3,41 +3,43 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is greater than /// or equal to the expected value. public func beGreaterThanOrEqualTo(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be greater than or equal to <\(stringify(expectedValue))>" + let message = "be greater than or equal to <\(stringify(expectedValue))>" + return Predicate.simple(message) { actualExpression in let actualValue = try actualExpression.evaluate() if let actual = actualValue, let expected = expectedValue { - return actual >= expected + return PredicateStatus(bool: actual >= expected) } - return false - }.requireNonNil + return .fail + } +} + +public func >=(lhs: Expectation, rhs: T) { + lhs.to(beGreaterThanOrEqualTo(rhs)) } +#if canImport(Darwin) || !compiler(>=5.1) /// A Nimble matcher that succeeds when the actual value is greater than /// or equal to the expected value. public func beGreaterThanOrEqualTo(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be greater than or equal to <\(stringify(expectedValue))>" + let message = "be greater than or equal to <\(stringify(expectedValue))>" + return Predicate.simple(message) { actualExpression in let actualValue = try actualExpression.evaluate() let matches = actualValue != nil && actualValue!.NMB_compare(expectedValue) != ComparisonResult.orderedAscending - return matches - }.requireNonNil -} - -public func >=(lhs: Expectation, rhs: T) { - lhs.to(beGreaterThanOrEqualTo(rhs)) + return PredicateStatus(bool: matches) + } } public func >=(lhs: Expectation, rhs: T) { lhs.to(beGreaterThanOrEqualTo(rhs)) } +#endif -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beGreaterThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beGreaterThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { $0 as? NMBComparable } - return try! beGreaterThanOrEqualTo(expected).matches(expr, failureMessage: failureMessage) + return try beGreaterThanOrEqualTo(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift index ad19def1..7644b4c4 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift @@ -3,20 +3,18 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is the same instance /// as the expected instance. public func beIdenticalTo(_ expected: Any?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - #if os(Linux) - let actual = try actualExpression.evaluate() as? AnyObject - #else - let actual = try actualExpression.evaluate() as AnyObject? - #endif - failureMessage.actualValue = "\(identityAsString(actual))" - failureMessage.postfixMessage = "be identical to \(identityAsString(expected))" - #if os(Linux) - return actual === (expected as? AnyObject) && actual !== nil - #else - return actual === (expected as AnyObject?) && actual !== nil - #endif - }.requireNonNil + return Predicate.define { actualExpression in + let actual = try actualExpression.evaluate() as AnyObject? + + let bool = actual === (expected as AnyObject?) && actual !== nil + return PredicateResult( + bool: bool, + message: .expectedCustomValueTo( + "be identical to \(identityAsString(expected))", + "\(identityAsString(actual))" + ) + ) + } } public func === (lhs: Expectation, rhs: Any?) { @@ -34,12 +32,12 @@ public func be(_ expected: Any?) -> Predicate { return beIdenticalTo(expected) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beIdenticalToMatcher(_ expected: NSObject?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beIdenticalToMatcher(_ expected: NSObject?) -> NMBMatcher { + return NMBPredicate { actualExpression in let aExpr = actualExpression.cast { $0 as Any? } - return try! beIdenticalTo(expected).matches(aExpr, failureMessage: failureMessage) + return try beIdenticalTo(expected).satisfies(aExpr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift index 8047efd7..12fc9c20 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift @@ -2,39 +2,41 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is less than the expected value. public func beLessThan(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be less than <\(stringify(expectedValue))>" + let message = "be less than <\(stringify(expectedValue))>" + return Predicate.simple(message) { actualExpression in if let actual = try actualExpression.evaluate(), let expected = expectedValue { - return actual < expected + return PredicateStatus(bool: actual < expected) } - return false - }.requireNonNil + return .fail + } +} + +public func <(lhs: Expectation, rhs: T) { + lhs.to(beLessThan(rhs)) } +#if canImport(Darwin) || !compiler(>=5.1) /// A Nimble matcher that succeeds when the actual value is less than the expected value. public func beLessThan(_ expectedValue: NMBComparable?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be less than <\(stringify(expectedValue))>" + let message = "be less than <\(stringify(expectedValue))>" + return Predicate.simple(message) { actualExpression in let actualValue = try actualExpression.evaluate() let matches = actualValue != nil && actualValue!.NMB_compare(expectedValue) == ComparisonResult.orderedAscending - return matches - }.requireNonNil -} - -public func <(lhs: Expectation, rhs: T) { - lhs.to(beLessThan(rhs)) + return PredicateStatus(bool: matches) + } } public func < (lhs: Expectation, rhs: NMBComparable?) { lhs.to(beLessThan(rhs)) } +#endif -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beLessThanMatcher(_ expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beLessThanMatcher(_ expected: NMBComparable?) -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { $0 as? NMBComparable } - return try! beLessThan(expected).matches(expr, failureMessage: failureMessage) + return try beLessThan(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift index f9e9f4e7..bf6ba164 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift @@ -3,39 +3,40 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is less than /// or equal to the expected value. public func beLessThanOrEqualTo(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be less than or equal to <\(stringify(expectedValue))>" + return Predicate.simple("be less than or equal to <\(stringify(expectedValue))>") { actualExpression in if let actual = try actualExpression.evaluate(), let expected = expectedValue { - return actual <= expected + return PredicateStatus(bool: actual <= expected) } - return false - }.requireNonNil + return .fail + } +} + +public func <=(lhs: Expectation, rhs: T) { + lhs.to(beLessThanOrEqualTo(rhs)) } +#if canImport(Darwin) || !compiler(>=5.1) /// A Nimble matcher that succeeds when the actual value is less than /// or equal to the expected value. public func beLessThanOrEqualTo(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be less than or equal to <\(stringify(expectedValue))>" + return Predicate.simple("be less than or equal to <\(stringify(expectedValue))>") { actualExpression in let actualValue = try actualExpression.evaluate() - return actualValue != nil && actualValue!.NMB_compare(expectedValue) != ComparisonResult.orderedDescending - }.requireNonNil -} - -public func <=(lhs: Expectation, rhs: T) { - lhs.to(beLessThanOrEqualTo(rhs)) + let matches = actualValue.map { $0.NMB_compare(expectedValue) != .orderedDescending } ?? false + return PredicateStatus(bool: matches) + } } public func <=(lhs: Expectation, rhs: T) { lhs.to(beLessThanOrEqualTo(rhs)) } +#endif -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beLessThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beLessThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { $0 as? NMBComparable } - return try! beLessThanOrEqualTo(expected).matches(expr, failureMessage: failureMessage) + return try beLessThanOrEqualTo(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift index 2b18b4c4..788234b9 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift @@ -100,14 +100,6 @@ public func beTruthy() -> Predicate< return Predicate.simpleNilable("be truthy") { actualExpression in let actualValue = try actualExpression.evaluate() if let actualValue = actualValue { - // FIXME: This is a workaround to SR-2290. - // See: - // - https://bugs.swift.org/browse/SR-2290 - // - https://github.com/norio-nomura/Nimble/pull/5#issuecomment-237835873 - if let number = actualValue as? NSNumber { - return PredicateStatus(bool: number.boolValue == true) - } - return PredicateStatus(bool: actualValue == (true as T)) } return PredicateStatus(bool: actualValue != nil) @@ -120,47 +112,42 @@ public func beFalsy() -> Predicate NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage in + @objc public class func beTruthyMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false } - return try! beTruthy().matches(expr, failureMessage: failureMessage) + return try beTruthy().satisfies(expr).toObjectiveC() } } - @objc public class func beFalsyMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage in + @objc public class func beFalsyMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false } - return try! beFalsy().matches(expr, failureMessage: failureMessage) + return try beFalsy().satisfies(expr).toObjectiveC() } } - @objc public class func beTrueMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage in + @objc public class func beTrueMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false } - return try! beTrue().matches(expr, failureMessage: failureMessage) + return try beTrue().satisfies(expr).toObjectiveC() } } - @objc public class func beFalseMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false } - return try! beFalse().matches(expr, failureMessage: failureMessage) + @objc public class func beFalseMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in + let expr = actualExpression.cast { value -> Bool? in + guard let value = value else { return nil } + return (value as? NSNumber)?.boolValue ?? false + } + return try beFalse().satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift index a22e0f4c..0f21d418 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift @@ -8,11 +8,11 @@ public func beNil() -> Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beNilMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage in - return try! beNil().matches(actualExpression, failureMessage: failureMessage) + @objc public class func beNilMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in + return try beNil().satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift index f5bf22a2..9a7eafda 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift @@ -2,17 +2,18 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is Void. public func beVoid() -> Predicate<()> { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be void" + return Predicate.simpleNilable("be void") { actualExpression in let actualValue: ()? = try actualExpression.evaluate() - return actualValue != nil + return PredicateStatus(bool: actualValue != nil) } } -public func == (lhs: Expectation<()>, rhs: ()) { - lhs.to(beVoid()) -} +extension Expectation where T == () { + public static func == (lhs: Expectation<()>, rhs: ()) { + lhs.to(beVoid()) + } -public func != (lhs: Expectation<()>, rhs: ()) { - lhs.toNot(beVoid()) + public static func != (lhs: Expectation<()>, rhs: ()) { + lhs.toNot(beVoid()) + } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift index c2ab568b..3183eb95 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift @@ -35,24 +35,24 @@ public func beginWith(_ startingElement: Any) -> Predicate public func beginWith(_ startingSubstring: String) -> Predicate { return Predicate.simple("begin with <\(startingSubstring)>") { actualExpression in if let actual = try actualExpression.evaluate() { - let range = actual.range(of: startingSubstring) - return PredicateStatus(bool: range != nil && range!.lowerBound == actual.startIndex) + return PredicateStatus(bool: actual.hasPrefix(startingSubstring)) } return .fail } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beginWithMatcher(_ expected: Any) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - let actual = try! actualExpression.evaluate() - if (actual as? String) != nil { + @objc public class func beginWithMatcher(_ expected: Any) -> NMBMatcher { + return NMBPredicate { actualExpression in + let actual = try actualExpression.evaluate() + if actual is String { let expr = actualExpression.cast { $0 as? String } - return try! beginWith(expected as! String).matches(expr, failureMessage: failureMessage) + // swiftlint:disable:next force_cast + return try beginWith(expected as! String).satisfies(expr).toObjectiveC() } else { let expr = actualExpression.cast { $0 as? NMBOrderedCollection } - return try! beginWith(expected).matches(expr, failureMessage: failureMessage) + return try beginWith(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift index f1afb72d..6974a4d4 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift @@ -1,22 +1,63 @@ import Foundation -/// A Nimble matcher that succeeds when the actual sequence contains the expected value. +/// A Nimble matcher that succeeds when the actual sequence contains the expected values. public func contain(_ items: T...) -> Predicate - where S.Iterator.Element == T { + where S.Element == T { return contain(items) } +/// A Nimble matcher that succeeds when the actual sequence contains the expected values. public func contain(_ items: [T]) -> Predicate - where S.Iterator.Element == T { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "contain <\(arrayAsString(items))>" + where S.Element == T { + return Predicate.simple("contain <\(arrayAsString(items))>") { actualExpression in if let actual = try actualExpression.evaluate() { - return items.all { + let matches = items.allSatisfy { return actual.contains($0) } + return PredicateStatus(bool: matches) + } + return .fail + } +} + +/// A Nimble matcher that succeeds when the actual set contains the expected values. +public func contain(_ items: T...) -> Predicate + where S.Element == T { + return contain(items) +} + +/// A Nimble matcher that succeeds when the actual set contains the expected values. +public func contain(_ items: [T]) -> Predicate + where S.Element == T { + return Predicate.simple("contain <\(arrayAsString(items))>") { actualExpression in + if let actual = try actualExpression.evaluate() { + let matches = items.allSatisfy { + return actual.contains($0) + } + return PredicateStatus(bool: matches) + } + return .fail + } +} + +/// A Nimble matcher that succeeds when the actual set contains the expected values. +public func contain(_ items: T...) -> Predicate + where S.Element == T { + return contain(items) +} + +/// A Nimble matcher that succeeds when the actual set contains the expected values. +public func contain(_ items: [T]) -> Predicate + where S.Element == T { + return Predicate.simple("contain <\(arrayAsString(items))>") { actualExpression in + if let actual = try actualExpression.evaluate() { + let matches = items.allSatisfy { + return actual.contains($0) + } + return PredicateStatus(bool: matches) + } + return .fail } - return false - }.requireNonNil } /// A Nimble matcher that succeeds when the actual string contains the expected substring. @@ -25,16 +66,16 @@ public func contain(_ substrings: String...) -> Predicate { } public func contain(_ substrings: [String]) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "contain <\(arrayAsString(substrings))>" + return Predicate.simple("contain <\(arrayAsString(substrings))>") { actualExpression in if let actual = try actualExpression.evaluate() { - return substrings.all { + let matches = substrings.allSatisfy { let range = actual.range(of: $0) return range != nil && !range!.isEmpty } + return PredicateStatus(bool: matches) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual string contains the expected substring. @@ -43,13 +84,13 @@ public func contain(_ substrings: NSString...) -> Predicate { } public func contain(_ substrings: [NSString]) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "contain <\(arrayAsString(substrings))>" + return Predicate.simple("contain <\(arrayAsString(substrings))>") { actualExpression in if let actual = try actualExpression.evaluate() { - return substrings.all { actual.range(of: $0.description).length != 0 } + let matches = substrings.allSatisfy { actual.range(of: $0.description).length != 0 } + return PredicateStatus(bool: matches) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual collection contains the expected object. @@ -58,37 +99,45 @@ public func contain(_ items: Any?...) -> Predicate { } public func contain(_ items: [Any?]) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "contain <\(arrayAsString(items))>" - guard let actual = try actualExpression.evaluate() else { return false } - return items.all { item in - return item != nil && actual.contains(item!) + return Predicate.simple("contain <\(arrayAsString(items))>") { actualExpression in + guard let actual = try actualExpression.evaluate() else { return .fail } + let matches = items.allSatisfy { item in + return item.map { actual.contains($0) } ?? false } - }.requireNonNil + return PredicateStatus(bool: matches) + } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func containMatcher(_ expected: [NSObject]) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func containMatcher(_ expected: [NSObject]) -> NMBMatcher { + return NMBPredicate { actualExpression in let location = actualExpression.location - let actualValue = try! actualExpression.evaluate() + let actualValue = try actualExpression.evaluate() if let value = actualValue as? NMBContainer { let expr = Expression(expression: ({ value as NMBContainer }), location: location) // A straightforward cast on the array causes this to crash, so we have to cast the individual items let expectedOptionals: [Any?] = expected.map({ $0 as Any? }) - return try! contain(expectedOptionals).matches(expr, failureMessage: failureMessage) + return try contain(expectedOptionals).satisfies(expr).toObjectiveC() } else if let value = actualValue as? NSString { let expr = Expression(expression: ({ value as String }), location: location) - return try! contain(expected as! [String]).matches(expr, failureMessage: failureMessage) - } else if actualValue != nil { - // swiftlint:disable:next line_length - failureMessage.postfixMessage = "contain <\(arrayAsString(expected))> (only works for NSArrays, NSSets, NSHashTables, and NSStrings)" + // swiftlint:disable:next force_cast + return try contain(expected as! [String]).satisfies(expr).toObjectiveC() + } + + let message: ExpectationMessage + if actualValue != nil { + message = ExpectationMessage.expectedActualValueTo( + // swiftlint:disable:next line_length + "contain <\(arrayAsString(expected))> (only works for NSArrays, NSSets, NSHashTables, and NSStrings)" + ) } else { - failureMessage.postfixMessage = "contain <\(arrayAsString(expected))>" + message = ExpectationMessage + .expectedActualValueTo("contain <\(arrayAsString(expected))>") + .appendedBeNilHint() } - return false + return NMBPredicateResult(status: .fail, message: message.toObjectiveC()) } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift index ae0d854a..331f3bc2 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift @@ -2,43 +2,44 @@ import Foundation public func containElementSatisfying(_ predicate: @escaping ((T) -> Bool), _ predicateDescription: String = "") -> Predicate where S.Iterator.Element == T { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.actualValue = nil - + return Predicate.define { actualExpression in + let message: ExpectationMessage if predicateDescription == "" { - failureMessage.postfixMessage = "find object in collection that satisfies predicate" + message = .expectedTo("find object in collection that satisfies predicate") } else { - failureMessage.postfixMessage = "find object in collection \(predicateDescription)" + message = .expectedTo("find object in collection \(predicateDescription)") } if let sequence = try actualExpression.evaluate() { for object in sequence { if predicate(object) { - return true + return PredicateResult(bool: true, message: message) } } - return false + return PredicateResult(bool: false, message: message) } - return false - }.requireNonNil + return PredicateResult(status: .fail, message: message) + } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func containElementSatisfyingMatcher(_ predicate: @escaping ((NSObject) -> Bool)) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - let value = try! actualExpression.evaluate() + @objc public class func containElementSatisfyingMatcher(_ predicate: @escaping ((NSObject) -> Bool)) -> NMBMatcher { + return NMBPredicate { actualExpression in + let value = try actualExpression.evaluate() guard let enumeration = value as? NSFastEnumeration else { - // swiftlint:disable:next line_length - failureMessage.postfixMessage = "containElementSatisfying must be provided an NSFastEnumeration object" - failureMessage.actualValue = nil - failureMessage.expected = "" - failureMessage.to = "" - return false + let message = ExpectationMessage.fail( + "containElementSatisfying must be provided an NSFastEnumeration object" + ) + return NMBPredicateResult(status: .fail, message: message.toObjectiveC()) } + let message = ExpectationMessage + .expectedTo("find object in collection that satisfies predicate") + .toObjectiveC() + var iterator = NSFastEnumerationIterator(enumeration) while let item = iterator.next() { guard let object = item as? NSObject else { @@ -46,14 +47,11 @@ public func containElementSatisfying(_ predicate: @escaping ((T) } if predicate(object) { - return true + return NMBPredicateResult(status: .matches, message: message) } } - failureMessage.actualValue = nil - failureMessage.postfixMessage = "" - failureMessage.to = "to find object in collection that satisfies predicate" - return false + return NMBPredicateResult(status: .doesNotMatch, message: message) } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/ElementsEqual.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/ElementsEqual.swift new file mode 100644 index 00000000..1704e945 --- /dev/null +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/ElementsEqual.swift @@ -0,0 +1,16 @@ +/// A Nimble matcher that succeeds when the actual sequence contain the same elements in the same order to the exepected sequence. +public func elementsEqual(_ expectedValue: S?) -> Predicate where S.Element: Equatable { + // A matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2949668-elementsequal + return Predicate.define("elementsEqual <\(stringify(expectedValue))>") { (actualExpression, msg) in + let actualValue = try actualExpression.evaluate() + switch (expectedValue, actualValue) { + case (nil, _?): + return PredicateResult(status: .fail, message: msg.appendedBeNilHint()) + case (nil, nil), (_, nil): + return PredicateResult(status: .fail, message: msg) + case (let expected?, let actual?): + let matches = expected.elementsEqual(actual) + return PredicateResult(bool: matches, message: msg) + } + } +} diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift index a6f9f910..13bdb311 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift @@ -4,9 +4,7 @@ import Foundation /// is equal to the expected value. public func endWith(_ endingElement: T) -> Predicate where S.Iterator.Element == T { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "end with <\(endingElement)>" - + return Predicate.simple("end with <\(endingElement)>") { actualExpression in if let actualValue = try actualExpression.evaluate() { var actualGenerator = actualValue.makeIterator() var lastItem: T? @@ -16,55 +14,54 @@ public func endWith(_ endingElement: T) -> Predicate< item = actualGenerator.next() } while(item != nil) - return lastItem == endingElement + return PredicateStatus(bool: lastItem == endingElement) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual collection's last element /// is equal to the expected object. public func endWith(_ endingElement: Any) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "end with <\(endingElement)>" - guard let collection = try actualExpression.evaluate() else { return false } - guard collection.count > 0 else { return false } + return Predicate.simple("end with <\(endingElement)>") { actualExpression in + guard let collection = try actualExpression.evaluate() else { return .fail } + guard collection.count > 0 else { return PredicateStatus(bool: false) } #if os(Linux) guard let collectionValue = collection.object(at: collection.count - 1) as? NSObject else { - return false + return .fail } #else let collectionValue = collection.object(at: collection.count - 1) as AnyObject #endif - return collectionValue.isEqual(endingElement) - }.requireNonNil + return PredicateStatus(bool: collectionValue.isEqual(endingElement)) + } } /// A Nimble matcher that succeeds when the actual string contains the expected substring /// where the expected substring's location is the actual string's length minus the /// expected substring's length. public func endWith(_ endingSubstring: String) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "end with <\(endingSubstring)>" + return Predicate.simple("end with <\(endingSubstring)>") { actualExpression in if let collection = try actualExpression.evaluate() { - return collection.hasSuffix(endingSubstring) + return PredicateStatus(bool: collection.hasSuffix(endingSubstring)) } - return false - }.requireNonNil + return .fail + } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func endWithMatcher(_ expected: Any) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - let actual = try! actualExpression.evaluate() - if (actual as? String) != nil { + @objc public class func endWithMatcher(_ expected: Any) -> NMBMatcher { + return NMBPredicate { actualExpression in + let actual = try actualExpression.evaluate() + if actual is String { let expr = actualExpression.cast { $0 as? String } - return try! endWith(expected as! String).matches(expr, failureMessage: failureMessage) + // swiftlint:disable:next force_cast + return try endWith(expected as! String).satisfies(expr).toObjectiveC() } else { let expr = actualExpression.cast { $0 as? NMBOrderedCollection } - return try! endWith(expected).matches(expr, failureMessage: failureMessage) + return try endWith(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift index 9467154a..b08d5f67 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift @@ -7,103 +7,30 @@ import Foundation public func equal(_ expectedValue: T?) -> Predicate { return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in let actualValue = try actualExpression.evaluate() - let matches = actualValue == expectedValue && expectedValue != nil - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } + switch (expectedValue, actualValue) { + case (nil, _?): + return PredicateResult(status: .fail, message: msg.appendedBeNilHint()) + case (nil, nil), (_, nil): return PredicateResult(status: .fail, message: msg) + case (let expected?, let actual?): + let matches = expected == actual + return PredicateResult(bool: matches, message: msg) } - return PredicateResult(status: PredicateStatus(bool: matches), message: msg) - } -} - -/// A Nimble matcher that succeeds when the actual value is equal to the expected value. -/// Values can support equal by supporting the Equatable protocol. -/// -/// @see beCloseTo if you want to match imprecise types (eg - floats, doubles). -public func equal(_ expectedValue: [T: C]?) -> Predicate<[T: C]> { - return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in - let actualValue = try actualExpression.evaluate() - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } - return PredicateResult(status: .fail, message: msg) - } - return PredicateResult( - status: PredicateStatus(bool: expectedValue! == actualValue!), - message: msg - ) - } -} - -/// A Nimble matcher that succeeds when the actual collection is equal to the expected collection. -/// Items must implement the Equatable protocol. -public func equal(_ expectedValue: [T]?) -> Predicate<[T]> { - return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in - let actualValue = try actualExpression.evaluate() - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } - return PredicateResult( - status: .fail, - message: msg - ) - } - return PredicateResult( - bool: expectedValue! == actualValue!, - message: msg - ) } } /// A Nimble matcher allowing comparison of collection with optional type public func equal(_ expectedValue: [T?]) -> Predicate<[T?]> { return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in - if let actualValue = try actualExpression.evaluate() { - let doesNotMatch = PredicateResult( - status: .doesNotMatch, - message: msg - ) - - if expectedValue.count != actualValue.count { - return doesNotMatch - } - - for (index, item) in actualValue.enumerated() { - let otherItem = expectedValue[index] - if item == nil && otherItem == nil { - continue - } else if item == nil && otherItem != nil { - return doesNotMatch - } else if item != nil && otherItem == nil { - return doesNotMatch - } else if item! != otherItem! { - return doesNotMatch - } - } - - return PredicateResult( - status: .matches, - message: msg - ) - } else { + guard let actualValue = try actualExpression.evaluate() else { return PredicateResult( status: .fail, message: msg.appendedBeNilHint() ) } + + let matches = expectedValue == actualValue + return PredicateResult(bool: matches, message: msg) } } @@ -128,44 +55,45 @@ private func equal(_ expectedValue: Set?, stringify: @escaping (Set?) - var errorMessage: ExpectationMessage = .expectedActualValueTo("equal <\(stringify(expectedValue))>") - if let expectedValue = expectedValue { - if let actualValue = try actualExpression.evaluate() { - errorMessage = .expectedCustomValueTo( - "equal <\(stringify(expectedValue))>", - "<\(stringify(actualValue))>" - ) - - if expectedValue == actualValue { - return PredicateResult( - status: .matches, - message: errorMessage - ) - } - - let missing = expectedValue.subtracting(actualValue) - if missing.count > 0 { - errorMessage = errorMessage.appended(message: ", missing <\(stringify(missing))>") - } - - let extra = actualValue.subtracting(expectedValue) - if extra.count > 0 { - errorMessage = errorMessage.appended(message: ", extra <\(stringify(extra))>") - } - return PredicateResult( - status: .doesNotMatch, - message: errorMessage - ) - } + guard let expectedValue = expectedValue else { return PredicateResult( status: .fail, message: errorMessage.appendedBeNilHint() ) - } else { + } + + guard let actualValue = try actualExpression.evaluate() else { return PredicateResult( status: .fail, message: errorMessage.appendedBeNilHint() ) } + + errorMessage = .expectedCustomValueTo( + "equal <\(stringify(expectedValue))>", + "<\(stringify(actualValue))>" + ) + + if expectedValue == actualValue { + return PredicateResult( + status: .matches, + message: errorMessage + ) + } + + let missing = expectedValue.subtracting(actualValue) + if missing.count > 0 { + errorMessage = errorMessage.appended(message: ", missing <\(stringify(missing))>") + } + + let extra = actualValue.subtracting(expectedValue) + if extra.count > 0 { + errorMessage = errorMessage.appended(message: ", extra <\(stringify(extra))>") + } + return PredicateResult( + status: .doesNotMatch, + message: errorMessage + ) } } @@ -209,11 +137,11 @@ public func !=(lhs: Expectation<[T: C]>, rhs: [T: C]?) { lhs.toNot(equal(rhs)) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func equalMatcher(_ expected: NSObject) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - return try! equal(expected).matches(actualExpression, failureMessage: failureMessage) + return NMBPredicate { actualExpression in + return try equal(expected).satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift index 93335a8a..984e2d4c 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift @@ -7,52 +7,67 @@ import Foundation /// A Nimble matcher that succeeds when the actual Collection's count equals /// the expected value -public func haveCount(_ expectedValue: T.IndexDistance) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in +public func haveCount(_ expectedValue: Int) -> Predicate { + return Predicate.define { actualExpression in if let actualValue = try actualExpression.evaluate() { - // swiftlint:disable:next line_length - failureMessage.postfixMessage = "have \(prettyCollectionType(actualValue)) with count \(stringify(expectedValue))" + let message = ExpectationMessage + .expectedCustomValueTo( + "have \(prettyCollectionType(actualValue)) with count \(stringify(expectedValue))", + "\(actualValue.count)" + ) + .appended(details: "Actual Value: \(stringify(actualValue))") + let result = expectedValue == actualValue.count - failureMessage.actualValue = "\(actualValue.count)" - failureMessage.extendedMessage = "Actual Value: \(stringify(actualValue))" - return result + return PredicateResult(bool: result, message: message) } else { - return false + return PredicateResult(status: .fail, message: .fail("")) } - }.requireNonNil + } } /// A Nimble matcher that succeeds when the actual collection's count equals /// the expected value public func haveCount(_ expectedValue: Int) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in + return Predicate { actualExpression in if let actualValue = try actualExpression.evaluate() { - // swiftlint:disable:next line_length - failureMessage.postfixMessage = "have \(prettyCollectionType(actualValue)) with count \(stringify(expectedValue))" + let message = ExpectationMessage + .expectedCustomValueTo( + "have \(prettyCollectionType(actualValue)) with count \(stringify(expectedValue))", + "\(actualValue.count)" + ) + .appended(details: "Actual Value: \(stringify(actualValue))") + let result = expectedValue == actualValue.count - failureMessage.actualValue = "\(actualValue.count)" - failureMessage.extendedMessage = "Actual Value: \(stringify(actualValue))" - return result + return PredicateResult(bool: result, message: message) } else { - return false + return PredicateResult(status: .fail, message: .fail("")) } } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func haveCountMatcher(_ expected: NSNumber) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func haveCountMatcher(_ expected: NSNumber) -> NMBMatcher { + return NMBPredicate { actualExpression in let location = actualExpression.location - let actualValue = try! actualExpression.evaluate() + let actualValue = try actualExpression.evaluate() if let value = actualValue as? NMBCollection { let expr = Expression(expression: ({ value as NMBCollection}), location: location) - return try! haveCount(expected.intValue).matches(expr, failureMessage: failureMessage) - } else if let actualValue = actualValue { - failureMessage.postfixMessage = "get type of NSArray, NSSet, NSDictionary, or NSHashTable" - failureMessage.actualValue = "\(String(describing: type(of: actualValue)))" + return try haveCount(expected.intValue).satisfies(expr).toObjectiveC() + } + + let message: ExpectationMessage + if let actualValue = actualValue { + message = ExpectationMessage.expectedCustomValueTo( + "get type of NSArray, NSSet, NSDictionary, or NSHashTable", + "\(String(describing: type(of: actualValue)))" + ) + } else { + message = ExpectationMessage + .expectedActualValueTo("have a collection with count \(stringify(expected.intValue))") + .appendedBeNilHint() } - return false + return NMBPredicateResult(status: .fail, message: message.toObjectiveC()) } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift index 1e5762f6..dbcff09e 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift @@ -3,26 +3,25 @@ import Foundation /// A Nimble matcher that succeeds when the actual string satisfies the regular expression /// described by the expected string. public func match(_ expectedValue: String?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "match <\(stringify(expectedValue))>" - + return Predicate.simple("match <\(stringify(expectedValue))>") { actualExpression in if let actual = try actualExpression.evaluate() { if let regexp = expectedValue { - return actual.range(of: regexp, options: .regularExpression) != nil + let bool = actual.range(of: regexp, options: .regularExpression) != nil + return PredicateStatus(bool: bool) } } - return false - }.requireNonNil + return .fail + } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func matchMatcher(_ expected: NSString) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + return NMBPredicate { actualExpression in let actual = actualExpression.cast { $0 as? String } - return try! match(expected.description).matches(actual, failureMessage: failureMessage) + return try match(expected.description).satisfies(actual).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift index 9c86fb7b..4ad71d4f 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift @@ -6,16 +6,24 @@ import Foundation /// Errors are tried to be compared by their implementation of Equatable, /// otherwise they fallback to comparison by _domain and _code. public func matchError(_ error: T) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - let actualError: Error? = try actualExpression.evaluate() + return Predicate.define { actualExpression in + let actualError = try actualExpression.evaluate() + + let failureMessage = FailureMessage() + setFailureMessageForError( + failureMessage, + postfixMessageVerb: "match", + actualError: actualError, + error: error + ) - setFailureMessageForError(failureMessage, postfixMessageVerb: "match", actualError: actualError, error: error) var matches = false if let actualError = actualError, errorMatchesExpectedError(actualError, expectedError: error) { matches = true } - return matches - }.requireNonNil + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) + } } /// A Nimble matcher that succeeds when the actual expression evaluates to an @@ -24,35 +32,45 @@ public func matchError(_ error: T) -> Predicate { /// Errors are tried to be compared by their implementation of Equatable, /// otherwise they fallback to comparision by _domain and _code. public func matchError(_ error: T) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - let actualError: Error? = try actualExpression.evaluate() + return Predicate.define { actualExpression in + let actualError = try actualExpression.evaluate() - setFailureMessageForError(failureMessage, postfixMessageVerb: "match", actualError: actualError, error: error) + let failureMessage = FailureMessage() + setFailureMessageForError( + failureMessage, + postfixMessageVerb: "match", + actualError: actualError, + error: error + ) var matches = false if let actualError = actualError as? T, error == actualError { matches = true } - return matches - }.requireNonNil + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) + } } /// A Nimble matcher that succeeds when the actual expression evaluates to an /// error of the specified type public func matchError(_ errorType: T.Type) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - let actualError: Error? = try actualExpression.evaluate() + return Predicate.define { actualExpression in + let actualError = try actualExpression.evaluate() + let failureMessage = FailureMessage() setFailureMessageForError( failureMessage, postfixMessageVerb: "match", actualError: actualError, errorType: errorType ) + var matches = false if actualError as? T != nil { matches = true } - return matches - }.requireNonNil + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) + } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift index 82f3cf03..21ffd771 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift @@ -1,6 +1,6 @@ import Foundation // `CGFloat` is in Foundation (swift-corelibs-foundation) on Linux. -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) import CoreGraphics #endif @@ -18,21 +18,21 @@ extension Matcher { } var toClosure: (Expression, FailureMessage, Bool) throws -> Bool { - return ({ expr, msg, expectedResult in + return { expr, msg, expectedResult in if expectedResult { return try self.matches(expr, failureMessage: msg) } else { return try self.doesNotMatch(expr, failureMessage: msg) } - }) + } } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) /// Objective-C interface to the Swift variant of Matcher. @objc public protocol NMBMatcher { - func matches(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool - func doesNotMatch(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool + func matches(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool + func doesNotMatch(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool } #endif @@ -41,7 +41,8 @@ public protocol NMBContainer { func contains(_ anObject: Any) -> Bool } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) +// swiftlint:disable:next todo // FIXME: NSHashTable can not conform to NMBContainer since swift-DEVELOPMENT-SNAPSHOT-2016-04-25-a //extension NSHashTable : NMBContainer {} // Corelibs Foundation does not include this class yet #endif @@ -54,7 +55,7 @@ public protocol NMBCollection { var count: Int { get } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NSHashTable: NMBCollection {} // Corelibs Foundation does not include these classes yet extension NSMapTable: NMBCollection {} #endif @@ -131,24 +132,28 @@ extension NSDate: TestOutputStringConvertible { /// beGreaterThan(), beGreaterThanOrEqualTo(), and equal() matchers. /// /// Types that conform to Swift's Comparable protocol will work implicitly too -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc public protocol NMBComparable { func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult } -#else +#elseif !compiler(>=5.1) // This should become obsolete once Corelibs Foundation adds Comparable conformance to NSNumber public protocol NMBComparable { func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult } #endif +#if canImport(Darwin) || !compiler(>=5.1) extension NSNumber: NMBComparable { public func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult { + // swiftlint:disable:next force_cast return compare(otherObject as! NSNumber) } } extension NSString: NMBComparable { public func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult { + // swiftlint:disable:next force_cast return compare(otherObject as! String) } } +#endif diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift index ee886f1c..5e8bee3d 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift @@ -1,40 +1,9 @@ import Foundation -// A workaround to SR-6419. -extension NotificationCenter { -#if !(os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) - #if swift(>=4.0) - #if swift(>=4.0.2) - #else - func addObserver(forName name: Notification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Void) -> NSObjectProtocol { - return addObserver(forName: name, object: obj, queue: queue, usingBlock: block) - } - #endif - #elseif swift(>=3.2) - #if swift(>=3.2.2) - #else - // swiftlint:disable:next line_length - func addObserver(forName name: Notification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Void) -> NSObjectProtocol { - return addObserver(forName: name, object: obj, queue: queue, usingBlock: block) - } - #endif - #else - // swiftlint:disable:next line_length - func addObserver(forName name: Notification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Void) -> NSObjectProtocol { - return addObserver(forName: name, object: obj, queue: queue, usingBlock: block) - } - #endif -#endif -} - internal class NotificationCollector { private(set) var observedNotifications: [Notification] private let notificationCenter: NotificationCenter - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - private var token: AnyObject? - #else private var token: NSObjectProtocol? - #endif required init(notificationCenter: NotificationCenter) { self.notificationCenter = notificationCenter @@ -43,27 +12,60 @@ internal class NotificationCollector { func startObserving() { // swiftlint:disable:next line_length - self.token = self.notificationCenter.addObserver(forName: nil, object: nil, queue: nil, using: { [weak self] n in + self.token = self.notificationCenter.addObserver(forName: nil, object: nil, queue: nil) { [weak self] notification in // linux-swift gets confused by .append(n) - self?.observedNotifications.append(n) - }) + self?.observedNotifications.append(notification) + } } deinit { - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - if let token = self.token { - self.notificationCenter.removeObserver(token) - } - #else - if let token = self.token as? AnyObject { - self.notificationCenter.removeObserver(token) - } - #endif + if let token = self.token { + self.notificationCenter.removeObserver(token) + } } } private let mainThread = pthread_self() +public func postNotifications( + _ predicate: Predicate<[Notification]>, + fromNotificationCenter center: NotificationCenter = .default +) -> Predicate { + _ = mainThread // Force lazy-loading of this value + let collector = NotificationCollector(notificationCenter: center) + collector.startObserving() + var once: Bool = false + + return Predicate { actualExpression in + let collectorNotificationsExpression = Expression( + memoizedExpression: { _ in + return collector.observedNotifications + }, + location: actualExpression.location, + withoutCaching: true + ) + + assert(pthread_equal(mainThread, pthread_self()) != 0, "Only expecting closure to be evaluated on main thread.") + if !once { + once = true + _ = try actualExpression.evaluate() + } + + let actualValue: String + if collector.observedNotifications.isEmpty { + actualValue = "no notifications" + } else { + actualValue = "<\(stringify(collector.observedNotifications))>" + } + + var result = try predicate.satisfies(collectorNotificationsExpression) + result.message = result.message.replacedExpectation { message in + return .expectedCustomValueTo(message.expectedMessage, actualValue) + } + return result + } +} + public func postNotifications( _ notificationsMatcher: T, fromNotificationCenter center: NotificationCenter = .default) @@ -74,7 +76,8 @@ public func postNotifications( let collector = NotificationCollector(notificationCenter: center) collector.startObserving() var once: Bool = false - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in + + return Predicate { actualExpression in let collectorNotificationsExpression = Expression(memoizedExpression: { _ in return collector.observedNotifications }, location: actualExpression.location, withoutCaching: true) @@ -85,12 +88,13 @@ public func postNotifications( _ = try actualExpression.evaluate() } + let failureMessage = FailureMessage() let match = try notificationsMatcher.matches(collectorNotificationsExpression, failureMessage: failureMessage) if collector.observedNotifications.isEmpty { failureMessage.actualValue = "no notifications" } else { failureMessage.actualValue = "<\(stringify(collector.observedNotifications))>" } - return match + return PredicateResult(bool: match, message: failureMessage.toExpectationMessage()) } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Predicate.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Predicate.swift index e48d164e..2604411a 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Predicate.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Predicate.swift @@ -82,8 +82,8 @@ extension Predicate { } } -// Question: Should this be exposed? It's safer to not for now and decide later. -internal enum ExpectationStyle { +// The Expectation style intended for comparison to a PredicateStatus. +public enum ExpectationStyle { case toMatch, toNotMatch } @@ -91,9 +91,9 @@ internal enum ExpectationStyle { /// predicate. public struct PredicateResult { /// Status indicates if the predicate matches, does not match, or fails. - var status: PredicateStatus + public var status: PredicateStatus /// The error message that can be displayed if it does not match - var message: ExpectationMessage + public var message: ExpectationMessage /// Constructs a new PredicateResult with a given status and error message public init(status: PredicateStatus, message: ExpectationMessage) { @@ -108,7 +108,7 @@ public struct PredicateResult { } /// Converts the result to a boolean based on what the expectation intended - internal func toBoolean(expectation style: ExpectationStyle) -> Bool { + public func toBoolean(expectation style: ExpectationStyle) -> Bool { return status.toBoolean(expectation: style) } } @@ -218,6 +218,7 @@ extension Predicate: Matcher { extension Predicate { // Someday, make this public? Needs documentation internal func after(f: @escaping (Expression, PredicateResult) throws -> PredicateResult) -> Predicate { + // swiftlint:disable:previous identifier_name return Predicate { actual -> PredicateResult in let result = try self.satisfies(actual) return try f(actual, result) @@ -241,8 +242,8 @@ extension Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) -public typealias PredicateBlock = (_ actualExpression: Expression) -> NMBPredicateResult +#if canImport(Darwin) +public typealias PredicateBlock = (_ actualExpression: Expression) throws -> NMBPredicateResult public class NMBPredicate: NSObject { private let predicate: PredicateBlock @@ -251,20 +252,24 @@ public class NMBPredicate: NSObject { self.predicate = predicate } - func satisfies(_ expression: @escaping () -> NSObject!, location: SourceLocation) -> NMBPredicateResult { + func satisfies(_ expression: @escaping () throws -> NSObject?, location: SourceLocation) -> NMBPredicateResult { let expr = Expression(expression: expression, location: location) - return self.predicate(expr) + do { + return try self.predicate(expr) + } catch let error { + return PredicateResult(status: .fail, message: .fail("unexpected error thrown: <\(error)>")).toObjectiveC() + } } } extension NMBPredicate: NMBMatcher { - public func matches(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + public func matches(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let result = satisfies(actualBlock, location: location).toSwift() result.message.update(failureMessage: failureMessage) return result.status.toBoolean(expectation: .toMatch) } - public func doesNotMatch(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + public func doesNotMatch(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let result = satisfies(actualBlock, location: location).toSwift() result.message.update(failureMessage: failureMessage) return result.status.toBoolean(expectation: .toNotMatch) @@ -307,7 +312,7 @@ final public class NMBPredicateStatus: NSObject { public static let doesNotMatch: NMBPredicateStatus = NMBPredicateStatus(status: 1) public static let fail: NMBPredicateStatus = NMBPredicateStatus(status: 2) - public override var hashValue: Int { return self.status.hashValue } + public override var hash: Int { return self.status.hashValue } public override func isEqual(_ object: Any?) -> Bool { guard let otherPredicate = object as? NMBPredicateStatus else { diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift index 60553bda..4dd93044 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift @@ -1,7 +1,7 @@ import Foundation // This matcher requires the Objective-C, and being built by Xcode rather than the Swift Package Manager -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE /// A Nimble matcher that succeeds when the actual expression raises an /// exception with the specified name, reason, and/or userInfo. @@ -17,18 +17,21 @@ public func raiseException( reason: String? = nil, userInfo: NSDictionary? = nil, closure: ((NSException) -> Void)? = nil) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var exception: NSException? let capture = NMBExceptionCapture(handler: ({ e in exception = e }), finally: nil) - capture.tryBlock { - _ = try! actualExpression.evaluate() - return + do { + try capture.tryBlockThrows { + _ = try actualExpression.evaluate() + } + } catch { + return PredicateResult(status: .fail, message: .fail("unexpected error thrown: <\(error)>")) } + let failureMessage = FailureMessage() setFailureMessageForException( failureMessage, exception: exception, @@ -37,13 +40,15 @@ public func raiseException( userInfo: userInfo, closure: closure ) - return exceptionMatchesNonNilFieldsOrClosure( + + let matches = exceptionMatchesNonNilFieldsOrClosure( exception, named: named, reason: reason, userInfo: userInfo, closure: closure ) + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -117,10 +122,12 @@ internal func exceptionMatchesNonNilFieldsOrClosure( } public class NMBObjCRaiseExceptionMatcher: NSObject, NMBMatcher { + // swiftlint:disable identifier_name internal var _name: String? internal var _reason: String? internal var _userInfo: NSDictionary? internal var _block: ((NSException) -> Void)? + // swiftlint:enable identifier_name internal init(name: String?, reason: String?, userInfo: NSDictionary?, block: ((NSException) -> Void)?) { _name = name @@ -129,64 +136,72 @@ public class NMBObjCRaiseExceptionMatcher: NSObject, NMBMatcher { _block = block } - @objc public func matches(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + @objc public func matches(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let block: () -> Any? = ({ _ = actualBlock(); return nil }) let expr = Expression(expression: block, location: location) - return try! raiseException( - named: _name, - reason: _reason, - userInfo: _userInfo, - closure: _block - ).matches(expr, failureMessage: failureMessage) + do { + let predicate = raiseException( + named: _name, + reason: _reason, + userInfo: _userInfo, + closure: _block + ) + let result = try predicate.satisfies(expr) + result.message.update(failureMessage: failureMessage) + return result.toBoolean(expectation: .toMatch) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } } - @objc public func doesNotMatch(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + @objc public func doesNotMatch(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { return !matches(actualBlock, failureMessage: failureMessage, location: location) } @objc public var named: (_ name: String) -> NMBObjCRaiseExceptionMatcher { - return ({ name in + return { name in return NMBObjCRaiseExceptionMatcher( name: name, reason: self._reason, userInfo: self._userInfo, block: self._block ) - }) + } } @objc public var reason: (_ reason: String?) -> NMBObjCRaiseExceptionMatcher { - return ({ reason in + return { reason in return NMBObjCRaiseExceptionMatcher( name: self._name, reason: reason, userInfo: self._userInfo, block: self._block ) - }) + } } @objc public var userInfo: (_ userInfo: NSDictionary?) -> NMBObjCRaiseExceptionMatcher { - return ({ userInfo in + return { userInfo in return NMBObjCRaiseExceptionMatcher( name: self._name, reason: self._reason, userInfo: userInfo, block: self._block ) - }) + } } @objc public var satisfyingBlock: (_ block: ((NSException) -> Void)?) -> NMBObjCRaiseExceptionMatcher { - return ({ block in + return { block in return NMBObjCRaiseExceptionMatcher( name: self._name, reason: self._reason, userInfo: self._userInfo, block: block ) - }) + } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift new file mode 100644 index 00000000..15de060b --- /dev/null +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift @@ -0,0 +1,86 @@ +import Foundation + +/// A Nimble matcher that succeeds when the actual value matches with all of the matchers +/// provided in the variable list of matchers. +public func satisfyAllOf(_ predicates: Predicate...) -> Predicate { + return satisfyAllOf(predicates) +} + +/// A Nimble matcher that succeeds when the actual value matches with all of the matchers +/// provided in the variable list of matchers. +public func satisfyAllOf(_ matchers: U...) -> Predicate + where U: Matcher, U.ValueType == T { + return satisfyAllOf(matchers.map { $0.predicate }) +} + +internal func satisfyAllOf(_ predicates: [Predicate]) -> Predicate { + return Predicate.define { actualExpression in + var postfixMessages = [String]() + var matches = true + for predicate in predicates { + let result = try predicate.satisfies(actualExpression) + if result.toBoolean(expectation: .toNotMatch) { + matches = false + } + postfixMessages.append("{\(result.message.expectedMessage)}") + } + + var msg: ExpectationMessage + if let actualValue = try actualExpression.evaluate() { + msg = .expectedCustomValueTo( + "match all of: " + postfixMessages.joined(separator: ", and "), + "\(actualValue)" + ) + } else { + msg = .expectedActualValueTo( + "match all of: " + postfixMessages.joined(separator: ", and ") + ) + } + + return PredicateResult(bool: matches, message: msg) + } +} + +public func && (left: Predicate, right: Predicate) -> Predicate { + return satisfyAllOf(left, right) +} + +#if canImport(Darwin) +extension NMBObjCMatcher { + @objc public class func satisfyAllOfMatcher(_ matchers: [NMBMatcher]) -> NMBPredicate { + return NMBPredicate { actualExpression in + if matchers.isEmpty { + return NMBPredicateResult( + status: NMBPredicateStatus.fail, + message: NMBExpectationMessage( + fail: "satisfyAllOf must be called with at least one matcher" + ) + ) + } + + var elementEvaluators = [Predicate]() + for matcher in matchers { + let elementEvaluator = Predicate { expression in + if let predicate = matcher as? NMBPredicate { + // swiftlint:disable:next line_length + return predicate.satisfies({ try expression.evaluate() }, location: actualExpression.location).toSwift() + } else { + let failureMessage = FailureMessage() + let success = matcher.matches( + // swiftlint:disable:next force_try + { try! expression.evaluate() }, + failureMessage: failureMessage, + location: actualExpression.location + ) + return PredicateResult(bool: success, message: failureMessage.toExpectationMessage()) + } + } + + elementEvaluators.append(elementEvaluator) + } + + return try satisfyAllOf(elementEvaluators).satisfies(actualExpression).toObjectiveC() + } + } +} +#endif diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift index d02a0ffe..e8b379f1 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift @@ -1,36 +1,20 @@ import Foundation +/// A Nimble matcher that succeeds when the actual value matches with any of the matchers +/// provided in the variable list of matchers. +public func satisfyAnyOf(_ predicates: Predicate...) -> Predicate { + return satisfyAnyOf(predicates) +} + /// A Nimble matcher that succeeds when the actual value matches with any of the matchers /// provided in the variable list of matchers. public func satisfyAnyOf(_ matchers: U...) -> Predicate where U: Matcher, U.ValueType == T { - return satisfyAnyOf(matchers) -} - -/// Deprecated. Please use `satisfyAnyOf(_) -> Predicate` instead. -internal func satisfyAnyOf(_ matchers: [U]) -> Predicate - where U: Matcher, U.ValueType == T { - return NonNilMatcherFunc { actualExpression, failureMessage in - let postfixMessages = NSMutableArray() - var matches = false - for matcher in matchers { - if try matcher.matches(actualExpression, failureMessage: failureMessage) { - matches = true - } - postfixMessages.add(NSString(string: "{\(failureMessage.postfixMessage)}")) - } - - failureMessage.postfixMessage = "match one of: " + postfixMessages.componentsJoined(by: ", or ") - if let actualValue = try actualExpression.evaluate() { - failureMessage.actualValue = "\(actualValue)" - } - - return matches - }.predicate + return satisfyAnyOf(matchers.map { $0.predicate }) } internal func satisfyAnyOf(_ predicates: [Predicate]) -> Predicate { - return Predicate { actualExpression in + return Predicate.define { actualExpression in var postfixMessages = [String]() var matches = false for predicate in predicates { @@ -53,11 +37,8 @@ internal func satisfyAnyOf(_ predicates: [Predicate]) -> Predicate { ) } - return PredicateResult( - status: PredicateStatus(bool: matches), - message: msg - ) - }.requireNonNil + return PredicateResult(bool: matches, message: msg) + } } public func || (left: Predicate, right: Predicate) -> Predicate { @@ -72,7 +53,7 @@ public func || (left: MatcherFunc, right: MatcherFunc) -> Predicate return satisfyAnyOf(left, right) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func satisfyAnyOfMatcher(_ matchers: [NMBMatcher]) -> NMBPredicate { return NMBPredicate { actualExpression in @@ -90,11 +71,15 @@ extension NMBObjCMatcher { let elementEvaluator = Predicate { expression in if let predicate = matcher as? NMBPredicate { // swiftlint:disable:next line_length - return predicate.satisfies({ try! expression.evaluate() }, location: actualExpression.location).toSwift() + return predicate.satisfies({ try expression.evaluate() }, location: actualExpression.location).toSwift() } else { let failureMessage = FailureMessage() - // swiftlint:disable:next line_length - let success = matcher.matches({ try! expression.evaluate() }, failureMessage: failureMessage, location: actualExpression.location) + let success = matcher.matches( + // swiftlint:disable:next force_try + { try! expression.evaluate() }, + failureMessage: failureMessage, + location: actualExpression.location + ) return PredicateResult(bool: success, message: failureMessage.toExpectationMessage()) } } @@ -102,7 +87,7 @@ extension NMBObjCMatcher { elementEvaluators.append(elementEvaluator) } - return try! satisfyAnyOf(elementEvaluators).satisfies(actualExpression).toObjectiveC() + return try satisfyAnyOf(elementEvaluators).satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift index a530c60f..53d9191a 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift @@ -1,13 +1,11 @@ import Foundation public func throwAssertion() -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - #if arch(x86_64) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - failureMessage.postfixMessage = "throw an assertion" - failureMessage.actualValue = nil - - var succeeded = true + return Predicate { actualExpression in + #if arch(x86_64) && canImport(Darwin) && !SWIFT_PACKAGE + let message = ExpectationMessage.expectedTo("throw an assertion") + var actualError: Error? let caughtException: BadInstructionException? = catchBadInstruction { #if os(tvOS) if !NimbleEnvironment.activeInstance.suppressTVOSAssertionWarning { @@ -27,30 +25,27 @@ public func throwAssertion() -> Predicate { #endif do { try actualExpression.evaluate() - } catch let error { - succeeded = false - failureMessage.postfixMessage += "; threw error instead <\(error)>" + } catch { + actualError = error } } - if !succeeded { - return false - } - - if caughtException == nil { - return false + if let actualError = actualError { + return PredicateResult( + bool: false, + message: message.appended(message: "; threw error instead <\(actualError)>") + ) + } else { + return PredicateResult(bool: caughtException != nil, message: message) } - - return true #elseif SWIFT_PACKAGE fatalError("The throwAssertion Nimble matcher does not currently support Swift CLI." + " You can silence this error by placing the test case inside an #if !SWIFT_PACKAGE" + " conditional statement") #else fatalError("The throwAssertion Nimble matcher can only run on x86_64 platforms with " + - "Objective-C (e.g. Mac, iPhone 5s or later simulators). You can silence this error " + - "by placing the test case inside an #if arch(x86_64) or (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) conditional statement") - // swiftlint:disable:previous line_length + "Objective-C (e.g. macOS, iPhone 5s or later simulators). You can silence this error " + + "by placing the test case inside an #if arch(x86_64) or canImport(Darwin) conditional statement") #endif } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift index 872ca5c2..d294ba39 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift @@ -12,22 +12,19 @@ import Foundation /// nil arguments indicates that the matcher should not attempt to match against /// that parameter. public func throwError() -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } - failureMessage.postfixMessage = "throw any error" if let actualError = actualError { - failureMessage.actualValue = "<\(actualError)>" + return PredicateResult(bool: true, message: .expectedCustomValueTo("throw any error", "<\(actualError)>")) } else { - failureMessage.actualValue = "no error" + return PredicateResult(bool: false, message: .expectedCustomValueTo("throw any error", "no error")) } - return actualError != nil } } @@ -43,15 +40,15 @@ public func throwError() -> Predicate { /// nil arguments indicates that the matcher should not attempt to match against /// that parameter. public func throwError(_ error: T, closure: ((Error) -> Void)? = nil) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError( failureMessage, actualError: actualError, @@ -59,20 +56,23 @@ public func throwError(_ error: T, closure: ((Error) -> Void)? = nil) errorType: nil, closure: closure ) + var matches = false if let actualError = actualError, errorMatchesExpectedError(actualError, expectedError: error) { matches = true + if let closure = closure { let assertions = gatherFailingExpectations { closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } } - return matches + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -88,15 +88,15 @@ public func throwError(_ error: T, closure: ((Error) -> Void)? = nil) /// nil arguments indicates that the matcher should not attempt to match against /// that parameter. public func throwError(_ error: T, closure: ((T) -> Void)? = nil) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError( failureMessage, actualError: actualError, @@ -104,6 +104,7 @@ public func throwError(_ error: T, closure: ((T) -> Void)? errorType: nil, closure: closure ) + var matches = false if let actualError = actualError as? T, error == actualError { matches = true @@ -113,12 +114,13 @@ public func throwError(_ error: T, closure: ((T) -> Void)? closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } } - return matches + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -136,15 +138,15 @@ public func throwError(_ error: T, closure: ((T) -> Void)? public func throwError( errorType: T.Type, closure: ((T) -> Void)? = nil) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError( failureMessage, actualError: actualError, @@ -152,16 +154,18 @@ public func throwError( errorType: errorType, closure: closure ) + var matches = false if let actualError = actualError { matches = true + if let actualError = actualError as? T { if let closure = closure { let assertions = gatherFailingExpectations { closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } @@ -176,14 +180,14 @@ public func throwError( } } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } } } - return matches + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -195,15 +199,15 @@ public func throwError( /// /// The closure only gets called when an error was thrown. public func throwError(closure: @escaping ((Error) -> Void)) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError(failureMessage, actualError: actualError, closure: closure) var matches = false @@ -214,11 +218,12 @@ public func throwError(closure: @escaping ((Error) -> Void)) -> Predicate { closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } - return matches + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -230,15 +235,15 @@ public func throwError(closure: @escaping ((Error) -> Void)) -> Predicate { /// /// The closure only gets called when an error was thrown. public func throwError(closure: @escaping ((T) -> Void)) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError(failureMessage, actualError: actualError, closure: closure) var matches = false @@ -249,10 +254,11 @@ public func throwError(closure: @escaping ((T) -> Void)) -> Predicate< closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } - return matches + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Utils/Async.swift b/Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift similarity index 93% rename from Example/Pods/Nimble/Sources/Nimble/Utils/Async.swift rename to Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift index c77a8fce..abe1237e 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Utils/Async.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift @@ -2,7 +2,7 @@ import CoreFoundation import Dispatch import Foundation -#if !(os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) +#if canImport(CDispatch) import CDispatch #endif @@ -32,11 +32,7 @@ internal class AssertionWaitLock: WaitLock { func acquireWaitingLock(_ fnName: String, file: FileString, line: UInt) { let info = WaitingInfo(name: fnName, file: file, lineNumber: line) - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - let isMainThread = Thread.isMainThread - #else - let isMainThread = _CFIsMainThread() - #endif + let isMainThread = Thread.isMainThread nimblePrecondition( isMainThread, "InvalidNimbleAPIUsage", @@ -45,10 +41,15 @@ internal class AssertionWaitLock: WaitLock { nimblePrecondition( currentWaiter == nil, "InvalidNimbleAPIUsage", - "Nested async expectations are not allowed to avoid creating flaky tests.\n\n" + - "The call to\n\t\(info)\n" + - "triggered this exception because\n\t\(currentWaiter!)\n" + - "is currently managing the main run loop." + """ + Nested async expectations are not allowed to avoid creating flaky tests. + + The call to + \t\(info) + triggered this exception because + \t\(currentWaiter!) + is currently managing the main run loop. + """ ) currentWaiter = info } @@ -180,25 +181,18 @@ internal class AwaitPromiseBuilder { // checked. // // In addition, stopping the run loop is used to halt code executed on the main run loop. - #if swift(>=4.0) trigger.timeoutSource.schedule( deadline: DispatchTime.now() + timeoutInterval, repeating: .never, leeway: timeoutLeeway ) - #else - trigger.timeoutSource.scheduleOneshot( - deadline: DispatchTime.now() + timeoutInterval, - leeway: timeoutLeeway - ) - #endif trigger.timeoutSource.setEventHandler { guard self.promise.asyncResult.isIncomplete() else { return } let timedOutSem = DispatchSemaphore(value: 0) let semTimedOutOrBlocked = DispatchSemaphore(value: 0) semTimedOutOrBlocked.signal() let runLoop = CFRunLoopGetMain() - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + #if canImport(Darwin) let runLoopMode = CFRunLoopMode.defaultMode.rawValue #else let runLoopMode = kCFRunLoopDefaultMode @@ -263,7 +257,11 @@ internal class AwaitPromiseBuilder { self.trigger.timeoutSource.resume() while self.promise.asyncResult.isIncomplete() { // Stopping the run loop does not work unless we run only 1 mode + #if (swift(>=4.2) && canImport(Darwin)) || compiler(>=5.0) + _ = RunLoop.current.run(mode: .default, before: .distantFuture) + #else _ = RunLoop.current.run(mode: .defaultRunLoopMode, before: .distantFuture) + #endif } self.trigger.timeoutSource.cancel() @@ -329,11 +327,7 @@ internal class Awaiter { let asyncSource = createTimerSource(asyncQueue) let trigger = AwaitTrigger(timeoutSource: timeoutSource, actionSource: asyncSource) { let interval = DispatchTimeInterval.nanoseconds(Int(pollInterval * TimeInterval(NSEC_PER_SEC))) - #if swift(>=4.0) asyncSource.schedule(deadline: .now(), repeating: interval, leeway: pollLeeway) - #else - asyncSource.scheduleRepeating(deadline: .now(), interval: interval, leeway: pollLeeway) - #endif asyncSource.setEventHandler { do { if let result = try closure() { diff --git a/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift b/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift index 6c5126a4..c87af761 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift @@ -1,12 +1,14 @@ import Foundation +#if !swift(>=4.2) extension Sequence { - internal func all(_ fn: (Iterator.Element) -> Bool) -> Bool { + internal func allSatisfy(_ predicate: (Element) throws -> Bool) rethrows -> Bool { for item in self { - if !fn(item) { + if try !predicate(item) { return false } } return true } } +#endif diff --git a/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift b/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift index cd6de201..7caea26a 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift @@ -1,12 +1,7 @@ import Foundation internal func identityAsString(_ value: Any?) -> String { - let anyObject: AnyObject? -#if os(Linux) - anyObject = value as? AnyObject -#else - anyObject = value as AnyObject? -#endif + let anyObject = value as AnyObject? if let value = anyObject { return NSString(format: "<%p>", unsafeBitCast(value, to: Int.self)).description } else { @@ -121,12 +116,7 @@ extension String: TestOutputStringConvertible { extension Data: TestOutputStringConvertible { public var testDescription: String { - #if os(Linux) - // FIXME: Swift on Linux triggers a segfault when calling NSData's hash() (last checked on 03-11-16) - return "Data" - #else - return "Data" - #endif + return "Data" } } @@ -144,7 +134,9 @@ extension Data: TestOutputStringConvertible { /// will return the result of constructing a string from the value. /// /// - SeeAlso: `TestOutputStringConvertible` -public func stringify(_ value: T) -> String { +public func stringify(_ value: T?) -> String { + guard let value = value else { return "nil" } + if let value = value as? TestOutputStringConvertible { return value.testDescription } @@ -156,15 +148,7 @@ public func stringify(_ value: T) -> String { return String(describing: value) } -/// -SeeAlso: `stringify(value: T)` -public func stringify(_ value: T?) -> String { - if let unboxed = value { - return stringify(unboxed) - } - return "nil" -} - -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc public class NMBStringer: NSObject { @objc public class func stringify(_ obj: Any?) -> String { return Nimble.stringify(obj) diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h b/Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h deleted file mode 100644 index 5d416e47..00000000 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import - -SWIFT_CLASS("_TtC6Nimble22CurrentTestCaseTracker") -@interface CurrentTestCaseTracker : NSObject -+ (CurrentTestCaseTracker *)sharedInstance; -@end - -@interface CurrentTestCaseTracker (Register) @end diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h b/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h index caa3f7c7..9170541b 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h @@ -350,6 +350,12 @@ NIMBLE_EXPORT id NMB_satisfyAnyOfWithMatchers(id matchers); #define satisfyAnyOf(...) NMB_satisfyAnyOf(__VA_ARGS__) #endif +NIMBLE_EXPORT id NMB_satisfyAllOfWithMatchers(id matchers); +#define NMB_satisfyAllOf(...) NMB_satisfyAllOfWithMatchers(@[__VA_ARGS__]) +#ifndef NIMBLE_DISABLE_SHORT_SYNTAX +#define satisfyAllOf(...) NMB_satisfyAllOf(__VA_ARGS__) +#endif + // In order to preserve breakpoint behavior despite using macros to fill in __FILE__ and __LINE__, // define a builder that populates __FILE__ and __LINE__, and returns a block that takes timeout // and action arguments. See https://github.com/Quick/Quick/pull/185 for details. diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m b/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m index 5a145b81..670415b4 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m @@ -1,13 +1,10 @@ #import -#import - -SWIFT_CLASS("_TtC6Nimble7NMBWait") -@interface NMBWait : NSObject - -+ (void)untilTimeout:(NSTimeInterval)timeout file:(NSString *)file line:(NSUInteger)line action:(void (^ _Nonnull)(void (^ _Nonnull)(void)))action; -+ (void)untilFile:(NSString *)file line:(NSUInteger)line action:(void (^ _Nonnull)(void (^ _Nonnull)(void)))action; -@end +#if __has_include("Nimble-Swift.h") +#import "Nimble-Swift.h" +#else +#import +#endif NS_ASSUME_NONNULL_BEGIN @@ -141,6 +138,10 @@ NIMBLE_EXPORT void NMB_failWithMessage(NSString *msg, NSString *file, NSUInteger return [NMBObjCMatcher satisfyAnyOfMatcher:matchers]; } +NIMBLE_EXPORT id NMB_satisfyAllOfWithMatchers(id matchers) { + return [NMBObjCMatcher satisfyAllOfMatcher:matchers]; +} + NIMBLE_EXPORT NMBObjCRaiseExceptionMatcher *NMB_raiseException() { return [NMBObjCMatcher raiseExceptionMatcher]; } diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m b/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m index 33810470..52684b70 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m @@ -16,7 +16,7 @@ - (nonnull instancetype)initWithHandler:(void(^ _Nullable)(NSException * _Nonnul return self; } -- (void)tryBlock:(void(^ _Nonnull)(void))unsafeBlock { +- (void)tryBlock:(__attribute__((noescape)) void(^ _Nonnull)(void))unsafeBlock { @try { unsafeBlock(); } diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m b/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m index 329d39a0..31a80d6f 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m @@ -1,5 +1,10 @@ #import "NMBStringify.h" + +#if __has_include("Nimble-Swift.h") +#import "Nimble-Swift.h" +#else #import +#endif NSString *_Nonnull NMBStringify(id _Nullable anyObject) { return [NMBStringer stringify:anyObject]; diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m b/Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m index 35f26fd0..fa5030a7 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m @@ -1,7 +1,12 @@ -#import "CurrentTestCaseTracker.h" #import #import +#if __has_include("Nimble-Swift.h") +#import "Nimble-Swift.h" +#else +#import +#endif + #pragma mark - Method Swizzling /// Swaps the implementations between two instance methods. diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index dc02456e..10b72909 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1895 +7,1826 @@ objects = { /* Begin PBXBuildFile section */ - 00E21FAD1C8386B5CBF9B600D6B2FC3D /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB73EB9E85D7D6FC1565824340174109 /* Array+Foundation.swift */; }; - 00E61F1B0075856EA41049A26853A979 /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C817F6E4C472F8DBFE0D2374592DAD /* firstly.swift */; }; - 010D6D3F3FF64A6AD0E20DFB3890F7E5 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70E47F38AABFC7DBE9A23A2956805AC0 /* PKCS7.swift */; }; - 0253281C1508F9F07EAC56867A85B84F /* ContractPromiseExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07781FE39FF8DD2FDD5BECE64FCC5336 /* ContractPromiseExtensions.swift */; }; - 03F1E38183821E4D2FFE22CD9EA0BB04 /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24B0FA2F32E9CC0F059E733D5C8A1060 /* when.swift */; }; - 04056851010D25CFD03211572FEAEF64 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 617CB09C07A6F911FBA167002FF3406A /* Primitive Types.swift */; }; - 04DF97C460DB8B44110886A6D0A4EEBA /* EthereumSyncStatusObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = E911D61F09C251FF0019675757852705 /* EthereumSyncStatusObject.swift */; }; - 04E98ED18372766BDEB04F99EB585323 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = F15245FD346E4E52A7F9F2DF3745CB0E /* lax_der_parsing.c */; }; - 05B6C22B055F33FD607845F2B85F8E0E /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = E277D46647CB78AA0E4A062CD98AD577 /* AES.swift */; }; - 06446DAC588EB1B2AAE8C25964300219 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14FAE077FEC28BD2B0C863CE8F4A9A00 /* DSL.swift */; }; - 08B35AA80FE1693A98F83B918791ED91 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = C93A64B331B051DF352392EF5AEF14D4 /* Blowfish.swift */; }; - 08D73A1F94C4C63F164EDB3D0603A9DB /* secp256k1.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D2E87A161DA659E588E4B537FF00659 /* secp256k1.swift-dummy.m */; }; - 0A1D3BEF0EB59CBEA42373C6CC8769ED /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D45897FA62EF91CC1C6C9971C05F753 /* dispatch_promise.m */; }; - 0A2CA8B0DD7E300ABFCF1956E6B58248 /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = B4DDC8CBE33C6900D22158EC10DB45FF /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0C9F76EAB3D5C99ED2EAD2C422D53856 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07EEA37F17591E77ACB56A8FEFCECE1E /* Floating Point Conversion.swift */; }; - 0CC9A2D905D86E2CF53A02018482D6ED /* Bytes+UInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19940AEE0A339B9B07F9D74F29EDC0A6 /* Bytes+UInt.swift */; }; - 0EF0B071FD7ADC777A32B688906C1737 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = C295F177BA5D2892B16F6225BED57C51 /* scratch.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0F27AA95B106D35BF65D1B63A7436E4F /* ABIEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10D102311DEC265BD1CCE9BE1F15939F /* ABIEncoder.swift */; }; - 114E516C64D4FF4D60F9DAB1565BCCD7 /* ABIObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48DCFBC1FCFEA58F0FCAEF3DAA2F3301 /* ABIObject.swift */; }; - 13319D017D26653501E0FA331833EC3C /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9089C05F0FB7FCC2A9E5AA2D22769B7 /* Random.swift */; }; - 13B6CCDC17A99784563BEA8166C47A3E /* RLPDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A899057CC65B61D103FEEAF3BB7FF579 /* RLPDecoder.swift */; }; - 160208415273638E125CBB0E125D075B /* secp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = C48152FC2CA8772914CD242B14BD679F /* secp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1680037F51D3DE1DD96C2C3BE7A4F9CD /* Secp256k1+CTXCreator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61C0358C7851BB89C7BD79D3BC1EDDFE /* Secp256k1+CTXCreator.swift */; }; - 16814C8CB5790CBB8DEFD82D060AE4D2 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 218BCAB72817F7B65EAB7DBFC2528AC2 /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1746F9F515409D3E7B6F4244D065D2E4 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E44DBE7732BD232AE398E8B792D1FFF4 /* AES+Foundation.swift */; }; - 17C8EE7DF3F57C8F99EAF63C6E61EA99 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B975D753A3C28C8B0E65FF526BB9CB0 /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 17F8E260E7B7A42FFCA1E76A67DBAF35 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03D03292919A1681374A7C28D6D6862D /* Addition.swift */; }; - 193FBDB421D0B9AF22918190BBD6FF28 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = C81E2EF53ECA2D72576CD54A52866E4B /* num_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1A184B7F035E38DB98B51E5E3316C278 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9710C651F51448F2B528920A0F210C10 /* SHA2.swift */; }; - 1A2FC123FE9CBADBDF39D9F13A50E5A9 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C3655090C71F4FD162CE5CFEA93122C /* basic-config.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1A3E19B9F5EEB773C3BB61CA42F8BF62 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93D77BF9B26A8FBEB86D1170E8C8418B /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 1E1CE28FFCCD7499620B47C910E9B9E9 /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FA4E73447FEDB96E6A0AEEF34779CA9 /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 1E883D3150FB4FB141B051CFF88D8EA3 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D681B33FEC46016AD02E71E7CAD4C90C /* Filter.swift */; }; - 1EB92F63E2E588AD61C8E353550DEE43 /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = DEFF63BB67A4175F65289920C1C52027 /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1F61430528AA536BB6F44C307C1A1529 /* SolidityFunction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AE728CE94901D4D77454B63AE645A0C /* SolidityFunction.swift */; }; - 1F8493E27C6B69DED26A34DF2065F412 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B6846F62CC1BB91B9E88D63B6C6B030 /* CryptoSwift.framework */; }; - 2242E49BD804CA604DBF0E822B17E3D1 /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = F8774D6AF361F00C6B4D34B898A25D29 /* QuickConfiguration.m */; }; - 22E9F6FA56858A5F7A5D664E5968ECB0 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DAA3970F37339D18EE9F8F443A200A2 /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23A87006413A996DB333EFFF200693C9 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F237E00666D3884816F4EC773CC4328 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2423FBA92BF66D18BE9352FFC7E48C70 /* Web3-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F6483ADD03ED20868B9A44D5D8F3D7C2 /* Web3-dummy.m */; }; - 243750FD9F444FCC04CF43D65F061E40 /* QuickSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = BBB912D37A6310749E72E1211F5CE8D2 /* QuickSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 243AA7ACED27D8F2F9049D08D8055E59 /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7C5DEB9E8994F42DB8B380CC0C42BBD /* ABI.swift */; }; - 24FCD7CF566FBF5E22EA399E3D4018A3 /* EthereumValueConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFD45B3845C6800E8E820D4B306A2789 /* EthereumValueConvertible.swift */; }; - 25D1805055756CAA69A167CA03B2465C /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E867D3ECE7110963AA0291D07387094 /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 26057CBACDD6988A80E850A1FC7B96F7 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59F11048552441A529A7956CC6E6BBC /* CTR.swift */; }; - 276FEB359012507AE15E9998DB611B43 /* RandomAccessBlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091FA611FE3742DA0D0AD08FD08604B0 /* RandomAccessBlockModeWorker.swift */; }; - 27E8A7D487930AFF0F3875060A846F8C /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC03A30C178C816122A5F928FEDD3696 /* Digest.swift */; }; - 29A11960ECF2E4B6BDC8119808FE5C2F /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 18092AF693281AAF8220A8F871F1F6E3 /* AnyPromise.m */; }; - 29A65FF7D1752DFFF87F5DC8F55CE859 /* ToSucceed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 066801D0084AC891FB130C0E4076EAA6 /* ToSucceed.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 2A0011E7B58CC94A9F508ECB049CBFCB /* QuickSpecBase.m in Sources */ = {isa = PBXBuildFile; fileRef = BB3AB2003D0928253915A779699FBD47 /* QuickSpecBase.m */; }; - 2B6AEC2328D5C7204F03D3A477089C5D /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 153242E1D0EFFADE4D13A5369C3ED884 /* SipHashable.swift */; }; - 2B6C91CD323DE9FBC92CEA8A45A58B63 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = A38F8F30FD7EBDB67D9EC79249F0F6AD /* Promise.swift */; }; - 2BB77EBFEA942F46834C680E961816C2 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 81779189D26FE040B2A6C9C03FFF7104 /* secp256k1.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2DC344BC76550F546299454C6980DAEC /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCB101F28B6ED5E2E5283371A5EE2EA8 /* Hashable.swift */; }; - 2DFF4BFBF24F21505A469E7306E8E838 /* World.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B8CFE6106141A4892E0D371C4D0A18E /* World.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2E905B69BAD19315A6185ACAC1926046 /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = A174EC3B6D6A83CAEF46979396C68401 /* ExampleHooks.swift */; }; - 2F70A2B5E8E2F62FF891C4E844332C70 /* secp256k1.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B14FF5D164DF4EBA7E38A8076C48876 /* secp256k1.framework */; }; - 2F9385F6796CDB36C4CB0A320CAB99FA /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65978C8FA635596EC5BF168CE53B9D0B /* UInt64+Extension.swift */; }; - 31C39ED8CB1C9317F1F2840FC919662D /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = E39518AC71BCB67ABECC6C1892A96E26 /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 32B38992751B96F21324BFC9923BFCBD /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BB322CA97F32ABE8AE62FE65184F918 /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 333171BA934355EACBEDB924CEAF8640 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 622477BF9FEFBFEAA5FB4C548357C9E1 /* Comparable.swift */; }; - 333CA5B99F9F1A876DBDCFF3E9453717 /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = BFB445ADEEC9D9C22348C26CE6173418 /* QCKDSL.m */; }; - 33B64AC4CC932C510E37B67AC1920298 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5AAD137CAB8DC860949FC90AE757613 /* Configuration.swift */; }; - 3408892AB04D6E4CBF6A5E683FC85C16 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AECFE2E0CB8922B7BE1FC321C9F781D /* AES.Cryptors.swift */; }; - 35CADB1AD8E063A35DF68147F3183206 /* CwlMachBadInstructionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E5FC5E529B159104CEBE8AC58FF3DE4 /* CwlMachBadInstructionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3707702E94EBC6277252F50F96025E33 /* RPCRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A4747D43258EBC06BEEEA5BAC6C8B2D /* RPCRequest.swift */; }; - 371777D5E7DBB76DD82E84857D054127 /* EthereumQuantity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 032AB1281D714206F80C5FC8CA568E26 /* EthereumQuantity.swift */; }; - 379D1C13E8E9C42FD9096E27E5EFE85D /* Web3-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B65E4CF5FDC77DA08B3D7F9618EA57E9 /* Web3-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3A8A662914F1996B311E375705C87EBA /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = F79C4E1464331E982975B9A9D8C25829 /* scalar.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3B3A88E074630B1EBC2139F4F70F0443 /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DE7C2676EED0661B585232EBEEA51C5 /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3B937F19F2C57B12359CAB9C0A56AB20 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = 58D7CF94E344D10D4D934C11D2F75B48 /* after.m */; }; - 3C34F3D9658C09091A93DE3878CA48CA /* ERC20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056FA37C243937C7EEC5931033C237EB /* ERC20.swift */; }; - 3C66D2692E811DAE57A244A67E7AC555 /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93886933DBA27BCE1273A64D539246D7 /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3D0A48F1CD8E0DF7FE4F5DE652BFC821 /* Exports+Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FA2BAB6A1EA492BFF42C923909E4FB4 /* Exports+Web3.swift */; }; - 3D0F17369E717BC5194B9D183BDFB4F2 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798E95787C92F6A7D18E0F557A48EE15 /* CBC.swift */; }; - 3D1A89FDD6B579BAA92AD398E5C019F9 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B5DD42FE948D3A904B0685E0DADED51 /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3DE2A54664F9CBAB67FD38D08946D255 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 85E7E9E8E7B6A85497B9D9651C612AA4 /* when.m */; }; - 3E04D23B2995705A6106D41F3E3E4E33 /* ExpectationMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 386BDB80733FD4AED09A321EAD286125 /* ExpectationMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3E9BB794F9F0CD7DC78A6A9367FE5687 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA2930524BC85D9AB2871CE5FFC6EB36 /* Utils+Foundation.swift */; }; - 3F9050963BE24ECE414A22382C932698 /* Web3+PromiseKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA7FE2DB7639880853A53A9BA5FBDF9 /* Web3+PromiseKit.swift */; }; - 41C783192F7ECD485C8C6384D30CBF11 /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71985F2B5849436955762E584639A215 /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 42EAAE8CFB95F2352FCE036F263263E1 /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CF3F55464669773593A86D0B04D0D7C /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 436E5447A5C08BC8200FD1930EA28956 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A8A3C96EECB272E89FEECD829DCC1FA /* Bit.swift */; }; - 45363C27E5BFFE10A5BBA9084DCD8509 /* Int+ETH.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C24BA59E7D70DA3F877AE94D691682 /* Int+ETH.swift */; }; - 45F183320C688F9978649F30ABE21D09 /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A10FDFA0F38274A02995EB6335EC5314 /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 462E11A980823607DB4D49AAFD2C38BF /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20A68BE51CE78C13F77C97EF8923486D /* BigUInt.swift */; }; - 47FD5CCEDAE13DBBC9124CC8B32ECC68 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4279155359F84BCA135161AA89A59628 /* NoPadding.swift */; }; - 49731F92165ABF3D923E330CADB56400 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - 49961509F4D7C807B36D89AA68CE4806 /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = C78C00BC940C42C7E49FB433554191F9 /* World.swift */; }; - 4CDACD8A5A6CFB688838AA988E7D1E43 /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C6260A067DA4AE8F965990C5F43E54D8 /* Nimble-dummy.m */; }; - 4D7802DD5751729375C2930BB89A865C /* RLPEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27398E13DFCACF392DD53C73EA2AC327 /* RLPEncoder.swift */; }; - 4DD79A9CDE3AF3ADBCF83FA7214631F0 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0306234C12314EE264A1F3D662CF81E8 /* race.swift */; }; - 4DEFDCB9C261F44620FDF52AEF53046E /* Types+RLPItemConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 584DA17AD18E9D89E5764C4B5322BB25 /* Types+RLPItemConvertible.swift */; }; - 4FABBF5CA8F735F48035BE4144613CB7 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750BDB14AAF8D41D25A0081620C791D3 /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 505804306290152567A078C676DF877A /* Eth+Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 242CF1DABFB7F3811DD68F910B6CD064 /* Eth+Contract.swift */; }; - 506C69C8C61FB1011848599056E9F83C /* SolidityType+Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3BB66F5C0013A118576E4D622C895BD /* SolidityType+Codable.swift */; }; - 516732E1FFB7FA886F4BD2EFA74A4D7A /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FFA21236534EACFF7A8F7B092F1A6D9 /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 51C8CE5D8EC4732E081FD7F0AB678005 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B820E340595F46580D1CA72F614AEC5B /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 521A7EA155F261286A20EB218A7A5BDD /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 355FFC555C9D4494AE39AFFC217F7BC3 /* eckey_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 522DF6359729CAB9DEF004FF57A3B7E2 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0C3868425FA2D0A71BF6880ECFAB9B /* ChaCha20+Foundation.swift */; }; - 52DEB3D11609B93EFB1BA91510268C11 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47E85D85DAA04AC69F47E1E448FBFE43 /* PromiseKit.framework */; }; - 52F219788A2D94BD2F075E3A253C19AA /* EthereumTransactionReceiptObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948569B4D9C6031865E2CDCEFC19CEC6 /* EthereumTransactionReceiptObject.swift */; }; - 5302D27233F51AE56663EA90E3E0A0EB /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 691443B05CF05211268A27B24AF33525 /* Closures.swift */; }; - 5345680D8B31506B920EEF20113190F2 /* HooksPhase.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAE9D32680A6144A4BE05C3AC12511AF /* HooksPhase.swift */; }; - 546444F7AD490A76C27A5FFB9D44FD99 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = F291149AB77992A72F7BC2ACB9A5D517 /* Deprecations.swift */; }; - 54CC2049C937561A469575AF9E6A6FE9 /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE826DBA91F4EC9F06B82D35442221B9 /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 55EA57D15EA673C64209D9FB45954005 /* EthereumQuantityTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C83CCB81657E5CDEF6E81B63DB39F9E /* EthereumQuantityTag.swift */; }; - 56FAF62E27B4754D4C80D249CF932846 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2C5E63290F7EE2068990963842F7D6 /* Exponentiation.swift */; }; - 57CFA9AC9D48C651A3AA07E9AE2E83F7 /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C6D561C5E6910CE26ADA8CBB6101CFB /* UInt8+Extension.swift */; }; - 580BA181A86EC9A423A09533A148F209 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 600448AF00A8FE2DE434276A7527AE69 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 58C0125D796A97541FDE3414001D8A92 /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22EFC25F6C62270124D3C498671BED1C /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 58D964317DFBB10F54A273CB12843017 /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 692FD4BED2C836DC20E2EEE298BE437A /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 58DA1DD966DC183DA9C845E12E7D672A /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E5AB4F22ED5C45AED4F5AE2CBAA3F14 /* Prime Test.swift */; }; - 59813826258855E01E9F7F47811BC26F /* QCKDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A73C236A045A19F7F1A6BBC21AA861B /* QCKDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 59F2D081E23D12C600F97976B5E29BEE /* secp256k1_ec_mult_static_context.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DEEA6677EBF14C887BD7D5CB09A9A5D /* secp256k1_ec_mult_static_context.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5A9BF015188AC68A14AB5ACA4A76FB28 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D1242F95F4F2FCF8E0C2A3E37E54DA0 /* String+Extension.swift */; }; - 5AB9DB61D62D8BF7B1C734B373F361E7 /* CurrentTestCaseTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7800E0F2E600AF59F6F26761D6D545 /* CurrentTestCaseTracker.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5AF2D7E1F3906443852F6E35B42FD8AF /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2E47580842DB03FE887CF77F657DF6 /* Example.swift */; }; - 5B228FE499A6110B1FCED57451B998C6 /* Bytes+HexString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38CCF05129D42153B7DF7DD955985275 /* Bytes+HexString.swift */; }; - 5B7D62EDBF30129AE23E455995BE088C /* NSBundle+CurrentTestBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB2DF5D360C879A268CB46176F775D56 /* NSBundle+CurrentTestBundle.swift */; }; - 5BBF2FB1A5FF1ABF58A8B50CE2A221B3 /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C4645FA1D456EC81535AD6F11C269B1 /* field_10x26.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5BF04B92FF992F3D5445F8E05F2EF793 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 796E393D1403ED92E609430553F67F98 /* CMAC.swift */; }; - 5BF274C2DEF332ED79B1CD15CFEC3498 /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68CA51529AD5CF70A65914C362FF1D61 /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 5D782BFC6BAD94E4CAE9784B7ADC2130 /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FD1CD05EBA4022AF9F743B92D23CC1 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5DA12C3AA4519E6B6AF858A610C6EDB9 /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F4FB843DED17D97BF31FA7714E7393 /* ExampleGroup.swift */; }; - 5DBCC0E4C72649C9A39A00D40D944DDA /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E3EB1152ECA9F420CB1205DCDC06752A /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E43EE4ED8550BC1C5409FFC4F89B5FB /* World+DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = E5D08D8814DDDE27E26845D0739F4F81 /* World+DSL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5EF81B7BD8578DCC6EB11268BB4AB6B6 /* QuickSelectedTestSuiteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC3BA69D8A6CC5B7102F6F6C085696D8 /* QuickSelectedTestSuiteBuilder.swift */; }; - 5F9AFDECC14365CD10F3D83D50020E32 /* CwlMachBadInstructionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 47F9C5D805B22B91E2196861DB702C96 /* CwlMachBadInstructionHandler.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 602EA31ACBD45498B8EB0E5BE501D6E1 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 23835C2E498CB7469C0463EBAFD69589 /* ecmult_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 60638CF837BD98488032C902C3D87E9C /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D311232E3F4D26AF87CC1AACE3EDE35 /* Poly1305.swift */; }; - 60DD3FDE6F25F9072D0578B0F064AE2E /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 814060C32883A67D9ACCAC12839E4CFC /* Shifts.swift */; }; - 62D26CE7BA3AEDB4E5E87218FDCBBA90 /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3904E34D3676A51D11E21EA2639A2982 /* Functional.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 632E9C20DF5668593186EF3735A0F381 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9F6BA4DB2401D085B90F63BD25EA80D /* Padding.swift */; }; - 6554AB9AED70749B2EE63C02783D2B44 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2BACFFB76EF401B6C51BA8AEF34A02A /* Cipher.swift */; }; - 6593C547A71CCEFC480CD578080A327F /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0374D8DF6DB23E54F93C37194A96FD95 /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 65985C142EE8A74E6E56D5E30A39C79C /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10EF61C27F5C56B14E2F05525A1C9C55 /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 65F08BC670659832594526E23DE432C2 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 730482E0D7FDA2301F6354B3D3A07F0D /* BlockCipher.swift */; }; - 676E4F66A7D3D7CB33924507A18FD46A /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3768871E64848B0847C4475E72FEF216 /* scratch_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 68C105C22D2EC648C0C172EC185C4B3F /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 67D634C9E06760D93F6488DC75CF5658 /* QuickSpec.m */; }; - 68C18E932DCA092B04B9155698485C37 /* SolidityTuple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E976964DD4C3815EA1E2EB7B8FB991A /* SolidityTuple.swift */; }; - 68FD03C72D719117929696B62038B3D7 /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51E382D8769F311ADB37970697769DD /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 69B80157634D6FAF248D37F397732357 /* CwlPreconditionTesting.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D0D2EDC144F47285DAC98FD57FEB928 /* CwlPreconditionTesting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6AA72849675D033BD777F388DC682F6D /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = D00325D3CAEF8366C032DC3BB23F8480 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6BB0EBEB4730B94AC07458E398D142C8 /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761E1E4EA04DFF51B02EF4DEBD3B8E3A /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6C61D9C454881C29F0B602A4BFE4E48C /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33AFDF62D2A96374F03D6C2983E92095 /* Checksum.swift */; }; - 6CB4890B9BF5F846E980634AFE83917D /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = E6114D42DD6715C36E75413AEEAB1583 /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6E954FF56D176015B25945FDFED66943 /* ABIConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB9CEC17D5440413F57830DAE13204CD /* ABIConvertible.swift */; }; - 6EE1AC29FB9144CAA4AE4C6AD6EBEB06 /* SipHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03C000C432823225AF70E4F618383D3F /* SipHash.framework */; }; - 6F1B338E3DF84718C1A2C653917F7A9F /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BF8B5499C0F50A8DE912F7880761081F /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6F72B22B8AC4DAF29DEF5CE8136AC285 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58C7FABAEB4C5FFAD87A37E962A51EE4 /* EthereumAddress.swift */; }; - 70AF7C036B4DDEC1F4AADE7ACDAFE6D3 /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0FC12ADB9B73826B65373CD0F9E0CA /* ZeroPadding.swift */; }; - 71DEBCEA4DA00F75D74DF97B69ED510C /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C00DACF01EB6E118D5BFF24AFF14266 /* num_gmp.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 724A06E0F7724C4467DC4EDD48966AA4 /* SolidityEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1BF4AA95A91F48890A7BCA49802F7C /* SolidityEvent.swift */; }; - 73BC5AC2ECDB8722E085F14B53E0D24E /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72518D20B0A2FDF445EF53EECF60DC2A /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 743728AF96DF0E918B274A5F1027F0EF /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3187274A6B847689F73173FC2A6769E /* World+DSL.swift */; }; - 75538A8B20C7A20AF3D54BBF35D56FFE /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2337C4F9C5BDCAA343FFDE963489C4D3 /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 75ABB48E3C30C2D736C3D05D6FD566A8 /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB1894DA0DAFDA28D251C22A1BD6DDD /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 761CF058AE56BD2B1E9B62D4271AE743 /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03EBE0BA58FC47E098FED98B3AAC74EF /* BlockModeOptions.swift */; }; - 772640863EDE795395DC683AFFAE4745 /* NSString+C99ExtendedIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C59BA42629A4B26F3DD7E20416FAFC5 /* NSString+C99ExtendedIdentifier.swift */; }; - 77AE9410F69A57C8838A17DC3BBD37EA /* Values+GeneralHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6191E8A80D5F9C1A37F69CF815722132 /* Values+GeneralHashable.swift */; }; - 78BEB5D0BC89A216CE64624050A7328F /* SipHash-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 88FC17E43780F4557EAEEBD281EEBE76 /* SipHash-dummy.m */; }; - 78DD743EF6A045A63563C0EC85929E8D /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 308E7F02F0085C096CE7C07FD0860151 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 797920E244D191E2FC53D819FDC3963B /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85EF2E1E694123602FB11D2A56BF311 /* BigInt.swift */; }; - 7AFE6602B06E168F6DD3E80B4DA0247B /* RLPItemConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2FAA23491E40B7A8B95B91F15EAC1B3 /* RLPItemConvertible.swift */; }; - 7B5222991D1C53DF737242CA6C90012C /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = 1546A50DBD1A96DDDA7473152A3DE4C8 /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 7BE518B7E49B3BCA8E80C23E9584402D /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE67FE58EA1ED37D95B0361E751B6A54 /* String Conversion.swift */; }; - 7BFFD6AB777EBEC9B1F1C13B42A98093 /* EthereumContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD394D165EB52955B3A11DA125F5B5C5 /* EthereumContract.swift */; }; - 7C4DCE55C3833AD22B641F561F72334B /* ABIDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FE4682DC287BA9AF8E5C6928045A088 /* ABIDecoder.swift */; }; - 7E0C9AE6468A5DF91F0F4C7A387D725C /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89F8E15D1AE8233F5C435DA1A75B4834 /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 7E61B9516A328D54979FEF08F9AA67A6 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCEAD5D1A80EBB629D242296EC93CAA /* after.swift */; }; - 7EE506E86B102CB8AFB03C0CF62A0E9D /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4D5030DCB87BDB0E72358699AD1482 /* SHA3.swift */; }; - 7EFF9C72D918D6B6AB2CF8ED7D4A1F9E /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC7B0C3E51ACD0B28D091B457E834A7D /* PBKDF1.swift */; }; - 7F58140FA7EA6CA478CA791E4EAFD0F3 /* EthereumPublicKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7A995AFF96DDDB29A3029FFFCF557D /* EthereumPublicKey.swift */; }; - 7F65C96ED69BBD525FA3A854D6CC7492 /* QuickConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 450E1E61D708B476EEAE2420717DC07D /* QuickConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80A810BC8207A5DE44E7CFBD4A4F2B04 /* SipHash-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EA8D2A9942E5989D4FDBF2E73833AAF /* SipHash-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8101EDCBF0515FE2355097B75EACF81B /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 115D1D7BF51209F2E69331EAE935F43E /* Data Conversion.swift */; }; - 81323FC611C8B4C87B39F952196DE23E /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7AFAA0E86F8E0037E18A7989D55C47F /* CFB.swift */; }; - 8170866E2ACE0ACFBC6D90081354EC65 /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E49BAE936605CC38053DA61B5348AC /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 82F07AFB4196AA17EE4024AE94E12D68 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 47DBD89119B96715BCB2DFAF72113659 /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 838A5E35F9B9A388DB76F5559565D6C2 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1E48837634B0D95EEC5F3EA10DF2AB9 /* String+FoundationExtension.swift */; }; - 85036841DB171B9EFAA51F845758479A /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACCF4C897B8CF57EDAF2749BE44711D3 /* Authenticator.swift */; }; - 85773D405D2DB99F9CFFB3412044242C /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F297EFA1CD0342CB6A6EF0F98AB1ECC /* Data+Extension.swift */; }; - 8685F379A1B0E474A2A6A7EF1F204D4C /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 0554B17D85F3C7EDD2138E1A3CF97F75 /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 873EAE4831E6B51A702031FE2D11045A /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BC9B4FFEAE770A2D2F5599014E4DD21 /* CompactMap.swift */; }; - 88717F38AC6F589DBC44DFCFCAF1357B /* Quick-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 784F4C2AFDB34A74E5CD0A26F641583C /* Quick-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 88BB0B980040C7B1F0CAA2163CD56707 /* RPCResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7610776FD14033880A7CF88F57B7E9E6 /* RPCResponse.swift */; }; - 898EA46ECD485BD36591ED072B05FA6D /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DC25AFD4D81D8B5254AC49E853D1B79 /* scalar_low.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8B4A0A3B31FF6A9BA12F98DFA897CC05 /* EthereumCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E87ACC8BB25135A1022E6A41E68C1C7 /* EthereumCall.swift */; }; - 8B55BD430033027AD5FF22D630DD9F62 /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 6102D81214CCE40A7E1FB43A8A1CD4C6 /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 8C5A0273350370B0F7D9FA5930BEC515 /* BigUInt+BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BE7EE643B2C16F171CBA343E6265A2D /* BigUInt+BytesConvertible.swift */; }; - 8D9A54F21A2B53BC38C6DFEA2B6D7C50 /* UnsignedInteger+BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78090FD0C646BEB960042247EB0ECF2 /* UnsignedInteger+BytesConvertible.swift */; }; - 8EF73F0A8A13C0F441004514CC107137 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 66D8F28DA65B59CE4F73A0344BC6B849 /* scalar_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8F175E58E49A2C412A6F9257E1F237DB /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F31036600456A41BE89A4CE9538E094 /* Square Root.swift */; }; - 8F47F30E5D666C7051D8EF4E7B567817 /* SolidityWrappedValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BC61FD2E7D49D3D8AC437BD76FE154C /* SolidityWrappedValue.swift */; }; - 8FB9EC4E9F1A81978D74338E8AB4D774 /* ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85ED0F014DEF82810BC608225A9F4C6 /* ERC721.swift */; }; - 8FD417E437F4B8C25DD9B293D562DA76 /* URL+FileName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2243FF991A3EA010F448A25355A4F3A5 /* URL+FileName.swift */; }; - 90AB6413849B9FDE301C2ED80C8B49D1 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A476C9FAED98815BB2279ACC486C60 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 914800174852B084AC0537FD38754F43 /* ErrorUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B36DEA96406CF8A347805C31D9266E3 /* ErrorUtility.swift */; }; - 91487DD574643E3E8A758C51F2EC7610 /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 4125C85D9F09F5AC29147DE17DCC911C /* scalar_8x32.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 926A649FE11EFDCB42727D024C7F4A5D /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02FCD6711AAC48BA327829E1268A3797 /* Callsite.swift */; }; - 92F13FB701DC782CB8797D80CD7933A9 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 83A4CD9D149507CA5E3CCE4AAAE1133A /* lax_der_privatekey_parsing.c */; }; - 94363B8EAFE5F672D35B60FFAA72033D /* Eth+ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EC3D45D9F61E8B1D01F14015B63719C /* Eth+ABI.swift */; }; - 94404006C5971B66FA38FA0F1E1D3279 /* EthereumBlockObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F61EEAD05FC597C56DCEC6F4626CFDC /* EthereumBlockObject.swift */; }; - 948CAEA5CD269A37009EE2528009D24C /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A2C152B5C19EC1EFEA4B2D767A0F4A1 /* ecmult_const.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 950C4EF3BE6C0AF8E36543F5537343A8 /* Behavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF5AEE544634CEEE64799ABC485B0FCB /* Behavior.swift */; }; - 9541E50990AFE27D2D7AA288EC7120E3 /* BlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F31A35EAAB767855BE04F7E91D172D /* BlockModeWorker.swift */; }; - 95573FCAAEB7396E794DCB108C906786 /* Web3HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794819AADA5399461D0C62C61DFF880C /* Web3HttpProvider.swift */; }; - 955FE0E429FCC22EA917659603BCDFC7 /* Quick.h in Headers */ = {isa = PBXBuildFile; fileRef = AE3D3A522B73193F53EE99A551C179C7 /* Quick.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 95B18B0AD9DB30F5D60518FB5BA49A10 /* Web3Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F8ADA2C7CA0A0546F6E2E2FCBFF5538 /* Web3Provider.swift */; }; - 96132E7432F8DD315A88A07C6B4F9C72 /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = 91A745AAC55912D298E6F3D10BEEFCA8 /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 962FBF0242C285FB2056473ACC05A92C /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D85706CF929F8F33DAF1DF2F089298A /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 96E69D66B7EFCBA7BD6DA96D51957306 /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E3960E327BF9D51B98662D1B6A4615BC /* Quick-dummy.m */; }; - 97A61285999390366BF8DEE6C4DCD683 /* String+BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49790A78B98067EC918FFC5013A51B04 /* String+BytesConvertible.swift */; }; - 97E201D68B479C003F942AB7197AD996 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33EBDDB5954645BDBC9B2251B22EA399 /* DigestType.swift */; }; - 988EED125395950177DC14AF9BC87D8D /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = C462F2F180399F9819C88D96BF7DC42C /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 99E0A31FA4FFD6BC7E98F6F6E1AEE37C /* Exports+PromiseKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8304CB804601AC8E9611A598B1196A9 /* Exports+PromiseKit.swift */; }; - 9A306BBEE93B7BA387AA092D779FE7C7 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 392EFC10273442CE481B90AE52F4949D /* XCTest.framework */; }; - 9AC4B14B9B8ADC16DE5F84555DD303EE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - 9AFAB71D972580FF8A1C680954DDF4AB /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF67E700C0A61D0FE0945B9BC84447DF /* Words and Bits.swift */; }; - 9BDD27DFA7C1928EB85B6A28FCAB8F45 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCE6A8429459E354A1D311C48DA4629 /* Generics.swift */; }; - 9C2431B74BA15492B088968D476D1097 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9B2E739318AEEC875EB7B78C46BB31 /* RandomBytesSequence.swift */; }; - 9CB4D15944C59B06250EF248665BB1F6 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = B12D1500742E7FBFF10E55F61982C992 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DE83B55BDCA2916F25B3A83DEF16155 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - 9ED344948508C45BF417141AB0E35694 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B441B3D3CF3D34C8C0F3842C2D15988 /* hang.m */; }; - 9FDCC963E0FBA87666BB489C37C8E988 /* Data+BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE18A03CDBA706EB22E672281A78735 /* Data+BytesConvertible.swift */; }; - A03E794FE9037A6BDD8BF593E605B4E3 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02A1C6DB05A9F83953A027C6559DB9D4 /* Codable.swift */; }; - A04F30AAB0567663BF3781B4BA831113 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 8380D8F40BCCCA84D28E28E935A5A0B8 /* num.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A06094DB0F0B53AFDA44AF15D2910301 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C3904C2608DDA7285764A44C8DCD4E /* SecureBytes.swift */; }; - A0C7831421E66FD6495C7B9E2A939BE7 /* ERC165.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30B04751FDE9BD99F255F0DB75680116 /* ERC165.swift */; }; - A0E5776F5F2427C31023A2F828E80984 /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296EDA418470DC7D8D6CC8523156FDA1 /* SuiteHooks.swift */; }; - A272932A4DF9AC2D3B0A21AC70606F6D /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82FEDB9406982DC4ED01768BEF8FA7BD /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A2C3AE390E3937FA48C0BD8ACD80856C /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = A05338ACB762ECC9AB1B17F03FBCD90B /* HKDF.swift */; }; - A37C467C69C164534E24A1FBA1C4AD11 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 238A6CFDDA3D8EE41893500E58C1178B /* Operators.swift */; }; - A44C60B1C3A40B55E2F4B23F05691F39 /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EDBC10D69BF1AF9532B77E7A3FA550 /* ecdsa.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A45395E6ABBF9AD696BD9EC45FE802BB /* QuickSpecBase.h in Headers */ = {isa = PBXBuildFile; fileRef = B91FFF27A51AC1EDF3817F9E381A39BA /* QuickSpecBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4B1CA1BECD821503F0323AC6F4DFA7E /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ABC2D302FC0EEA4381FC8468D4C057E /* Utils.swift */; }; - A4C462590603CD42643720E6566DFE9D /* BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9A4EACB44AA74945D75DD8CCA00AD14 /* BytesConvertible.swift */; }; - A61ADD214AA182EEB2AC95EA3F3D658F /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = EA61672CD392DC7507D37FAEADA98997 /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A66CC82AA0F9132B244F183E0B163766 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F69ABC773C994BF3549CA31B14DDDF /* Rabbit.swift */; }; - A6A446A14A13E08AD30BBA55577364D0 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C613533B2A1DBFCE6266FE33E9856A39 /* Resolver.swift */; }; - A71C9771DEE203FAB942D5DC1685C6CC /* RLPItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8763D3993346C0747740CD32E7A4C3F /* RLPItem.swift */; }; - A74537420FF0CEDC6B9E82E1DC4C2B15 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = D267300B97E7FE8AA495FAA268F58315 /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A75294BEDCAE1AAB88962822BEE0C41E /* Pods-Web3_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9741E8DF3C89A84347F6EE358D3A29C5 /* Pods-Web3_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7C13C62E4116CA964A3E82179092AD5 /* NMBObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 852637243549905E2EF9A6A5A97D380B /* NMBObjCMatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A7D9ECFC8855A6D099F7828CAFDD0D49 /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E8CE3BE7208E0538A6894CDD2C8854 /* XCTestSuite+QuickTestSuiteBuilder.m */; }; - A83290C18AF105A1C351ABF4CA21B93B /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D1A27B02D573C87A0C7835575BF2F1B /* hang.swift */; }; - A840CF63E5FFFC7FAEFB3532B6064777 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FA27322B11CDE7BB17798A4A1F266F6 /* Array+Extension.swift */; }; - AA849DD558C4DE173D193E4ACE044BF8 /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 07259D4185566E10884D02C48B132993 /* hash_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - AAA2830BBCD86431B3EEB0ED968DF4A3 /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CAEF3097CB64F620CF8A2894D9C9DFA /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AB2073A0F05D4F631CAE7305B4EAB264 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBD9ED3D2BD89BC1C26937327CE6A7E /* HMAC+Foundation.swift */; }; - AB5063D9EABC80ED47DAD20D89FD88A6 /* EthereumData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70317A400765B75742A5FF1CF2712B02 /* EthereumData.swift */; }; - ABDDF4421E3BEEA21F22577F0B3DD8D7 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44155E0C03F2EDF5D9DBD237A89B7604 /* Integer Conversion.swift */; }; - AC886133BE8F08ECA23BF4974DC7037E /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A71D56A755251347CB6D243FC57EFC /* UInt32+Extension.swift */; }; - ACA493CDE02DE65191E27B082C601BEB /* Types+EthereumValueConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C6C2AA2E225F6F22183A77173571FE /* Types+EthereumValueConvertible.swift */; }; - AD70A73DC99D4E6A4169DE8430EA3DEF /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = FEFF554C44E03C723B999617A3DCFBB9 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Private, ); }; }; - ADEE95A3A188BE3095990E20766BCCC8 /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53AEDBC15FDDB8206BC9B51EEAFF3350 /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AE4DA49ECD693BF384CD824DF02D7C6E /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = FF11D79F04597F1AB723CA8900023EFF /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AE609CB4021E839EA3FE2A925CE4C21A /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 25061412F87E8A6EF3D38682C63025EF /* join.m */; }; - AF1174085D9BC5D50FCE0480E9C2BE94 /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B19C429994E58B081B61416BFA87F8 /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AF9E29680785E4D98DFE4B838756CB66 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F9F806B0DE329BA33DA38AFF34053C0 /* util.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B102ABE4E54B71B3D2C2118E2782FAB9 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42BE753FB4AE78C4F15DACE01827F739 /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - B1C5D236ED7686A509E3E075CA70A449 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C728448EF82C238FC411F4A3B000896C /* PKCS7Padding.swift */; }; - B2C151B20635A480E1937E3D2B509BB4 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60173B717B215820409958F5DDE9DB57 /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - B511B71D62ACF4C647DB87BC1C7FC584 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941B363634FC7E45D1F6DBF1309830EF /* HMAC.swift */; }; - B6905ABF01F43A02EC1BA75AFE1B85A7 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 47A395F620CFE2F06488D3A0BB550CF8 /* field.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B6BFE782112D3F7A81DF059B60F3A3D2 /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D03BC01655AB16DFA947729B3B6DB855 /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B7657A020B1AD12466B398FF2C015F96 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 02187B67AADED39E71E6A5D9E48300DD /* group_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B860CBC16C94EA0E1D3A8920567940B9 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCBBE56F83F2B39C54E355A178D14E7 /* Bitwise Ops.swift */; }; - B8BBA917D91DD18E4C2903C20F920012 /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 093EAABF4EC6D9784FAB889F769FD404 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B8C5F834026D0B7291E760AD5FA44226 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C043C5A399DADC287692756C44BBBF0 /* RandomUInt64.swift */; }; - B8D532DB4114871A3BA722647ACADDEB /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BDC867C7FD61E81A90065792C3750FF /* Subtraction.swift */; }; - B9095076CB219EF2966B0BBE77BC6129 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEB2210FA93FE113C163BF9B81CD89A0 /* PKCS5.swift */; }; - B9620A576658C0DF5C47E0082AC23037 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - B9BCB804A78A530F862F925744B05E9E /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E8C17667FEE901C4C7F8496E163F070 /* BigInt.framework */; }; - BC7B9761322C74FA27969BD55833BA47 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91C8DEAE81847E961F496521D2E3D482 /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - BCE3A154DB0630D2D751051A8CBA3DEF /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED84C097BD8EDD27DDA38DD72285541 /* race.m */; }; - BE8FD8E242B75053242382996E9D7CAE /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7E6D7F438CE1B6F9AAAD9211DF4382F /* ECB.swift */; }; - BEDF3D7587433D1253FB2A996F043BAE /* RandomAccessCryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA8292905F7956832A4D8B7083789C85 /* RandomAccessCryptor.swift */; }; - BF3B7218901760A6226C7F6346BEF454 /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C445F36D532F29ED27E3B16964B0F670 /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - BFBA7C2DFB3249CF3A8EC0B592A508C4 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 95FB214803B5D240D11FEE8801CB24EA /* field_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C06F105F8E59E886A2F4C8E7B5786D45 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = C4DE06B288F2ED36037C4460BD35C6E8 /* hash.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C06FA100C1BBEE34B863BCB8A65359C1 /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABBDC439D9CFC1913214156703087CA6 /* MatcherFunc.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C13CC2A11A4EAE37A097665914030518 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B1FD209D9F6913D207F48FCDA80DB24 /* SipHasher.swift */; }; - C17B7AA43E661F5EC719DD426EC35607 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E255E2FDC7BD71BC61FA7B8AD795CD0 /* Cryptors.swift */; }; - C1D862177DC2999FAC710AC25F253BD0 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD0849F4664B183E93C86FEF183B2A1E /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C2467221FCD579800B9CD8FBBDB10B4D /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 175C4CAB877E384821587F39B52BE319 /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C3BB35956F079C15777E64067A9A956E /* String+HexBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE5F700A3649F690CFA7C6EA4EBA7B9E /* String+HexBytes.swift */; }; - C5A9CC9B590ADE0C78F78FD86D26B34E /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = EE6406FAF709D8BA766E2F5197DD07A7 /* ecmult.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C5F5ACBDC7195FBB5A70D5F7F7DC96DE /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A449F80C8ED753E885C41CD08B7E9C5 /* AnyPromise.swift */; }; - C6B670E2C8F64F2781EF060754BD6222 /* Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A84AA80522D6793CEDFB8A2E98323FC /* Web3.swift */; }; - C71E4B5E5EECC1754B3AEF365765782A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - C775A1F1C44DEC9E7E6F23E13B322F10 /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C9FD2811DD4A3583C14C7311188AD4 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C7BDA486C65CE4F519F3462DB2A74D1D /* secp256k1_main.h in Headers */ = {isa = PBXBuildFile; fileRef = C5998AEFD959D2F61BD08B039F9E4E7D /* secp256k1_main.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C7DDFC087653E993861F41678EFEEF25 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2A21735EE341165381978151A9DFD89 /* Blowfish+Foundation.swift */; }; - C8320A6164C870ADDB8A855ADEBBBDC9 /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 320A9B594F030E1416DEB69B6628715C /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C85ADF19B2F6364B3A6EA9965066FD08 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A7AEE4589A607A1E12DDF47D005EF08 /* Box.swift */; }; - C86F716FA3EDEA540606D281917DCB62 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - C96B9568ED2E111E7AD8391E7BBEA948 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10ADE13AABF9CA9CC08C3B70018F89E1 /* BlockMode.swift */; }; - CB13A550679E476DD65D8D0C38698838 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4014155815186F77D78896BE7BA9AF22 /* Multiplication.swift */; }; - CB46EB0C04B3A58240860D07796DBC4A /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7F839662A9B4DEB43FFEA8C588ABCE2 /* Int+Extension.swift */; }; - CBF5BFAC6AEF655DA5BDC222E5D3AB51 /* EthereumPrivateKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4E07588C987D6ADB4D5A1F6B5BFADD7 /* EthereumPrivateKey.swift */; }; - CCDAF11E7AF29E720C587B038145F622 /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2464D983CB8276A989075D6E15D83B6D /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - CDE8F496596F4FB233F4953A88FD52D8 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 943B98F52B7332D9B62319189B66E2E0 /* CryptoSwift-dummy.m */; }; - CF55697859D633C852C3586384647EB6 /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C75A080E838D00B78236EF6A3A0EF52 /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - D1503C762F7E5D2510DCE2FBF2F89D08 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - D20890B4CAAA4F70B332A5D51E7936A4 /* UnsignedInteger+Shifting.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6D1B0EE3768B879015E46C696284FD4 /* UnsignedInteger+Shifting.swift */; }; - D2C0FB61F9E866215A4B1C25854E6BEF /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3287DE8A222056FA18747AF8DE1374FE /* PBKDF2.swift */; }; - D378BB3B326499EABDA64870F19A795B /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6A17EBFAC2F5D2FF8ED24DADBC47113 /* SHA1.swift */; }; - D494B2F7B863069D52BBC01CA382F4B2 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D47A16B37B1C2C782EF8BF112FB1BCE3 /* main_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D4F71019F5FD233AC51F1A89D3A84A03 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8813EC2A3938F1CFF6044621173B3ED3 /* PromiseKit-dummy.m */; }; - D545D34669C39A7340A8B2AD1FDD6999 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46EB0F46E48C29E6D0622C1926EFD279 /* Error.swift */; }; - D598F1F631E0D57F196CFECEEB586AF2 /* UInt+BytesRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDD643D103F87D7AA4ABD3358C71C891 /* UInt+BytesRepresentable.swift */; }; - D5BC69D8C22101F211D6F6A472DECF17 /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = 535DBD0834B8338BDF1E4BA974726A7E /* group.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D5FC9713B392766B610C08C5EE806A29 /* EthereumValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B8C95F48EE4DC81A3D06B941ECD1610 /* EthereumValue.swift */; }; - D68EBBD4056AE13BE83F9BAB86F3B1BA /* SipHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03C000C432823225AF70E4F618383D3F /* SipHash.framework */; }; - D8C0D8B8F2272C497D78E490B1F333F7 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88036DA8972E5A2CB1A2AE884C47C600 /* GCD.swift */; }; - D9E62C41794D0B5D2CD68CA92C4BA836 /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = CEC3C856E53F07EEAC70F1A102150C8A /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - DC506690AD3EC714AD793F2FA542BAF5 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F30F287D319BC1D332F13AA36763AC7 /* OFB.swift */; }; - DD09D61F20A5E0C5A8932916650197B7 /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = E338E73804388EC36BEA7E97BAA58BCF /* Guarantee.swift */; }; - DD6C13F22810736BB0D8A768EEF7147B /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522E64F67D0AA0501A02EFE6EB01A37C /* ExampleMetadata.swift */; }; - DDFF3CA48706D2E82695BA1407D3BAD2 /* Pods-Web3_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F48BC58AD2AFCD55F043830B6CA3163C /* Pods-Web3_Tests-dummy.m */; }; - DE7CC4778BA0CFB736CAA934A41CA0A3 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6643144D5D935701469A4D7C87BF9EE /* Division.swift */; }; - DF026F6F406A4FB6CEA63B0A4B9E27DD /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15401453FF6E9C66075B90A92286F89D /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - DF8E83B870B96BC2B7E66348754AFB89 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D444081E7FE1A21C3631CD752776E68 /* field_5x52.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E06E793C4FDACB56FB9BE3343750C9E1 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 698EB04E12182EE8DF899ADD2A861F9D /* Rabbit+Foundation.swift */; }; - E09FD715FE5C52BFA0576678E909DA46 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C3803ABB07BB5264A08064F261D85C5 /* Thenable.swift */; }; - E13CBD442934F033F39207FBAD277AF3 /* Bytes+TrimLeadingZeros.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD972FE561A601535044E029C1E462EB /* Bytes+TrimLeadingZeros.swift */; }; - E13E616DA05606C1211953A7BF36EB5B /* Bytes+SecureRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89207C630D7F0520F9E885AE62E8CA31 /* Bytes+SecureRandom.swift */; }; - E276C7EEA4D748C902348781D1149CE2 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4F4E789A640C0CBB502CAE0F05A290 /* AEADChaCha20Poly1305.swift */; }; - E453C8E1D4964306F4018C2AF2AE441D /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2942FE16D33FD985EDA1E05659672485 /* Strideable.swift */; }; - E5D13AE6E42CC195D5212D8C95B463FC /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 02E5B31E818D90BAB6C71A62A81CCEF0 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E777763CF189D96B9FEA41A283B6FCC1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - E7BC7ABB89C61AE49C3418B1EE253BC0 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 073F2BFB328362D0475E149DAAB9D63A /* Configuration.swift */; }; - E8031EB207CD40763620BB66D03011D1 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = B8EC715A178850CABF11C38A2A146D40 /* eckey.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E80E529556ADCFE878B3670C6274A872 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D33F8C4C5E22E7449EC25DCC531DB9E /* UInt16+Extension.swift */; }; - E9DBD20CDDBAEE322A3015C38384DD8F /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FDB9F5123B3F8E449A3E2EEC031A78ED /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EAAA05EBBC34225C0DB45797712E24A1 /* AsyncMatcherWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCFC20F115EED94F7505972A35B744FA /* AsyncMatcherWrapper.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EAE2AAE5EB826B38978692984BB22FDD /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D6366C654B155C155C96B42CBC19789 /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EB1D3C62D39DFAE858690D563C32AE4B /* EthereumTransactionObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 248EF1BF68FBE7047312795999763578 /* EthereumTransactionObject.swift */; }; - EB3A73071ABA60E77E0704649637D8BD /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = A299F04389EE3EA7A954E42E1E43ECDD /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EBC0A4571DD82E4252B6CF4DFCFCC5C8 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CD6EF61D0E158C8660C69277166CF29 /* MD5.swift */; }; - EBCD3DDAA634CA7916587A4C42ACCBE4 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B45939D464E33F865AB650B9A1A30933 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EC2EDFEDC52A3A35399405A8FDFD76C5 /* EthereumTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3D406DBFDE77BCD5C2EE9C50706D37A /* EthereumTransaction.swift */; }; - ECFBAF205E8AC46C03A3640627EC08B5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */; }; - EE3EF0A377C4C925D0F13204DA3FA0AD /* Promisable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 809B3C64F9D1FF82A0DF75768C6DA1E2 /* Promisable.swift */; }; - EF8548E0C37E8888D9DDC11ED89D3568 /* Predicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A4314CA6AC8B1C35979F04C88FF1AF8 /* Predicate.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EF9103A06C99DB11BAC1C4502077910F /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98B5C69D69CBD88DF7A4467F4E5D9F21 /* BatchedCollection.swift */; }; - F00203C5845E6BC5463239946D2B6A03 /* SolidityInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5948967C1E1456F2046D4F8F5BD8C870 /* SolidityInvocation.swift */; }; - F051D55F9B61B1A99C0373BB34596CCE /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 128F99FF7247EB3EB89407C6E83D5794 /* Updatable.swift */; }; - F28003B228B82B7E1497D4F41F55A31E /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE99824BBF6A64B3B3345E2596D8182A /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F3BAA36614ABDBC0538B0DEA99CF80A0 /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978C4438E526C50F9B674B45F68CF495 /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F3F88F899C3A54D3F98FB90922E9102D /* SolidityType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22C27B9F9568051B422721562ABE556D /* SolidityType.swift */; }; - F4BD249C60F21F5E0F7C1FAC8A5BC2AF /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3551FECF054701EE202A735DA7EF4413 /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F6327CF2F6CAEEC3CDDA83255D672860 /* EthereumLogObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF93B4CEEA870FB496C43ADE996020AC /* EthereumLogObject.swift */; }; - F67E666FE96562AAAB1DDA4DDF2BA7D8 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C9DB469622E528FDB2968D0D479DCC4 /* secp256k1.c */; }; - F7BC9862AA63525E4A429E8C79CCADF1 /* Web3+HTTPInitializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 026DD2270201508265868A5FE24FF4EB /* Web3+HTTPInitializer.swift */; }; - F7C2C74A9016B95307F03310FBFE6082 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1724EE7607D4D81CDD454277A7B3081 /* Catchable.swift */; }; - F7C9634BA4D9D23A9CD29CB964066C68 /* String+Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF6DF94B9C863C4A863108624043F781 /* String+Conversion.swift */; }; - F8D63D2D788CE411008A021E415232B5 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = C870136AB7D0CC8EC48BA3CAB673EE39 /* ChaCha20.swift */; }; - F9649DD59BAEE88C6864EEFE73ECA88C /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E8CE6C2306A0078DD3DD4A10EE26ADC /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F97FF72C5E91F5545A2F0BA8C32BB2AC /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = AC28117FA8A0A8FEAA6B1A4F706F7D4A /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FAA0DD2CC8C6EF0BF31893201B3BB661 /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF52351CA3788EA581DAC40164A92A8B /* CustomStringConvertible.swift */; }; - FB15BA25D32470A8F482BCC939D13C1B /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC81613FFDABBC6E963450B9201BD3F5 /* AEAD.swift */; }; - FB433A84B0A557CD5E5948A8B6705024 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 151ED605FF057C5118949F9ABC7D5E51 /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FCF22C5BB2689204D7FF96BE32B9AEE0 /* CharacterSet+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20FEA179A4643A0C616699DCE04ABC8B /* CharacterSet+Hex.swift */; }; - FDB1FC2465D0902DCD2A2C9058C86441 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD454301F7EDE01013E2AD506B5D79AE /* Collection+Extension.swift */; }; - FE8DEF834D8781FBD43957BD153A9C39 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400C98220B97601AD2FFE6A02C18F6C2 /* PCBC.swift */; }; - FEA8AD3DE750DAAE56DCC5F29355719C /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 926547A3D75C34FD14D40B949F0A166B /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FEB4193B5677818A5125752E7E10F360 /* secp256k1.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F9C793F5C0F9D4A88A9FC9069D8BC4D7 /* secp256k1.swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FF2E7C487CC376EB80771CD4CAF14009 /* QuickTestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A11F9EB88DEF23FD5DD9886D3B4079 /* QuickTestSuite.swift */; }; - FFB174C546B4030441F46BB3E8D76318 /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 17D7D2E3444F921949F8B73372503E91 /* BigInt-dummy.m */; }; + 00A47BED4EE4FFD5F4F116C30BCE6959 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB365893B9D1C33E933A9BAFEA0DF17F /* PBKDF1.swift */; }; + 00E49C138ABC4C1166D478726BF6E632 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D83E88B868DB3F11D353ABED20655C43 /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 03541CD6AD5CC1E500AFDD4A6FD5E12B /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2EFB6A545A7F875AC989A40BD20FE85 /* ECB.swift */; }; + 03705FCE353B9A436320B5798C9F7A50 /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78157D4A35770AC564792F32C3F00121 /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 05D6872E1E4C28423550C859B6E03820 /* CwlMachBadInstructionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DCF2067DBFC9EDB84B7167B49536370 /* CwlMachBadInstructionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0616EA83F3D6423032E340B26791D98A /* BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = E82FD9C8A5757AB9D8BD50C513B5CB70 /* BytesConvertible.swift */; }; + 061A087E76F79B776019C511A65E5C94 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 660690BAEB20133B461E90681347E895 /* secp256k1.c */; }; + 06771458BE34E82CA8BFB33CE1AFC994 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BE97D68B60C226725DAD055BC27580A /* SHA3.swift */; }; + 06AB151366AB893BF30A50C3149D319E /* EthereumPublicKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E747D91CACB2E7738DAA5B95FD27182 /* EthereumPublicKey.swift */; }; + 0726B8283C8FD63DA45ADC7076BD6750 /* EthereumSyncStatusObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D9A6FD5906958CD731F51462C90BD0 /* EthereumSyncStatusObject.swift */; }; + 072E39940FBC8C41F08EF4FC2498D7EF /* Web3+HTTPInitializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E23F75E2F3950A2010E6ACF0897A9C4 /* Web3+HTTPInitializer.swift */; }; + 075311A9B30D68479A7D7404A99B2FB1 /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72BE7D8533EE7C1E25291C77AA66685 /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 08B0302B60DA94C02B0FEDC5271FBC1A /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E153B2A202C45501D6272F7436BB5C1 /* scratch.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0999B997CDAC772A41A7F70CEF4A1D49 /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07648BEAF0A333AAE5B9E9A4E2A11CC2 /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 0A00A1489D4041380B2BABC394E6162A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */; }; + 0AD5DFDEF40D71D803951290627C3118 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCFCCF8198BB225C66F2DEFCF8943783 /* NoPadding.swift */; }; + 0ADE23851DE8E232C979E342E2E96A41 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F0364E81EEC6028D6F0B0A0E99AB5731 /* eckey_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0C49EAE41B7EAE212C843A7BB138B7A6 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89770B1B358444C1B15FAE9259584888 /* BlockEncryptor.swift */; }; + 0CC539462302DF37240B2E3BB202F041 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 11AF925E921CDF30AC0899BD7C54AA84 /* when.m */; }; + 0E175682AA6C42DFD751FF8ABC74DCF5 /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 4359400EE30B90098193754E8E9FCED9 /* scalar_low.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0EA7A0B2510FC4E7B293A85C52D1FD2F /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44E5444D0B89F09187B278786A851999 /* UInt8+Extension.swift */; }; + 0F31FA39DE65E4B1F239F8D4DC999A8A /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D1B88DB6DFC4FCE322D3FBD4E2B4B8E /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 107AD33415A0C4C80D49FC753A9824C4 /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0798543F8AF14C1C6E0889C4D6CB37A8 /* Poly1305.swift */; }; + 1118DDFB4E4E8A16B6D0006F9FCF44A9 /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 905D988C6D0C73CC5F74C8874AE43540 /* hang.swift */; }; + 11923E1ECCFE3FBC7BE6A4062B25401F /* ABIDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D86478174DF947DFDFF1588443F3827A /* ABIDecoder.swift */; }; + 11BE4698DF7F5D8C44A681EE99C1A7A7 /* ABIEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6345DBF73CA15C1A06D0354C66B4AB50 /* ABIEncoder.swift */; }; + 11DE67234D50CA0DDCB3A89F4F5826BA /* RLPItemConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0479522CB09ECCD3FC35221A46CB9ACB /* RLPItemConvertible.swift */; }; + 11E13FE8DC4420AF5942736283AA3913 /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0116FFB611525C4A43EABEEF823BB1DD /* CipherModeWorker.swift */; }; + 13FBB20EA4647EA46F0CB2E7254A5F50 /* NMBObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7811CB29E79923E3ACBC5D5AB1216A0B /* NMBObjCMatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 151469A9167059995E3ADF79B4856155 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6710C1BDB439E8BACCD5845ADF11C8F0 /* Configuration.swift */; }; + 16BEDD5279B4C6BDFFEC244180BC630E /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15694F6BDA4AF043C86FC01FCE715BEF /* Quick-dummy.m */; }; + 172934C0742DA067B2F7EF5C08D1286B /* Values+GeneralHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71F694DB2FB34861076F8802A63778E2 /* Values+GeneralHashable.swift */; }; + 18A4DF46EDF5176D4FDE84EBBC38CDEB /* QuickTestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8498A9662A32AABE7DB0332499D91632 /* QuickTestSuite.swift */; }; + 18ECF151CD8EAD1DABB7886847953EBC /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 129BF7DE97010AF311437F120D5FFB7D /* Bitwise Ops.swift */; }; + 192FFF7AC7F145E6F594491C8887519B /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CCF92F272148C0D9E9E3A78C85ABF3A /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1B03BE8E27F14ADB1E2FA75C96CA8878 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 67DA42A11C9B2811AB791C650634A418 /* scalar.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1B058BB187DFD43F675B1DFA87AEC9B3 /* QuickSpecBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A1EB934A57E399A12AFFAB1F46375EF /* QuickSpecBase.m */; }; + 1B078291E026D2AC61C78333C3E7C10F /* secp256k1.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6775400A5B8030F2C41E3764B1A9403E /* secp256k1.swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BAA60FABBC4047372D87D9B739C4463 /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06C4E15B03BFF236D49790727DA2F566 /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 1BAEDA109B23A9F1F66A906865309037 /* SatisfyAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50C27EBC8ADC4178E76CD1D5CA6F73F2 /* SatisfyAllOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 1BDA674B011972EE9EDC32ECAC1D3663 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 84C28038F13C2AB2362C55D601D3E1CE /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C9FC321589FE864861C2B21A509C67B /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FC0112050A708B9A7F6A8C033E470D /* Scrypt.swift */; }; + 1CCEEF4D2A3DB759082AFE0BEA70D1CA /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 40268DFF9881AD0447A242DA522D00B9 /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1DC8A42CD193911F9FD5D13448CEEBDF /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E7E8BD81017C34E8B401C0BBA95D7E5 /* XCTest.framework */; }; + 1DFE0F90CDE2430C103826C03918FE2D /* SolidityType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3C877ECFCD1622DF6251DE31736E4E5 /* SolidityType.swift */; }; + 1FA0DEC9E883929115DD91352F570F3B /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AB54D64761C1BA3FD904065EFF389F2 /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 216C733407E225F280CEA0F222C909C6 /* SolidityTuple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D9A90FA5CEE94A08F805C47D32F776 /* SolidityTuple.swift */; }; + 22C11E179B2E55D9F5757CF22E418336 /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E3F7279391FA34890A0875C670CA4C58 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 249BFCDB0E58636B5E2FACC58867AD75 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B9FEF26E43789B1DF69050DB63D7C59 /* Example.swift */; }; + 24AD9C69B1A899FA7DB0CA4D346319C5 /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B5627CBD601B144C26930E865CF93DA /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 257AED3AFAD2ED08C64F2F4447F19D6B /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D808B5E1A82EAB01B6EF7D57778C02 /* ExampleMetadata.swift */; }; + 28ABE8809674B552C4FF7D1E7B8C02E2 /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACEEDEDA60432F85C81AAC2ABF5AC0B6 /* ExampleHooks.swift */; }; + 28C85D4558DBA34DE38356C110329D79 /* CharacterSet+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 603B473F58E4EBE8D0527169545C7C82 /* CharacterSet+Hex.swift */; }; + 290221D267F742DD48CDEF12D2217125 /* EthereumTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD45D38EFCC79C0689914EBD33C14727 /* EthereumTransaction.swift */; }; + 2AECC9858F9621CCAF03A7F31CAF5F68 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973571EEA20B220D346044B9A674677E /* CCM.swift */; }; + 2BA401DBD028DEC0FF140312B5EA985F /* RLPDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35E19F0946583352CAD804D7EF973DEC /* RLPDecoder.swift */; }; + 2BBFC4CB11C80CD45C1C0FEBB25D6C5D /* String+HexBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17FB40BCDFE32CA38B1B4477264B20ED /* String+HexBytes.swift */; }; + 2C9BC6E2774E994D80565F564F77065B /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20F2DBDBF8889BE157C6BFAEF3C9E8F /* SuiteHooks.swift */; }; + 2E49724E990D51DE863EE748D93CFC33 /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7EF1A295A54630DE36D0B8AAE731E21 /* World+DSL.swift */; }; + 2F421B6F2A29D9E52C71B003FD107E38 /* Secp256k1+CTXCreator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE932594ED002DFFD1A2C57020310403 /* Secp256k1+CTXCreator.swift */; }; + 30819A318CA6DF57C7B01294873F9731 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5020ED3AD08DFA8D4F7A9D02C9D9A59 /* Cipher.swift */; }; + 30966E26266F62432C8E914340871113 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 466BAD9BB99CB22858E97123E6483B27 /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3101D8F2678E107351E1179C14FC7BF5 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 832D59A5C428970ADE9DD2CD06C4A7D1 /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 319BDB83472237EEA8562ECB79749D30 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5523F86486806B891AFE34C4CFE6AC3 /* AES+Foundation.swift */; }; + 31DCC4FEA92A71A9FE8D881B73FC7426 /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFCBA2F7C279121825A61AE78FB9DCEE /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 324C6C1BEE1B572BAEB1D1CCC5CDA6F0 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A94E7D3A09D46D989C070A43FCB1EFE /* Division.swift */; }; + 328CBB53BF5236042DF4CB4B751EA062 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F9ECA18F8312E3A504E24C80FECC7EF /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3324E2BB0EFF13F8A495A48C92AAD731 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A4B892D6660C212CB9FB7026BB6273 /* Authenticator.swift */; }; + 337252942E4662289373FA3B9D498D05 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */; }; + 3431F5E33F78AB7C0A1565D25671E594 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EE0D2CC1E132AA2DC7409DC84B4A4BE /* CBC.swift */; }; + 35087B8F6AC4F000C85B8D672760AFAA /* CwlMachBadInstructionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 060A50543AB81B19E23BD806CCEA22B9 /* CwlMachBadInstructionHandler.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3537F7CBFBE04113D495FF50BC3D6672 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 740A6CDC28FD5B800F58730464565F0C /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 35AF890A4803F59976F035D5AF6D004D /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA4AC8BA6F81E85613BA6AD144C8517 /* join.m */; }; + 35D0D7E64919A91D318720DD0E0EB870 /* String+BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 832EC3A9F9232404F3B873D45FDD7605 /* String+BytesConvertible.swift */; }; + 35FA8A8C0F5C2390554D932EEE8EFCD3 /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = BAF37AC37F74EC5FF4480FA0A0065871 /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 373C57D757D6DFAC77450763C6BFA620 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93F031CA9C413089F27A67389F7A1580 /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 387ADC2E7F274FC460AB857DFB2A3C4A /* ABIConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBA1E46E645E1CED4A96564708FBA5D8 /* ABIConvertible.swift */; }; + 3891CFC0970F4B9C10C92C0AACF53CDC /* Web3HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07DE90D39B18B0119C3E7FF9EF470D1 /* Web3HttpProvider.swift */; }; + 38FEA25D16ACC1E6F5C696CD95B41A69 /* CwlPreconditionTesting.h in Headers */ = {isa = PBXBuildFile; fileRef = 942B321C2DD1DC344A35FCEA346C6B66 /* CwlPreconditionTesting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 392B6696BC59BDCD988D7C5DF3E3E1C5 /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E570E5A92198662DD86FE6E23B88BA2 /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3BC15E78E295F93DB09252E4F2916783 /* Bytes+SecureRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14998EDCF1010D9575B27AB3064356E9 /* Bytes+SecureRandom.swift */; }; + 3C1ADD139B737138CD0F916B324B19B9 /* secp256k1.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C52F9DE3594C6C316F5A81EA35FDEF47 /* secp256k1.swift-dummy.m */; }; + 3CF6147B0D363508E910EFF0A346356D /* EthereumBlockObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3E290DD389D1E88073697E332BE766 /* EthereumBlockObject.swift */; }; + 3EE85E52B8CFBCEFAD5A18948B3CAE34 /* Bytes+UInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D25C3452F53546A3293BAF75851B44B /* Bytes+UInt.swift */; }; + 3F2822D069EFA00B2915BFEAE83E9D04 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = A96726BBA7E5F30F76D1BDD41CE4D182 /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 402CA6B45A29B5F9E1B313B1879B17C1 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF2461F2E71FBA58F57704666E58140 /* num_gmp.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 41E6B3C3D69E1165FADA2B616D793A9B /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4828EC7457918B225B0600270C7F767A /* UInt16+Extension.swift */; }; + 43E95567704203A2DE95E07947BDF70E /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1165E1D5E8AC9F81E560CF0D6586DB99 /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 4425A61652C1576CA5EDDD59B122594E /* Quick-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D9AAEB2591BBC6F99108C58D56962534 /* Quick-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 466A25D2EB90E4C77C3750BAC6B2F71A /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A84CB579BCD1B99B76EE0B703FFC9020 /* ChaCha20+Foundation.swift */; }; + 473BD05319983C8B4DE2DD157614FECC /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F78BDB091F3FDF903B545AEFF171EC2 /* Blowfish.swift */; }; + 483703A759B98CA09A3512A42CF8050F /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BAF652B9042D46952137B30C8461313 /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 491B89990CA4454F07754C1A8D0FF74E /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD50E8C3B95346AE3AB2A8EE9E0F23B /* Words and Bits.swift */; }; + 493E31FA984BD0EA65D6C16903A86678 /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7970F8189BD07BED08B2C52B06E1F4E1 /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4CAAFB5348A8C11160CF1A47D4A56F4D /* ErrorUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = C78C862CD8BBA26C5219AE51FAC90F9C /* ErrorUtility.swift */; }; + 4E0984F7370F4AAE787D814F5A9091E9 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF427B0C00C326D23BB0E8CD7B01DC80 /* Utils.swift */; }; + 4E70FE29FB2BAD7E5427532B5D2FCF26 /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = CE7BE0EB74B4E7BCDE553F8CD1657971 /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 4EC9CCF8F1D0BE6A3CC77A85B118F77C /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 737F5B9C5CE5255292106F27A06470FD /* Operators.swift */; }; + 4ECFA769E073DDA9827659DDA0A6874E /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = E48FF177CE0BE7210455E98C7D4CD476 /* when.swift */; }; + 4FDBFD7A3CDDEBD8296AFC32B48DF344 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = B99D110847FF8BA1821757FCF80F4E36 /* DSL.swift */; }; + 5023A8211EC3503412E4C6DFD71857A1 /* EthereumData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1806DA8A015C8B379CE568F0E8F006F8 /* EthereumData.swift */; }; + 5082DE8F9D66A1C21DE6D4E2440EFB64 /* Web3+PromiseKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE8D779049919B3421F55BC66E00A73 /* Web3+PromiseKit.swift */; }; + 50C062B83AFE259FF4B779D3E60271C4 /* Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A6D9F70579763199EA4EC5A3A15C711 /* Web3.swift */; }; + 537CE136BE7F7FD054B10DEE1428BB95 /* Int+ETH.swift in Sources */ = {isa = PBXBuildFile; fileRef = A24C16FA13AFC03DA3F02FC5660890D4 /* Int+ETH.swift */; }; + 576D8F6A41A839FD5FCB1A0E582A1F5E /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDE3BAFCB45698181F5EA6B070E728AF /* Int+Extension.swift */; }; + 577364D94A9C1915DE6CDB9F280CF578 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E03F24DA2E12A3AB13CE19308331EB9A /* Cryptor.swift */; }; + 586E381CD5D78B3461E5BFE531D3673B /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C2AEE72F9F8A054AF23BF36B26FEAD1 /* BigInt.swift */; }; + 59AB425E25DF6E7F8AF78D7B8CA7347D /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C6B18DF40D9BBCA4CEE08C4968C305 /* AEAD.swift */; }; + 59AC26C8DBF1A5A970A38CF9EC61A10E /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97869C54F5EA625031219590CDC128A /* Hashable.swift */; }; + 5CF8026ECE677DBE4ADBF2E0AF7DBFB6 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 178F4990EFF3326D72605BD7D124FB8C /* hang.m */; }; + 5F154C985B9DE1085A993CF9AB332BF2 /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E699DC7BF79677F51DF2B0386F2C911 /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 5FA737B7BA5B008041207D6D035B8F37 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BF2F27691430E1696727E131F6FFF3C /* Multiplication.swift */; }; + 5FAECF8DDA78E394F93A941B6878234C /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE2C05A53FCCB317C5AD2D8B78469F43 /* Checksum.swift */; }; + 60675CF50EB3EC8FF8179BCA90812A46 /* QCKDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = D75E4181A226F63CC9F30CAADF2DB5B7 /* QCKDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 60ABA24A900A194A664D4F92D3204AE3 /* ABIObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4921170EA8F1EA1F1D685A346C345534 /* ABIObject.swift */; }; + 625B5F58E9EA766121AF719A182C08D1 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 639B09B3688B60572B54B80EC9242617 /* Utils+Foundation.swift */; }; + 625BD4032B32F73D126788DC8A1FDA59 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 494A23E0D500525DF218E7F4EB0CB74C /* PromiseKit-dummy.m */; }; + 6284D7CAB3540045FCC07B979CBAB573 /* Exports+PromiseKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F4157581703B8597A64438E7CBF28B7 /* Exports+PromiseKit.swift */; }; + 62BD13E6DB1C15178F0ABC3EDB234B69 /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA2443D3C234F633BB81B0D294AE5F2 /* QCKDSL.m */; }; + 651F414F722C195DA792EC9699325D70 /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D06FDDB2884411177A62C245A665E830 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 65BFA4E576552C932B77171C2B728576 /* Pods-Web3_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 407E51111D389395A3816ABD3ED62399 /* Pods-Web3_Tests-dummy.m */; }; + 66CA362EAC6778EC31EDDEA95684FE3F /* Promisable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27D2E20E1019D41C0A4EEE537CDF74C0 /* Promisable.swift */; }; + 67FB7252B61E9CDA3643D080A707580A /* Types+RLPItemConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 772E90C47DF4BECA31E073D42A70A3E8 /* Types+RLPItemConvertible.swift */; }; + 69061AA3DCE50E42DBD8B85D7F9E5C4B /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD3241C61D46E469448C4D5503873593 /* GCM.swift */; }; + 699E4CCA8430D921830ED3BBFE9E8EEC /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F8E167EFC39D75A67200FB7FCB6D68B /* CFB.swift */; }; + 6AEF12AE1E460BBC5887128B7CB76F8C /* Quick.h in Headers */ = {isa = PBXBuildFile; fileRef = C04175803548818A0DCC486BA6183A57 /* Quick.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B4197D2E87B5B445A7AAF18DBA22509 /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = F742A87BD52DB73E00F68A0CB29D8D89 /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6BD7F04AC8E15AC8973BEAECAC872A2E /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5336338ABAD60C484B7E4D0650E3A20D /* MD5.swift */; }; + 6C89A001254A5457C4C77F8371D0FDFE /* EthereumQuantity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9AF98F6602935D02A37B18ADB79748C /* EthereumQuantity.swift */; }; + 6CEEAE540FC9EC080A2E1120610441FD /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27289B94674C5E87D53122EF2B553638 /* HMAC.swift */; }; + 6D6316830EB2C7B6F88E888884CFFD99 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = F273D3009D7ED8402E4769822AB88D82 /* lax_der_parsing.c */; }; + 6DEC06D2DC1640D739C561399CB4778D /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = B827E414666ED541D0285825610DF9B8 /* QuickConfiguration.m */; }; + 6ED749CAF781EDB557E30C69637DBC5F /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36CE0D35B72814A7D84240D36B024FAF /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6FC59CBB360B3EF8E45D151D945BCA54 /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E4521AD77EBFC683EC29D3178D978391 /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 70C9DA49355CD208829199C4DD398BFE /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 211CB7E127D7F40330BFAF4F8EFF356E /* SHA2.swift */; }; + 71116EB71552056EA6D3FE646EBFFF04 /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 82EFD8EC38811F0C2B7D9E046D8CA5E5 /* field_10x26.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7127C33AB60EF855205CD99D6BD2D797 /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81412DE46F248E4C7E1306F3FABC5CC9 /* ABI.swift */; }; + 724CB950B5A5B1A8646C47978EF92A94 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80DF717332ACA0DCC4BEF1EFA951D086 /* AnyPromise.swift */; }; + 735886F64401AC98E17FBB936D6DD21C /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60B272EBEC5899B1253C5A5D98952658 /* SecureBytes.swift */; }; + 73968FE6F26450FE4EDCAA9FF894C03E /* UInt+BytesRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D324D1664C1B34853F426C2F7F658584 /* UInt+BytesRepresentable.swift */; }; + 7403EBDEC592DF5F4AA19EEFED35AC5A /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EBE165443103E733C44455EB91E83A9 /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 74C4A30A55AC7DB057CE14BCA15299C4 /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = B1F6F1352694D2FCFE8AF65EAA7734E5 /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7510B81CFAC15BEF465B18201A245280 /* ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31FF2DF592D2F3DA8F66E7F2DEEC7A5 /* ERC721.swift */; }; + 753E66EEC524ED21CCEC56DE65C428FE /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 393CB64F9939964D087DC15D1CE41690 /* Data Conversion.swift */; }; + 7579DFB18C9375168EBFA3DF97CCA158 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6FB2756C120A4788A2048085948097 /* PKCS5.swift */; }; + 7607162B63CD11A95BD7596E785C11E6 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A7FC67367AEEA3C7A5116AFD036FC43 /* String+Extension.swift */; }; + 76A33567F95AA880D7A1665903049BA2 /* EthereumPrivateKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F489FA37E39E002ABF346AB15B2E1E64 /* EthereumPrivateKey.swift */; }; + 779FBCFE2D103B14B40B8DF6CB4CC781 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23009ACEA882CF8491E004B72E01065F /* RandomBytesSequence.swift */; }; + 77A37AFFA15F14849BE2E781185E5EAA /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9FDACB06390C9F219BBDA74DB29EF23 /* UInt128.swift */; }; + 77EE3C9CB05F3195BED530C9FB599481 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FA28D8A834252A09BBE506754111459 /* BatchedCollection.swift */; }; + 7843D280D25F7EF74802A04058E5E27F /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = ECA6BFBFC03233DB00626A7E09D0E591 /* AnyPromise.m */; }; + 784DC54B4603FF9B368122FCD7D1D897 /* ElementsEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0B754B8636D85D4F1644AE601B8313A /* ElementsEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 7AA21A2A7686580BEF335C12D3D7AB81 /* Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA85FD2E23EBC1270DB1C0932CDCD5C2 /* Await.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 7AF9349379C8CACA092674BB7714F413 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4A7A7E66502122347F71B12BE3B6398 /* Blowfish+Foundation.swift */; }; + 7BB4B3867F2BD7BA467C121BF725A94C /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = CA8BBD91B91EA15CB4149971B728850D /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7BD8B1ADFB3C4BA149F8DBB69A28A0D7 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = CBFC668B85774EE82EE516A39D052F81 /* basic-config.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7C561E4A2DAFBD64E27536D259EFBBB1 /* ERC165.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7576EEB2B64FECB43934FF5A432B6F7 /* ERC165.swift */; }; + 7CAD453E8508D12AD62A73B4BD1AAE70 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A6AD06AAAFF91CB20DDE29F749BE756 /* race.m */; }; + 7DCF180D72617E724061A331A2D490DE /* secp256k1_main.h in Headers */ = {isa = PBXBuildFile; fileRef = D917F647A5F949E12869598B2B281F8D /* secp256k1_main.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7E0FB14FCEC8C1438CAD274DD6E785E1 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B0B7B5829E6E87177192B250271D5A /* HKDF.swift */; }; + 7EDFDE9EDC0DC8E137A33EA6E27837EB /* Types+EthereumValueConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6AB90CE4CAAAA935988810A615F26D8 /* Types+EthereumValueConvertible.swift */; }; + 7F81290E4FCD14135D45DD2277FF7230 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FBA183F0D910CFF423A57A0DAEE02D2 /* CompactMap.swift */; }; + 7FA411A969F1D1A7AD517C3E7B739AA6 /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A363C158993A74A2E16060D390A4A8 /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 7FD6A1E61336904525445C50A6C054BC /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF857708FCF7D704DE69BF1B9F92E6C /* String Conversion.swift */; }; + 80BDDBD289C233EF4A55F3A397C2D024 /* NSBundle+CurrentTestBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1C54B6831016F67FB74BEA0A490164E /* NSBundle+CurrentTestBundle.swift */; }; + 820D11186A64F34D5D58836835674C3A /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2128D08E3B043DFFC8E85F9E7021F516 /* BigInt-dummy.m */; }; + 82607C525BEE07050E18F0BFCF0AEA52 /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA18861441D69F3A69C7A73FA499C1B /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 82DE4BA03F7FBC86FD4D4408AEC3AAD0 /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 905536FA82FADFE7ECAF83DEEE838A26 /* Random.swift */; }; + 83471471E1C19882B8D7FB603577B9F0 /* EthereumValueConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B5A92269385AED4786AEE3A4E3F1A5F /* EthereumValueConvertible.swift */; }; + 836B968E1EA15BA9CB9B2705638A2679 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */; }; + 839805423D82B1BF3645B32840BFCFC3 /* Eth+Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3D0CB5FA711AE26A29C7EAFC09461F8 /* Eth+Contract.swift */; }; + 83E49C3B8280FEEAE4F2A81F64A549B4 /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 101C8D85B8B4F3814C6ABB1B867F1719 /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8413172B4FBB9E364EC42674F13A9FE3 /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A7DB12D29DC39BB7A43801D29CC703 /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8452328A12F76D8457872E94092EA3AD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */; }; + 84A8E69B08420EE67C379A7FAAD3180E /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 056B539E075A6A71A71969412B61B874 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 859300A82EAC46C69C49A8314450827F /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 15DABE8F3FF7934474D136A86D119E7A /* ecmult_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 85FF7A504BB4ED7232F00CE925E568CF /* BigUInt+BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20DFA01DEC8024BEDF2B0F2BBC90131 /* BigUInt+BytesConvertible.swift */; }; + 870471424FE3C6BA3E33C949BEF04D50 /* ToSucceed.swift in Sources */ = {isa = PBXBuildFile; fileRef = D264B1EBE4F3CF1F3366D28509410277 /* ToSucceed.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8784230CBBBC7267F29611E0E1DC961E /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65EDDEE824FE8C02B392E1C108C7544A /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 87F2D5FE41CF23F8A9156E5D04EBA970 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 37BC9AAF1C0EBA7B77930687EC70741F /* scalar_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 888B88EF8BDEBCB1702F8BB33BCBC3B2 /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AD27DBD4B359A52167EEEC230E58CF2 /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 894761062C875FF692A3D7CC74083219 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = AED76DB0DC83E98683CE5A6863FB7B09 /* lax_der_privatekey_parsing.c */; }; + 896D45AE32BCD56E198F304B2B0C5DC2 /* EthereumQuantityTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD9DA49B88BD1B086311D3DD495BEF8 /* EthereumQuantityTag.swift */; }; + 8977422B64480E10E575BE3B2BD65BE6 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 23F992A6E4A33A886E6C5AAC38BE8A7B /* group_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 89A206D51752309E13BD5C427C35A090 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3F161D897F3AABF4992194C7A92BCBD /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 89C884DE6315A87ECFC2EB5F500714AD /* EthereumTransactionObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BB7AF84ED048EAB7AD2DB4F922AEA2D /* EthereumTransactionObject.swift */; }; + 89D30C28183DF9BFC6C940211DA889D7 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29D4DB2B2E9AB982DCF7E0F74E8A6C78 /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8B6BF3261CD6188D9D508F8DE26BF471 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6FA8C8BC40688D2B9431F4171E36A33 /* Array+Extension.swift */; }; + 8BFF04442A40B87380A8F7A3735869D1 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 858E35F0AE6859D47D8D13696F5DD388 /* PCBC.swift */; }; + 8DCFDA8A2CA1C4A83BE0A0C23AEA8072 /* SolidityWrappedValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BB670534C85ACBF4254352878C5DD13 /* SolidityWrappedValue.swift */; }; + 8E1535340D02DC8C5B7DCA1B9C259172 /* UnsignedInteger+Shifting.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE7A65BACB10F225BB4B46E70DF49C77 /* UnsignedInteger+Shifting.swift */; }; + 8EA18644ABC296D69E4F5D9AFFAB43C0 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E81DA14BFDA0CF6C579C61039018005 /* CMAC.swift */; }; + 8F09A5703FB48489098BE732F7ADDA57 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0DA141DEE0E5AE37AB0CE98255838F /* Thenable.swift */; }; + 8F33DAB50F7D5A01F0F90248CBA942BE /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89D21A0C3BE5FA2400C5CCB0B73C95D2 /* Collection+Extension.swift */; }; + 8FCDD99ED8F64891CFE6C472C1FB641A /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E3F0C8179ED5A30EC66589F1AD1399 /* DigestType.swift */; }; + 9001E9E62B78B0F529DE51B4C8690B1A /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53D713EEDF57DF3D78915BB3A078D44 /* AES.swift */; }; + 90AB2EFFC71E839E4D1108012BB7E050 /* EthereumTransactionReceiptObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF4E5C1E786C66133CA32CC44B87AA70 /* EthereumTransactionReceiptObject.swift */; }; + 90DE65DB13EDB7D575A1F8056EC04940 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6129D08B8987B1DF175007AC22ED40DF /* Updatable.swift */; }; + 91069D6ECCC4A9D14B9A30788E86660F /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = F6484B31B7BBAA40F5F40C0C188BBCBC /* util.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 91227FC8663612EAA927C5E4490B2961 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C87023998134AF8F074BE8F7B595D666 /* Cryptors.swift */; }; + 91C3469261619928F9CA63F2EC81FD24 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F5591C054F8C176137EEE454809E385 /* AEADChaCha20Poly1305.swift */; }; + 923604A515D5D85BC6A082BAA4B69CF7 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A68C1E4A9A95876DF949A18EA0B3A2DD /* UInt64+Extension.swift */; }; + 92F5CAA1E197E757452819F60CCFE9DD /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEDAF099235F9A8E211C74B0C434703C /* Codable.swift */; }; + 933F3614269E14C4D8F1259F4BEBF58D /* QuickSelectedTestSuiteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58D95CA182056408D31495941269E74D /* QuickSelectedTestSuiteBuilder.swift */; }; + 9369F7B56B997D7CB6D5451AFAA0C4F4 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59B1715263DBFBC46B73EF5E823E89DF /* OFB.swift */; }; + 94C84E6DFA71C70DF521E9D995C1505F /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940D9DE082878557DE3919947A3774BE /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 959C613046ACE3FDB099E34209CB049D /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DBD6642217063F6319FA01ED23FF52E /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 95ED6E4558734BE80EECB3D462C8938B /* ContractPromiseExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DD29843844447F5DBA6B54C403D8294 /* ContractPromiseExtensions.swift */; }; + 966FBB84C847F2BCAED02AA147A2CFAB /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F97C4822FAB022F372F943D2726A296 /* MatcherFunc.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 970AB0DCDC59EA0530415233ABDB6E75 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AC9A03533435C340EFB3B69C0337813 /* BlockMode.swift */; }; + 9A09E25EC5316A52C372285A8014E24E /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB4E356C31673731FBB1B1E1ED8F7BE1 /* after.swift */; }; + 9A44E8D166174158FE4967B81F1FAE8A /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10F2D48176B59F1538DB30248300865A /* Box.swift */; }; + 9A591561CF28EE328D0A50B30EDC97C6 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB2F3A6D63CF4FF2B97E740227CA06EC /* HMAC+Foundation.swift */; }; + 9B634DC60D0A7C8C303322F28D9E3B02 /* Pods-Web3_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4330E060C8052D67EC808403C2D6EC9F /* Pods-Web3_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C3F7FC69ADC5BFCE26D5BCB0B9234C6 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9809568C08138D460DA1D2CF59193CB9 /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 9C5371C8EABA2C61D0B420980985B02F /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5798F164DAD76EDD3EC65F9C68B38981 /* Rabbit.swift */; }; + 9DB1E08337AC3FF955539F4E0D1074D2 /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75E16D9B376A3F8FF87A85DA1ED66B6B /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 9E46BCA018EF8E992F3252D2CB931D4C /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8922D5F6C47DA728BCF994D9AF5CC752 /* scratch_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9EEF9E84E580920E11E06170D25F65C3 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = EF575DB71AE4AB81F6C15D21BA0A87BB /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A01986E11D8261185836B49C408E7D3E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */; }; + A05304999849BC5CBDEA0D7361975D04 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D180622EB9B5AE0C4CE1EAC375EF43F /* Deprecations.swift */; }; + A0A0894416400AA3DDD3D816608D26B5 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = CEF4067EF4551B47245F7A1AA69193A3 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A0F4BA0B3E15590F9A54E2000FD60C79 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = E88EAA009880FD42537DE2BF52AAD5AF /* ecmult_const.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A1D96A82A8711832664F7303AEFD4359 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B472464D7E33ADFFF056A2B73C5B740B /* Bit.swift */; }; + A20C46FB93B2D89C9CF28281BB95C0F3 /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F3B67742ECDC6F5615AFC6469BD211B /* Prime Test.swift */; }; + A268EDF51C73BE404B028961BC0920B5 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C268F0B50B496091E67B430FF2D1AE6 /* StreamEncryptor.swift */; }; + A37E040974CE578BC0D38DD2EC19D784 /* secp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = D3294C1F5DDB8C7C8574D5AC4132ACFB /* secp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A3D64D9F8469749E8BD720AACF44A0A8 /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5679556D08AFBCEC4C23D705A8600575 /* Subtraction.swift */; }; + A47CBC4297B70B38F9C0681B7A016C3F /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = CA4C8A4D2B724E4EC1AD01E48A7D00B1 /* secp256k1.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A4B6197170839BA97DE105AA9D1FAD7D /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24CC24809D6963D41B55BDAF5F8C48B2 /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A51570857887E8E40B39F91C35358E2D /* Predicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DE71604B4A4E8A1593B6C979B1B9DC /* Predicate.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A615F8B74460ACC93BB9E3617DF815BE /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = F76226E8EFE3895D2D046A673865942F /* firstly.swift */; }; + A7020D83CD1ADF4F81BBC888E80C7E5C /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BB9463AC5A11331F9E2DD176D8C26B7 /* field.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A7253CA8AD620F9A03BFBFCA9A43D5DE /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5353968F78FDC41BA5A473C835C524B6 /* Digest.swift */; }; + A74CEEC58BDEB1F9A37685FCA3376746 /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA31B9DED1F1567740D37EF9320E06FB /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A7A92B2F2D0C5B70A627AB08BC3FC35C /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D45F7FC7EBC5088A4F5048D24D2900C /* String+FoundationExtension.swift */; }; + A7F68DB324781AB431F68DC044F7F16D /* QuickConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BEB57422FA69E2DD779399552D4B73E /* QuickConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A8538ED136634C6103D420E12602ECFD /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 789F5766EB7B9A5E3B81CAECF9F38BA5 /* hash_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A85E0E8F51386EA2767CFE6A77944D98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */; }; + A8609EBDD85CED0BBE7856046E408497 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6127C9DC72E9306C6F780F287F1A57B /* Array+Foundation.swift */; }; + A866ADBC1F2063A8CE130AD896696E48 /* EthereumLogObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89E14DFE3E9AB4C4080889CFA4682EC7 /* EthereumLogObject.swift */; }; + A92A3069D6F07A4700939C97F0D6E69B /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D09365A8D50AB30C05D99A7CA084D0B /* Closures.swift */; }; + A9BFE60E348303E69CA8E16BDC6CF839 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30C6DA62D78140F597FF34EB9BC36E9F /* Rabbit+Foundation.swift */; }; + A9F93A9C40771906414564A30333FDB9 /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 692CB9535D19794A232B6DF3DF72FC95 /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AC26B8C4461E89CC285F1D3273A659BC /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CC91563C01B8E4304F8C3B0A3FE8212 /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + ACC66FF9B02440C92389075D808DF780 /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1101E41DAFF445385FDFD0F72B3635D /* StreamDecryptor.swift */; }; + ACCFCCD5F4259EFEB2B2CD6D426572BB /* Web3-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D2285AE63163BA6F6AE8F76E4266BAAD /* Web3-dummy.m */; }; + AD901898CC40587FD9ED284A8C4D02C0 /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AB46DBD451293F91B0EAC92A2854FB2 /* Callsite.swift */; }; + AE5CCFA709AE3677E58EEE95ABD96A3D /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF3BBD1EA70B4C367D2C2E34FF02EE1D /* Resolver.swift */; }; + AF93B6BF8F9B77FA94122C155906E95D /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064566C7A41AA1501A29DDCCFB3B4973 /* race.swift */; }; + AF9EE94CAD81EB843A407A53C69D2609 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F50B9B9CD2035542FA5B4E837053F6 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AFEE663D6651584F68885FD6BAA6EB22 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = D00D954E9D089813337BAEE92B51D04B /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B03045C89E5E3559DC0899E1008C6B22 /* RPCResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 540A9D093538487862424C7C585DA343 /* RPCResponse.swift */; }; + B08E8D70AAC3F3819C2E40DE59EE3211 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FFB0DDDAC922636929ED3546DA60C3 /* Filter.swift */; }; + B0DDBBB0D639A17075D302E9A36E944D /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21C4CBB7A8B5DC8C6B4302F95BCEB095 /* BigInt.framework */; }; + B1DAA751864400D09FC66C2550FDAC5E /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BCB5B457052BBA304FAE1F9FCE1534D /* Comparable.swift */; }; + B2605F18CA016F04F6DF845DF23D1B1B /* UnsignedInteger+BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E891EC1DEE6CDBD70868FF4FD85257D /* UnsignedInteger+BytesConvertible.swift */; }; + B3D57894F049D820461C4F121BEE7D72 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8F6C05E4F1DBBA11849CF18DD8109E /* field_5x52.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B4682A96361CE957D706C69E9883DF67 /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = AA03774B1C601C8E05CF9D976DD3B055 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B6526B4F942E3110EB027A4E2621B0ED /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F16A5DB4A7966DB837E7C8F77C18B6 /* Guarantee.swift */; }; + B66B9C1E24E72F89FE3E330BEC80A1FA /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B588AAB979C67AA580992B4923C53BA /* ChaCha20.swift */; }; + B6976D4A713D15F0AC297E0004C7FA5E /* RPCRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BF2E5E66B50DC2DB158FF2A344B5483 /* RPCRequest.swift */; }; + B715FEC7D9D7EBC347840A6C6D487E9C /* URL+FileName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70EF678CB8E2FBA978FE17EC8A27934B /* URL+FileName.swift */; }; + B74FAC3CF0940CC1818F5038F1BE032C /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 938788AF636369ACF3135F143013542B /* field_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B7CB8BB133AAC0AFB816CA2F1EE5A5D4 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = F698781833685E7D55C379279A4EC408 /* EthereumAddress.swift */; }; + B7D907F02C3FC408DE7FA69671D82BB9 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA361275BA57D8363E2D1FD10863E28B /* CTR.swift */; }; + B836AB3DB63144FE21C715D2944AEA07 /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = B78F9A12ECD7721DEB896C32CA451D88 /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + B83E7ED850C2527E8BDCB6F6D2AF1905 /* ERC20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C6C7357D580257E80C7108438AAAA44 /* ERC20.swift */; }; + B91B23BE055055154FC2597826ED3D08 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6660A257A456EB9F9E4CAA918993BFDD /* main_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B963C2BB407C6A94FA7BE1A6AA02B9B8 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDEEF266566321C3A377CCF0491D1DCD /* GCD.swift */; }; + BA03452E0418D123DB6370101E158A0F /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F570166805C0112C47D8FD85D69D74 /* World.swift */; }; + BB891BEE22E6E6E9FF35D105D677B296 /* Web3Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA383C37C5F380CCCCECDA735AFD0E77 /* Web3Provider.swift */; }; + BBDC438AA87C72F2B4D77CD54FAF4607 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 28EF0815EC7A6AF1DA76F710C9737480 /* CryptoSwift-dummy.m */; }; + BBFA22D045FA65B4C84F9C9E422F5740 /* Bytes+HexString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1519B4A990FA862D6754E952497546F8 /* Bytes+HexString.swift */; }; + BC1110C70FF4BFB9C608F6513D4E9ED5 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 545387D91FC5526FF3817CF0A832761E /* ecmult_gen.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BE38D19DF4AB9012BC248DD827D26D39 /* String+Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA75C552F839BC17D95EFBC873D2571 /* String+Conversion.swift */; }; + C0367D0510CE9E409A33E9B356422017 /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 04AE9E8B38094B64CE60EDB765263C1A /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C0CCD572ED34493C49C1F5F82E775D12 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0994D146A07AE5F9ABFF4038DC76E3C /* Generics.swift */; }; + C19B5530CFC0A6DF7287283C7FF9CB44 /* Behavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = E34F0A5989039618F706A5664002697F /* Behavior.swift */; }; + C2F8A1BF6F35FE6858E409FC3E65F262 /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = E938CE7236F29237C933698D385E01D7 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C32A2459B02561AC713F9E33D90B11E2 /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A62A2939319FB43996CC26C679E2D10 /* ecdsa.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C38946BA0B97D4F54C5AAEF0AE0FFBA7 /* SolidityInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AD3AF70D5AA6C883E336C13BC9269B0 /* SolidityInvocation.swift */; }; + C3D0C2B65A4DAE69F6E3CA342F677976 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A21916A729224C1F2A8C6EF7E23795E /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C44A421B69CA2AE5D0C42B299CFB04FE /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178B95C27D30A1603525087BB5F7FC3B /* BlockDecryptor.swift */; }; + C5646519088CEF695E4855CCE41EDF71 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976289735591A65902F744F40FE76680 /* Configuration.swift */; }; + C56CE025F6E708D6F5F11DB4EA23728C /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B2444A569D4D5AD07030DAD002EF469 /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C5808A46FC4C07F235753E2AE4A7511A /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = 67A6289602834F825474F86E4D6F7C1F /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C5BB5F86B87305097B8C3BB69052A45F /* Web3-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E5BC506151CAC9F0FAC167F460029B5A /* Web3-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C5C97CBA1846FE33AA702E40D2C1FD39 /* Bytes+TrimLeadingZeros.swift in Sources */ = {isa = PBXBuildFile; fileRef = A28BCD3B9794191AE0B8E017EDF09251 /* Bytes+TrimLeadingZeros.swift */; }; + C6F7946D47A397A47941EF7C09B27A26 /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C46ABD9C86FF9512B062FA05F8B4B1E /* BlockModeOptions.swift */; }; + C7B9D1E45DDA944F4C7E372D3A20999C /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F07AD0F96544427ABB93DC568F5CE86D /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C83D54A5AB38F44FC290473758898079 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4296FE2727B72926B0BA0FA3421747EC /* Integer Conversion.swift */; }; + C956BBAFB159B90C5C4B48791DAC097F /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83381C72E4619FD400BEBA633921825D /* CryptoSwift.framework */; }; + CA3EC8239870A841A3F1FEBC9240D5E9 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C94B4290031E420D2A9E7E0F05DFD54 /* Catchable.swift */; }; + CAA0C9CFA8107CC2E3BED12BAAB7FB5A /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2928BB90B371336B38B9696BC1A0F50 /* Addition.swift */; }; + CAD4F90F6F9C3254203FB1D0FA389D21 /* SolidityFunction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060B405CA253E67BF70D66FA09EBBB4C /* SolidityFunction.swift */; }; + CB8382152B36343AEAAAE26D79F7A61A /* QuickSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A68CA406B70C1A59D91609FD32989F1 /* QuickSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CB96FF8A0BAE7192F2E3968CBBEC46F5 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96506A45DDADD6164E53EE0B503D2A6F /* Promise.swift */; }; + CC2294E8F1C133D179B733160EB97B79 /* LogEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEED7779AF23CBC6B72C886B56DFB3EB /* LogEvent.swift */; }; + CC329DDE2BB25D99600150EC87977C4C /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = BFF185C03009DA8A0DE3251478C8F68C /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CDE8A73C13E5926425F981C6C44BE256 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71D48582F8942C459C44EB70204BEE02 /* PBKDF2.swift */; }; + CF5AECE9150266A7787A6BE8CE21A2CA /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CF9D2A4B13A8F4D9C3C9797E156FE31 /* Error.swift */; }; + CF7354D2C94BA56E5AC993CAFD76E597 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = C349AFBAEA3647615466DB3D816AF6AB /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D0117BC10CB96CA7F32536A69C085C49 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E8BEDDA983A1CD6E38E3CF89AF3A92C /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D0AD2F40B7AD04EB9B7841631009FC75 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B61052E1A673068284F55667FC28BDB8 /* SHA1.swift */; }; + D0F4DCF3B5E25A413441C11FBDF379B6 /* Eth+ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12384AFC04DB0DBB19E442B9115E2F1B /* Eth+ABI.swift */; }; + D149EDAC8F492A125F09C5F11B5171B4 /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF564F19363A909465D8FFE5877A734 /* CBCMAC.swift */; }; + D1A4A1DD617C96759F7B2AB2A6AEB0E1 /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A8A624CF6939BBABC43D12CCD1338AA /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D1FD91581D2DC0A42C9134862F569C83 /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = A44597A1E65254F0FF3F44F677D1FA15 /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D35AB040EB55702A8D91FE73E1323A8F /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = B325C2782CF0C41EAC424C582F704485 /* XCTestSuite+QuickTestSuiteBuilder.m */; }; + D3A571F180E2A2D8A1248890490C9E36 /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF610204B86A7BE697A5DE4B3ED3FA17 /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D3E9072710D911A06B09CC0200689C0C /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B12C5B72A159A8EB9F7BF7577C9A4A /* PKCS7.swift */; }; + D4FF0990DB524278EB20490C5311E19B /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B8247950E015D9B65C4467530309ABA /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D67D4310606DB5BB033349F5DE5A556D /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14CBBD3AE01A706DF464E4C7D823E9A7 /* ExampleGroup.swift */; }; + D6DCFAA7424401BFB0AE68CDF1F6E79A /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0757CBC6DA7E1A46E1C0D10BEED254D /* UInt32+Extension.swift */; }; + D76B98A0E02A3F3DFA71A505960D8A03 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 37277A64B99CF5599A6E3BD450C23DBE /* dispatch_promise.m */; }; + D844F9A52C8F8585751A9AB6CDA3CBD5 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 42A2292447F446EFC9BDB9B31344ACB0 /* hash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D845D55E7CD75BA58F753A5AA454E422 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E132C2227954C99D9ACB3B2BE79209 /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D855E6397ADD5C0E8F636C6111B076F7 /* QuickSpecBase.h in Headers */ = {isa = PBXBuildFile; fileRef = B684A1734E2EC749B5A4D6C900F0A7C9 /* QuickSpecBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D9BEEF4AF5581E19B2E4E7DC53847019 /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B65B54DA339A72F8ABE08BBDFBC838C2 /* QuickSpec.m */; }; + D9D77226091CB2FA4881258D51932159 /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 414B0608D99F31C02D62F4D5A7B13858 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9FEB1F14A7C841D4BE3109A0F193843 /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F2C28B2C705516CB389B2FA462CF6CC /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DA28D44BB7C7CE1CC8F91BEE1E89C610 /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACBC60620FD14B7C4AD14F7348235E90 /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DB8418E33DCD29AE6E17F3D47DA9B742 /* EthereumCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 860EAB87C0160C6F06E450E333176F64 /* EthereumCall.swift */; }; + DE41036F5CDFE75D351DEAC46ECD9FA9 /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 53736FD24805CDE8F333387A1384BE71 /* Nimble-dummy.m */; }; + DE54DDE5C5B6283DE5ADBBDAA91ED589 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DDDEDAB9A07701930F58A6ECE3DEAE3 /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DEB02EDC0121BB22581ACA8FB29CE553 /* Data+BytesConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E0D7F49C77E21160EED9B2261B5AC62 /* Data+BytesConvertible.swift */; }; + DEDBE5477B0B2B8AA8AE6156640359F7 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 52AF6F7E4DC3801944433A270AEAF36A /* num.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DF50C201EB25B9BDDD6363698ADE639C /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54523E8756EB591F723FDD457C007959 /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E0008A8EEF5DE7C3930DEC0D4A09D01D /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 732A160536A2992F0A0BC0FBCB8B6334 /* Exponentiation.swift */; }; + E066624E04F95EE67395F133F3EC8F61 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F42F8ECECD5716E823E6C996AB3272 /* num_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E1AE9BD94915ABE6283234C369E7709B /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3E3AC4CE3062E8140533ACBC54321B /* Floating Point Conversion.swift */; }; + E1C5AE23F3288A2E8A13489165FD3FF2 /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CD340A6C4B12AFDC5BB0C5D5D58BCC3 /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E39FAF1E8808CC9194C1212DA8E9485C /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F34A78B4685DFB7498025378FA7A017 /* ZeroPadding.swift */; }; + E40A6E85823CE585BF269D1DF4EF5E04 /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A36F2EC072B044530D9E4B5A3827E7 /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E421CC9222B4DCD92124CA45FBA6A247 /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86CE354BF2DB4CD56119E3B241AF11A4 /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E50C82041EABD49B665139E490BE0B0D /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = AECC72784EF1B8D03934912989723FA7 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E710CB181D8609F10A163E0B9F764504 /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA58DD640F0A168BA3354C3E711FC1DA /* Shifts.swift */; }; + E74C63A506330D4E6E1DC8F3894BDC22 /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A383BE27434B2442E69CF962C67902 /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E80F2F25B622EBC3F1CACD1AFD851A11 /* ExpectationMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B4B31FBB03D44D49B526801017D7769 /* ExpectationMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E88C605F99C66B774011BBC15C6A7CEB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */; }; + E933B6A54C7C36235FD06CE312641A95 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E02E666854B62A77BFC8AD44C8F4C22C /* Data+Extension.swift */; }; + EB062EA45D4A3859C6CEA85DAC1ED237 /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 360ABB842F8D37AE4E421EDDB34B192F /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + EC1F64900B1D8A3B284F2C1A6A46FD33 /* SolidityType+Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BD3CC6DDA82DB9F9901EC83A6D922BD /* SolidityType+Codable.swift */; }; + EC4662E8CAF037BC5A8384694A40EDB1 /* secp256k1.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E99A66E087D7B71CFC50C59EAFB7225 /* secp256k1.framework */; }; + ED2A126C4E4D7A2E69F3032B5BB82290 /* HooksPhase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A7543D9B247625FE8F91CE8460D5CF /* HooksPhase.swift */; }; + EEC628C85493C98EEB03A4C39B5D9C30 /* secp256k1_ec_mult_static_context.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B1A67A34F70C51850F6F36C861ABC3F /* secp256k1_ec_mult_static_context.h */; settings = {ATTRIBUTES = (Private, ); }; }; + EF3E17C5EBA2E07047B6D3B671C9E6A9 /* String+C99ExtendedIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEFFD5E49C97EBFF9C55F4F66573B6E5 /* String+C99ExtendedIdentifier.swift */; }; + EFCA34D5E38E394C66655EF9BB73DAC2 /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = E273F72C1898931AE4D9B99B33BA2217 /* BigUInt.swift */; }; + F0872C443D5A26B2372FF3811D567080 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = E99BF6E79040C5BE0EC953E02519B55F /* PKCS7Padding.swift */; }; + F11F1BF6CEA5171DFBA25A26A4B7C30A /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = E020BCD290C3FE0E94A298C3655285D8 /* group.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F2A1E92C26D1CECFB31C0CFA9BF3F960 /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 335983E6AD34865510138C2694B4EC89 /* ecmult.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F2D92B4B4E2547312AEA7CFC4681E4D6 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A2F2CDB06BFCC0112C61F7463A4880B /* Padding.swift */; }; + F4321AFD9BA81E0DBC597B274EE15AE3 /* EthereumContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5FA15BA8E93D311BDABCC84D06DE711 /* EthereumContract.swift */; }; + F4FFC2DA2DB7D700DEB55DBAEADCC9E0 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A39DBF058186EB3E768C66E3D228C3 /* after.m */; }; + F5090F52CF4E6B768D0FB5F676B61AE9 /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BC28AD4527A48D2DAE336DBFA88F91D /* Functional.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F5365AC6BE2F5951EABDD1B9A189C37C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */; }; + F54FAE312B9F1BAAA6FA4772F560E7D6 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 140E9C2CC574581C415A4C47A6B1A2F7 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F596D6BBE5BAD012376F7CB73D44CE6B /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AE3F3A9247AB6365FD3DE0D4CBB7501 /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F6914F57ADCD94D0B3C7CD1284326BB3 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CB4B5A8182C312339861ED9A88B226E /* PromiseKit.framework */; }; + F69173F4328F63288F29DCA6C81902DD /* EthereumValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D132F560C4330540A56B13DECCC4161 /* EthereumValue.swift */; }; + F749F2EFD65C93CC4C67266F7E60A74A /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56E32860CFF34ABEB6EE1658E5A495DF /* Square Root.swift */; }; + F7BD5474794EC2668C030C036BF828F6 /* RLPItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E26C5094ECBDC16F1071C7D3E5FCD6C0 /* RLPItem.swift */; }; + F7D1531D2F70EB8D62BA61594E441186 /* SolidityEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF6AB032E932E7F67032A2F35C6777B /* SolidityEvent.swift */; }; + F819EC6EA7D2DA55E19AF50DBB862F0A /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE938E03A895C2800235D43B47AFC19 /* AES.Cryptors.swift */; }; + F82E15AEFA59B24181FE3296F85E151C /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1841035DDD3B3AFE2756647310317FD6 /* CustomStringConvertible.swift */; }; + F87D728F0B678A390B8AD95C0C751F20 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F26CF1E8C408C36486E203305DB21BD /* eckey.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F979A2F0033677399C9D7D9E2F95A691 /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA871045F50C1E12E30C9C2D6AA44497 /* Strideable.swift */; }; + FC06196F6BA37949A64F408086A3BDCF /* Exports+Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7447697FD35041207ED571DF1D0916E2 /* Exports+Web3.swift */; }; + FE89145E028F97514845BBBCDFCF05ED /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A686DC67ED81BC4852C8DAA9D36906 /* BlockCipher.swift */; }; + FF9B34BD1230A982BF86C0D14A585A95 /* RLPEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CFD0989053881D0B479BC95D153B5C2 /* RLPEncoder.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0384401AD604CD9634172BBF7654D068 /* PBXContainerItemProxy */ = { + 0716052E577FC99931F3605FA0ED639D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C484F69E381AF09AA35C51C1E3A23DF2; - remoteInfo = BigInt; + remoteGlobalIDString = F7E62F39F84D3A2AD069F899B886CABE; + remoteInfo = secp256k1.swift; }; - 09173728EF6D79DB81E9B18A24E38DE5 /* PBXContainerItemProxy */ = { + 3C0F6462314EE1A8630F47B2D9018109 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1DEA114408EC5E8EAF98CD02AD1725EE; - remoteInfo = SipHash; + remoteGlobalIDString = 4199AFA0D6B764FC01BD5903BE7D1CAF; + remoteInfo = CryptoSwift; }; - 1E9253FE72D5A96264CDCFADFA3A7E27 /* PBXContainerItemProxy */ = { + 3C7A5D403B07A7200F8DDEED29A120D8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1DEA114408EC5E8EAF98CD02AD1725EE; - remoteInfo = SipHash; + remoteGlobalIDString = 674748A869E81875D7F4B64F80D09F16; + remoteInfo = BigInt; }; - 2A53A46C366AE464D30483EA04C9EC00 /* PBXContainerItemProxy */ = { + 6A0907C803B12C7B4DBA31768B7F247C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4ABFE84ABAAAFE421C48732151CF85E8; - remoteInfo = secp256k1.swift; + remoteGlobalIDString = 674748A869E81875D7F4B64F80D09F16; + remoteInfo = BigInt; }; - 32CA101C1880580207A7EECBD6F8060B /* PBXContainerItemProxy */ = { + 7C1633CA3E39376970D79F338D6EB939 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4ABFE84ABAAAFE421C48732151CF85E8; + remoteGlobalIDString = F7E62F39F84D3A2AD069F899B886CABE; remoteInfo = secp256k1.swift; }; - 37B92B85D3D20CC76D97B2653D8C812A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = E89C25AD23BD4B744AACAD59AE929981; - remoteInfo = PromiseKit; - }; - 724EB159F1BDBAA33AC7C1FE7951B6E7 /* PBXContainerItemProxy */ = { + 7E76FEC8312D890CCCDA242761E9545C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7E65A8D2F3AB83962DC3362AFE05EE9F; + remoteGlobalIDString = 2E92D8B1D3E335F668F432DEFD5446D6; remoteInfo = Web3; }; - 77CBB720E7F59B48560E29F64056805C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = DD7C8BF89FE8053D0A2A2D88BB49CF07; - remoteInfo = Nimble; - }; - 7DF2EB69A746A314872DD2B9FF11252F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2B028F713360D9B13ED4B59673121C55; - remoteInfo = CryptoSwift; - }; - 8E8E0B2C168FCF1E2FDB3DFACC7EBAA2 /* PBXContainerItemProxy */ = { + 842270C2871A634A662503DBEFB8C6BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2346530DE98A17EB1E093470E3E9EF72; + remoteGlobalIDString = 227BE1DA11E696352E2D8F3136FE7A66; remoteInfo = Quick; }; - CD486DAE4266A8A1BCE2D1F662A97329 /* PBXContainerItemProxy */ = { + 9631A0AC8FEEC90F48AA9CC9673D1747 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C484F69E381AF09AA35C51C1E3A23DF2; - remoteInfo = BigInt; + remoteGlobalIDString = 0EC2A6F540408AEA22C3E201D4573BFF; + remoteInfo = PromiseKit; }; - E25FA7B325D509BF75B1A951869CADAC /* PBXContainerItemProxy */ = { + B2D6274CD821171B4C080C508B6FABB1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1DEA114408EC5E8EAF98CD02AD1725EE; - remoteInfo = SipHash; + remoteGlobalIDString = 4199AFA0D6B764FC01BD5903BE7D1CAF; + remoteInfo = CryptoSwift; }; - EE31233B9DB6B3CFCCFA461D9DCA64A2 /* PBXContainerItemProxy */ = { + B70A25A83B5325A5FCF1050F8C04E76E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E89C25AD23BD4B744AACAD59AE929981; + remoteGlobalIDString = 0EC2A6F540408AEA22C3E201D4573BFF; remoteInfo = PromiseKit; }; - F5B3E5CB9B1FE36F418AA6976D482377 /* PBXContainerItemProxy */ = { + C63416DC8E5FBE06E01B5540BEF71732 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2B028F713360D9B13ED4B59673121C55; - remoteInfo = CryptoSwift; + remoteGlobalIDString = F554EA343D656E7FB0C1ACC045EB2666; + remoteInfo = Nimble; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 02187B67AADED39E71E6A5D9E48300DD /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = secp256k1/Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; - 026DD2270201508265868A5FE24FF4EB /* Web3+HTTPInitializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+HTTPInitializer.swift"; path = "Web3/Classes/FoundationHTTP/Web3+HTTPInitializer.swift"; sourceTree = ""; }; - 02A1C6DB05A9F83953A027C6559DB9D4 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; - 02E5B31E818D90BAB6C71A62A81CCEF0 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1/Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; - 02FCD6711AAC48BA327829E1268A3797 /* Callsite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Callsite.swift; path = Sources/Quick/Callsite.swift; sourceTree = ""; }; - 0306234C12314EE264A1F3D662CF81E8 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; - 032AB1281D714206F80C5FC8CA568E26 /* EthereumQuantity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumQuantity.swift; sourceTree = ""; }; - 0374D8DF6DB23E54F93C37194A96FD95 /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.h; sourceTree = ""; }; - 03C000C432823225AF70E4F618383D3F /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 03D03292919A1681374A7C28D6D6862D /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; - 03EBE0BA58FC47E098FED98B3AAC74EF /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; - 0554B17D85F3C7EDD2138E1A3CF97F75 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; - 056FA37C243937C7EEC5931033C237EB /* ERC20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ERC20.swift; sourceTree = ""; }; - 05E8CE3BE7208E0538A6894CDD2C8854 /* XCTestSuite+QuickTestSuiteBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestSuite+QuickTestSuiteBuilder.m"; path = "Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m"; sourceTree = ""; }; - 066801D0084AC891FB130C0E4076EAA6 /* ToSucceed.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToSucceed.swift; path = Sources/Nimble/Matchers/ToSucceed.swift; sourceTree = ""; }; - 07259D4185566E10884D02C48B132993 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = secp256k1/Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; - 073F2BFB328362D0475E149DAAB9D63A /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Quick/Configuration/Configuration.swift; sourceTree = ""; }; - 07781FE39FF8DD2FDD5BECE64FCC5336 /* ContractPromiseExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ContractPromiseExtensions.swift; sourceTree = ""; }; - 07A46A9B0917711296CA89C89F4CE90B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 07EEA37F17591E77ACB56A8FEFCECE1E /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; - 091FA611FE3742DA0D0AD08FD08604B0 /* RandomAccessBlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessBlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift; sourceTree = ""; }; - 093EAABF4EC6D9784FAB889F769FD404 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; - 0A2C152B5C19EC1EFEA4B2D767A0F4A1 /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = secp256k1/Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; - 0A7FAF46CB97226773F962878A539132 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0B441B3D3CF3D34C8C0F3842C2D15988 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; - 0C00DACF01EB6E118D5BFF24AFF14266 /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = secp256k1/Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; - 0C3803ABB07BB5264A08064F261D85C5 /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; - 0CD6EF61D0E158C8660C69277166CF29 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; - 0D2E87A161DA659E588E4B537FF00659 /* secp256k1.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1.swift-dummy.m"; sourceTree = ""; }; - 0DAA3970F37339D18EE9F8F443A200A2 /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; - 0E5FC5E529B159104CEBE8AC58FF3DE4 /* CwlMachBadInstructionHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlMachBadInstructionHandler.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/include/CwlMachBadInstructionHandler.h; sourceTree = ""; }; - 0E8CE6C2306A0078DD3DD4A10EE26ADC /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; - 0F6330229601CA3ED998D67A49F4AEAC /* secp256k1.swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1.swift.xcconfig; sourceTree = ""; }; - 0FA4E73447FEDB96E6A0AEEF34779CA9 /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; - 10ADE13AABF9CA9CC08C3B70018F89E1 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; - 10D102311DEC265BD1CCE9BE1F15939F /* ABIEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIEncoder.swift; sourceTree = ""; }; - 10EF61C27F5C56B14E2F05525A1C9C55 /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Sources/Nimble/Expectation.swift; sourceTree = ""; }; - 115D1D7BF51209F2E69331EAE935F43E /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; - 1236662A305E7E28A9EE49B126F2A63A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 128F99FF7247EB3EB89407C6E83D5794 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; - 13F4FB843DED17D97BF31FA7714E7393 /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Sources/Quick/ExampleGroup.swift; sourceTree = ""; }; - 14FAE077FEC28BD2B0C863CE8F4A9A00 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Quick/DSL/DSL.swift; sourceTree = ""; }; - 151ED605FF057C5118949F9ABC7D5E51 /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; - 153242E1D0EFFADE4D13A5369C3ED884 /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; - 15401453FF6E9C66075B90A92286F89D /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; - 1546A50DBD1A96DDDA7473152A3DE4C8 /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/CwlCatchException.m; sourceTree = ""; }; - 175C4CAB877E384821587F39B52BE319 /* CwlCatchBadInstruction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchBadInstruction.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift; sourceTree = ""; }; - 17D7D2E3444F921949F8B73372503E91 /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; - 18092AF693281AAF8220A8F871F1F6E3 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; - 19940AEE0A339B9B07F9D74F29EDC0A6 /* Bytes+UInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bytes+UInt.swift"; sourceTree = ""; }; - 1A2E47580842DB03FE887CF77F657DF6 /* Example.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Example.swift; path = Sources/Quick/Example.swift; sourceTree = ""; }; - 1B6846F62CC1BB91B9E88D63B6C6B030 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1B8CFE6106141A4892E0D371C4D0A18E /* World.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = World.h; path = Sources/QuickObjectiveC/World.h; sourceTree = ""; }; - 1C3655090C71F4FD162CE5CFEA93122C /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "secp256k1/Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; - 1DC25AFD4D81D8B5254AC49E853D1B79 /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = secp256k1/Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; - 1EA8D2A9942E5989D4FDBF2E73833AAF /* SipHash-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-umbrella.h"; sourceTree = ""; }; - 1F2C5E63290F7EE2068990963842F7D6 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; - 1F4D5030DCB87BDB0E72358699AD1482 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; - 1F8ADA2C7CA0A0546F6E2E2FCBFF5538 /* Web3Provider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Web3Provider.swift; sourceTree = ""; }; - 1F9F806B0DE329BA33DA38AFF34053C0 /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = secp256k1/Classes/secp256k1/src/util.h; sourceTree = ""; }; - 1FA2BAB6A1EA492BFF42C923909E4FB4 /* Exports+Web3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Exports+Web3.swift"; sourceTree = ""; }; - 20A68BE51CE78C13F77C97EF8923486D /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; - 20FEA179A4643A0C616699DCE04ABC8B /* CharacterSet+Hex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CharacterSet+Hex.swift"; sourceTree = ""; }; - 218BCAB72817F7B65EAB7DBFC2528AC2 /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; - 2243FF991A3EA010F448A25355A4F3A5 /* URL+FileName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+FileName.swift"; path = "Sources/Quick/URL+FileName.swift"; sourceTree = ""; }; - 22C27B9F9568051B422721562ABE556D /* SolidityType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityType.swift; sourceTree = ""; }; - 22EFC25F6C62270124D3C498671BED1C /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; - 2337C4F9C5BDCAA343FFDE963489C4D3 /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Sources/Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; - 2351199093BF988FCD58CA9AD17DD51B /* Web3.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = Web3.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 23835C2E498CB7469C0463EBAFD69589 /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; - 238A6CFDDA3D8EE41893500E58C1178B /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; - 242CF1DABFB7F3811DD68F910B6CD064 /* Eth+Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Eth+Contract.swift"; sourceTree = ""; }; - 2464D983CB8276A989075D6E15D83B6D /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; - 248EF1BF68FBE7047312795999763578 /* EthereumTransactionObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumTransactionObject.swift; sourceTree = ""; }; - 24B0FA2F32E9CC0F059E733D5C8A1060 /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; - 25061412F87E8A6EF3D38682C63025EF /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; - 27398E13DFCACF392DD53C73EA2AC327 /* RLPEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLPEncoder.swift; sourceTree = ""; }; - 29127F165C864BE658A9BDF637E7DE0B /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2942FE16D33FD985EDA1E05659672485 /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; - 296EDA418470DC7D8D6CC8523156FDA1 /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Sources/Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; - 29C96EB5E0B3F1DD30B667D77F29FD24 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SipHash.framework; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2A4314CA6AC8B1C35979F04C88FF1AF8 /* Predicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Predicate.swift; path = Sources/Nimble/Matchers/Predicate.swift; sourceTree = ""; }; - 2A7F0C0CEED35D212FE809D57B8DFF93 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; - 2ED84C097BD8EDD27DDA38DD72285541 /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; - 2EF0453618C688C425D05DEBAD2D96F9 /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; - 2F237E00666D3884816F4EC773CC4328 /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; - 2F31036600456A41BE89A4CE9538E094 /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; - 2FE18A03CDBA706EB22E672281A78735 /* Data+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Data+BytesConvertible.swift"; sourceTree = ""; }; - 308E7F02F0085C096CE7C07FD0860151 /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = secp256k1/Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; - 30B04751FDE9BD99F255F0DB75680116 /* ERC165.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ERC165.swift; sourceTree = ""; }; - 31FD1CD05EBA4022AF9F743B92D23CC1 /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; - 320A9B594F030E1416DEB69B6628715C /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Sources/Nimble/Matchers/Equal.swift; sourceTree = ""; }; - 3287DE8A222056FA18747AF8DE1374FE /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; - 32D0D0F063B0CD31D8B502E97F8A3B0C /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BigInt.modulemap; sourceTree = ""; }; - 33AFDF62D2A96374F03D6C2983E92095 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; - 33EBDDB5954645BDBC9B2251B22EA399 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; - 3551FECF054701EE202A735DA7EF4413 /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Sources/Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; - 355FFC555C9D4494AE39AFFC217F7BC3 /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = secp256k1/Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; - 35A476C9FAED98815BB2279ACC486C60 /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; - 3768871E64848B0847C4475E72FEF216 /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = secp256k1/Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; - 37A1185BF100A2424B9C8310865B35FF /* BigInt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.xcconfig; sourceTree = ""; }; - 37A11F9EB88DEF23FD5DD9886D3B4079 /* QuickTestSuite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickTestSuite.swift; path = Sources/Quick/QuickTestSuite.swift; sourceTree = ""; }; - 386BDB80733FD4AED09A321EAD286125 /* ExpectationMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpectationMessage.swift; path = Sources/Nimble/ExpectationMessage.swift; sourceTree = ""; }; - 38CCF05129D42153B7DF7DD955985275 /* Bytes+HexString.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bytes+HexString.swift"; sourceTree = ""; }; - 3904E34D3676A51D11E21EA2639A2982 /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Sources/Nimble/Utils/Functional.swift; sourceTree = ""; }; - 392EFC10273442CE481B90AE52F4949D /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 3A73C236A045A19F7F1A6BBC21AA861B /* QCKDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QCKDSL.h; path = Sources/QuickObjectiveC/DSL/QCKDSL.h; sourceTree = ""; }; - 3ABC2D302FC0EEA4381FC8468D4C057E /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; - 3B5DD42FE948D3A904B0685E0DADED51 /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; - 3B8C95F48EE4DC81A3D06B941ECD1610 /* EthereumValue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumValue.swift; sourceTree = ""; }; - 3BB322CA97F32ABE8AE62FE65184F918 /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; - 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 3D1A27B02D573C87A0C7835575BF2F1B /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; - 3D55284C6B15D846AB1D686E96C1B9E6 /* Web3.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Web3.xcconfig; sourceTree = ""; }; - 3D6366C654B155C155C96B42CBC19789 /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; - 3E1BF4AA95A91F48890A7BCA49802F7C /* SolidityEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityEvent.swift; sourceTree = ""; }; - 3E976964DD4C3815EA1E2EB7B8FB991A /* SolidityTuple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityTuple.swift; sourceTree = ""; }; - 3F30F287D319BC1D332F13AA36763AC7 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; - 400C98220B97601AD2FFE6A02C18F6C2 /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; - 4014155815186F77D78896BE7BA9AF22 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; - 4032E517E59ECDF79BF64F920E14FEA3 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 4125C85D9F09F5AC29147DE17DCC911C /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = secp256k1/Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; - 414E9CB64EA1F0E7FA2B9BC9B00C4A25 /* Web3-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Web3-prefix.pch"; sourceTree = ""; }; - 4279155359F84BCA135161AA89A59628 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; - 42BE753FB4AE78C4F15DACE01827F739 /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; - 44155E0C03F2EDF5D9DBD237A89B7604 /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; - 450E1E61D708B476EEAE2420717DC07D /* QuickConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickConfiguration.h; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.h; sourceTree = ""; }; - 46EB0F46E48C29E6D0622C1926EFD279 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - 472040E5E3E9B82A759953BC41EB61B6 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; - 47A395F620CFE2F06488D3A0BB550CF8 /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = secp256k1/Classes/secp256k1/src/field.h; sourceTree = ""; }; - 47DBD89119B96715BCB2DFAF72113659 /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; - 47E85D85DAA04AC69F47E1E448FBFE43 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 47F9C5D805B22B91E2196861DB702C96 /* CwlMachBadInstructionHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlMachBadInstructionHandler.m; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/CwlMachBadInstructionHandler.m; sourceTree = ""; }; - 48DCFBC1FCFEA58F0FCAEF3DAA2F3301 /* ABIObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIObject.swift; sourceTree = ""; }; - 49790A78B98067EC918FFC5013A51B04 /* String+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+BytesConvertible.swift"; sourceTree = ""; }; - 4A8A3C96EECB272E89FEECD829DCC1FA /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; - 4BB1894DA0DAFDA28D251C22A1BD6DDD /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; - 4BC61FD2E7D49D3D8AC437BD76FE154C /* SolidityWrappedValue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityWrappedValue.swift; sourceTree = ""; }; - 4C4645FA1D456EC81535AD6F11C269B1 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = secp256k1/Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; - 4C83CCB81657E5CDEF6E81B63DB39F9E /* EthereumQuantityTag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumQuantityTag.swift; sourceTree = ""; }; - 4CAEF3097CB64F620CF8A2894D9C9DFA /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; - 4D311232E3F4D26AF87CC1AACE3EDE35 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; - 4D45897FA62EF91CC1C6C9971C05F753 /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; - 4FBDDCC870FF8460DC477ABFDD1A07FC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4FE4682DC287BA9AF8E5C6928045A088 /* ABIDecoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIDecoder.swift; sourceTree = ""; }; - 516C5CB6872ECC548C62F85C9156AF96 /* Pods_Web3_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Web3_Tests.framework; path = "Pods-Web3_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 51A71D56A755251347CB6D243FC57EFC /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; - 522E64F67D0AA0501A02EFE6EB01A37C /* ExampleMetadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleMetadata.swift; path = Sources/Quick/ExampleMetadata.swift; sourceTree = ""; }; - 53102C6B58103ED5E356E7C0187BA2BD /* SipHash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SipHash.modulemap; sourceTree = ""; }; - 535DBD0834B8338BDF1E4BA974726A7E /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = secp256k1/Classes/secp256k1/src/group.h; sourceTree = ""; }; - 53AEDBC15FDDB8206BC9B51EEAFF3350 /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; - 55C24BA59E7D70DA3F877AE94D691682 /* Int+ETH.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Int+ETH.swift"; sourceTree = ""; }; - 584DA17AD18E9D89E5764C4B5322BB25 /* Types+RLPItemConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Types+RLPItemConvertible.swift"; sourceTree = ""; }; - 58C7FABAEB4C5FFAD87A37E962A51EE4 /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumAddress.swift; sourceTree = ""; }; - 58D7CF94E344D10D4D934C11D2F75B48 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; - 5948967C1E1456F2046D4F8F5BD8C870 /* SolidityInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityInvocation.swift; sourceTree = ""; }; - 5A7AEE4589A607A1E12DDF47D005EF08 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; - 5A840EB82A650BC7AB14AEFA17CACD4D /* Pods-Web3_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Web3_Tests-acknowledgements.plist"; sourceTree = ""; }; - 5B008028988883CE43A9DBD66D30BC0C /* Web3.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Web3.framework; path = Web3.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B14FF5D164DF4EBA7E38A8076C48876 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B1FD209D9F6913D207F48FCDA80DB24 /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; - 5B975D753A3C28C8B0E65FF526BB9CB0 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; - 5BA7FE2DB7639880853A53A9BA5FBDF9 /* Web3+PromiseKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+PromiseKit.swift"; path = "Web3/Classes/PromiseKit/Web3+PromiseKit.swift"; sourceTree = ""; }; - 5C1D41EBB18CF3AF800294F2F8FB0CE4 /* secp256k1.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = secp256k1.swift.modulemap; sourceTree = ""; }; - 5D85706CF929F8F33DAF1DF2F089298A /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; - 5E87ACC8BB25135A1022E6A41E68C1C7 /* EthereumCall.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumCall.swift; sourceTree = ""; }; - 5E8C17667FEE901C4C7F8496E163F070 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5F55FD41A94037CEF49050BE8AA785BE /* secp256k1.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1.swift-prefix.pch"; sourceTree = ""; }; - 5FA27322B11CDE7BB17798A4A1F266F6 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; - 600448AF00A8FE2DE434276A7527AE69 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; - 60173B717B215820409958F5DDE9DB57 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Utils/Async.swift; sourceTree = ""; }; - 6102D81214CCE40A7E1FB43A8A1CD4C6 /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; - 617CB09C07A6F911FBA167002FF3406A /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; - 6191E8A80D5F9C1A37F69CF815722132 /* Values+GeneralHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Values+GeneralHashable.swift"; sourceTree = ""; }; - 61C0358C7851BB89C7BD79D3BC1EDDFE /* Secp256k1+CTXCreator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Secp256k1+CTXCreator.swift"; sourceTree = ""; }; - 622477BF9FEFBFEAA5FB4C548357C9E1 /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; - 65978C8FA635596EC5BF168CE53B9D0B /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; - 66D8F28DA65B59CE4F73A0344BC6B849 /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; - 67D634C9E06760D93F6488DC75CF5658 /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Sources/QuickObjectiveC/QuickSpec.m; sourceTree = ""; }; - 68CA51529AD5CF70A65914C362FF1D61 /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; - 691443B05CF05211268A27B24AF33525 /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Sources/Quick/Hooks/Closures.swift; sourceTree = ""; }; - 692FD4BED2C836DC20E2EEE298BE437A /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; - 698EB04E12182EE8DF899ADD2A861F9D /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; - 6A449F80C8ED753E885C41CD08B7E9C5 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; - 6AECFE2E0CB8922B7BE1FC321C9F781D /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; - 6BC9B4FFEAE770A2D2F5599014E4DD21 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; - 6C6D561C5E6910CE26ADA8CBB6101CFB /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; - 6CF3F55464669773593A86D0B04D0D7C /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; - 6D0D2EDC144F47285DAC98FD57FEB928 /* CwlPreconditionTesting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlPreconditionTesting.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h; sourceTree = ""; }; - 6D444081E7FE1A21C3631CD752776E68 /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = secp256k1/Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; - 6E255E2FDC7BD71BC61FA7B8AD795CD0 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; - 70317A400765B75742A5FF1CF2712B02 /* EthereumData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumData.swift; sourceTree = ""; }; - 70E47F38AABFC7DBE9A23A2956805AC0 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; - 71985F2B5849436955762E584639A215 /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; - 71E5EDB14AE3460EAECD74303275A015 /* Pods-Web3_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Web3_Tests-frameworks.sh"; sourceTree = ""; }; - 72518D20B0A2FDF445EF53EECF60DC2A /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; - 730482E0D7FDA2301F6354B3D3A07F0D /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; - 750BDB14AAF8D41D25A0081620C791D3 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; - 7610621FEC419F26AA096DC273A2DB20 /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; - 7610776FD14033880A7CF88F57B7E9E6 /* RPCResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RPCResponse.swift; sourceTree = ""; }; - 761E1E4EA04DFF51B02EF4DEBD3B8E3A /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Sources/Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; - 784F4C2AFDB34A74E5CD0A26F641583C /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; - 792169B8BC5C9C4E6D7D977DC10E6E0D /* Quick.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Quick.framework; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 794819AADA5399461D0C62C61DFF880C /* Web3HttpProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Web3HttpProvider.swift; path = Web3/Classes/FoundationHTTP/Web3HttpProvider.swift; sourceTree = ""; }; - 796E393D1403ED92E609430553F67F98 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; - 798E95787C92F6A7D18E0F557A48EE15 /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; - 7B0F94DBF0F9234BD8344DD5559F1CDA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7B36DEA96406CF8A347805C31D9266E3 /* ErrorUtility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorUtility.swift; path = Sources/Quick/ErrorUtility.swift; sourceTree = ""; }; - 7D1242F95F4F2FCF8E0C2A3E37E54DA0 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; - 7DCBBE56F83F2B39C54E355A178D14E7 /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; - 7DCE6A8429459E354A1D311C48DA4629 /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; - 7DCEAD5D1A80EBB629D242296EC93CAA /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; - 7DEEA6677EBF14C887BD7D5CB09A9A5D /* secp256k1_ec_mult_static_context.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ec_mult_static_context.h; path = secp256k1/Classes/secp256k1_ec_mult_static_context.h; sourceTree = ""; }; - 7E5AB4F22ED5C45AED4F5AE2CBAA3F14 /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; - 7E867D3ECE7110963AA0291D07387094 /* ContainElementSatisfying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainElementSatisfying.swift; path = Sources/Nimble/Matchers/ContainElementSatisfying.swift; sourceTree = ""; }; - 7ED1E4C515EB2C9D64F5B05C0AB321BF /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; - 7F297EFA1CD0342CB6A6EF0F98AB1ECC /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; - 7F8C8E3F5393DE36A7A67E40AD91F81A /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 809B3C64F9D1FF82A0DF75768C6DA1E2 /* Promisable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promisable.swift; path = Web3/Classes/PromiseKit/Promisable.swift; sourceTree = ""; }; - 814060C32883A67D9ACCAC12839E4CFC /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; - 81779189D26FE040B2A6C9C03FFF7104 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = secp256k1/Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; - 82F7A8E586A75054A312D575A07CD70F /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Nimble.framework; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 82FEDB9406982DC4ED01768BEF8FA7BD /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; - 8380D8F40BCCCA84D28E28E935A5A0B8 /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = secp256k1/Classes/secp256k1/src/num.h; sourceTree = ""; }; - 83A4CD9D149507CA5E3CCE4AAAE1133A /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; - 852637243549905E2EF9A6A5A97D380B /* NMBObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBObjCMatcher.swift; path = Sources/Nimble/Adapters/NMBObjCMatcher.swift; sourceTree = ""; }; - 85E7E9E8E7B6A85497B9D9651C612AA4 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - 86C9FD2811DD4A3583C14C7311188AD4 /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = secp256k1/Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; - 88036DA8972E5A2CB1A2AE884C47C600 /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; - 8813EC2A3938F1CFF6044621173B3ED3 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; - 88FC17E43780F4557EAEEBD281EEBE76 /* SipHash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-dummy.m"; sourceTree = ""; }; - 89207C630D7F0520F9E885AE62E8CA31 /* Bytes+SecureRandom.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bytes+SecureRandom.swift"; sourceTree = ""; }; - 89F8E15D1AE8233F5C435DA1A75B4834 /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; - 8A4747D43258EBC06BEEEA5BAC6C8B2D /* RPCRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RPCRequest.swift; sourceTree = ""; }; - 8A84AA80522D6793CEDFB8A2E98323FC /* Web3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Web3.swift; sourceTree = ""; }; - 8B74385C85B2CEC53AD979B756E467C8 /* Web3.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Web3.modulemap; sourceTree = ""; }; - 8BDC867C7FD61E81A90065792C3750FF /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; - 8C2D31CF54D003E39BD773EECCED3D7C /* Quick.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Quick.modulemap; sourceTree = ""; }; - 8C75A080E838D00B78236EF6A3A0EF52 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; - 8C9DB469622E528FDB2968D0D479DCC4 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = secp256k1/Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; - 8D33F8C4C5E22E7449EC25DCC531DB9E /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; - 8E7800E0F2E600AF59F6F26761D6D545 /* CurrentTestCaseTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CurrentTestCaseTracker.h; path = Sources/NimbleObjectiveC/CurrentTestCaseTracker.h; sourceTree = ""; }; - 8EC3D45D9F61E8B1D01F14015B63719C /* Eth+ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Eth+ABI.swift"; sourceTree = ""; }; - 8F61EEAD05FC597C56DCEC6F4626CFDC /* EthereumBlockObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumBlockObject.swift; sourceTree = ""; }; - 8FFA21236534EACFF7A8F7B092F1A6D9 /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; - 91A745AAC55912D298E6F3D10BEEFCA8 /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; - 91C8DEAE81847E961F496521D2E3D482 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; - 926547A3D75C34FD14D40B949F0A166B /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; - 9380A65714A0FEF67E1C38FDA0135C68 /* Pods-Web3_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Web3_Tests.modulemap"; sourceTree = ""; }; - 93886933DBA27BCE1273A64D539246D7 /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.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; }; - 93D77BF9B26A8FBEB86D1170E8C8418B /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; - 941B363634FC7E45D1F6DBF1309830EF /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; - 943B98F52B7332D9B62319189B66E2E0 /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; - 948569B4D9C6031865E2CDCEFC19CEC6 /* EthereumTransactionReceiptObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumTransactionReceiptObject.swift; sourceTree = ""; }; - 95FB214803B5D240D11FEE8801CB24EA /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = secp256k1/Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; - 964314CF68827A540A08F52C47200AA5 /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nimble.modulemap; sourceTree = ""; }; - 96BA022E01F9E926B32E1D180BC8E71B /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; - 9710C651F51448F2B528920A0F210C10 /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; - 9741E8DF3C89A84347F6EE358D3A29C5 /* Pods-Web3_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Web3_Tests-umbrella.h"; sourceTree = ""; }; - 978C4438E526C50F9B674B45F68CF495 /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; - 98B5C69D69CBD88DF7A4467F4E5D9F21 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; - 9AE728CE94901D4D77454B63AE645A0C /* SolidityFunction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityFunction.swift; sourceTree = ""; }; - 9BE7EE643B2C16F171CBA343E6265A2D /* BigUInt+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BigUInt+BytesConvertible.swift"; sourceTree = ""; }; - 9C043C5A399DADC287692756C44BBBF0 /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; - 9C59BA42629A4B26F3DD7E20416FAFC5 /* NSString+C99ExtendedIdentifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSString+C99ExtendedIdentifier.swift"; path = "Sources/Quick/NSString+C99ExtendedIdentifier.swift"; sourceTree = ""; }; - 9DE7C2676EED0661B585232EBEEA51C5 /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; - A05338ACB762ECC9AB1B17F03FBCD90B /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; - A10FDFA0F38274A02995EB6335EC5314 /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; - A174EC3B6D6A83CAEF46979396C68401 /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Sources/Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; - A2377C391F4275A135AFDEE12B2B3FF4 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = secp256k1.framework; path = secp256k1.swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A299F04389EE3EA7A954E42E1E43ECDD /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; - A2BACFFB76EF401B6C51BA8AEF34A02A /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; - A38F8F30FD7EBDB67D9EC79249F0F6AD /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; - A59F11048552441A529A7956CC6E6BBC /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; - A5EEA88FB785FD091D2E6A61DAC389D5 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A6D1B0EE3768B879015E46C696284FD4 /* UnsignedInteger+Shifting.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UnsignedInteger+Shifting.swift"; sourceTree = ""; }; - A899057CC65B61D103FEEAF3BB7FF579 /* RLPDecoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLPDecoder.swift; sourceTree = ""; }; - A8C6C2AA2E225F6F22183A77173571FE /* Types+EthereumValueConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Types+EthereumValueConvertible.swift"; sourceTree = ""; }; - A8EDBC10D69BF1AF9532B77E7A3FA550 /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = secp256k1/Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; - A96AAC54D2883C7F8B72DB18FEAC1A2F /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CryptoSwift.modulemap; sourceTree = ""; }; - A9B19C429994E58B081B61416BFA87F8 /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; - A9F6BA4DB2401D085B90F63BD25EA80D /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; - AB73EB9E85D7D6FC1565824340174109 /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; - ABBDC439D9CFC1913214156703087CA6 /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Sources/Nimble/Matchers/MatcherFunc.swift; sourceTree = ""; }; - AC28117FA8A0A8FEAA6B1A4F706F7D4A /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = secp256k1/Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; - AC9081BE30ABC886966A1CFBEBB358D9 /* Quick.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.xcconfig; sourceTree = ""; }; - ACCF4C897B8CF57EDAF2749BE44711D3 /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; - AE3D3A522B73193F53EE99A551C179C7 /* Quick.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Quick.h; path = Sources/QuickObjectiveC/Quick.h; sourceTree = ""; }; - AE826DBA91F4EC9F06B82D35442221B9 /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; - AF67E700C0A61D0FE0945B9BC84447DF /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; - B12D1500742E7FBFF10E55F61982C992 /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = secp256k1/Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; - B1C747CD5D087AAB5ACA944A25E222B3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B1F31A35EAAB767855BE04F7E91D172D /* BlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/BlockModeWorker.swift; sourceTree = ""; }; - B4395AA7999AD2BE7EC45F66575CE5E5 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B45939D464E33F865AB650B9A1A30933 /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = secp256k1/Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; - B4DDC8CBE33C6900D22158EC10DB45FF /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; - B51E382D8769F311ADB37970697769DD /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; - B65E4CF5FDC77DA08B3D7F9618EA57E9 /* Web3-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Web3-umbrella.h"; sourceTree = ""; }; - B6A17EBFAC2F5D2FF8ED24DADBC47113 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; - B820E340595F46580D1CA72F614AEC5B /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = secp256k1/Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; - B85ED0F014DEF82810BC608225A9F4C6 /* ERC721.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ERC721.swift; sourceTree = ""; }; - B8EC715A178850CABF11C38A2A146D40 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = secp256k1/Classes/secp256k1/src/eckey.h; sourceTree = ""; }; - B9089C05F0FB7FCC2A9E5AA2D22769B7 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; - B91FFF27A51AC1EDF3817F9E381A39BA /* QuickSpecBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpecBase.h; path = Sources/QuickSpecBase/include/QuickSpecBase.h; sourceTree = ""; }; - BA8292905F7956832A4D8B7083789C85 /* RandomAccessCryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessCryptor.swift; path = Sources/CryptoSwift/RandomAccessCryptor.swift; sourceTree = ""; }; - BB3AB2003D0928253915A779699FBD47 /* QuickSpecBase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpecBase.m; path = Sources/QuickSpecBase/QuickSpecBase.m; sourceTree = ""; }; - BBB912D37A6310749E72E1211F5CE8D2 /* QuickSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpec.h; path = Sources/QuickObjectiveC/QuickSpec.h; sourceTree = ""; }; - BF8B5499C0F50A8DE912F7880761081F /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; - BFB445ADEEC9D9C22348C26CE6173418 /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Sources/QuickObjectiveC/DSL/QCKDSL.m; sourceTree = ""; }; - C1724EE7607D4D81CDD454277A7B3081 /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; - C295F177BA5D2892B16F6225BED57C51 /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = secp256k1/Classes/secp256k1/src/scratch.h; sourceTree = ""; }; - C3C3904C2608DDA7285764A44C8DCD4E /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; - C3C817F6E4C472F8DBFE0D2374592DAD /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; - C445F36D532F29ED27E3B16964B0F670 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; - C462F2F180399F9819C88D96BF7DC42C /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; - C48152FC2CA8772914CD242B14BD679F /* secp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1-config.h"; path = "secp256k1/Classes/secp256k1-config.h"; sourceTree = ""; }; - C4DE06B288F2ED36037C4460BD35C6E8 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = secp256k1/Classes/secp256k1/src/hash.h; sourceTree = ""; }; - C50263F60A5CCA8C0ABB639DE4BAEE95 /* Pods-Web3_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Web3_Tests-resources.sh"; sourceTree = ""; }; - C5998AEFD959D2F61BD08B039F9E4E7D /* secp256k1_main.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_main.h; path = secp256k1/Classes/secp256k1_main.h; sourceTree = ""; }; - C613533B2A1DBFCE6266FE33E9856A39 /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; - C6260A067DA4AE8F965990C5F43E54D8 /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; - C728448EF82C238FC411F4A3B000896C /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; - C78C00BC940C42C7E49FB433554191F9 /* World.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = World.swift; path = Sources/Quick/World.swift; sourceTree = ""; }; - C7C5DEB9E8994F42DB8B380CC0C42BBD /* ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABI.swift; sourceTree = ""; }; - C7F839662A9B4DEB43FFEA8C588ABCE2 /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; - C81E2EF53ECA2D72576CD54A52866E4B /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = secp256k1/Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; - C870136AB7D0CC8EC48BA3CAB673EE39 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; - C8763D3993346C0747740CD32E7A4C3F /* RLPItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLPItem.swift; sourceTree = ""; }; - C93A64B331B051DF352392EF5AEF14D4 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; - CC7B0C3E51ACD0B28D091B457E834A7D /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; - CD972FE561A601535044E029C1E462EB /* Bytes+TrimLeadingZeros.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bytes+TrimLeadingZeros.swift"; sourceTree = ""; }; - CE99824BBF6A64B3B3345E2596D8182A /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; - CEC3C856E53F07EEAC70F1A102150C8A /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; - CF9B2E739318AEEC875EB7B78C46BB31 /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; - CFBD9ED3D2BD89BC1C26937327CE6A7E /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; - CFD568820D55ABD2C27152AB62AFAFDF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D00325D3CAEF8366C032DC3BB23F8480 /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = secp256k1/Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; - D03BC01655AB16DFA947729B3B6DB855 /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; - D1E48837634B0D95EEC5F3EA10DF2AB9 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; - D267300B97E7FE8AA495FAA268F58315 /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; - D3187274A6B847689F73173FC2A6769E /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Sources/Quick/DSL/World+DSL.swift"; sourceTree = ""; }; - D47A16B37B1C2C782EF8BF112FB1BCE3 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1/Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; - D681B33FEC46016AD02E71E7CAD4C90C /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Quick/Filter.swift; sourceTree = ""; }; - D7E6D7F438CE1B6F9AAAD9211DF4382F /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; - D8304CB804601AC8E9611A598B1196A9 /* Exports+PromiseKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Exports+PromiseKit.swift"; path = "Web3/Classes/PromiseKit/Exports+PromiseKit.swift"; sourceTree = ""; }; - DB2DF5D360C879A268CB46176F775D56 /* NSBundle+CurrentTestBundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSBundle+CurrentTestBundle.swift"; path = "Sources/Quick/NSBundle+CurrentTestBundle.swift"; sourceTree = ""; }; - DC03A30C178C816122A5F928FEDD3696 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; - DCB101F28B6ED5E2E5283371A5EE2EA8 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; - DCFC20F115EED94F7505972A35B744FA /* AsyncMatcherWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncMatcherWrapper.swift; path = Sources/Nimble/Matchers/AsyncMatcherWrapper.swift; sourceTree = ""; }; - DD0849F4664B183E93C86FEF183B2A1E /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; - DE0FC12ADB9B73826B65373CD0F9E0CA /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; - DE5F700A3649F690CFA7C6EA4EBA7B9E /* String+HexBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+HexBytes.swift"; sourceTree = ""; }; - DEFF63BB67A4175F65289920C1C52027 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; - DF6DF94B9C863C4A863108624043F781 /* String+Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+Conversion.swift"; sourceTree = ""; }; - E277D46647CB78AA0E4A062CD98AD577 /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; - E2FAA23491E40B7A8B95B91F15EAC1B3 /* RLPItemConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLPItemConvertible.swift; sourceTree = ""; }; - E338E73804388EC36BEA7E97BAA58BCF /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; - E39518AC71BCB67ABECC6C1892A96E26 /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; - E3960E327BF9D51B98662D1B6A4615BC /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; - E3EB1152ECA9F420CB1205DCDC06752A /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; - E40227E04804862184614D6C7E47792C /* Pods-Web3_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Web3_Tests.debug.xcconfig"; sourceTree = ""; }; - E44D933FA750FAAEABAC9617B6ED09A4 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - E44DBE7732BD232AE398E8B792D1FFF4 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; - E4E07588C987D6ADB4D5A1F6B5BFADD7 /* EthereumPrivateKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumPrivateKey.swift; sourceTree = ""; }; - E5D08D8814DDDE27E26845D0739F4F81 /* World+DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "World+DSL.h"; path = "Sources/QuickObjectiveC/DSL/World+DSL.h"; sourceTree = ""; }; - E6114D42DD6715C36E75413AEEAB1583 /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; - E66ABAFAD853A0B703B3857E1470E5F1 /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; - E911D61F09C251FF0019675757852705 /* EthereumSyncStatusObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumSyncStatusObject.swift; sourceTree = ""; }; - E945524C526BB5A0736646EECE45A2C1 /* SipHash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-prefix.pch"; sourceTree = ""; }; - E9A4EACB44AA74945D75DD8CCA00AD14 /* BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BytesConvertible.swift; sourceTree = ""; }; - E9BD739760180F4B09C77CE291C70BB8 /* Pods-Web3_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Web3_Tests-acknowledgements.markdown"; sourceTree = ""; }; - EA2930524BC85D9AB2871CE5FFC6EB36 /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; - EA61672CD392DC7507D37FAEADA98997 /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; - EB4F4E789A640C0CBB502CAE0F05A290 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; - EB5AFE1AAB866270ADBE05644FB341CE /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; - EB7A995AFF96DDDB29A3029FFFCF557D /* EthereumPublicKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumPublicKey.swift; sourceTree = ""; }; - EC81613FFDABBC6E963450B9201BD3F5 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; - EE6406FAF709D8BA766E2F5197DD07A7 /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = secp256k1/Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; - EEFCDC12AF33AEE0F5855C679C2353C6 /* Pods-Web3_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Web3_Tests.release.xcconfig"; sourceTree = ""; }; - EF5AEE544634CEEE64799ABC485B0FCB /* Behavior.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Behavior.swift; path = Sources/Quick/Behavior.swift; sourceTree = ""; }; - EFD45B3845C6800E8E820D4B306A2789 /* EthereumValueConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumValueConvertible.swift; sourceTree = ""; }; - F03E565EEFB2443E6E019D050A6840BC /* SipHash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SipHash.xcconfig; sourceTree = ""; }; - F15245FD346E4E52A7F9F2DF3745CB0E /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; - F20634155B8B5C82D5463D4C321BF71D /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F291149AB77992A72F7BC2ACB9A5D517 /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; - F2A21735EE341165381978151A9DFD89 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; - F3BB66F5C0013A118576E4D622C895BD /* SolidityType+Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "SolidityType+Codable.swift"; sourceTree = ""; }; - F3D406DBFDE77BCD5C2EE9C50706D37A /* EthereumTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumTransaction.swift; sourceTree = ""; }; - F48BC58AD2AFCD55F043830B6CA3163C /* Pods-Web3_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Web3_Tests-dummy.m"; sourceTree = ""; }; - F5AAD137CAB8DC860949FC90AE757613 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; - F6483ADD03ED20868B9A44D5D8F3D7C2 /* Web3-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Web3-dummy.m"; sourceTree = ""; }; - F6643144D5D935701469A4D7C87BF9EE /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; - F78090FD0C646BEB960042247EB0ECF2 /* UnsignedInteger+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UnsignedInteger+BytesConvertible.swift"; sourceTree = ""; }; - F79C4E1464331E982975B9A9D8C25829 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = secp256k1/Classes/secp256k1/src/scalar.h; sourceTree = ""; }; - F7AFAA0E86F8E0037E18A7989D55C47F /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; - F85EF2E1E694123602FB11D2A56BF311 /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; - F8774D6AF361F00C6B4D34B898A25D29 /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.m; sourceTree = ""; }; - F9625572A10BB186051EAD0F7B6ADF6F /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; - F9C793F5C0F9D4A88A9FC9069D8BC4D7 /* secp256k1.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1.swift-umbrella.h"; sourceTree = ""; }; - F9E49BAE936605CC38053DA61B5348AC /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; - F9F69ABC773C994BF3549CA31B14DDDF /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; - FAE9D32680A6144A4BE05C3AC12511AF /* HooksPhase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HooksPhase.swift; path = Sources/Quick/Hooks/HooksPhase.swift; sourceTree = ""; }; - FB9CEC17D5440413F57830DAE13204CD /* ABIConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIConvertible.swift; sourceTree = ""; }; - FC3BA69D8A6CC5B7102F6F6C085696D8 /* QuickSelectedTestSuiteBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickSelectedTestSuiteBuilder.swift; path = Sources/Quick/QuickSelectedTestSuiteBuilder.swift; sourceTree = ""; }; - FD0C3868425FA2D0A71BF6880ECFAB9B /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; - FD394D165EB52955B3A11DA125F5B5C5 /* EthereumContract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumContract.swift; sourceTree = ""; }; - FD454301F7EDE01013E2AD506B5D79AE /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; - FDB9F5123B3F8E449A3E2EEC031A78ED /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; - FDD643D103F87D7AA4ABD3358C71C891 /* UInt+BytesRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UInt+BytesRepresentable.swift"; sourceTree = ""; }; - FE67FE58EA1ED37D95B0361E751B6A54 /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; - FEB2210FA93FE113C163BF9B81CD89A0 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; - FEFF554C44E03C723B999617A3DCFBB9 /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = secp256k1/Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; - FF11D79F04597F1AB723CA8900023EFF /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; - FF52351CA3788EA581DAC40164A92A8B /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; - FF93B4CEEA870FB496C43ADE996020AC /* EthereumLogObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumLogObject.swift; sourceTree = ""; }; + 0116FFB611525C4A43EABEEF823BB1DD /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; + 04020C165436AE2D61C01E29425035D7 /* Pods-Web3_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Web3_Tests-frameworks.sh"; sourceTree = ""; }; + 0479522CB09ECCD3FC35221A46CB9ACB /* RLPItemConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLPItemConvertible.swift; sourceTree = ""; }; + 04AE9E8B38094B64CE60EDB765263C1A /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; + 056B539E075A6A71A71969412B61B874 /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = secp256k1/Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; + 060A50543AB81B19E23BD806CCEA22B9 /* CwlMachBadInstructionHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlMachBadInstructionHandler.m; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/CwlMachBadInstructionHandler.m; sourceTree = ""; }; + 060B405CA253E67BF70D66FA09EBBB4C /* SolidityFunction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityFunction.swift; sourceTree = ""; }; + 064566C7A41AA1501A29DDCCFB3B4973 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; + 06C4E15B03BFF236D49790727DA2F566 /* CwlCatchBadInstruction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchBadInstruction.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift; sourceTree = ""; }; + 07648BEAF0A333AAE5B9E9A4E2A11CC2 /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; + 0798543F8AF14C1C6E0889C4D6CB37A8 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; + 082A12102C007287343D36D4881FACE6 /* Nimble-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Nimble-Info.plist"; sourceTree = ""; }; + 0DCF2067DBFC9EDB84B7167B49536370 /* CwlMachBadInstructionHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlMachBadInstructionHandler.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/include/CwlMachBadInstructionHandler.h; sourceTree = ""; }; + 0E81DA14BFDA0CF6C579C61039018005 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; + 0F97C4822FAB022F372F943D2726A296 /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Sources/Nimble/Matchers/MatcherFunc.swift; sourceTree = ""; }; + 101C8D85B8B4F3814C6ABB1B867F1719 /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; + 10F2D48176B59F1538DB30248300865A /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; + 1165E1D5E8AC9F81E560CF0D6586DB99 /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Sources/Nimble/Matchers/Equal.swift; sourceTree = ""; }; + 11AF925E921CDF30AC0899BD7C54AA84 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; + 12135F678BC5F8DD61B45FA94B27CB42 /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; + 12384AFC04DB0DBB19E442B9115E2F1B /* Eth+ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Eth+ABI.swift"; sourceTree = ""; }; + 129BF7DE97010AF311437F120D5FFB7D /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "Sources/Bitwise Ops.swift"; sourceTree = ""; }; + 140E9C2CC574581C415A4C47A6B1A2F7 /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = secp256k1/Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; + 14998EDCF1010D9575B27AB3064356E9 /* Bytes+SecureRandom.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bytes+SecureRandom.swift"; sourceTree = ""; }; + 14CBBD3AE01A706DF464E4C7D823E9A7 /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Sources/Quick/ExampleGroup.swift; sourceTree = ""; }; + 1519B4A990FA862D6754E952497546F8 /* Bytes+HexString.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bytes+HexString.swift"; sourceTree = ""; }; + 15694F6BDA4AF043C86FC01FCE715BEF /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; + 15A7DB12D29DC39BB7A43801D29CC703 /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; + 15AF38FB87573708B87D704103D369DF /* Pods-Web3_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Web3_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 15DABE8F3FF7934474D136A86D119E7A /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; + 15F42F8ECECD5716E823E6C996AB3272 /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = secp256k1/Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; + 178B95C27D30A1603525087BB5F7FC3B /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; + 178F4990EFF3326D72605BD7D124FB8C /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; + 17FB40BCDFE32CA38B1B4477264B20ED /* String+HexBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+HexBytes.swift"; sourceTree = ""; }; + 1806DA8A015C8B379CE568F0E8F006F8 /* EthereumData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumData.swift; sourceTree = ""; }; + 1841035DDD3B3AFE2756647310317FD6 /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; + 19C6B18DF40D9BBCA4CEE08C4968C305 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; + 1A73ABF9D3CE1B4C1DA1CC6C281508E8 /* Quick.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Quick.framework; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1B8247950E015D9B65C4467530309ABA /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; + 1BC28AD4527A48D2DAE336DBFA88F91D /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Sources/Nimble/Utils/Functional.swift; sourceTree = ""; }; + 1F26CF1E8C408C36486E203305DB21BD /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = secp256k1/Classes/secp256k1/src/eckey.h; sourceTree = ""; }; + 1F8E167EFC39D75A67200FB7FCB6D68B /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; + 1F9ECA18F8312E3A504E24C80FECC7EF /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; + 211CB7E127D7F40330BFAF4F8EFF356E /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; + 2128D08E3B043DFFC8E85F9E7021F516 /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; + 21C4CBB7A8B5DC8C6B4302F95BCEB095 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 22A5CA07622D0C1E300D80BF58508B8F /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Nimble.framework; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 23009ACEA882CF8491E004B72E01065F /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; + 23F992A6E4A33A886E6C5AAC38BE8A7B /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = secp256k1/Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; + 24A363C158993A74A2E16060D390A4A8 /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; + 24CC24809D6963D41B55BDAF5F8C48B2 /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; + 270B0FB508DA0A3FF7BE6EFB0F1E42B8 /* Web3-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Web3-prefix.pch"; sourceTree = ""; }; + 27289B94674C5E87D53122EF2B553638 /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; + 27D2E20E1019D41C0A4EEE537CDF74C0 /* Promisable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promisable.swift; path = Web3/Classes/PromiseKit/Promisable.swift; sourceTree = ""; }; + 28EF0815EC7A6AF1DA76F710C9737480 /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; + 29D4DB2B2E9AB982DCF7E0F74E8A6C78 /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Sources/Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; + 2A68CA406B70C1A59D91609FD32989F1 /* QuickSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpec.h; path = Sources/QuickObjectiveC/QuickSpec.h; sourceTree = ""; }; + 2A94E7D3A09D46D989C070A43FCB1EFE /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = Sources/Division.swift; sourceTree = ""; }; + 2AC9A03533435C340EFB3B69C0337813 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; + 2B1A67A34F70C51850F6F36C861ABC3F /* secp256k1_ec_mult_static_context.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ec_mult_static_context.h; path = secp256k1/Classes/secp256k1_ec_mult_static_context.h; sourceTree = ""; }; + 2B5627CBD601B144C26930E865CF93DA /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; + 2BAF652B9042D46952137B30C8461313 /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = secp256k1/Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; + 2BE97D68B60C226725DAD055BC27580A /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; + 2BF2F27691430E1696727E131F6FFF3C /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = Sources/Multiplication.swift; sourceTree = ""; }; + 2C2AEE72F9F8A054AF23BF36B26FEAD1 /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = Sources/BigInt.swift; sourceTree = ""; }; + 2D132F560C4330540A56B13DECCC4161 /* EthereumValue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumValue.swift; sourceTree = ""; }; + 2DD9DA49B88BD1B086311D3DD495BEF8 /* EthereumQuantityTag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumQuantityTag.swift; sourceTree = ""; }; + 2E699DC7BF79677F51DF2B0386F2C911 /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; + 2E891EC1DEE6CDBD70868FF4FD85257D /* UnsignedInteger+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UnsignedInteger+BytesConvertible.swift"; sourceTree = ""; }; + 2FBA183F0D910CFF423A57A0DAEE02D2 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; + 30C6DA62D78140F597FF34EB9BC36E9F /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; + 31500F9CFF1D5B27872E829095EAAD51 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 335983E6AD34865510138C2694B4EC89 /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = secp256k1/Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; + 33F25C7124B03BBBD033CA4B78924260 /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; + 3589AA2CC874BCD6E4D9CCA7BAC5B6DA /* Pods-Web3_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Web3_Tests.debug.xcconfig"; sourceTree = ""; }; + 35E19F0946583352CAD804D7EF973DEC /* RLPDecoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLPDecoder.swift; sourceTree = ""; }; + 360ABB842F8D37AE4E421EDDB34B192F /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; + 36CE0D35B72814A7D84240D36B024FAF /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; + 37277A64B99CF5599A6E3BD450C23DBE /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; + 37BC9AAF1C0EBA7B77930687EC70741F /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; + 393CB64F9939964D087DC15D1CE41690 /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "Sources/Data Conversion.swift"; sourceTree = ""; }; + 3A7FC67367AEEA3C7A5116AFD036FC43 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; + 3AD27DBD4B359A52167EEEC230E58CF2 /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/CwlCatchException.m; sourceTree = ""; }; + 3AF2461F2E71FBA58F57704666E58140 /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = secp256k1/Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; + 3BB670534C85ACBF4254352878C5DD13 /* SolidityWrappedValue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityWrappedValue.swift; sourceTree = ""; }; + 3BB9463AC5A11331F9E2DD176D8C26B7 /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = secp256k1/Classes/secp256k1/src/field.h; sourceTree = ""; }; + 3D45F7FC7EBC5088A4F5048D24D2900C /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; + 3DDDEDAB9A07701930F58A6ECE3DEAE3 /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; + 3E8BEDDA983A1CD6E38E3CF89AF3A92C /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; + 3F34A78B4685DFB7498025378FA7A017 /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; + 3F3B67742ECDC6F5615AFC6469BD211B /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "Sources/Prime Test.swift"; sourceTree = ""; }; + 3F5591C054F8C176137EEE454809E385 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; + 40268DFF9881AD0447A242DA522D00B9 /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; + 407E51111D389395A3816ABD3ED62399 /* Pods-Web3_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Web3_Tests-dummy.m"; sourceTree = ""; }; + 40D9A90FA5CEE94A08F805C47D32F776 /* SolidityTuple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityTuple.swift; sourceTree = ""; }; + 414B0608D99F31C02D62F4D5A7B13858 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; + 4296FE2727B72926B0BA0FA3421747EC /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "Sources/Integer Conversion.swift"; sourceTree = ""; }; + 42A2292447F446EFC9BDB9B31344ACB0 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = secp256k1/Classes/secp256k1/src/hash.h; sourceTree = ""; }; + 4330E060C8052D67EC808403C2D6EC9F /* Pods-Web3_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Web3_Tests-umbrella.h"; sourceTree = ""; }; + 4359400EE30B90098193754E8E9FCED9 /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = secp256k1/Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; + 44E5444D0B89F09187B278786A851999 /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; + 466BAD9BB99CB22858E97123E6483B27 /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; + 46D808B5E1A82EAB01B6EF7D57778C02 /* ExampleMetadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleMetadata.swift; path = Sources/Quick/ExampleMetadata.swift; sourceTree = ""; }; + 47BA56149687EBED665581CF2F220865 /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; + 47F16A5DB4A7966DB837E7C8F77C18B6 /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; + 47F570166805C0112C47D8FD85D69D74 /* World.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = World.swift; path = Sources/Quick/World.swift; sourceTree = ""; }; + 4828EC7457918B225B0600270C7F767A /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; + 4921170EA8F1EA1F1D685A346C345534 /* ABIObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIObject.swift; sourceTree = ""; }; + 494A23E0D500525DF218E7F4EB0CB74C /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; + 4A2F2CDB06BFCC0112C61F7463A4880B /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; + 4A6AD06AAAFF91CB20DDE29F749BE756 /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; + 4B9FEF26E43789B1DF69050DB63D7C59 /* Example.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Example.swift; path = Sources/Quick/Example.swift; sourceTree = ""; }; + 4CA2443D3C234F633BB81B0D294AE5F2 /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Sources/QuickObjectiveC/DSL/QCKDSL.m; sourceTree = ""; }; + 4CF857708FCF7D704DE69BF1B9F92E6C /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "Sources/String Conversion.swift"; sourceTree = ""; }; + 4D180622EB9B5AE0C4CE1EAC375EF43F /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; + 4D25C3452F53546A3293BAF75851B44B /* Bytes+UInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bytes+UInt.swift"; sourceTree = ""; }; + 4DD29843844447F5DBA6B54C403D8294 /* ContractPromiseExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ContractPromiseExtensions.swift; sourceTree = ""; }; + 4E0D7F49C77E21160EED9B2261B5AC62 /* Data+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Data+BytesConvertible.swift"; sourceTree = ""; }; + 4E7E8BD81017C34E8B401C0BBA95D7E5 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 4F78BDB091F3FDF903B545AEFF171EC2 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; + 50C27EBC8ADC4178E76CD1D5CA6F73F2 /* SatisfyAllOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAllOf.swift; path = Sources/Nimble/Matchers/SatisfyAllOf.swift; sourceTree = ""; }; + 52AF6F7E4DC3801944433A270AEAF36A /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = secp256k1/Classes/secp256k1/src/num.h; sourceTree = ""; }; + 5336338ABAD60C484B7E4D0650E3A20D /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; + 5350CC7C611777B427116C0347CEB6D1 /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; + 5353968F78FDC41BA5A473C835C524B6 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; + 53736FD24805CDE8F333387A1384BE71 /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; + 540A9D093538487862424C7C585DA343 /* RPCResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RPCResponse.swift; sourceTree = ""; }; + 54523E8756EB591F723FDD457C007959 /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; + 545387D91FC5526FF3817CF0A832761E /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = secp256k1/Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; + 5679556D08AFBCEC4C23D705A8600575 /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = Sources/Subtraction.swift; sourceTree = ""; }; + 56E32860CFF34ABEB6EE1658E5A495DF /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "Sources/Square Root.swift"; sourceTree = ""; }; + 5798F164DAD76EDD3EC65F9C68B38981 /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; + 58D95CA182056408D31495941269E74D /* QuickSelectedTestSuiteBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickSelectedTestSuiteBuilder.swift; path = Sources/Quick/QuickSelectedTestSuiteBuilder.swift; sourceTree = ""; }; + 59B1715263DBFBC46B73EF5E823E89DF /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; + 5AB54D64761C1BA3FD904065EFF389F2 /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; + 5AD3AF70D5AA6C883E336C13BC9269B0 /* SolidityInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityInvocation.swift; sourceTree = ""; }; + 5B588AAB979C67AA580992B4923C53BA /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; + 5C94B4290031E420D2A9E7E0F05DFD54 /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; + 5EE0D2CC1E132AA2DC7409DC84B4A4BE /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; + 5F3E3AC4CE3062E8140533ACBC54321B /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "Sources/Floating Point Conversion.swift"; sourceTree = ""; }; + 603B473F58E4EBE8D0527169545C7C82 /* CharacterSet+Hex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CharacterSet+Hex.swift"; sourceTree = ""; }; + 609693025FDA6F9C37B5406BE1ECCF55 /* Quick.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.xcconfig; sourceTree = ""; }; + 60B272EBEC5899B1253C5A5D98952658 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; + 6129D08B8987B1DF175007AC22ED40DF /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; + 6345DBF73CA15C1A06D0354C66B4AB50 /* ABIEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIEncoder.swift; sourceTree = ""; }; + 639B09B3688B60572B54B80EC9242617 /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; + 65B12C5B72A159A8EB9F7BF7577C9A4A /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; + 65EDDEE824FE8C02B392E1C108C7544A /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; + 660690BAEB20133B461E90681347E895 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = secp256k1/Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; + 6660A257A456EB9F9E4CAA918993BFDD /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1/Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; + 6710C1BDB439E8BACCD5845ADF11C8F0 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; + 6775400A5B8030F2C41E3764B1A9403E /* secp256k1.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1.swift-umbrella.h"; sourceTree = ""; }; + 67A6289602834F825474F86E4D6F7C1F /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; + 67DA42A11C9B2811AB791C650634A418 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = secp256k1/Classes/secp256k1/src/scalar.h; sourceTree = ""; }; + 68A36F2EC072B044530D9E4B5A3827E7 /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; + 692CB9535D19794A232B6DF3DF72FC95 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; + 6BD3CC6DDA82DB9F9901EC83A6D922BD /* SolidityType+Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "SolidityType+Codable.swift"; sourceTree = ""; }; + 6BF2E5E66B50DC2DB158FF2A344B5483 /* RPCRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RPCRequest.swift; sourceTree = ""; }; + 6C268F0B50B496091E67B430FF2D1AE6 /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; + 6C46ABD9C86FF9512B062FA05F8B4B1E /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; + 6C6C7357D580257E80C7108438AAAA44 /* ERC20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ERC20.swift; sourceTree = ""; }; + 6CB4B5A8182C312339861ED9A88B226E /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6DBD6642217063F6319FA01ED23FF52E /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; + 6E3E290DD389D1E88073697E332BE766 /* EthereumBlockObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumBlockObject.swift; sourceTree = ""; }; + 6F2C28B2C705516CB389B2FA462CF6CC /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; + 70EF678CB8E2FBA978FE17EC8A27934B /* URL+FileName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+FileName.swift"; path = "Sources/Quick/URL+FileName.swift"; sourceTree = ""; }; + 71003D54E0102C32FCA8042BDF1DA8F5 /* Web3-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Web3-Info.plist"; sourceTree = ""; }; + 7150D33AF529B6A674C761D938E2CC8D /* secp256k1.swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "secp256k1.swift-Info.plist"; sourceTree = ""; }; + 71D48582F8942C459C44EB70204BEE02 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; + 71F694DB2FB34861076F8802A63778E2 /* Values+GeneralHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Values+GeneralHashable.swift"; sourceTree = ""; }; + 732A160536A2992F0A0BC0FBCB8B6334 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = Sources/Exponentiation.swift; sourceTree = ""; }; + 736E4B6F6880F6DF524D286CCE8616D5 /* Web3.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Web3.modulemap; sourceTree = ""; }; + 737F5B9C5CE5255292106F27A06470FD /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; + 740A6CDC28FD5B800F58730464565F0C /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; + 7447697FD35041207ED571DF1D0916E2 /* Exports+Web3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Exports+Web3.swift"; sourceTree = ""; }; + 75E16D9B376A3F8FF87A85DA1ED66B6B /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; + 772E90C47DF4BECA31E073D42A70A3E8 /* Types+RLPItemConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Types+RLPItemConvertible.swift"; sourceTree = ""; }; + 775BEF0CC6A7B89819A3FA3FBC5E69C4 /* secp256k1.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = secp256k1.swift.modulemap; sourceTree = ""; }; + 7811CB29E79923E3ACBC5D5AB1216A0B /* NMBObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBObjCMatcher.swift; path = Sources/Nimble/Adapters/NMBObjCMatcher.swift; sourceTree = ""; }; + 78157D4A35770AC564792F32C3F00121 /* ContainElementSatisfying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainElementSatisfying.swift; path = Sources/Nimble/Matchers/ContainElementSatisfying.swift; sourceTree = ""; }; + 789F5766EB7B9A5E3B81CAECF9F38BA5 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = secp256k1/Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; + 7970F8189BD07BED08B2C52B06E1F4E1 /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; + 79F50B9B9CD2035542FA5B4E837053F6 /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; + 7A21916A729224C1F2A8C6EF7E23795E /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; + 7A62A2939319FB43996CC26C679E2D10 /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = secp256k1/Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; + 7A8A624CF6939BBABC43D12CCD1338AA /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; + 7A8F6C05E4F1DBBA11849CF18DD8109E /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = secp256k1/Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; + 7BB7AF84ED048EAB7AD2DB4F922AEA2D /* EthereumTransactionObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumTransactionObject.swift; sourceTree = ""; }; + 7D1B88DB6DFC4FCE322D3FBD4E2B4B8E /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; + 7E153B2A202C45501D6272F7436BB5C1 /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = secp256k1/Classes/secp256k1/src/scratch.h; sourceTree = ""; }; + 7E23F75E2F3950A2010E6ACF0897A9C4 /* Web3+HTTPInitializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+HTTPInitializer.swift"; path = "Web3/Classes/FoundationHTTP/Web3+HTTPInitializer.swift"; sourceTree = ""; }; + 7E747D91CACB2E7738DAA5B95FD27182 /* EthereumPublicKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumPublicKey.swift; sourceTree = ""; }; + 7F4157581703B8597A64438E7CBF28B7 /* Exports+PromiseKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Exports+PromiseKit.swift"; path = "Web3/Classes/PromiseKit/Exports+PromiseKit.swift"; sourceTree = ""; }; + 80633CB5B67352EB90A228FB07368B9F /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 80DF717332ACA0DCC4BEF1EFA951D086 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; + 81412DE46F248E4C7E1306F3FABC5CC9 /* ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABI.swift; sourceTree = ""; }; + 81D1BB938301BC167842C8B4D3608FEF /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; + 82EFD8EC38811F0C2B7D9E046D8CA5E5 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = secp256k1/Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; + 832D59A5C428970ADE9DD2CD06C4A7D1 /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; + 832EC3A9F9232404F3B873D45FDD7605 /* String+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+BytesConvertible.swift"; sourceTree = ""; }; + 83381C72E4619FD400BEBA633921825D /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 835F1D6786A46A70ED600D33D5EEBFA3 /* BigInt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.xcconfig; sourceTree = ""; }; + 8498A9662A32AABE7DB0332499D91632 /* QuickTestSuite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickTestSuite.swift; path = Sources/Quick/QuickTestSuite.swift; sourceTree = ""; }; + 84C28038F13C2AB2362C55D601D3E1CE /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; + 858E35F0AE6859D47D8D13696F5DD388 /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; + 860EAB87C0160C6F06E450E333176F64 /* EthereumCall.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumCall.swift; sourceTree = ""; }; + 86CE354BF2DB4CD56119E3B241AF11A4 /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; + 88A383BE27434B2442E69CF962C67902 /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Sources/Nimble/Expectation.swift; sourceTree = ""; }; + 8922D5F6C47DA728BCF994D9AF5CC752 /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = secp256k1/Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; + 89770B1B358444C1B15FAE9259584888 /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; + 89D21A0C3BE5FA2400C5CCB0B73C95D2 /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; + 89E14DFE3E9AB4C4080889CFA4682EC7 /* EthereumLogObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumLogObject.swift; sourceTree = ""; }; + 8A1EB934A57E399A12AFFAB1F46375EF /* QuickSpecBase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpecBase.m; path = Sources/QuickSpecBase/QuickSpecBase.m; sourceTree = ""; }; + 8AB46DBD451293F91B0EAC92A2854FB2 /* Callsite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Callsite.swift; path = Sources/Quick/Callsite.swift; sourceTree = ""; }; + 8AE3F3A9247AB6365FD3DE0D4CBB7501 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; + 8B5A92269385AED4786AEE3A4E3F1A5F /* EthereumValueConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumValueConvertible.swift; sourceTree = ""; }; + 8BEB57422FA69E2DD779399552D4B73E /* QuickConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickConfiguration.h; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.h; sourceTree = ""; }; + 8CCF92F272148C0D9E9E3A78C85ABF3A /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; + 8CF9D2A4B13A8F4D9C3C9797E156FE31 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; + 8CFD0989053881D0B479BC95D153B5C2 /* RLPEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLPEncoder.swift; sourceTree = ""; }; + 8D09365A8D50AB30C05D99A7CA084D0B /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Sources/Quick/Hooks/Closures.swift; sourceTree = ""; }; + 8EBE165443103E733C44455EB91E83A9 /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Sources/Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; + 8FA28D8A834252A09BBE506754111459 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; + 905536FA82FADFE7ECAF83DEEE838A26 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = Sources/Random.swift; sourceTree = ""; }; + 905D988C6D0C73CC5F74C8874AE43540 /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; + 9090D25FFD49682E8CF8406808663F3B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 938788AF636369ACF3135F143013542B /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = secp256k1/Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; + 93F031CA9C413089F27A67389F7A1580 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; + 940D9DE082878557DE3919947A3774BE /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.swift; sourceTree = ""; }; + 942B321C2DD1DC344A35FCEA346C6B66 /* CwlPreconditionTesting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlPreconditionTesting.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h; sourceTree = ""; }; + 95A4B892D6660C212CB9FB7026BB6273 /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; + 95E132C2227954C99D9ACB3B2BE79209 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Matchers/Async.swift; sourceTree = ""; }; + 96506A45DDADD6164E53EE0B503D2A6F /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; + 96CDC73E4F9CD689C57934A45FA34636 /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; + 973571EEA20B220D346044B9A674677E /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; + 976289735591A65902F744F40FE76680 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Quick/Configuration/Configuration.swift; sourceTree = ""; }; + 9809568C08138D460DA1D2CF59193CB9 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; + 9A0DA141DEE0E5AE37AB0CE98255838F /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; + 9A6D9F70579763199EA4EC5A3A15C711 /* Web3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Web3.swift; sourceTree = ""; }; + 9B2444A569D4D5AD07030DAD002EF469 /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Sources/Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; + 9B4B31FBB03D44D49B526801017D7769 /* ExpectationMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpectationMessage.swift; path = Sources/Nimble/ExpectationMessage.swift; sourceTree = ""; }; + 9BCB5B457052BBA304FAE1F9FCE1534D /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = Sources/Comparable.swift; sourceTree = ""; }; + 9CC91563C01B8E4304F8C3B0A3FE8212 /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; + 9CD340A6C4B12AFDC5BB0C5D5D58BCC3 /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9E570E5A92198662DD86FE6E23B88BA2 /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; + 9E99A66E087D7B71CFC50C59EAFB7225 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9FA4AC8BA6F81E85613BA6AD144C8517 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; + A0B754B8636D85D4F1644AE601B8313A /* ElementsEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ElementsEqual.swift; path = Sources/Nimble/Matchers/ElementsEqual.swift; sourceTree = ""; }; + A1101E41DAFF445385FDFD0F72B3635D /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; + A1C54B6831016F67FB74BEA0A490164E /* NSBundle+CurrentTestBundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSBundle+CurrentTestBundle.swift"; path = "Sources/Quick/NSBundle+CurrentTestBundle.swift"; sourceTree = ""; }; + A24C16FA13AFC03DA3F02FC5660890D4 /* Int+ETH.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Int+ETH.swift"; sourceTree = ""; }; + A28BCD3B9794191AE0B8E017EDF09251 /* Bytes+TrimLeadingZeros.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bytes+TrimLeadingZeros.swift"; sourceTree = ""; }; + A3D9596D8377C7A8A062C997DFB0F664 /* Pods-Web3_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Web3_Tests.release.xcconfig"; sourceTree = ""; }; + A44597A1E65254F0FF3F44F677D1FA15 /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; + A58F39328C6DAF1EB1E1DD5AB79F4F1A /* secp256k1.swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1.swift.xcconfig; sourceTree = ""; }; + A59A42DDF506E1C48202E99AE6CC4860 /* Pods_Web3_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Web3_Tests.framework; path = "Pods-Web3_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + A68C1E4A9A95876DF949A18EA0B3A2DD /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; + A6AB90CE4CAAAA935988810A615F26D8 /* Types+EthereumValueConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Types+EthereumValueConvertible.swift"; sourceTree = ""; }; + A762179A16198E27F78399BC2DF7B1CC /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7D9A6FD5906958CD731F51462C90BD0 /* EthereumSyncStatusObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumSyncStatusObject.swift; sourceTree = ""; }; + A7FC0112050A708B9A7F6A8C033E470D /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = Sources/CryptoSwift/Scrypt.swift; sourceTree = ""; }; + A84CB579BCD1B99B76EE0B703FFC9020 /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; + A8CB59D452B6E499933E6D7F1F958B36 /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nimble.modulemap; sourceTree = ""; }; + A96726BBA7E5F30F76D1BDD41CE4D182 /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = secp256k1/Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; + A9B0B7B5829E6E87177192B250271D5A /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; + AA03774B1C601C8E05CF9D976DD3B055 /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = secp256k1/Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; + AA31B9DED1F1567740D37EF9320E06FB /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; + AB365893B9D1C33E933A9BAFEA0DF17F /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; + AB4E356C31673731FBB1B1E1ED8F7BE1 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; + ACBC60620FD14B7C4AD14F7348235E90 /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; + ACEEDEDA60432F85C81AAC2ABF5AC0B6 /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Sources/Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; + AD3241C61D46E469448C4D5503873593 /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; + AE7A65BACB10F225BB4B46E70DF49C77 /* UnsignedInteger+Shifting.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UnsignedInteger+Shifting.swift"; sourceTree = ""; }; + AECC72784EF1B8D03934912989723FA7 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; + AED76DB0DC83E98683CE5A6863FB7B09 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; + AEED7779AF23CBC6B72C886B56DFB3EB /* LogEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LogEvent.swift; path = Sources/LogEvent.swift; sourceTree = ""; }; + AEEE5E86A85A0252F15481355FE8E4F5 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; + B093CF0C1F71DE02C8E65B185D5B4F5D /* Pods-Web3_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Web3_Tests-acknowledgements.plist"; sourceTree = ""; }; + B0BE9805157E013365A3D6E93C8E03D2 /* Quick-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Quick-Info.plist"; sourceTree = ""; }; + B1E3F0C8179ED5A30EC66589F1AD1399 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; + B1F6F1352694D2FCFE8AF65EAA7734E5 /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; + B20DFA01DEC8024BEDF2B0F2BBC90131 /* BigUInt+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BigUInt+BytesConvertible.swift"; sourceTree = ""; }; + B20F2DBDBF8889BE157C6BFAEF3C9E8F /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Sources/Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; + B325C2782CF0C41EAC424C582F704485 /* XCTestSuite+QuickTestSuiteBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestSuite+QuickTestSuiteBuilder.m"; path = "Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m"; sourceTree = ""; }; + B472464D7E33ADFFF056A2B73C5B740B /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; + B4A5B401A965D232D13E0BD0230D9EB1 /* Pods-Web3_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Web3_Tests.modulemap"; sourceTree = ""; }; + B528E777135988445183E09C8D60BCB6 /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BigInt.modulemap; sourceTree = ""; }; + B5368C2A5ACB298B7B06C7BBCDED9962 /* Quick.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Quick.modulemap; sourceTree = ""; }; + B61052E1A673068284F55667FC28BDB8 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; + B65B54DA339A72F8ABE08BBDFBC838C2 /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Sources/QuickObjectiveC/QuickSpec.m; sourceTree = ""; }; + B684A1734E2EC749B5A4D6C900F0A7C9 /* QuickSpecBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpecBase.h; path = Sources/QuickSpecBase/include/QuickSpecBase.h; sourceTree = ""; }; + B78F9A12ECD7721DEB896C32CA451D88 /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; + B7EF1A295A54630DE36D0B8AAE731E21 /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Sources/Quick/DSL/World+DSL.swift"; sourceTree = ""; }; + B827E414666ED541D0285825610DF9B8 /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.m; sourceTree = ""; }; + B99D110847FF8BA1821757FCF80F4E36 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Quick/DSL/DSL.swift; sourceTree = ""; }; + B9FFB0DDDAC922636929ED3546DA60C3 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Quick/Filter.swift; sourceTree = ""; }; + BA871045F50C1E12E30C9C2D6AA44497 /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = Sources/Strideable.swift; sourceTree = ""; }; + BAF37AC37F74EC5FF4480FA0A0065871 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; + BD45D38EFCC79C0689914EBD33C14727 /* EthereumTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumTransaction.swift; sourceTree = ""; }; + BDE3BAFCB45698181F5EA6B070E728AF /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; + BEDAF099235F9A8E211C74B0C434703C /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = Sources/Codable.swift; sourceTree = ""; }; + BFF185C03009DA8A0DE3251478C8F68C /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; + BFF564F19363A909465D8FFE5877A734 /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; + C04175803548818A0DCC486BA6183A57 /* Quick.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Quick.h; path = Sources/QuickObjectiveC/Quick.h; sourceTree = ""; }; + C1595B1DB1D1FCBD5D0ACB35297BAF08 /* CryptoSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "CryptoSwift-Info.plist"; sourceTree = ""; }; + C20D68BD90487EFA611C653B681393A0 /* Web3.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Web3.xcconfig; sourceTree = ""; }; + C2928BB90B371336B38B9696BC1A0F50 /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = Sources/Addition.swift; sourceTree = ""; }; + C2EFB6A545A7F875AC989A40BD20FE85 /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; + C31FF2DF592D2F3DA8F66E7F2DEEC7A5 /* ERC721.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ERC721.swift; sourceTree = ""; }; + C349AFBAEA3647615466DB3D816AF6AB /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; + C3F161D897F3AABF4992194C7A92BCBD /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; + C4DDBC96A459ED2745179112B73F3FD2 /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CryptoSwift.modulemap; sourceTree = ""; }; + C52F9DE3594C6C316F5A81EA35FDEF47 /* secp256k1.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1.swift-dummy.m"; sourceTree = ""; }; + C5523F86486806B891AFE34C4CFE6AC3 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; + C67756D7174CAA7DDF69A36123A5BA76 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; + C78C862CD8BBA26C5219AE51FAC90F9C /* ErrorUtility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorUtility.swift; path = Sources/Quick/ErrorUtility.swift; sourceTree = ""; }; + C87023998134AF8F074BE8F7B595D666 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; + C9AF98F6602935D02A37B18ADB79748C /* EthereumQuantity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumQuantity.swift; sourceTree = ""; }; + CA4C8A4D2B724E4EC1AD01E48A7D00B1 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = secp256k1/Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; + CA58DD640F0A168BA3354C3E711FC1DA /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = Sources/Shifts.swift; sourceTree = ""; }; + CA85FD2E23EBC1270DB1C0932CDCD5C2 /* Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Await.swift; path = Sources/Nimble/Utils/Await.swift; sourceTree = ""; }; + CA8BBD91B91EA15CB4149971B728850D /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; + CB300F021C5FB5B916B3CDD0A2FA5B2B /* Web3.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Web3.framework; path = Web3.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CBFC668B85774EE82EE516A39D052F81 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "secp256k1/Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; + CDF6AB032E932E7F67032A2F35C6777B /* SolidityEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityEvent.swift; sourceTree = ""; }; + CE7BE0EB74B4E7BCDE553F8CD1657971 /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; + CEA18861441D69F3A69C7A73FA499C1B /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; + CEE8D779049919B3421F55BC66E00A73 /* Web3+PromiseKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+PromiseKit.swift"; path = "Web3/Classes/PromiseKit/Web3+PromiseKit.swift"; sourceTree = ""; }; + CEF4067EF4551B47245F7A1AA69193A3 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1/Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; + CEFFD5E49C97EBFF9C55F4F66573B6E5 /* String+C99ExtendedIdentifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+C99ExtendedIdentifier.swift"; path = "Sources/Quick/String+C99ExtendedIdentifier.swift"; sourceTree = ""; }; + CF427B0C00C326D23BB0E8CD7B01DC80 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; + CF4E5C1E786C66133CA32CC44B87AA70 /* EthereumTransactionReceiptObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumTransactionReceiptObject.swift; sourceTree = ""; }; + D00D954E9D089813337BAEE92B51D04B /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = secp256k1/Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; + D06FDDB2884411177A62C245A665E830 /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; + D07DE90D39B18B0119C3E7FF9EF470D1 /* Web3HttpProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Web3HttpProvider.swift; path = Web3/Classes/FoundationHTTP/Web3HttpProvider.swift; sourceTree = ""; }; + D2285AE63163BA6F6AE8F76E4266BAAD /* Web3-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Web3-dummy.m"; sourceTree = ""; }; + D264B1EBE4F3CF1F3366D28509410277 /* ToSucceed.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToSucceed.swift; path = Sources/Nimble/Matchers/ToSucceed.swift; sourceTree = ""; }; + D324D1664C1B34853F426C2F7F658584 /* UInt+BytesRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UInt+BytesRepresentable.swift"; sourceTree = ""; }; + D3294C1F5DDB8C7C8574D5AC4132ACFB /* secp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1-config.h"; path = "secp256k1/Classes/secp256k1-config.h"; sourceTree = ""; }; + D3C877ECFCD1622DF6251DE31736E4E5 /* SolidityType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityType.swift; sourceTree = ""; }; + D5020ED3AD08DFA8D4F7A9D02C9D9A59 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; + D53D713EEDF57DF3D78915BB3A078D44 /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; + D5A686DC67ED81BC4852C8DAA9D36906 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; + D72BE7D8533EE7C1E25291C77AA66685 /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; + D75E4181A226F63CC9F30CAADF2DB5B7 /* QCKDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QCKDSL.h; path = Sources/QuickObjectiveC/DSL/QCKDSL.h; sourceTree = ""; }; + D83E88B868DB3F11D353ABED20655C43 /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; + D86478174DF947DFDFF1588443F3827A /* ABIDecoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIDecoder.swift; sourceTree = ""; }; + D917F647A5F949E12869598B2B281F8D /* secp256k1_main.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_main.h; path = secp256k1/Classes/secp256k1_main.h; sourceTree = ""; }; + D9A7543D9B247625FE8F91CE8460D5CF /* HooksPhase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HooksPhase.swift; path = Sources/Quick/Hooks/HooksPhase.swift; sourceTree = ""; }; + D9AAEB2591BBC6F99108C58D56962534 /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; + DA361275BA57D8363E2D1FD10863E28B /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; + DA383C37C5F380CCCCECDA735AFD0E77 /* Web3Provider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Web3Provider.swift; sourceTree = ""; }; + DA431BD1EEBE3A60A0D7CAFD98C64305 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = secp256k1.framework; path = secp256k1.swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DCFCCF8198BB225C66F2DEFCF8943783 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; + DDEEF266566321C3A377CCF0491D1DCD /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = Sources/GCD.swift; sourceTree = ""; }; + DF3BBD1EA70B4C367D2C2E34FF02EE1D /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; + DF610204B86A7BE697A5DE4B3ED3FA17 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; + DF904658A715FE9EBAC2B5A5BFEC0350 /* PromiseKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PromiseKit-Info.plist"; sourceTree = ""; }; + E020BCD290C3FE0E94A298C3655285D8 /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = secp256k1/Classes/secp256k1/src/group.h; sourceTree = ""; }; + E029D9EAECAEF059F835738257F5F285 /* Web3.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Web3.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + E02E666854B62A77BFC8AD44C8F4C22C /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; + E03F24DA2E12A3AB13CE19308331EB9A /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; + E0757CBC6DA7E1A46E1C0D10BEED254D /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; + E26C5094ECBDC16F1071C7D3E5FCD6C0 /* RLPItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLPItem.swift; sourceTree = ""; }; + E273F72C1898931AE4D9B99B33BA2217 /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = Sources/BigUInt.swift; sourceTree = ""; }; + E34F0A5989039618F706A5664002697F /* Behavior.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Behavior.swift; path = Sources/Quick/Behavior.swift; sourceTree = ""; }; + E38A77855E56EF5899A286E96CDCF845 /* Pods-Web3_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Web3_Tests-Info.plist"; sourceTree = ""; }; + E3F7279391FA34890A0875C670CA4C58 /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = secp256k1/Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; + E4521AD77EBFC683EC29D3178D978391 /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.h; sourceTree = ""; }; + E48FF177CE0BE7210455E98C7D4CD476 /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; + E5BC506151CAC9F0FAC167F460029B5A /* Web3-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Web3-umbrella.h"; sourceTree = ""; }; + E6127C9DC72E9306C6F780F287F1A57B /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; + E6A39DBF058186EB3E768C66E3D228C3 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; + E7576EEB2B64FECB43934FF5A432B6F7 /* ERC165.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ERC165.swift; sourceTree = ""; }; + E82FD9C8A5757AB9D8BD50C513B5CB70 /* BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BytesConvertible.swift; sourceTree = ""; }; + E88EAA009880FD42537DE2BF52AAD5AF /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = secp256k1/Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; + E938CE7236F29237C933698D385E01D7 /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = secp256k1/Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; + E99BF6E79040C5BE0EC953E02519B55F /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; + E9FDACB06390C9F219BBDA74DB29EF23 /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; + EAA75C552F839BC17D95EFBC873D2571 /* String+Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+Conversion.swift"; sourceTree = ""; }; + EAD50E8C3B95346AE3AB2A8EE9E0F23B /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "Sources/Words and Bits.swift"; sourceTree = ""; }; + EBA1E46E645E1CED4A96564708FBA5D8 /* ABIConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIConvertible.swift; sourceTree = ""; }; + EBE938E03A895C2800235D43B47AFC19 /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; + EC3F11AE52BAD5666EED731D5E375771 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; + EC6FB2756C120A4788A2048085948097 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; + ECA6BFBFC03233DB00626A7E09D0E591 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; + ED2BC15F7011E73C7EDBF6C46BC9D7BA /* BigInt-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "BigInt-Info.plist"; sourceTree = ""; }; + EE2C05A53FCCB317C5AD2D8B78469F43 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; + EE932594ED002DFFD1A2C57020310403 /* Secp256k1+CTXCreator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Secp256k1+CTXCreator.swift"; sourceTree = ""; }; + EF575DB71AE4AB81F6C15D21BA0A87BB /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; + F0364E81EEC6028D6F0B0A0E99AB5731 /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = secp256k1/Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; + F07AD0F96544427ABB93DC568F5CE86D /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; + F0994D146A07AE5F9ABFF4038DC76E3C /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; + F273D3009D7ED8402E4769822AB88D82 /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; + F3D0CB5FA711AE26A29C7EAFC09461F8 /* Eth+Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Eth+Contract.swift"; sourceTree = ""; }; + F489FA37E39E002ABF346AB15B2E1E64 /* EthereumPrivateKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumPrivateKey.swift; sourceTree = ""; }; + F4A7A7E66502122347F71B12BE3B6398 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; + F4DE71604B4A4E8A1593B6C979B1B9DC /* Predicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Predicate.swift; path = Sources/Nimble/Matchers/Predicate.swift; sourceTree = ""; }; + F59BD1FC1303C8334BCBFFF9256591A3 /* secp256k1.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1.swift-prefix.pch"; sourceTree = ""; }; + F5FA15BA8E93D311BDABCC84D06DE711 /* EthereumContract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumContract.swift; sourceTree = ""; }; + F6484B31B7BBAA40F5F40C0C188BBCBC /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = secp256k1/Classes/secp256k1/src/util.h; sourceTree = ""; }; + F698781833685E7D55C379279A4EC408 /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumAddress.swift; sourceTree = ""; }; + F6FA8C8BC40688D2B9431F4171E36A33 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; + F742A87BD52DB73E00F68A0CB29D8D89 /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; + F76226E8EFE3895D2D046A673865942F /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; + F8E64EBD0964710861A3DD91D2B6A94B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + F97869C54F5EA625031219590CDC128A /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = Sources/Hashable.swift; sourceTree = ""; }; + FB2F3A6D63CF4FF2B97E740227CA06EC /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; + FFCBA2F7C279121825A61AE78FB9DCEE /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 06FC3E95509224887C8E9111CDB9D572 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - C71E4B5E5EECC1754B3AEF365765782A /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 718CDC717B873200DB9180BA9800A650 /* Frameworks */ = { + 112619710F78B1BA140D6AC8F22DCB56 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B9BCB804A78A530F862F925744B05E9E /* BigInt.framework in Frameworks */, - 1F8493E27C6B69DED26A34DF2065F412 /* CryptoSwift.framework in Frameworks */, - 49731F92165ABF3D923E330CADB56400 /* Foundation.framework in Frameworks */, - 52DEB3D11609B93EFB1BA91510268C11 /* PromiseKit.framework in Frameworks */, - 2F70A2B5E8E2F62FF891C4E844332C70 /* secp256k1.framework in Frameworks */, - 6EE1AC29FB9144CAA4AE4C6AD6EBEB06 /* SipHash.framework in Frameworks */, + 0A00A1489D4041380B2BABC394E6162A /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 752B4ED0415C87837D344CBC97CC0B3B /* Frameworks */ = { + 2019D8912E9793859766B93D233FABFD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9AC4B14B9B8ADC16DE5F84555DD303EE /* Foundation.framework in Frameworks */, - D68EBBD4056AE13BE83F9BAB86F3B1BA /* SipHash.framework in Frameworks */, + 337252942E4662289373FA3B9D498D05 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 819A9B65073BE3B5599196C0A3B27EBC /* Frameworks */ = { + 35ADBA662B9B6C07632BBC68420C1B9F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D1503C762F7E5D2510DCE2FBF2F89D08 /* Foundation.framework in Frameworks */, + A01986E11D8261185836B49C408E7D3E /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AE346A928881E52E94060F34F1E5802A /* Frameworks */ = { + AB2A787BCECB880DF39E87692FDA4777 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ECFBAF205E8AC46C03A3640627EC08B5 /* Foundation.framework in Frameworks */, + E88C605F99C66B774011BBC15C6A7CEB /* Foundation.framework in Frameworks */, + 1DC8A42CD193911F9FD5D13448CEEBDF /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B077108FABB22152D6BFD715A3F993CB /* Frameworks */ = { + B758E9590E572E80484536BFBAD490EB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C86F716FA3EDEA540606D281917DCB62 /* Foundation.framework in Frameworks */, + 8452328A12F76D8457872E94092EA3AD /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D18B08A2C1B87403C350A07FFB0D5830 /* Frameworks */ = { + C0EE35B1D04A0FD8E786CE252CA0D2DF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9DE83B55BDCA2916F25B3A83DEF16155 /* Foundation.framework in Frameworks */, + F5365AC6BE2F5951EABDD1B9A189C37C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DE8EB533CEE22DB8B903014FB6DAD0A8 /* Frameworks */ = { + F7FA1B167121AC8D4D87E1393DC33900 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E777763CF189D96B9FEA41A283B6FCC1 /* Foundation.framework in Frameworks */, - 9A306BBEE93B7BA387AA092D779FE7C7 /* XCTest.framework in Frameworks */, + B0DDBBB0D639A17075D302E9A36E944D /* BigInt.framework in Frameworks */, + C956BBAFB159B90C5C4B48791DAC097F /* CryptoSwift.framework in Frameworks */, + A85E0E8F51386EA2767CFE6A77944D98 /* Foundation.framework in Frameworks */, + F6914F57ADCD94D0B3C7CD1284326BB3 /* PromiseKit.framework in Frameworks */, + EC4662E8CAF037BC5A8384694A40EDB1 /* secp256k1.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - EF91C46BB07985A9960D9F401B75356B /* Frameworks */ = { + F9F8CFCD3C9798C561B7623608D3C821 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B9620A576658C0DF5C47E0082AC23037 /* Foundation.framework in Frameworks */, + 836B968E1EA15BA9CB9B2705638A2679 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0713D292346738914700295FB63699BD /* PromiseKit */ = { + 1583EB07A7C1E8391025FB1009331E65 /* Support Files */ = { isa = PBXGroup; children = ( - D8304CB804601AC8E9611A598B1196A9 /* Exports+PromiseKit.swift */, - 809B3C64F9D1FF82A0DF75768C6DA1E2 /* Promisable.swift */, - 5BA7FE2DB7639880853A53A9BA5FBDF9 /* Web3+PromiseKit.swift */, + B528E777135988445183E09C8D60BCB6 /* BigInt.modulemap */, + 835F1D6786A46A70ED600D33D5EEBFA3 /* BigInt.xcconfig */, + 2128D08E3B043DFFC8E85F9E7021F516 /* BigInt-dummy.m */, + ED2BC15F7011E73C7EDBF6C46BC9D7BA /* BigInt-Info.plist */, + 12135F678BC5F8DD61B45FA94B27CB42 /* BigInt-prefix.pch */, + 40268DFF9881AD0447A242DA522D00B9 /* BigInt-umbrella.h */, ); - name = PromiseKit; + name = "Support Files"; + path = "../Target Support Files/BigInt"; sourceTree = ""; }; - 0D25E68C4DCD174873E7D4EEF6DFFACE /* Products */ = { + 170D6B8AF1DDA5FA335C364A06E549CB /* CorePromise */ = { isa = PBXGroup; children = ( - F20634155B8B5C82D5463D4C321BF71D /* BigInt.framework */, - 29127F165C864BE658A9BDF637E7DE0B /* CryptoSwift.framework */, - 82F7A8E586A75054A312D575A07CD70F /* Nimble.framework */, - 516C5CB6872ECC548C62F85C9156AF96 /* Pods_Web3_Tests.framework */, - 7F8C8E3F5393DE36A7A67E40AD91F81A /* PromiseKit.framework */, - 792169B8BC5C9C4E6D7D977DC10E6E0D /* Quick.framework */, - A2377C391F4275A135AFDEE12B2B3FF4 /* secp256k1.framework */, - 29C96EB5E0B3F1DD30B667D77F29FD24 /* SipHash.framework */, - 5B008028988883CE43A9DBD66D30BC0C /* Web3.framework */, + E6A39DBF058186EB3E768C66E3D228C3 /* after.m */, + AB4E356C31673731FBB1B1E1ED8F7BE1 /* after.swift */, + BFF185C03009DA8A0DE3251478C8F68C /* AnyPromise.h */, + ECA6BFBFC03233DB00626A7E09D0E591 /* AnyPromise.m */, + 80DF717332ACA0DCC4BEF1EFA951D086 /* AnyPromise.swift */, + 10F2D48176B59F1538DB30248300865A /* Box.swift */, + 5C94B4290031E420D2A9E7E0F05DFD54 /* Catchable.swift */, + 6710C1BDB439E8BACCD5845ADF11C8F0 /* Configuration.swift */, + 1841035DDD3B3AFE2756647310317FD6 /* CustomStringConvertible.swift */, + 4D180622EB9B5AE0C4CE1EAC375EF43F /* Deprecations.swift */, + 37277A64B99CF5599A6E3BD450C23DBE /* dispatch_promise.m */, + 8CF9D2A4B13A8F4D9C3C9797E156FE31 /* Error.swift */, + F76226E8EFE3895D2D046A673865942F /* firstly.swift */, + BAF37AC37F74EC5FF4480FA0A0065871 /* fwd.h */, + 47F16A5DB4A7966DB837E7C8F77C18B6 /* Guarantee.swift */, + 178F4990EFF3326D72605BD7D124FB8C /* hang.m */, + 905D988C6D0C73CC5F74C8874AE43540 /* hang.swift */, + 9FA4AC8BA6F81E85613BA6AD144C8517 /* join.m */, + AEED7779AF23CBC6B72C886B56DFB3EB /* LogEvent.swift */, + 96506A45DDADD6164E53EE0B503D2A6F /* Promise.swift */, + 7970F8189BD07BED08B2C52B06E1F4E1 /* PromiseKit.h */, + 4A6AD06AAAFF91CB20DDE29F749BE756 /* race.m */, + 064566C7A41AA1501A29DDCCFB3B4973 /* race.swift */, + DF3BBD1EA70B4C367D2C2E34FF02EE1D /* Resolver.swift */, + 9A0DA141DEE0E5AE37AB0CE98255838F /* Thenable.swift */, + 11AF925E921CDF30AC0899BD7C54AA84 /* when.m */, + E48FF177CE0BE7210455E98C7D4CD476 /* when.swift */, ); - name = Products; + name = CorePromise; sourceTree = ""; }; - 1338864E9F20EFFCE7336A5680A4CFFA /* Web3 */ = { + 1A586C3FB2CD9EA9DE8ABDCEC6F42B0C /* Nimble */ = { isa = PBXGroup; children = ( - 9F05E53783CBA4147EC06B184D207D6E /* ContractABI */, - E6549F825035BE923ACCCA459A7E2F0A /* Core */, - AF2FD1EA4D2BE0E75B3918904190A673 /* HTTPExtension */, - 1A7C126AFD256518D68957E865066E68 /* Pod */, - 0713D292346738914700295FB63699BD /* PromiseKit */, - DE93D9C15F4E160FCEFFAD12D4F42696 /* Support Files */, + 692CB9535D19794A232B6DF3DF72FC95 /* AdapterProtocols.swift */, + 1B8247950E015D9B65C4467530309ABA /* AllPass.swift */, + 360ABB842F8D37AE4E421EDDB34B192F /* AssertionDispatcher.swift */, + 2E699DC7BF79677F51DF2B0386F2C911 /* AssertionRecorder.swift */, + 95E132C2227954C99D9ACB3B2BE79209 /* Async.swift */, + CA85FD2E23EBC1270DB1C0932CDCD5C2 /* Await.swift */, + 65EDDEE824FE8C02B392E1C108C7544A /* BeAKindOf.swift */, + 832D59A5C428970ADE9DD2CD06C4A7D1 /* BeAnInstanceOf.swift */, + 8AE3F3A9247AB6365FD3DE0D4CBB7501 /* BeCloseTo.swift */, + DF610204B86A7BE697A5DE4B3ED3FA17 /* BeEmpty.swift */, + 07648BEAF0A333AAE5B9E9A4E2A11CC2 /* BeginWith.swift */, + 86CE354BF2DB4CD56119E3B241AF11A4 /* BeGreaterThan.swift */, + AA31B9DED1F1567740D37EF9320E06FB /* BeGreaterThanOrEqualTo.swift */, + 8EBE165443103E733C44455EB91E83A9 /* BeIdenticalTo.swift */, + C3F161D897F3AABF4992194C7A92BCBD /* BeLessThan.swift */, + 29D4DB2B2E9AB982DCF7E0F74E8A6C78 /* BeLessThanOrEqual.swift */, + 15A7DB12D29DC39BB7A43801D29CC703 /* BeLogical.swift */, + ACBC60620FD14B7C4AD14F7348235E90 /* BeNil.swift */, + 940D9DE082878557DE3919947A3774BE /* BeVoid.swift */, + 1F9ECA18F8312E3A504E24C80FECC7EF /* Contain.swift */, + 78157D4A35770AC564792F32C3F00121 /* ContainElementSatisfying.swift */, + 6F2C28B2C705516CB389B2FA462CF6CC /* CwlBadInstructionException.swift */, + 06C4E15B03BFF236D49790727DA2F566 /* CwlCatchBadInstruction.swift */, + 9CD340A6C4B12AFDC5BB0C5D5D58BCC3 /* CwlCatchException.h */, + 3AD27DBD4B359A52167EEEC230E58CF2 /* CwlCatchException.m */, + 2B5627CBD601B144C26930E865CF93DA /* CwlCatchException.swift */, + FFCBA2F7C279121825A61AE78FB9DCEE /* CwlDarwinDefinitions.swift */, + 0DCF2067DBFC9EDB84B7167B49536370 /* CwlMachBadInstructionHandler.h */, + 060A50543AB81B19E23BD806CCEA22B9 /* CwlMachBadInstructionHandler.m */, + 942B321C2DD1DC344A35FCEA346C6B66 /* CwlPreconditionTesting.h */, + EF575DB71AE4AB81F6C15D21BA0A87BB /* DSL.h */, + CEA18861441D69F3A69C7A73FA499C1B /* DSL.m */, + 740A6CDC28FD5B800F58730464565F0C /* DSL.swift */, + 24A363C158993A74A2E16060D390A4A8 /* DSL+Wait.swift */, + A0B754B8636D85D4F1644AE601B8313A /* ElementsEqual.swift */, + 3DDDEDAB9A07701930F58A6ECE3DEAE3 /* EndWith.swift */, + 1165E1D5E8AC9F81E560CF0D6586DB99 /* Equal.swift */, + 9809568C08138D460DA1D2CF59193CB9 /* Errors.swift */, + 88A383BE27434B2442E69CF962C67902 /* Expectation.swift */, + 9B4B31FBB03D44D49B526801017D7769 /* ExpectationMessage.swift */, + 3E8BEDDA983A1CD6E38E3CF89AF3A92C /* Expression.swift */, + 93F031CA9C413089F27A67389F7A1580 /* FailureMessage.swift */, + 1BC28AD4527A48D2DAE336DBFA88F91D /* Functional.swift */, + 54523E8756EB591F723FDD457C007959 /* HaveCount.swift */, + 67A6289602834F825474F86E4D6F7C1F /* mach_excServer.c */, + E4521AD77EBFC683EC29D3178D978391 /* mach_excServer.h */, + 101C8D85B8B4F3814C6ABB1B867F1719 /* Match.swift */, + 0F97C4822FAB022F372F943D2726A296 /* MatcherFunc.swift */, + 9B2444A569D4D5AD07030DAD002EF469 /* MatcherProtocols.swift */, + 36CE0D35B72814A7D84240D36B024FAF /* MatchError.swift */, + 5AB54D64761C1BA3FD904065EFF389F2 /* Nimble.h */, + 24CC24809D6963D41B55BDAF5F8C48B2 /* NimbleEnvironment.swift */, + 7A8A624CF6939BBABC43D12CCD1338AA /* NimbleXCTestHandler.swift */, + 466BAD9BB99CB22858E97123E6483B27 /* NMBExceptionCapture.h */, + B78F9A12ECD7721DEB896C32CA451D88 /* NMBExceptionCapture.m */, + D72BE7D8533EE7C1E25291C77AA66685 /* NMBExpectation.swift */, + 7811CB29E79923E3ACBC5D5AB1216A0B /* NMBObjCMatcher.swift */, + B1F6F1352694D2FCFE8AF65EAA7734E5 /* NMBStringify.h */, + 9E570E5A92198662DD86FE6E23B88BA2 /* NMBStringify.m */, + 75E16D9B376A3F8FF87A85DA1ED66B6B /* PostNotification.swift */, + F4DE71604B4A4E8A1593B6C979B1B9DC /* Predicate.swift */, + A44597A1E65254F0FF3F44F677D1FA15 /* RaisesException.swift */, + 50C27EBC8ADC4178E76CD1D5CA6F73F2 /* SatisfyAllOf.swift */, + F742A87BD52DB73E00F68A0CB29D8D89 /* SatisfyAnyOf.swift */, + 7D1B88DB6DFC4FCE322D3FBD4E2B4B8E /* SourceLocation.swift */, + F07AD0F96544427ABB93DC568F5CE86D /* Stringers.swift */, + 9CC91563C01B8E4304F8C3B0A3FE8212 /* ThrowAssertion.swift */, + 68A36F2EC072B044530D9E4B5A3827E7 /* ThrowError.swift */, + D264B1EBE4F3CF1F3366D28509410277 /* ToSucceed.swift */, + CE7BE0EB74B4E7BCDE553F8CD1657971 /* XCTestObservationCenter+Register.m */, + 7B5346026C122AED0047EED8E8E06E40 /* Support Files */, ); - name = Web3; - path = ../..; + name = Nimble; + path = Nimble; sourceTree = ""; }; - 15D1DA2C7D0B60599303EA6F217106A7 /* Support Files */ = { + 1AE241D48457E6EB98BBBBC574DC52AD /* Providers */ = { isa = PBXGroup; children = ( - 07A46A9B0917711296CA89C89F4CE90B /* Info.plist */, - 472040E5E3E9B82A759953BC41EB61B6 /* PromiseKit.modulemap */, - 7ED1E4C515EB2C9D64F5B05C0AB321BF /* PromiseKit.xcconfig */, - 8813EC2A3938F1CFF6044621173B3ED3 /* PromiseKit-dummy.m */, - 2A7F0C0CEED35D212FE809D57B8DFF93 /* PromiseKit-prefix.pch */, - 093EAABF4EC6D9784FAB889F769FD404 /* PromiseKit-umbrella.h */, + DA383C37C5F380CCCCECDA735AFD0E77 /* Web3Provider.swift */, ); - name = "Support Files"; - path = "../Target Support Files/PromiseKit"; + name = Providers; + path = Web3/Classes/Core/Providers; sourceTree = ""; }; - 168C8292C9494C68F2763FBE20848858 /* Targets Support Files */ = { + 2309AEF14843C67B62F48B5D1834F43F /* PromiseKit */ = { isa = PBXGroup; children = ( - 9BF7A636EE64A0AF9348CAF020326819 /* Pods-Web3_Tests */, + 7F4157581703B8597A64438E7CBF28B7 /* Exports+PromiseKit.swift */, + 27D2E20E1019D41C0A4EEE537CDF74C0 /* Promisable.swift */, + CEE8D779049919B3421F55BC66E00A73 /* Web3+PromiseKit.swift */, ); - name = "Targets Support Files"; + name = PromiseKit; sourceTree = ""; }; - 1A7C126AFD256518D68957E865066E68 /* Pod */ = { + 2F583B2E4E5CCB1EEE36C29E1FE31F4F /* Targets Support Files */ = { isa = PBXGroup; children = ( - E44D933FA750FAAEABAC9617B6ED09A4 /* LICENSE */, - 4032E517E59ECDF79BF64F920E14FEA3 /* README.md */, - 2351199093BF988FCD58CA9AD17DD51B /* Web3.podspec */, + 6385D20EC4846CD26259538C0A3CB34C /* Pods-Web3_Tests */, ); - name = Pod; + name = "Targets Support Files"; sourceTree = ""; }; - 381487036EB0720639C51A511142E1DE /* Quick */ = { + 418A9C82FBDE212A9159C805A052BBF3 /* HTTPExtension */ = { isa = PBXGroup; children = ( - EF5AEE544634CEEE64799ABC485B0FCB /* Behavior.swift */, - 02FCD6711AAC48BA327829E1268A3797 /* Callsite.swift */, - 691443B05CF05211268A27B24AF33525 /* Closures.swift */, - 073F2BFB328362D0475E149DAAB9D63A /* Configuration.swift */, - 14FAE077FEC28BD2B0C863CE8F4A9A00 /* DSL.swift */, - 7B36DEA96406CF8A347805C31D9266E3 /* ErrorUtility.swift */, - 1A2E47580842DB03FE887CF77F657DF6 /* Example.swift */, - 13F4FB843DED17D97BF31FA7714E7393 /* ExampleGroup.swift */, - A174EC3B6D6A83CAEF46979396C68401 /* ExampleHooks.swift */, - 522E64F67D0AA0501A02EFE6EB01A37C /* ExampleMetadata.swift */, - D681B33FEC46016AD02E71E7CAD4C90C /* Filter.swift */, - FAE9D32680A6144A4BE05C3AC12511AF /* HooksPhase.swift */, - DB2DF5D360C879A268CB46176F775D56 /* NSBundle+CurrentTestBundle.swift */, - 9C59BA42629A4B26F3DD7E20416FAFC5 /* NSString+C99ExtendedIdentifier.swift */, - 3A73C236A045A19F7F1A6BBC21AA861B /* QCKDSL.h */, - BFB445ADEEC9D9C22348C26CE6173418 /* QCKDSL.m */, - AE3D3A522B73193F53EE99A551C179C7 /* Quick.h */, - 450E1E61D708B476EEAE2420717DC07D /* QuickConfiguration.h */, - F8774D6AF361F00C6B4D34B898A25D29 /* QuickConfiguration.m */, - FC3BA69D8A6CC5B7102F6F6C085696D8 /* QuickSelectedTestSuiteBuilder.swift */, - BBB912D37A6310749E72E1211F5CE8D2 /* QuickSpec.h */, - 67D634C9E06760D93F6488DC75CF5658 /* QuickSpec.m */, - B91FFF27A51AC1EDF3817F9E381A39BA /* QuickSpecBase.h */, - BB3AB2003D0928253915A779699FBD47 /* QuickSpecBase.m */, - 37A11F9EB88DEF23FD5DD9886D3B4079 /* QuickTestSuite.swift */, - 296EDA418470DC7D8D6CC8523156FDA1 /* SuiteHooks.swift */, - 2243FF991A3EA010F448A25355A4F3A5 /* URL+FileName.swift */, - 1B8CFE6106141A4892E0D371C4D0A18E /* World.h */, - C78C00BC940C42C7E49FB433554191F9 /* World.swift */, - E5D08D8814DDDE27E26845D0739F4F81 /* World+DSL.h */, - D3187274A6B847689F73173FC2A6769E /* World+DSL.swift */, - 05E8CE3BE7208E0538A6894CDD2C8854 /* XCTestSuite+QuickTestSuiteBuilder.m */, - 934F7FAB1D816EFCA3E2A2BE7F2BBCD8 /* Support Files */, + 7E23F75E2F3950A2010E6ACF0897A9C4 /* Web3+HTTPInitializer.swift */, + D07DE90D39B18B0119C3E7FF9EF470D1 /* Web3HttpProvider.swift */, ); - name = Quick; - path = Quick; + name = HTTPExtension; sourceTree = ""; }; - 494C8169806298576EB91AA0EEF359FC /* Toolbox */ = { + 453FAB262FF006AE1A43D6DBBA4804EB /* ABI */ = { isa = PBXGroup; children = ( - 9BE7EE643B2C16F171CBA343E6265A2D /* BigUInt+BytesConvertible.swift */, - 38CCF05129D42153B7DF7DD955985275 /* Bytes+HexString.swift */, - 89207C630D7F0520F9E885AE62E8CA31 /* Bytes+SecureRandom.swift */, - CD972FE561A601535044E029C1E462EB /* Bytes+TrimLeadingZeros.swift */, - 19940AEE0A339B9B07F9D74F29EDC0A6 /* Bytes+UInt.swift */, - E9A4EACB44AA74945D75DD8CCA00AD14 /* BytesConvertible.swift */, - 20FEA179A4643A0C616699DCE04ABC8B /* CharacterSet+Hex.swift */, - 2FE18A03CDBA706EB22E672281A78735 /* Data+BytesConvertible.swift */, - 1FA2BAB6A1EA492BFF42C923909E4FB4 /* Exports+Web3.swift */, - 55C24BA59E7D70DA3F877AE94D691682 /* Int+ETH.swift */, - 61C0358C7851BB89C7BD79D3BC1EDDFE /* Secp256k1+CTXCreator.swift */, - 49790A78B98067EC918FFC5013A51B04 /* String+BytesConvertible.swift */, - DF6DF94B9C863C4A863108624043F781 /* String+Conversion.swift */, - DE5F700A3649F690CFA7C6EA4EBA7B9E /* String+HexBytes.swift */, - FDD643D103F87D7AA4ABD3358C71C891 /* UInt+BytesRepresentable.swift */, - F78090FD0C646BEB960042247EB0ECF2 /* UnsignedInteger+BytesConvertible.swift */, - A6D1B0EE3768B879015E46C696284FD4 /* UnsignedInteger+Shifting.swift */, - 6191E8A80D5F9C1A37F69CF815722132 /* Values+GeneralHashable.swift */, + 81412DE46F248E4C7E1306F3FABC5CC9 /* ABI.swift */, + EBA1E46E645E1CED4A96564708FBA5D8 /* ABIConvertible.swift */, + D86478174DF947DFDFF1588443F3827A /* ABIDecoder.swift */, + 6345DBF73CA15C1A06D0354C66B4AB50 /* ABIEncoder.swift */, + 12384AFC04DB0DBB19E442B9115E2F1B /* Eth+ABI.swift */, + 40D9A90FA5CEE94A08F805C47D32F776 /* SolidityTuple.swift */, + D3C877ECFCD1622DF6251DE31736E4E5 /* SolidityType.swift */, + 6BD3CC6DDA82DB9F9901EC83A6D922BD /* SolidityType+Codable.swift */, + 3BB670534C85ACBF4254352878C5DD13 /* SolidityWrappedValue.swift */, ); - name = Toolbox; - path = Web3/Classes/Core/Toolbox; - sourceTree = ""; - }; - 4A8598E59BDE8BCDDD656038C24418D7 /* SipHash */ = { - isa = PBXGroup; - children = ( - 617CB09C07A6F911FBA167002FF3406A /* Primitive Types.swift */, - 9C043C5A399DADC287692756C44BBBF0 /* RandomUInt64.swift */, - 153242E1D0EFFADE4D13A5369C3ED884 /* SipHashable.swift */, - 5B1FD209D9F6913D207F48FCDA80DB24 /* SipHasher.swift */, - A5253221614190FBB62E764A70D2B7F6 /* Support Files */, - ); - name = SipHash; - path = SipHash; + name = ABI; + path = Web3/Classes/ContractABI/ABI; sourceTree = ""; }; - 529FAEF5F9225048D2E044A84383E7CB /* CorePromise */ = { + 45448628A7E38950AB69238DE2D3B04B /* Pods */ = { isa = PBXGroup; children = ( - 58D7CF94E344D10D4D934C11D2F75B48 /* after.m */, - 7DCEAD5D1A80EBB629D242296EC93CAA /* after.swift */, - DEFF63BB67A4175F65289920C1C52027 /* AnyPromise.h */, - 18092AF693281AAF8220A8F871F1F6E3 /* AnyPromise.m */, - 6A449F80C8ED753E885C41CD08B7E9C5 /* AnyPromise.swift */, - 5A7AEE4589A607A1E12DDF47D005EF08 /* Box.swift */, - C1724EE7607D4D81CDD454277A7B3081 /* Catchable.swift */, - F5AAD137CAB8DC860949FC90AE757613 /* Configuration.swift */, - FF52351CA3788EA581DAC40164A92A8B /* CustomStringConvertible.swift */, - F291149AB77992A72F7BC2ACB9A5D517 /* Deprecations.swift */, - 4D45897FA62EF91CC1C6C9971C05F753 /* dispatch_promise.m */, - 46EB0F46E48C29E6D0622C1926EFD279 /* Error.swift */, - C3C817F6E4C472F8DBFE0D2374592DAD /* firstly.swift */, - 0554B17D85F3C7EDD2138E1A3CF97F75 /* fwd.h */, - E338E73804388EC36BEA7E97BAA58BCF /* Guarantee.swift */, - 0B441B3D3CF3D34C8C0F3842C2D15988 /* hang.m */, - 3D1A27B02D573C87A0C7835575BF2F1B /* hang.swift */, - 25061412F87E8A6EF3D38682C63025EF /* join.m */, - A38F8F30FD7EBDB67D9EC79249F0F6AD /* Promise.swift */, - 926547A3D75C34FD14D40B949F0A166B /* PromiseKit.h */, - 2ED84C097BD8EDD27DDA38DD72285541 /* race.m */, - 0306234C12314EE264A1F3D662CF81E8 /* race.swift */, - C613533B2A1DBFCE6266FE33E9856A39 /* Resolver.swift */, - 0C3803ABB07BB5264A08064F261D85C5 /* Thenable.swift */, - 85E7E9E8E7B6A85497B9D9651C612AA4 /* when.m */, - 24B0FA2F32E9CC0F059E733D5C8A1060 /* when.swift */, + 4F585139E1CD105CC18116F6A7361FA2 /* BigInt */, + F676899F62E484AEC4A563BD19A4B835 /* CryptoSwift */, + 1A586C3FB2CD9EA9DE8ABDCEC6F42B0C /* Nimble */, + D7EE2DFF7B8903421B6200556B5B4141 /* PromiseKit */, + 55340F378D38FC22F1F19B141C39326E /* Quick */, + 80504B357A88B669E50D3FA0D953764B /* secp256k1.swift */, ); - name = CorePromise; + name = Pods; sourceTree = ""; }; - 656C94C6FA8355C2AD9EAFC6306255FA /* BigInt */ = { + 4F585139E1CD105CC18116F6A7361FA2 /* BigInt */ = { isa = PBXGroup; children = ( - 03D03292919A1681374A7C28D6D6862D /* Addition.swift */, - F85EF2E1E694123602FB11D2A56BF311 /* BigInt.swift */, - 20A68BE51CE78C13F77C97EF8923486D /* BigUInt.swift */, - 7DCBBE56F83F2B39C54E355A178D14E7 /* Bitwise Ops.swift */, - 02A1C6DB05A9F83953A027C6559DB9D4 /* Codable.swift */, - 622477BF9FEFBFEAA5FB4C548357C9E1 /* Comparable.swift */, - 115D1D7BF51209F2E69331EAE935F43E /* Data Conversion.swift */, - F6643144D5D935701469A4D7C87BF9EE /* Division.swift */, - 1F2C5E63290F7EE2068990963842F7D6 /* Exponentiation.swift */, - 07EEA37F17591E77ACB56A8FEFCECE1E /* Floating Point Conversion.swift */, - 88036DA8972E5A2CB1A2AE884C47C600 /* GCD.swift */, - DCB101F28B6ED5E2E5283371A5EE2EA8 /* Hashable.swift */, - 44155E0C03F2EDF5D9DBD237A89B7604 /* Integer Conversion.swift */, - 4014155815186F77D78896BE7BA9AF22 /* Multiplication.swift */, - 7E5AB4F22ED5C45AED4F5AE2CBAA3F14 /* Prime Test.swift */, - B9089C05F0FB7FCC2A9E5AA2D22769B7 /* Random.swift */, - 814060C32883A67D9ACCAC12839E4CFC /* Shifts.swift */, - 2F31036600456A41BE89A4CE9538E094 /* Square Root.swift */, - 2942FE16D33FD985EDA1E05659672485 /* Strideable.swift */, - FE67FE58EA1ED37D95B0361E751B6A54 /* String Conversion.swift */, - 8BDC867C7FD61E81A90065792C3750FF /* Subtraction.swift */, - AF67E700C0A61D0FE0945B9BC84447DF /* Words and Bits.swift */, - 98B3B877D72048A8DE48348D0572C189 /* Support Files */, + C2928BB90B371336B38B9696BC1A0F50 /* Addition.swift */, + 2C2AEE72F9F8A054AF23BF36B26FEAD1 /* BigInt.swift */, + E273F72C1898931AE4D9B99B33BA2217 /* BigUInt.swift */, + 129BF7DE97010AF311437F120D5FFB7D /* Bitwise Ops.swift */, + BEDAF099235F9A8E211C74B0C434703C /* Codable.swift */, + 9BCB5B457052BBA304FAE1F9FCE1534D /* Comparable.swift */, + 393CB64F9939964D087DC15D1CE41690 /* Data Conversion.swift */, + 2A94E7D3A09D46D989C070A43FCB1EFE /* Division.swift */, + 732A160536A2992F0A0BC0FBCB8B6334 /* Exponentiation.swift */, + 5F3E3AC4CE3062E8140533ACBC54321B /* Floating Point Conversion.swift */, + DDEEF266566321C3A377CCF0491D1DCD /* GCD.swift */, + F97869C54F5EA625031219590CDC128A /* Hashable.swift */, + 4296FE2727B72926B0BA0FA3421747EC /* Integer Conversion.swift */, + 2BF2F27691430E1696727E131F6FFF3C /* Multiplication.swift */, + 3F3B67742ECDC6F5615AFC6469BD211B /* Prime Test.swift */, + 905536FA82FADFE7ECAF83DEEE838A26 /* Random.swift */, + CA58DD640F0A168BA3354C3E711FC1DA /* Shifts.swift */, + 56E32860CFF34ABEB6EE1658E5A495DF /* Square Root.swift */, + BA871045F50C1E12E30C9C2D6AA44497 /* Strideable.swift */, + 4CF857708FCF7D704DE69BF1B9F92E6C /* String Conversion.swift */, + 5679556D08AFBCEC4C23D705A8600575 /* Subtraction.swift */, + EAD50E8C3B95346AE3AB2A8EE9E0F23B /* Words and Bits.swift */, + 1583EB07A7C1E8391025FB1009331E65 /* Support Files */, ); name = BigInt; path = BigInt; sourceTree = ""; }; - 67717533078BB44A1EF4CE6D713F7466 /* secp256k1.swift */ = { + 55340F378D38FC22F1F19B141C39326E /* Quick */ = { isa = PBXGroup; children = ( - 1C3655090C71F4FD162CE5CFEA93122C /* basic-config.h */, - A8EDBC10D69BF1AF9532B77E7A3FA550 /* ecdsa.h */, - B45939D464E33F865AB650B9A1A30933 /* ecdsa_impl.h */, - B8EC715A178850CABF11C38A2A146D40 /* eckey.h */, - 355FFC555C9D4494AE39AFFC217F7BC3 /* eckey_impl.h */, - EE6406FAF709D8BA766E2F5197DD07A7 /* ecmult.h */, - 0A2C152B5C19EC1EFEA4B2D767A0F4A1 /* ecmult_const.h */, - 31FD1CD05EBA4022AF9F743B92D23CC1 /* ecmult_const_impl.h */, - 308E7F02F0085C096CE7C07FD0860151 /* ecmult_gen.h */, - 2F237E00666D3884816F4EC773CC4328 /* ecmult_gen_impl.h */, - 23835C2E498CB7469C0463EBAFD69589 /* ecmult_impl.h */, - 47A395F620CFE2F06488D3A0BB550CF8 /* field.h */, - 4C4645FA1D456EC81535AD6F11C269B1 /* field_10x26.h */, - B820E340595F46580D1CA72F614AEC5B /* field_10x26_impl.h */, - 6D444081E7FE1A21C3631CD752776E68 /* field_5x52.h */, - 47DBD89119B96715BCB2DFAF72113659 /* field_5x52_asm_impl.h */, - 218BCAB72817F7B65EAB7DBFC2528AC2 /* field_5x52_impl.h */, - D03BC01655AB16DFA947729B3B6DB855 /* field_5x52_int128_impl.h */, - 95FB214803B5D240D11FEE8801CB24EA /* field_impl.h */, - 535DBD0834B8338BDF1E4BA974726A7E /* group.h */, - 02187B67AADED39E71E6A5D9E48300DD /* group_impl.h */, - C4DE06B288F2ED36037C4460BD35C6E8 /* hash.h */, - 07259D4185566E10884D02C48B132993 /* hash_impl.h */, - F15245FD346E4E52A7F9F2DF3745CB0E /* lax_der_parsing.c */, - D00325D3CAEF8366C032DC3BB23F8480 /* lax_der_parsing.h */, - 83A4CD9D149507CA5E3CCE4AAAE1133A /* lax_der_privatekey_parsing.c */, - 600448AF00A8FE2DE434276A7527AE69 /* lax_der_privatekey_parsing.h */, - D47A16B37B1C2C782EF8BF112FB1BCE3 /* main_impl.h */, - 02E5B31E818D90BAB6C71A62A81CCEF0 /* main_impl.h */, - 8380D8F40BCCCA84D28E28E935A5A0B8 /* num.h */, - 0C00DACF01EB6E118D5BFF24AFF14266 /* num_gmp.h */, - 86C9FD2811DD4A3583C14C7311188AD4 /* num_gmp_impl.h */, - C81E2EF53ECA2D72576CD54A52866E4B /* num_impl.h */, - F79C4E1464331E982975B9A9D8C25829 /* scalar.h */, - FEFF554C44E03C723B999617A3DCFBB9 /* scalar_4x64.h */, - 35A476C9FAED98815BB2279ACC486C60 /* scalar_4x64_impl.h */, - 4125C85D9F09F5AC29147DE17DCC911C /* scalar_8x32.h */, - 8FFA21236534EACFF7A8F7B092F1A6D9 /* scalar_8x32_impl.h */, - 66D8F28DA65B59CE4F73A0344BC6B849 /* scalar_impl.h */, - 1DC25AFD4D81D8B5254AC49E853D1B79 /* scalar_low.h */, - 5D85706CF929F8F33DAF1DF2F089298A /* scalar_low_impl.h */, - C295F177BA5D2892B16F6225BED57C51 /* scratch.h */, - 3768871E64848B0847C4475E72FEF216 /* scratch_impl.h */, - 8C9DB469622E528FDB2968D0D479DCC4 /* secp256k1.c */, - 81779189D26FE040B2A6C9C03FFF7104 /* secp256k1.h */, - C48152FC2CA8772914CD242B14BD679F /* secp256k1-config.h */, - 7DEEA6677EBF14C887BD7D5CB09A9A5D /* secp256k1_ec_mult_static_context.h */, - AC28117FA8A0A8FEAA6B1A4F706F7D4A /* secp256k1_ecdh.h */, - C5998AEFD959D2F61BD08B039F9E4E7D /* secp256k1_main.h */, - B12D1500742E7FBFF10E55F61982C992 /* secp256k1_recovery.h */, - 1F9F806B0DE329BA33DA38AFF34053C0 /* util.h */, - 67B01CA51CCAE482445FE0FF0E3E93E6 /* Support Files */, + E34F0A5989039618F706A5664002697F /* Behavior.swift */, + 8AB46DBD451293F91B0EAC92A2854FB2 /* Callsite.swift */, + 8D09365A8D50AB30C05D99A7CA084D0B /* Closures.swift */, + 976289735591A65902F744F40FE76680 /* Configuration.swift */, + B99D110847FF8BA1821757FCF80F4E36 /* DSL.swift */, + C78C862CD8BBA26C5219AE51FAC90F9C /* ErrorUtility.swift */, + 4B9FEF26E43789B1DF69050DB63D7C59 /* Example.swift */, + 14CBBD3AE01A706DF464E4C7D823E9A7 /* ExampleGroup.swift */, + ACEEDEDA60432F85C81AAC2ABF5AC0B6 /* ExampleHooks.swift */, + 46D808B5E1A82EAB01B6EF7D57778C02 /* ExampleMetadata.swift */, + B9FFB0DDDAC922636929ED3546DA60C3 /* Filter.swift */, + D9A7543D9B247625FE8F91CE8460D5CF /* HooksPhase.swift */, + A1C54B6831016F67FB74BEA0A490164E /* NSBundle+CurrentTestBundle.swift */, + D75E4181A226F63CC9F30CAADF2DB5B7 /* QCKDSL.h */, + 4CA2443D3C234F633BB81B0D294AE5F2 /* QCKDSL.m */, + C04175803548818A0DCC486BA6183A57 /* Quick.h */, + 8BEB57422FA69E2DD779399552D4B73E /* QuickConfiguration.h */, + B827E414666ED541D0285825610DF9B8 /* QuickConfiguration.m */, + 58D95CA182056408D31495941269E74D /* QuickSelectedTestSuiteBuilder.swift */, + 2A68CA406B70C1A59D91609FD32989F1 /* QuickSpec.h */, + B65B54DA339A72F8ABE08BBDFBC838C2 /* QuickSpec.m */, + B684A1734E2EC749B5A4D6C900F0A7C9 /* QuickSpecBase.h */, + 8A1EB934A57E399A12AFFAB1F46375EF /* QuickSpecBase.m */, + 8498A9662A32AABE7DB0332499D91632 /* QuickTestSuite.swift */, + CEFFD5E49C97EBFF9C55F4F66573B6E5 /* String+C99ExtendedIdentifier.swift */, + B20F2DBDBF8889BE157C6BFAEF3C9E8F /* SuiteHooks.swift */, + 70EF678CB8E2FBA978FE17EC8A27934B /* URL+FileName.swift */, + 47F570166805C0112C47D8FD85D69D74 /* World.swift */, + B7EF1A295A54630DE36D0B8AAE731E21 /* World+DSL.swift */, + B325C2782CF0C41EAC424C582F704485 /* XCTestSuite+QuickTestSuiteBuilder.m */, + C43C2EB64F862147A95813344A8B90CD /* Support Files */, ); - name = secp256k1.swift; - path = secp256k1.swift; + name = Quick; + path = Quick; sourceTree = ""; }; - 67B01CA51CCAE482445FE0FF0E3E93E6 /* Support Files */ = { + 56F91FFDF3121F1F72A7874DB14DC123 /* Contract */ = { isa = PBXGroup; children = ( - A5EEA88FB785FD091D2E6A61DAC389D5 /* Info.plist */, - 5C1D41EBB18CF3AF800294F2F8FB0CE4 /* secp256k1.swift.modulemap */, - 0F6330229601CA3ED998D67A49F4AEAC /* secp256k1.swift.xcconfig */, - 0D2E87A161DA659E588E4B537FF00659 /* secp256k1.swift-dummy.m */, - 5F55FD41A94037CEF49050BE8AA785BE /* secp256k1.swift-prefix.pch */, - F9C793F5C0F9D4A88A9FC9069D8BC4D7 /* secp256k1.swift-umbrella.h */, + 4921170EA8F1EA1F1D685A346C345534 /* ABIObject.swift */, + 4DD29843844447F5DBA6B54C403D8294 /* ContractPromiseExtensions.swift */, + E7576EEB2B64FECB43934FF5A432B6F7 /* ERC165.swift */, + 6C6C7357D580257E80C7108438AAAA44 /* ERC20.swift */, + C31FF2DF592D2F3DA8F66E7F2DEEC7A5 /* ERC721.swift */, + F3D0CB5FA711AE26A29C7EAFC09461F8 /* Eth+Contract.swift */, + F5FA15BA8E93D311BDABCC84D06DE711 /* EthereumContract.swift */, + CDF6AB032E932E7F67032A2F35C6777B /* SolidityEvent.swift */, + 060B405CA253E67BF70D66FA09EBBB4C /* SolidityFunction.swift */, + 5AD3AF70D5AA6C883E336C13BC9269B0 /* SolidityInvocation.swift */, ); - name = "Support Files"; - path = "../Target Support Files/secp256k1.swift"; + name = Contract; + path = Web3/Classes/ContractABI/Contract; sourceTree = ""; }; - 6801091251673F4EA5EF9DA336F5502F /* Development Pods */ = { + 5BF9BBD4525CA0018D2CD69AADB14D06 /* Support Files */ = { isa = PBXGroup; children = ( - 1338864E9F20EFFCE7336A5680A4CFFA /* Web3 */, + C67756D7174CAA7DDF69A36123A5BA76 /* PromiseKit.modulemap */, + EC3F11AE52BAD5666EED731D5E375771 /* PromiseKit.xcconfig */, + 494A23E0D500525DF218E7F4EB0CB74C /* PromiseKit-dummy.m */, + DF904658A715FE9EBAC2B5A5BFEC0350 /* PromiseKit-Info.plist */, + AEEE5E86A85A0252F15481355FE8E4F5 /* PromiseKit-prefix.pch */, + 414B0608D99F31C02D62F4D5A7B13858 /* PromiseKit-umbrella.h */, ); - name = "Development Pods"; + name = "Support Files"; + path = "../Target Support Files/PromiseKit"; sourceTree = ""; }; - 6A318638A1BA2CCEEAB089AAF260256F /* CryptoSwift */ = { + 6385D20EC4846CD26259538C0A3CB34C /* Pods-Web3_Tests */ = { isa = PBXGroup; children = ( - EC81613FFDABBC6E963450B9201BD3F5 /* AEAD.swift */, - EB4F4E789A640C0CBB502CAE0F05A290 /* AEADChaCha20Poly1305.swift */, - E277D46647CB78AA0E4A062CD98AD577 /* AES.swift */, - E44DBE7732BD232AE398E8B792D1FFF4 /* AES+Foundation.swift */, - 6AECFE2E0CB8922B7BE1FC321C9F781D /* AES.Cryptors.swift */, - 5FA27322B11CDE7BB17798A4A1F266F6 /* Array+Extension.swift */, - AB73EB9E85D7D6FC1565824340174109 /* Array+Foundation.swift */, - ACCF4C897B8CF57EDAF2749BE44711D3 /* Authenticator.swift */, - 98B5C69D69CBD88DF7A4467F4E5D9F21 /* BatchedCollection.swift */, - 4A8A3C96EECB272E89FEECD829DCC1FA /* Bit.swift */, - 730482E0D7FDA2301F6354B3D3A07F0D /* BlockCipher.swift */, - 10ADE13AABF9CA9CC08C3B70018F89E1 /* BlockMode.swift */, - 03EBE0BA58FC47E098FED98B3AAC74EF /* BlockModeOptions.swift */, - B1F31A35EAAB767855BE04F7E91D172D /* BlockModeWorker.swift */, - C93A64B331B051DF352392EF5AEF14D4 /* Blowfish.swift */, - F2A21735EE341165381978151A9DFD89 /* Blowfish+Foundation.swift */, - 798E95787C92F6A7D18E0F557A48EE15 /* CBC.swift */, - F7AFAA0E86F8E0037E18A7989D55C47F /* CFB.swift */, - C870136AB7D0CC8EC48BA3CAB673EE39 /* ChaCha20.swift */, - FD0C3868425FA2D0A71BF6880ECFAB9B /* ChaCha20+Foundation.swift */, - 33AFDF62D2A96374F03D6C2983E92095 /* Checksum.swift */, - A2BACFFB76EF401B6C51BA8AEF34A02A /* Cipher.swift */, - 796E393D1403ED92E609430553F67F98 /* CMAC.swift */, - FD454301F7EDE01013E2AD506B5D79AE /* Collection+Extension.swift */, - 6BC9B4FFEAE770A2D2F5599014E4DD21 /* CompactMap.swift */, - 6E255E2FDC7BD71BC61FA7B8AD795CD0 /* Cryptors.swift */, - A59F11048552441A529A7956CC6E6BBC /* CTR.swift */, - 7F297EFA1CD0342CB6A6EF0F98AB1ECC /* Data+Extension.swift */, - DC03A30C178C816122A5F928FEDD3696 /* Digest.swift */, - 33EBDDB5954645BDBC9B2251B22EA399 /* DigestType.swift */, - D7E6D7F438CE1B6F9AAAD9211DF4382F /* ECB.swift */, - 7DCE6A8429459E354A1D311C48DA4629 /* Generics.swift */, - A05338ACB762ECC9AB1B17F03FBCD90B /* HKDF.swift */, - 941B363634FC7E45D1F6DBF1309830EF /* HMAC.swift */, - CFBD9ED3D2BD89BC1C26937327CE6A7E /* HMAC+Foundation.swift */, - C7F839662A9B4DEB43FFEA8C588ABCE2 /* Int+Extension.swift */, - 0CD6EF61D0E158C8660C69277166CF29 /* MD5.swift */, - 4279155359F84BCA135161AA89A59628 /* NoPadding.swift */, - 3F30F287D319BC1D332F13AA36763AC7 /* OFB.swift */, - 238A6CFDDA3D8EE41893500E58C1178B /* Operators.swift */, - A9F6BA4DB2401D085B90F63BD25EA80D /* Padding.swift */, - CC7B0C3E51ACD0B28D091B457E834A7D /* PBKDF1.swift */, - 3287DE8A222056FA18747AF8DE1374FE /* PBKDF2.swift */, - 400C98220B97601AD2FFE6A02C18F6C2 /* PCBC.swift */, - FEB2210FA93FE113C163BF9B81CD89A0 /* PKCS5.swift */, - 70E47F38AABFC7DBE9A23A2956805AC0 /* PKCS7.swift */, - C728448EF82C238FC411F4A3B000896C /* PKCS7Padding.swift */, - 4D311232E3F4D26AF87CC1AACE3EDE35 /* Poly1305.swift */, - F9F69ABC773C994BF3549CA31B14DDDF /* Rabbit.swift */, - 698EB04E12182EE8DF899ADD2A861F9D /* Rabbit+Foundation.swift */, - 091FA611FE3742DA0D0AD08FD08604B0 /* RandomAccessBlockModeWorker.swift */, - BA8292905F7956832A4D8B7083789C85 /* RandomAccessCryptor.swift */, - CF9B2E739318AEEC875EB7B78C46BB31 /* RandomBytesSequence.swift */, - C3C3904C2608DDA7285764A44C8DCD4E /* SecureBytes.swift */, - B6A17EBFAC2F5D2FF8ED24DADBC47113 /* SHA1.swift */, - 9710C651F51448F2B528920A0F210C10 /* SHA2.swift */, - 1F4D5030DCB87BDB0E72358699AD1482 /* SHA3.swift */, - 7D1242F95F4F2FCF8E0C2A3E37E54DA0 /* String+Extension.swift */, - D1E48837634B0D95EEC5F3EA10DF2AB9 /* String+FoundationExtension.swift */, - 8D33F8C4C5E22E7449EC25DCC531DB9E /* UInt16+Extension.swift */, - 51A71D56A755251347CB6D243FC57EFC /* UInt32+Extension.swift */, - 65978C8FA635596EC5BF168CE53B9D0B /* UInt64+Extension.swift */, - 6C6D561C5E6910CE26ADA8CBB6101CFB /* UInt8+Extension.swift */, - 128F99FF7247EB3EB89407C6E83D5794 /* Updatable.swift */, - 3ABC2D302FC0EEA4381FC8468D4C057E /* Utils.swift */, - EA2930524BC85D9AB2871CE5FFC6EB36 /* Utils+Foundation.swift */, - DE0FC12ADB9B73826B65373CD0F9E0CA /* ZeroPadding.swift */, - A0D69DA7A069263A65C2CBA86240F18F /* Support Files */, + B4A5B401A965D232D13E0BD0230D9EB1 /* Pods-Web3_Tests.modulemap */, + 15AF38FB87573708B87D704103D369DF /* Pods-Web3_Tests-acknowledgements.markdown */, + B093CF0C1F71DE02C8E65B185D5B4F5D /* Pods-Web3_Tests-acknowledgements.plist */, + 407E51111D389395A3816ABD3ED62399 /* Pods-Web3_Tests-dummy.m */, + 04020C165436AE2D61C01E29425035D7 /* Pods-Web3_Tests-frameworks.sh */, + E38A77855E56EF5899A286E96CDCF845 /* Pods-Web3_Tests-Info.plist */, + 4330E060C8052D67EC808403C2D6EC9F /* Pods-Web3_Tests-umbrella.h */, + 3589AA2CC874BCD6E4D9CCA7BAC5B6DA /* Pods-Web3_Tests.debug.xcconfig */, + A3D9596D8377C7A8A062C997DFB0F664 /* Pods-Web3_Tests.release.xcconfig */, ); - name = CryptoSwift; - path = CryptoSwift; + name = "Pods-Web3_Tests"; + path = "Target Support Files/Pods-Web3_Tests"; sourceTree = ""; }; - 6D35512CE8E411D43CF5C6599839489B /* PromiseKit */ = { + 7543DB7009AA6E0245749DF93DBEC5E0 /* Products */ = { isa = PBXGroup; children = ( - 529FAEF5F9225048D2E044A84383E7CB /* CorePromise */, - 15D1DA2C7D0B60599303EA6F217106A7 /* Support Files */, + 31500F9CFF1D5B27872E829095EAAD51 /* BigInt.framework */, + 80633CB5B67352EB90A228FB07368B9F /* CryptoSwift.framework */, + 22A5CA07622D0C1E300D80BF58508B8F /* Nimble.framework */, + A59A42DDF506E1C48202E99AE6CC4860 /* Pods_Web3_Tests.framework */, + A762179A16198E27F78399BC2DF7B1CC /* PromiseKit.framework */, + 1A73ABF9D3CE1B4C1DA1CC6C281508E8 /* Quick.framework */, + DA431BD1EEBE3A60A0D7CAFD98C64305 /* secp256k1.framework */, + CB300F021C5FB5B916B3CDD0A2FA5B2B /* Web3.framework */, ); - name = PromiseKit; - path = PromiseKit; + name = Products; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 7B5346026C122AED0047EED8E8E06E40 /* Support Files */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 6801091251673F4EA5EF9DA336F5502F /* Development Pods */, - 8CCBB0D307E37FACC24A96037B6E2470 /* Frameworks */, - FDD4D2C1D57CEE5205AE3DD4316DC601 /* Pods */, - 0D25E68C4DCD174873E7D4EEF6DFFACE /* Products */, - 168C8292C9494C68F2763FBE20848858 /* Targets Support Files */, + A8CB59D452B6E499933E6D7F1F958B36 /* Nimble.modulemap */, + 47BA56149687EBED665581CF2F220865 /* Nimble.xcconfig */, + 53736FD24805CDE8F333387A1384BE71 /* Nimble-dummy.m */, + 082A12102C007287343D36D4881FACE6 /* Nimble-Info.plist */, + 5350CC7C611777B427116C0347CEB6D1 /* Nimble-prefix.pch */, + 04AE9E8B38094B64CE60EDB765263C1A /* Nimble-umbrella.h */, ); + name = "Support Files"; + path = "../Target Support Files/Nimble"; sourceTree = ""; }; - 8CCBB0D307E37FACC24A96037B6E2470 /* Frameworks */ = { + 7DBA37B7F98062B2CB93D13C2BFE8E66 /* Transaction */ = { isa = PBXGroup; children = ( - 5E8C17667FEE901C4C7F8496E163F070 /* BigInt.framework */, - 1B6846F62CC1BB91B9E88D63B6C6B030 /* CryptoSwift.framework */, - 47E85D85DAA04AC69F47E1E448FBFE43 /* PromiseKit.framework */, - 5B14FF5D164DF4EBA7E38A8076C48876 /* secp256k1.framework */, - 03C000C432823225AF70E4F618383D3F /* SipHash.framework */, - D920B0927EE1BB64F585E9FC47CAF07E /* iOS */, + F698781833685E7D55C379279A4EC408 /* EthereumAddress.swift */, + F489FA37E39E002ABF346AB15B2E1E64 /* EthereumPrivateKey.swift */, + 7E747D91CACB2E7738DAA5B95FD27182 /* EthereumPublicKey.swift */, + BD45D38EFCC79C0689914EBD33C14727 /* EthereumTransaction.swift */, ); - name = Frameworks; + name = Transaction; + path = Web3/Classes/Core/Transaction; sourceTree = ""; }; - 934F7FAB1D816EFCA3E2A2BE7F2BBCD8 /* Support Files */ = { + 80504B357A88B669E50D3FA0D953764B /* secp256k1.swift */ = { isa = PBXGroup; children = ( - CFD568820D55ABD2C27152AB62AFAFDF /* Info.plist */, - 8C2D31CF54D003E39BD773EECCED3D7C /* Quick.modulemap */, - AC9081BE30ABC886966A1CFBEBB358D9 /* Quick.xcconfig */, - E3960E327BF9D51B98662D1B6A4615BC /* Quick-dummy.m */, - 7610621FEC419F26AA096DC273A2DB20 /* Quick-prefix.pch */, - 784F4C2AFDB34A74E5CD0A26F641583C /* Quick-umbrella.h */, + CBFC668B85774EE82EE516A39D052F81 /* basic-config.h */, + 7A62A2939319FB43996CC26C679E2D10 /* ecdsa.h */, + 056B539E075A6A71A71969412B61B874 /* ecdsa_impl.h */, + 1F26CF1E8C408C36486E203305DB21BD /* eckey.h */, + F0364E81EEC6028D6F0B0A0E99AB5731 /* eckey_impl.h */, + 335983E6AD34865510138C2694B4EC89 /* ecmult.h */, + E88EAA009880FD42537DE2BF52AAD5AF /* ecmult_const.h */, + D06FDDB2884411177A62C245A665E830 /* ecmult_const_impl.h */, + 545387D91FC5526FF3817CF0A832761E /* ecmult_gen.h */, + 79F50B9B9CD2035542FA5B4E837053F6 /* ecmult_gen_impl.h */, + 15DABE8F3FF7934474D136A86D119E7A /* ecmult_impl.h */, + 3BB9463AC5A11331F9E2DD176D8C26B7 /* field.h */, + 82EFD8EC38811F0C2B7D9E046D8CA5E5 /* field_10x26.h */, + 2BAF652B9042D46952137B30C8461313 /* field_10x26_impl.h */, + 7A8F6C05E4F1DBBA11849CF18DD8109E /* field_5x52.h */, + D83E88B868DB3F11D353ABED20655C43 /* field_5x52_asm_impl.h */, + 6DBD6642217063F6319FA01ED23FF52E /* field_5x52_impl.h */, + CA8BBD91B91EA15CB4149971B728850D /* field_5x52_int128_impl.h */, + 938788AF636369ACF3135F143013542B /* field_impl.h */, + E020BCD290C3FE0E94A298C3655285D8 /* group.h */, + 23F992A6E4A33A886E6C5AAC38BE8A7B /* group_impl.h */, + 42A2292447F446EFC9BDB9B31344ACB0 /* hash.h */, + 789F5766EB7B9A5E3B81CAECF9F38BA5 /* hash_impl.h */, + F273D3009D7ED8402E4769822AB88D82 /* lax_der_parsing.c */, + 140E9C2CC574581C415A4C47A6B1A2F7 /* lax_der_parsing.h */, + AED76DB0DC83E98683CE5A6863FB7B09 /* lax_der_privatekey_parsing.c */, + AECC72784EF1B8D03934912989723FA7 /* lax_der_privatekey_parsing.h */, + 6660A257A456EB9F9E4CAA918993BFDD /* main_impl.h */, + CEF4067EF4551B47245F7A1AA69193A3 /* main_impl.h */, + 52AF6F7E4DC3801944433A270AEAF36A /* num.h */, + 3AF2461F2E71FBA58F57704666E58140 /* num_gmp.h */, + E3F7279391FA34890A0875C670CA4C58 /* num_gmp_impl.h */, + 15F42F8ECECD5716E823E6C996AB3272 /* num_impl.h */, + 67DA42A11C9B2811AB791C650634A418 /* scalar.h */, + E938CE7236F29237C933698D385E01D7 /* scalar_4x64.h */, + 7A21916A729224C1F2A8C6EF7E23795E /* scalar_4x64_impl.h */, + AA03774B1C601C8E05CF9D976DD3B055 /* scalar_8x32.h */, + C349AFBAEA3647615466DB3D816AF6AB /* scalar_8x32_impl.h */, + 37BC9AAF1C0EBA7B77930687EC70741F /* scalar_impl.h */, + 4359400EE30B90098193754E8E9FCED9 /* scalar_low.h */, + 8CCF92F272148C0D9E9E3A78C85ABF3A /* scalar_low_impl.h */, + 7E153B2A202C45501D6272F7436BB5C1 /* scratch.h */, + 8922D5F6C47DA728BCF994D9AF5CC752 /* scratch_impl.h */, + 660690BAEB20133B461E90681347E895 /* secp256k1.c */, + CA4C8A4D2B724E4EC1AD01E48A7D00B1 /* secp256k1.h */, + D3294C1F5DDB8C7C8574D5AC4132ACFB /* secp256k1-config.h */, + 2B1A67A34F70C51850F6F36C861ABC3F /* secp256k1_ec_mult_static_context.h */, + A96726BBA7E5F30F76D1BDD41CE4D182 /* secp256k1_ecdh.h */, + D917F647A5F949E12869598B2B281F8D /* secp256k1_main.h */, + D00D954E9D089813337BAEE92B51D04B /* secp256k1_recovery.h */, + F6484B31B7BBAA40F5F40C0C188BBCBC /* util.h */, + CAA1C16917E7905F4BE2A93747322461 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Quick"; + name = secp256k1.swift; + path = secp256k1.swift; sourceTree = ""; }; - 98B3B877D72048A8DE48348D0572C189 /* Support Files */ = { + 843E120EDA785DE308138524DD662224 /* ContractABI */ = { isa = PBXGroup; children = ( - 32D0D0F063B0CD31D8B502E97F8A3B0C /* BigInt.modulemap */, - 37A1185BF100A2424B9C8310865B35FF /* BigInt.xcconfig */, - 17D7D2E3444F921949F8B73372503E91 /* BigInt-dummy.m */, - E66ABAFAD853A0B703B3857E1470E5F1 /* BigInt-prefix.pch */, - BF8B5499C0F50A8DE912F7880761081F /* BigInt-umbrella.h */, - 4FBDDCC870FF8460DC477ABFDD1A07FC /* Info.plist */, + 453FAB262FF006AE1A43D6DBBA4804EB /* ABI */, + 56F91FFDF3121F1F72A7874DB14DC123 /* Contract */, ); - name = "Support Files"; - path = "../Target Support Files/BigInt"; + name = ContractABI; sourceTree = ""; }; - 9AD12A0DD524CDA5DE4320F23A335B2E /* Providers */ = { + 94A4C6CAB414AF7FAFD244BB9FC45932 /* Core */ = { isa = PBXGroup; children = ( - 1F8ADA2C7CA0A0546F6E2E2FCBFF5538 /* Web3Provider.swift */, + DF6BB7998800952C3D8BC258BECA892F /* Json */, + 1AE241D48457E6EB98BBBBC574DC52AD /* Providers */, + FF356841225E0856D48E24455E49DFBE /* RLP */, + E4916E25B0C73600627C7F3EFD750662 /* Toolbox */, + 7DBA37B7F98062B2CB93D13C2BFE8E66 /* Transaction */, + DCB79EA628FF1627637F80E726016870 /* Web3 */, ); - name = Providers; - path = Web3/Classes/Core/Providers; + name = Core; sourceTree = ""; }; - 9BE4F2C2115F8EE3E5B5A6BD55151100 /* Web3 */ = { + 9E7C242C4C437AD8680395CB24EE3BF6 /* Support Files */ = { isa = PBXGroup; children = ( - 8A84AA80522D6793CEDFB8A2E98323FC /* Web3.swift */, + 736E4B6F6880F6DF524D286CCE8616D5 /* Web3.modulemap */, + C20D68BD90487EFA611C653B681393A0 /* Web3.xcconfig */, + D2285AE63163BA6F6AE8F76E4266BAAD /* Web3-dummy.m */, + 71003D54E0102C32FCA8042BDF1DA8F5 /* Web3-Info.plist */, + 270B0FB508DA0A3FF7BE6EFB0F1E42B8 /* Web3-prefix.pch */, + E5BC506151CAC9F0FAC167F460029B5A /* Web3-umbrella.h */, ); - name = Web3; - path = Web3/Classes/Core/Web3; + name = "Support Files"; + path = "Example/Pods/Target Support Files/Web3"; sourceTree = ""; }; - 9BF7A636EE64A0AF9348CAF020326819 /* Pods-Web3_Tests */ = { + AE8C748EB7C9F26830D3716340EF5B43 /* Web3 */ = { isa = PBXGroup; children = ( - 0A7FAF46CB97226773F962878A539132 /* Info.plist */, - 9380A65714A0FEF67E1C38FDA0135C68 /* Pods-Web3_Tests.modulemap */, - E9BD739760180F4B09C77CE291C70BB8 /* Pods-Web3_Tests-acknowledgements.markdown */, - 5A840EB82A650BC7AB14AEFA17CACD4D /* Pods-Web3_Tests-acknowledgements.plist */, - F48BC58AD2AFCD55F043830B6CA3163C /* Pods-Web3_Tests-dummy.m */, - 71E5EDB14AE3460EAECD74303275A015 /* Pods-Web3_Tests-frameworks.sh */, - C50263F60A5CCA8C0ABB639DE4BAEE95 /* Pods-Web3_Tests-resources.sh */, - 9741E8DF3C89A84347F6EE358D3A29C5 /* Pods-Web3_Tests-umbrella.h */, - E40227E04804862184614D6C7E47792C /* Pods-Web3_Tests.debug.xcconfig */, - EEFCDC12AF33AEE0F5855C679C2353C6 /* Pods-Web3_Tests.release.xcconfig */, + 843E120EDA785DE308138524DD662224 /* ContractABI */, + 94A4C6CAB414AF7FAFD244BB9FC45932 /* Core */, + 418A9C82FBDE212A9159C805A052BBF3 /* HTTPExtension */, + EA66D1B556B43E523C3E103BEAA2A223 /* Pod */, + 2309AEF14843C67B62F48B5D1834F43F /* PromiseKit */, + 9E7C242C4C437AD8680395CB24EE3BF6 /* Support Files */, ); - name = "Pods-Web3_Tests"; - path = "Target Support Files/Pods-Web3_Tests"; + name = Web3; + path = ../..; sourceTree = ""; }; - 9F05E53783CBA4147EC06B184D207D6E /* ContractABI */ = { + BA030173419D3943E696F24646F75E9A /* Development Pods */ = { isa = PBXGroup; children = ( - D93B71E731D507E41C179D8008455D6A /* ABI */, - E1DFEB82A27927C65000DD65DB70D476 /* Contract */, + AE8C748EB7C9F26830D3716340EF5B43 /* Web3 */, ); - name = ContractABI; + name = "Development Pods"; sourceTree = ""; }; - A0D69DA7A069263A65C2CBA86240F18F /* Support Files */ = { + C43C2EB64F862147A95813344A8B90CD /* Support Files */ = { isa = PBXGroup; children = ( - A96AAC54D2883C7F8B72DB18FEAC1A2F /* CryptoSwift.modulemap */, - 96BA022E01F9E926B32E1D180BC8E71B /* CryptoSwift.xcconfig */, - 943B98F52B7332D9B62319189B66E2E0 /* CryptoSwift-dummy.m */, - F9625572A10BB186051EAD0F7B6ADF6F /* CryptoSwift-prefix.pch */, - FDB9F5123B3F8E449A3E2EEC031A78ED /* CryptoSwift-umbrella.h */, - 1236662A305E7E28A9EE49B126F2A63A /* Info.plist */, + B5368C2A5ACB298B7B06C7BBCDED9962 /* Quick.modulemap */, + 609693025FDA6F9C37B5406BE1ECCF55 /* Quick.xcconfig */, + 15694F6BDA4AF043C86FC01FCE715BEF /* Quick-dummy.m */, + B0BE9805157E013365A3D6E93C8E03D2 /* Quick-Info.plist */, + 81D1BB938301BC167842C8B4D3608FEF /* Quick-prefix.pch */, + D9AAEB2591BBC6F99108C58D56962534 /* Quick-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/CryptoSwift"; + path = "../Target Support Files/Quick"; sourceTree = ""; }; - A5253221614190FBB62E764A70D2B7F6 /* Support Files */ = { + CAA1C16917E7905F4BE2A93747322461 /* Support Files */ = { isa = PBXGroup; children = ( - B1C747CD5D087AAB5ACA944A25E222B3 /* Info.plist */, - 53102C6B58103ED5E356E7C0187BA2BD /* SipHash.modulemap */, - F03E565EEFB2443E6E019D050A6840BC /* SipHash.xcconfig */, - 88FC17E43780F4557EAEEBD281EEBE76 /* SipHash-dummy.m */, - E945524C526BB5A0736646EECE45A2C1 /* SipHash-prefix.pch */, - 1EA8D2A9942E5989D4FDBF2E73833AAF /* SipHash-umbrella.h */, + 775BEF0CC6A7B89819A3FA3FBC5E69C4 /* secp256k1.swift.modulemap */, + A58F39328C6DAF1EB1E1DD5AB79F4F1A /* secp256k1.swift.xcconfig */, + C52F9DE3594C6C316F5A81EA35FDEF47 /* secp256k1.swift-dummy.m */, + 7150D33AF529B6A674C761D938E2CC8D /* secp256k1.swift-Info.plist */, + F59BD1FC1303C8334BCBFFF9256591A3 /* secp256k1.swift-prefix.pch */, + 6775400A5B8030F2C41E3764B1A9403E /* secp256k1.swift-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/SipHash"; + path = "../Target Support Files/secp256k1.swift"; sourceTree = ""; }; - AF2FD1EA4D2BE0E75B3918904190A673 /* HTTPExtension */ = { + CE17FF893FC8FC608EEDBB4D59518375 /* Support Files */ = { isa = PBXGroup; children = ( - 026DD2270201508265868A5FE24FF4EB /* Web3+HTTPInitializer.swift */, - 794819AADA5399461D0C62C61DFF880C /* Web3HttpProvider.swift */, + C4DDBC96A459ED2745179112B73F3FD2 /* CryptoSwift.modulemap */, + 33F25C7124B03BBBD033CA4B78924260 /* CryptoSwift.xcconfig */, + 28EF0815EC7A6AF1DA76F710C9737480 /* CryptoSwift-dummy.m */, + C1595B1DB1D1FCBD5D0ACB35297BAF08 /* CryptoSwift-Info.plist */, + 96CDC73E4F9CD689C57934A45FA34636 /* CryptoSwift-prefix.pch */, + 84C28038F13C2AB2362C55D601D3E1CE /* CryptoSwift-umbrella.h */, ); - name = HTTPExtension; + name = "Support Files"; + path = "../Target Support Files/CryptoSwift"; sourceTree = ""; }; - B68A2D74D931A8DFE422CB5205970741 /* Support Files */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 7B0F94DBF0F9234BD8344DD5559F1CDA /* Info.plist */, - 964314CF68827A540A08F52C47200AA5 /* Nimble.modulemap */, - 2EF0453618C688C425D05DEBAD2D96F9 /* Nimble.xcconfig */, - C6260A067DA4AE8F965990C5F43E54D8 /* Nimble-dummy.m */, - EB5AFE1AAB866270ADBE05644FB341CE /* Nimble-prefix.pch */, - E3EB1152ECA9F420CB1205DCDC06752A /* Nimble-umbrella.h */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + BA030173419D3943E696F24646F75E9A /* Development Pods */, + D0437950E7CB7637F63720B72894B689 /* Frameworks */, + 45448628A7E38950AB69238DE2D3B04B /* Pods */, + 7543DB7009AA6E0245749DF93DBEC5E0 /* Products */, + 2F583B2E4E5CCB1EEE36C29E1FE31F4F /* Targets Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Nimble"; sourceTree = ""; }; - D920B0927EE1BB64F585E9FC47CAF07E /* iOS */ = { + D0437950E7CB7637F63720B72894B689 /* Frameworks */ = { isa = PBXGroup; children = ( - 3CA043AA5B2B09F973DF5B2A2F32A402 /* Foundation.framework */, - 392EFC10273442CE481B90AE52F4949D /* XCTest.framework */, + 21C4CBB7A8B5DC8C6B4302F95BCEB095 /* BigInt.framework */, + 83381C72E4619FD400BEBA633921825D /* CryptoSwift.framework */, + 6CB4B5A8182C312339861ED9A88B226E /* PromiseKit.framework */, + 9E99A66E087D7B71CFC50C59EAFB7225 /* secp256k1.framework */, + FF7CA431EC9810D7B4002ACAD2F11346 /* iOS */, ); - name = iOS; + name = Frameworks; sourceTree = ""; }; - D93B71E731D507E41C179D8008455D6A /* ABI */ = { + D7EE2DFF7B8903421B6200556B5B4141 /* PromiseKit */ = { isa = PBXGroup; children = ( - C7C5DEB9E8994F42DB8B380CC0C42BBD /* ABI.swift */, - FB9CEC17D5440413F57830DAE13204CD /* ABIConvertible.swift */, - 4FE4682DC287BA9AF8E5C6928045A088 /* ABIDecoder.swift */, - 10D102311DEC265BD1CCE9BE1F15939F /* ABIEncoder.swift */, - 8EC3D45D9F61E8B1D01F14015B63719C /* Eth+ABI.swift */, - 3E976964DD4C3815EA1E2EB7B8FB991A /* SolidityTuple.swift */, - 22C27B9F9568051B422721562ABE556D /* SolidityType.swift */, - F3BB66F5C0013A118576E4D622C895BD /* SolidityType+Codable.swift */, - 4BC61FD2E7D49D3D8AC437BD76FE154C /* SolidityWrappedValue.swift */, + 170D6B8AF1DDA5FA335C364A06E549CB /* CorePromise */, + 5BF9BBD4525CA0018D2CD69AADB14D06 /* Support Files */, ); - name = ABI; - path = Web3/Classes/ContractABI/ABI; + name = PromiseKit; + path = PromiseKit; sourceTree = ""; }; - D9F032430B597DEDA9D1027408FAD1B4 /* Transaction */ = { + DCB79EA628FF1627637F80E726016870 /* Web3 */ = { isa = PBXGroup; children = ( - 58C7FABAEB4C5FFAD87A37E962A51EE4 /* EthereumAddress.swift */, - E4E07588C987D6ADB4D5A1F6B5BFADD7 /* EthereumPrivateKey.swift */, - EB7A995AFF96DDDB29A3029FFFCF557D /* EthereumPublicKey.swift */, - F3D406DBFDE77BCD5C2EE9C50706D37A /* EthereumTransaction.swift */, + 9A6D9F70579763199EA4EC5A3A15C711 /* Web3.swift */, ); - name = Transaction; - path = Web3/Classes/Core/Transaction; + name = Web3; + path = Web3/Classes/Core/Web3; sourceTree = ""; }; - DE93D9C15F4E160FCEFFAD12D4F42696 /* Support Files */ = { + DF6BB7998800952C3D8BC258BECA892F /* Json */ = { isa = PBXGroup; children = ( - B4395AA7999AD2BE7EC45F66575CE5E5 /* Info.plist */, - 8B74385C85B2CEC53AD979B756E467C8 /* Web3.modulemap */, - 3D55284C6B15D846AB1D686E96C1B9E6 /* Web3.xcconfig */, - F6483ADD03ED20868B9A44D5D8F3D7C2 /* Web3-dummy.m */, - 414E9CB64EA1F0E7FA2B9BC9B00C4A25 /* Web3-prefix.pch */, - B65E4CF5FDC77DA08B3D7F9618EA57E9 /* Web3-umbrella.h */, + 6E3E290DD389D1E88073697E332BE766 /* EthereumBlockObject.swift */, + 860EAB87C0160C6F06E450E333176F64 /* EthereumCall.swift */, + 1806DA8A015C8B379CE568F0E8F006F8 /* EthereumData.swift */, + 89E14DFE3E9AB4C4080889CFA4682EC7 /* EthereumLogObject.swift */, + C9AF98F6602935D02A37B18ADB79748C /* EthereumQuantity.swift */, + 2DD9DA49B88BD1B086311D3DD495BEF8 /* EthereumQuantityTag.swift */, + A7D9A6FD5906958CD731F51462C90BD0 /* EthereumSyncStatusObject.swift */, + 7BB7AF84ED048EAB7AD2DB4F922AEA2D /* EthereumTransactionObject.swift */, + CF4E5C1E786C66133CA32CC44B87AA70 /* EthereumTransactionReceiptObject.swift */, + 2D132F560C4330540A56B13DECCC4161 /* EthereumValue.swift */, + 8B5A92269385AED4786AEE3A4E3F1A5F /* EthereumValueConvertible.swift */, + 6BF2E5E66B50DC2DB158FF2A344B5483 /* RPCRequest.swift */, + 540A9D093538487862424C7C585DA343 /* RPCResponse.swift */, + A6AB90CE4CAAAA935988810A615F26D8 /* Types+EthereumValueConvertible.swift */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/Web3"; + name = Json; + path = Web3/Classes/Core/Json; sourceTree = ""; }; - E1DFEB82A27927C65000DD65DB70D476 /* Contract */ = { + E4916E25B0C73600627C7F3EFD750662 /* Toolbox */ = { isa = PBXGroup; children = ( - 48DCFBC1FCFEA58F0FCAEF3DAA2F3301 /* ABIObject.swift */, - 07781FE39FF8DD2FDD5BECE64FCC5336 /* ContractPromiseExtensions.swift */, - 30B04751FDE9BD99F255F0DB75680116 /* ERC165.swift */, - 056FA37C243937C7EEC5931033C237EB /* ERC20.swift */, - B85ED0F014DEF82810BC608225A9F4C6 /* ERC721.swift */, - 242CF1DABFB7F3811DD68F910B6CD064 /* Eth+Contract.swift */, - FD394D165EB52955B3A11DA125F5B5C5 /* EthereumContract.swift */, - 3E1BF4AA95A91F48890A7BCA49802F7C /* SolidityEvent.swift */, - 9AE728CE94901D4D77454B63AE645A0C /* SolidityFunction.swift */, - 5948967C1E1456F2046D4F8F5BD8C870 /* SolidityInvocation.swift */, + B20DFA01DEC8024BEDF2B0F2BBC90131 /* BigUInt+BytesConvertible.swift */, + 1519B4A990FA862D6754E952497546F8 /* Bytes+HexString.swift */, + 14998EDCF1010D9575B27AB3064356E9 /* Bytes+SecureRandom.swift */, + A28BCD3B9794191AE0B8E017EDF09251 /* Bytes+TrimLeadingZeros.swift */, + 4D25C3452F53546A3293BAF75851B44B /* Bytes+UInt.swift */, + E82FD9C8A5757AB9D8BD50C513B5CB70 /* BytesConvertible.swift */, + 603B473F58E4EBE8D0527169545C7C82 /* CharacterSet+Hex.swift */, + 4E0D7F49C77E21160EED9B2261B5AC62 /* Data+BytesConvertible.swift */, + 7447697FD35041207ED571DF1D0916E2 /* Exports+Web3.swift */, + A24C16FA13AFC03DA3F02FC5660890D4 /* Int+ETH.swift */, + EE932594ED002DFFD1A2C57020310403 /* Secp256k1+CTXCreator.swift */, + 832EC3A9F9232404F3B873D45FDD7605 /* String+BytesConvertible.swift */, + EAA75C552F839BC17D95EFBC873D2571 /* String+Conversion.swift */, + 17FB40BCDFE32CA38B1B4477264B20ED /* String+HexBytes.swift */, + D324D1664C1B34853F426C2F7F658584 /* UInt+BytesRepresentable.swift */, + 2E891EC1DEE6CDBD70868FF4FD85257D /* UnsignedInteger+BytesConvertible.swift */, + AE7A65BACB10F225BB4B46E70DF49C77 /* UnsignedInteger+Shifting.swift */, + 71F694DB2FB34861076F8802A63778E2 /* Values+GeneralHashable.swift */, ); - name = Contract; - path = Web3/Classes/ContractABI/Contract; + name = Toolbox; + path = Web3/Classes/Core/Toolbox; sourceTree = ""; }; - E21A559AEABFBDDCE076280329BB5F50 /* Nimble */ = { + EA66D1B556B43E523C3E103BEAA2A223 /* Pod */ = { isa = PBXGroup; children = ( - 0E8CE6C2306A0078DD3DD4A10EE26ADC /* AdapterProtocols.swift */, - 15401453FF6E9C66075B90A92286F89D /* AllPass.swift */, - 3BB322CA97F32ABE8AE62FE65184F918 /* AssertionDispatcher.swift */, - 72518D20B0A2FDF445EF53EECF60DC2A /* AssertionRecorder.swift */, - 60173B717B215820409958F5DDE9DB57 /* Async.swift */, - DCFC20F115EED94F7505972A35B744FA /* AsyncMatcherWrapper.swift */, - 89F8E15D1AE8233F5C435DA1A75B4834 /* BeAKindOf.swift */, - DD0849F4664B183E93C86FEF183B2A1E /* BeAnInstanceOf.swift */, - C445F36D532F29ED27E3B16964B0F670 /* BeCloseTo.swift */, - 22EFC25F6C62270124D3C498671BED1C /* BeEmpty.swift */, - 2464D983CB8276A989075D6E15D83B6D /* BeginWith.swift */, - A9B19C429994E58B081B61416BFA87F8 /* BeGreaterThan.swift */, - 692FD4BED2C836DC20E2EEE298BE437A /* BeGreaterThanOrEqualTo.swift */, - 3551FECF054701EE202A735DA7EF4413 /* BeIdenticalTo.swift */, - 42BE753FB4AE78C4F15DACE01827F739 /* BeLessThan.swift */, - 2337C4F9C5BDCAA343FFDE963489C4D3 /* BeLessThanOrEqual.swift */, - 0FA4E73447FEDB96E6A0AEEF34779CA9 /* BeLogical.swift */, - 4BB1894DA0DAFDA28D251C22A1BD6DDD /* BeNil.swift */, - 93886933DBA27BCE1273A64D539246D7 /* BeVoid.swift */, - D267300B97E7FE8AA495FAA268F58315 /* Contain.swift */, - 7E867D3ECE7110963AA0291D07387094 /* ContainElementSatisfying.swift */, - 8E7800E0F2E600AF59F6F26761D6D545 /* CurrentTestCaseTracker.h */, - 82FEDB9406982DC4ED01768BEF8FA7BD /* CwlBadInstructionException.swift */, - 175C4CAB877E384821587F39B52BE319 /* CwlCatchBadInstruction.swift */, - 4CAEF3097CB64F620CF8A2894D9C9DFA /* CwlCatchException.h */, - 1546A50DBD1A96DDDA7473152A3DE4C8 /* CwlCatchException.m */, - 6CF3F55464669773593A86D0B04D0D7C /* CwlCatchException.swift */, - 71985F2B5849436955762E584639A215 /* CwlDarwinDefinitions.swift */, - 0E5FC5E529B159104CEBE8AC58FF3DE4 /* CwlMachBadInstructionHandler.h */, - 47F9C5D805B22B91E2196861DB702C96 /* CwlMachBadInstructionHandler.m */, - 6D0D2EDC144F47285DAC98FD57FEB928 /* CwlPreconditionTesting.h */, - 151ED605FF057C5118949F9ABC7D5E51 /* DSL.h */, - 6102D81214CCE40A7E1FB43A8A1CD4C6 /* DSL.m */, - 93D77BF9B26A8FBEB86D1170E8C8418B /* DSL.swift */, - 53AEDBC15FDDB8206BC9B51EEAFF3350 /* DSL+Wait.swift */, - 3B5DD42FE948D3A904B0685E0DADED51 /* EndWith.swift */, - 320A9B594F030E1416DEB69B6628715C /* Equal.swift */, - 91C8DEAE81847E961F496521D2E3D482 /* Errors.swift */, - 10EF61C27F5C56B14E2F05525A1C9C55 /* Expectation.swift */, - 386BDB80733FD4AED09A321EAD286125 /* ExpectationMessage.swift */, - 750BDB14AAF8D41D25A0081620C791D3 /* Expression.swift */, - 5B975D753A3C28C8B0E65FF526BB9CB0 /* FailureMessage.swift */, - 3904E34D3676A51D11E21EA2639A2982 /* Functional.swift */, - C462F2F180399F9819C88D96BF7DC42C /* HaveCount.swift */, - CEC3C856E53F07EEAC70F1A102150C8A /* mach_excServer.c */, - 0374D8DF6DB23E54F93C37194A96FD95 /* mach_excServer.h */, - CE99824BBF6A64B3B3345E2596D8182A /* Match.swift */, - ABBDC439D9CFC1913214156703087CA6 /* MatcherFunc.swift */, - 761E1E4EA04DFF51B02EF4DEBD3B8E3A /* MatcherProtocols.swift */, - A10FDFA0F38274A02995EB6335EC5314 /* MatchError.swift */, - B4DDC8CBE33C6900D22158EC10DB45FF /* Nimble.h */, - AE826DBA91F4EC9F06B82D35442221B9 /* NimbleEnvironment.swift */, - 8C75A080E838D00B78236EF6A3A0EF52 /* NimbleXCTestHandler.swift */, - 0DAA3970F37339D18EE9F8F443A200A2 /* NMBExceptionCapture.h */, - E6114D42DD6715C36E75413AEEAB1583 /* NMBExceptionCapture.m */, - B51E382D8769F311ADB37970697769DD /* NMBExpectation.swift */, - 852637243549905E2EF9A6A5A97D380B /* NMBObjCMatcher.swift */, - 91A745AAC55912D298E6F3D10BEEFCA8 /* NMBStringify.h */, - FF11D79F04597F1AB723CA8900023EFF /* NMBStringify.m */, - E39518AC71BCB67ABECC6C1892A96E26 /* PostNotification.swift */, - 2A4314CA6AC8B1C35979F04C88FF1AF8 /* Predicate.swift */, - 3D6366C654B155C155C96B42CBC19789 /* RaisesException.swift */, - A299F04389EE3EA7A954E42E1E43ECDD /* SatisfyAnyOf.swift */, - 978C4438E526C50F9B674B45F68CF495 /* SourceLocation.swift */, - F9E49BAE936605CC38053DA61B5348AC /* Stringers.swift */, - 9DE7C2676EED0661B585232EBEEA51C5 /* ThrowAssertion.swift */, - 68CA51529AD5CF70A65914C362FF1D61 /* ThrowError.swift */, - 066801D0084AC891FB130C0E4076EAA6 /* ToSucceed.swift */, - EA61672CD392DC7507D37FAEADA98997 /* XCTestObservationCenter+Register.m */, - B68A2D74D931A8DFE422CB5205970741 /* Support Files */, + F8E64EBD0964710861A3DD91D2B6A94B /* LICENSE */, + 9090D25FFD49682E8CF8406808663F3B /* README.md */, + E029D9EAECAEF059F835738257F5F285 /* Web3.podspec */, ); - name = Nimble; - path = Nimble; + name = Pod; sourceTree = ""; }; - E6549F825035BE923ACCCA459A7E2F0A /* Core */ = { + F676899F62E484AEC4A563BD19A4B835 /* CryptoSwift */ = { isa = PBXGroup; children = ( - FDB1FFC678FC64BA54689DA4BFC992B1 /* Json */, - 9AD12A0DD524CDA5DE4320F23A335B2E /* Providers */, - FB59B2AE776467E41D4BB6CAF98631CB /* RLP */, - 494C8169806298576EB91AA0EEF359FC /* Toolbox */, - D9F032430B597DEDA9D1027408FAD1B4 /* Transaction */, - 9BE4F2C2115F8EE3E5B5A6BD55151100 /* Web3 */, + 19C6B18DF40D9BBCA4CEE08C4968C305 /* AEAD.swift */, + 3F5591C054F8C176137EEE454809E385 /* AEADChaCha20Poly1305.swift */, + D53D713EEDF57DF3D78915BB3A078D44 /* AES.swift */, + C5523F86486806B891AFE34C4CFE6AC3 /* AES+Foundation.swift */, + EBE938E03A895C2800235D43B47AFC19 /* AES.Cryptors.swift */, + F6FA8C8BC40688D2B9431F4171E36A33 /* Array+Extension.swift */, + E6127C9DC72E9306C6F780F287F1A57B /* Array+Foundation.swift */, + 95A4B892D6660C212CB9FB7026BB6273 /* Authenticator.swift */, + 8FA28D8A834252A09BBE506754111459 /* BatchedCollection.swift */, + B472464D7E33ADFFF056A2B73C5B740B /* Bit.swift */, + D5A686DC67ED81BC4852C8DAA9D36906 /* BlockCipher.swift */, + 178B95C27D30A1603525087BB5F7FC3B /* BlockDecryptor.swift */, + 89770B1B358444C1B15FAE9259584888 /* BlockEncryptor.swift */, + 2AC9A03533435C340EFB3B69C0337813 /* BlockMode.swift */, + 6C46ABD9C86FF9512B062FA05F8B4B1E /* BlockModeOptions.swift */, + 4F78BDB091F3FDF903B545AEFF171EC2 /* Blowfish.swift */, + F4A7A7E66502122347F71B12BE3B6398 /* Blowfish+Foundation.swift */, + 5EE0D2CC1E132AA2DC7409DC84B4A4BE /* CBC.swift */, + BFF564F19363A909465D8FFE5877A734 /* CBCMAC.swift */, + 973571EEA20B220D346044B9A674677E /* CCM.swift */, + 1F8E167EFC39D75A67200FB7FCB6D68B /* CFB.swift */, + 5B588AAB979C67AA580992B4923C53BA /* ChaCha20.swift */, + A84CB579BCD1B99B76EE0B703FFC9020 /* ChaCha20+Foundation.swift */, + EE2C05A53FCCB317C5AD2D8B78469F43 /* Checksum.swift */, + D5020ED3AD08DFA8D4F7A9D02C9D9A59 /* Cipher.swift */, + 0116FFB611525C4A43EABEEF823BB1DD /* CipherModeWorker.swift */, + 0E81DA14BFDA0CF6C579C61039018005 /* CMAC.swift */, + 89D21A0C3BE5FA2400C5CCB0B73C95D2 /* Collection+Extension.swift */, + 2FBA183F0D910CFF423A57A0DAEE02D2 /* CompactMap.swift */, + E03F24DA2E12A3AB13CE19308331EB9A /* Cryptor.swift */, + C87023998134AF8F074BE8F7B595D666 /* Cryptors.swift */, + DA361275BA57D8363E2D1FD10863E28B /* CTR.swift */, + E02E666854B62A77BFC8AD44C8F4C22C /* Data+Extension.swift */, + 5353968F78FDC41BA5A473C835C524B6 /* Digest.swift */, + B1E3F0C8179ED5A30EC66589F1AD1399 /* DigestType.swift */, + C2EFB6A545A7F875AC989A40BD20FE85 /* ECB.swift */, + AD3241C61D46E469448C4D5503873593 /* GCM.swift */, + F0994D146A07AE5F9ABFF4038DC76E3C /* Generics.swift */, + A9B0B7B5829E6E87177192B250271D5A /* HKDF.swift */, + 27289B94674C5E87D53122EF2B553638 /* HMAC.swift */, + FB2F3A6D63CF4FF2B97E740227CA06EC /* HMAC+Foundation.swift */, + BDE3BAFCB45698181F5EA6B070E728AF /* Int+Extension.swift */, + 5336338ABAD60C484B7E4D0650E3A20D /* MD5.swift */, + DCFCCF8198BB225C66F2DEFCF8943783 /* NoPadding.swift */, + 59B1715263DBFBC46B73EF5E823E89DF /* OFB.swift */, + 737F5B9C5CE5255292106F27A06470FD /* Operators.swift */, + 4A2F2CDB06BFCC0112C61F7463A4880B /* Padding.swift */, + AB365893B9D1C33E933A9BAFEA0DF17F /* PBKDF1.swift */, + 71D48582F8942C459C44EB70204BEE02 /* PBKDF2.swift */, + 858E35F0AE6859D47D8D13696F5DD388 /* PCBC.swift */, + EC6FB2756C120A4788A2048085948097 /* PKCS5.swift */, + 65B12C5B72A159A8EB9F7BF7577C9A4A /* PKCS7.swift */, + E99BF6E79040C5BE0EC953E02519B55F /* PKCS7Padding.swift */, + 0798543F8AF14C1C6E0889C4D6CB37A8 /* Poly1305.swift */, + 5798F164DAD76EDD3EC65F9C68B38981 /* Rabbit.swift */, + 30C6DA62D78140F597FF34EB9BC36E9F /* Rabbit+Foundation.swift */, + 23009ACEA882CF8491E004B72E01065F /* RandomBytesSequence.swift */, + A7FC0112050A708B9A7F6A8C033E470D /* Scrypt.swift */, + 60B272EBEC5899B1253C5A5D98952658 /* SecureBytes.swift */, + B61052E1A673068284F55667FC28BDB8 /* SHA1.swift */, + 211CB7E127D7F40330BFAF4F8EFF356E /* SHA2.swift */, + 2BE97D68B60C226725DAD055BC27580A /* SHA3.swift */, + A1101E41DAFF445385FDFD0F72B3635D /* StreamDecryptor.swift */, + 6C268F0B50B496091E67B430FF2D1AE6 /* StreamEncryptor.swift */, + 3A7FC67367AEEA3C7A5116AFD036FC43 /* String+Extension.swift */, + 3D45F7FC7EBC5088A4F5048D24D2900C /* String+FoundationExtension.swift */, + E9FDACB06390C9F219BBDA74DB29EF23 /* UInt128.swift */, + 4828EC7457918B225B0600270C7F767A /* UInt16+Extension.swift */, + E0757CBC6DA7E1A46E1C0D10BEED254D /* UInt32+Extension.swift */, + A68C1E4A9A95876DF949A18EA0B3A2DD /* UInt64+Extension.swift */, + 44E5444D0B89F09187B278786A851999 /* UInt8+Extension.swift */, + 6129D08B8987B1DF175007AC22ED40DF /* Updatable.swift */, + CF427B0C00C326D23BB0E8CD7B01DC80 /* Utils.swift */, + 639B09B3688B60572B54B80EC9242617 /* Utils+Foundation.swift */, + 3F34A78B4685DFB7498025378FA7A017 /* ZeroPadding.swift */, + CE17FF893FC8FC608EEDBB4D59518375 /* Support Files */, ); - name = Core; + name = CryptoSwift; + path = CryptoSwift; sourceTree = ""; }; - FB59B2AE776467E41D4BB6CAF98631CB /* RLP */ = { + FF356841225E0856D48E24455E49DFBE /* RLP */ = { isa = PBXGroup; children = ( - A899057CC65B61D103FEEAF3BB7FF579 /* RLPDecoder.swift */, - 27398E13DFCACF392DD53C73EA2AC327 /* RLPEncoder.swift */, - C8763D3993346C0747740CD32E7A4C3F /* RLPItem.swift */, - E2FAA23491E40B7A8B95B91F15EAC1B3 /* RLPItemConvertible.swift */, - 584DA17AD18E9D89E5764C4B5322BB25 /* Types+RLPItemConvertible.swift */, + 35E19F0946583352CAD804D7EF973DEC /* RLPDecoder.swift */, + 8CFD0989053881D0B479BC95D153B5C2 /* RLPEncoder.swift */, + E26C5094ECBDC16F1071C7D3E5FCD6C0 /* RLPItem.swift */, + 0479522CB09ECCD3FC35221A46CB9ACB /* RLPItemConvertible.swift */, + 772E90C47DF4BECA31E073D42A70A3E8 /* Types+RLPItemConvertible.swift */, ); name = RLP; path = Web3/Classes/Core/RLP; sourceTree = ""; }; - FDB1FFC678FC64BA54689DA4BFC992B1 /* Json */ = { - isa = PBXGroup; - children = ( - 8F61EEAD05FC597C56DCEC6F4626CFDC /* EthereumBlockObject.swift */, - 5E87ACC8BB25135A1022E6A41E68C1C7 /* EthereumCall.swift */, - 70317A400765B75742A5FF1CF2712B02 /* EthereumData.swift */, - FF93B4CEEA870FB496C43ADE996020AC /* EthereumLogObject.swift */, - 032AB1281D714206F80C5FC8CA568E26 /* EthereumQuantity.swift */, - 4C83CCB81657E5CDEF6E81B63DB39F9E /* EthereumQuantityTag.swift */, - E911D61F09C251FF0019675757852705 /* EthereumSyncStatusObject.swift */, - 248EF1BF68FBE7047312795999763578 /* EthereumTransactionObject.swift */, - 948569B4D9C6031865E2CDCEFC19CEC6 /* EthereumTransactionReceiptObject.swift */, - 3B8C95F48EE4DC81A3D06B941ECD1610 /* EthereumValue.swift */, - EFD45B3845C6800E8E820D4B306A2789 /* EthereumValueConvertible.swift */, - 8A4747D43258EBC06BEEEA5BAC6C8B2D /* RPCRequest.swift */, - 7610776FD14033880A7CF88F57B7E9E6 /* RPCResponse.swift */, - A8C6C2AA2E225F6F22183A77173571FE /* Types+EthereumValueConvertible.swift */, - ); - name = Json; - path = Web3/Classes/Core/Json; - sourceTree = ""; - }; - FDD4D2C1D57CEE5205AE3DD4316DC601 /* Pods */ = { + FF7CA431EC9810D7B4002ACAD2F11346 /* iOS */ = { isa = PBXGroup; children = ( - 656C94C6FA8355C2AD9EAFC6306255FA /* BigInt */, - 6A318638A1BA2CCEEAB089AAF260256F /* CryptoSwift */, - E21A559AEABFBDDCE076280329BB5F50 /* Nimble */, - 6D35512CE8E411D43CF5C6599839489B /* PromiseKit */, - 381487036EB0720639C51A511142E1DE /* Quick */, - 67717533078BB44A1EF4CE6D713F7466 /* secp256k1.swift */, - 4A8598E59BDE8BCDDD656038C24418D7 /* SipHash */, + 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */, + 4E7E8BD81017C34E8B401C0BBA95D7E5 /* XCTest.framework */, ); - name = Pods; + name = iOS; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 1E9A728ED81F99A85DCAB67C6A687810 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 379D1C13E8E9C42FD9096E27E5EFE85D /* Web3-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3D444249185E020FC46439F04ACBDF67 /* Headers */ = { + 0BE4AA1CFB0BFCC908FBF0366C02A73B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 80A810BC8207A5DE44E7CFBD4A4F2B04 /* SipHash-umbrella.h in Headers */, + 1BDA674B011972EE9EDC32ECAC1D3663 /* CryptoSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4B6DDD0A2774AD5B4BDF8C4E9FD25CC5 /* Headers */ = { + 28C840A6D2FB6C1BFB278D87496E2092 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6F1B338E3DF84718C1A2C653917F7A9F /* BigInt-umbrella.h in Headers */, + 60675CF50EB3EC8FF8179BCA90812A46 /* QCKDSL.h in Headers */, + 4425A61652C1576CA5EDDD59B122594E /* Quick-umbrella.h in Headers */, + 6AEF12AE1E460BBC5887128B7CB76F8C /* Quick.h in Headers */, + A7F68DB324781AB431F68DC044F7F16D /* QuickConfiguration.h in Headers */, + CB8382152B36343AEAAAE26D79F7A61A /* QuickSpec.h in Headers */, + D855E6397ADD5C0E8F636C6111B076F7 /* QuickSpecBase.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 74FBE4D09324617DBB92C41580931E2A /* Headers */ = { + 3689E26F222BA8B7576F40753A77B2E3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1EB92F63E2E588AD61C8E353550DEE43 /* AnyPromise.h in Headers */, - 8685F379A1B0E474A2A6A7EF1F204D4C /* fwd.h in Headers */, - B8BBA917D91DD18E4C2903C20F920012 /* PromiseKit-umbrella.h in Headers */, - FEA8AD3DE750DAAE56DCC5F29355719C /* PromiseKit.h in Headers */, + 1CCEEF4D2A3DB759082AFE0BEA70D1CA /* BigInt-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 85497845823171A47E23A59621A44463 /* Headers */ = { + 5F6F839DB8781B6520E2D9D15635FF38 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 5AB9DB61D62D8BF7B1C734B373F361E7 /* CurrentTestCaseTracker.h in Headers */, - AAA2830BBCD86431B3EEB0ED968DF4A3 /* CwlCatchException.h in Headers */, - 35CADB1AD8E063A35DF68147F3183206 /* CwlMachBadInstructionHandler.h in Headers */, - 69B80157634D6FAF248D37F397732357 /* CwlPreconditionTesting.h in Headers */, - FB433A84B0A557CD5E5948A8B6705024 /* DSL.h in Headers */, - 6593C547A71CCEFC480CD578080A327F /* mach_excServer.h in Headers */, - 5DBCC0E4C72649C9A39A00D40D944DDA /* Nimble-umbrella.h in Headers */, - 0A2CA8B0DD7E300ABFCF1956E6B58248 /* Nimble.h in Headers */, - 22E9F6FA56858A5F7A5D664E5968ECB0 /* NMBExceptionCapture.h in Headers */, - 96132E7432F8DD315A88A07C6B4F9C72 /* NMBStringify.h in Headers */, + C5BB5F86B87305097B8C3BB69052A45F /* Web3-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - ABD5983CED0731FFFF8EF78A04777373 /* Headers */ = { + A04D9AC9E174AA18044242D4A68118E5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - E9DBD20CDDBAEE322A3015C38384DD8F /* CryptoSwift-umbrella.h in Headers */, + 7BD8B1ADFB3C4BA149F8DBB69A28A0D7 /* basic-config.h in Headers */, + C32A2459B02561AC713F9E33D90B11E2 /* ecdsa.h in Headers */, + 84A8E69B08420EE67C379A7FAAD3180E /* ecdsa_impl.h in Headers */, + F87D728F0B678A390B8AD95C0C751F20 /* eckey.h in Headers */, + 0ADE23851DE8E232C979E342E2E96A41 /* eckey_impl.h in Headers */, + F2A1E92C26D1CECFB31C0CFA9BF3F960 /* ecmult.h in Headers */, + A0F4BA0B3E15590F9A54E2000FD60C79 /* ecmult_const.h in Headers */, + 651F414F722C195DA792EC9699325D70 /* ecmult_const_impl.h in Headers */, + BC1110C70FF4BFB9C608F6513D4E9ED5 /* ecmult_gen.h in Headers */, + AF9EE94CAD81EB843A407A53C69D2609 /* ecmult_gen_impl.h in Headers */, + 859300A82EAC46C69C49A8314450827F /* ecmult_impl.h in Headers */, + A7020D83CD1ADF4F81BBC888E80C7E5C /* field.h in Headers */, + 71116EB71552056EA6D3FE646EBFFF04 /* field_10x26.h in Headers */, + 483703A759B98CA09A3512A42CF8050F /* field_10x26_impl.h in Headers */, + B3D57894F049D820461C4F121BEE7D72 /* field_5x52.h in Headers */, + 00E49C138ABC4C1166D478726BF6E632 /* field_5x52_asm_impl.h in Headers */, + 959C613046ACE3FDB099E34209CB049D /* field_5x52_impl.h in Headers */, + 7BB4B3867F2BD7BA467C121BF725A94C /* field_5x52_int128_impl.h in Headers */, + B74FAC3CF0940CC1818F5038F1BE032C /* field_impl.h in Headers */, + F11F1BF6CEA5171DFBA25A26A4B7C30A /* group.h in Headers */, + 8977422B64480E10E575BE3B2BD65BE6 /* group_impl.h in Headers */, + D844F9A52C8F8585751A9AB6CDA3CBD5 /* hash.h in Headers */, + A8538ED136634C6103D420E12602ECFD /* hash_impl.h in Headers */, + F54FAE312B9F1BAAA6FA4772F560E7D6 /* lax_der_parsing.h in Headers */, + E50C82041EABD49B665139E490BE0B0D /* lax_der_privatekey_parsing.h in Headers */, + A0A0894416400AA3DDD3D816608D26B5 /* main_impl.h in Headers */, + B91B23BE055055154FC2597826ED3D08 /* main_impl.h in Headers */, + DEDBE5477B0B2B8AA8AE6156640359F7 /* num.h in Headers */, + 402CA6B45A29B5F9E1B313B1879B17C1 /* num_gmp.h in Headers */, + 22C11E179B2E55D9F5757CF22E418336 /* num_gmp_impl.h in Headers */, + E066624E04F95EE67395F133F3EC8F61 /* num_impl.h in Headers */, + 1B03BE8E27F14ADB1E2FA75C96CA8878 /* scalar.h in Headers */, + C2F8A1BF6F35FE6858E409FC3E65F262 /* scalar_4x64.h in Headers */, + C3D0C2B65A4DAE69F6E3CA342F677976 /* scalar_4x64_impl.h in Headers */, + B4682A96361CE957D706C69E9883DF67 /* scalar_8x32.h in Headers */, + CF7354D2C94BA56E5AC993CAFD76E597 /* scalar_8x32_impl.h in Headers */, + 87F2D5FE41CF23F8A9156E5D04EBA970 /* scalar_impl.h in Headers */, + 0E175682AA6C42DFD751FF8ABC74DCF5 /* scalar_low.h in Headers */, + 192FFF7AC7F145E6F594491C8887519B /* scalar_low_impl.h in Headers */, + 08B0302B60DA94C02B0FEDC5271FBC1A /* scratch.h in Headers */, + 9E46BCA018EF8E992F3252D2CB931D4C /* scratch_impl.h in Headers */, + A37E040974CE578BC0D38DD2EC19D784 /* secp256k1-config.h in Headers */, + A47CBC4297B70B38F9C0681B7A016C3F /* secp256k1.h in Headers */, + 1B078291E026D2AC61C78333C3E7C10F /* secp256k1.swift-umbrella.h in Headers */, + EEC628C85493C98EEB03A4C39B5D9C30 /* secp256k1_ec_mult_static_context.h in Headers */, + 3F2822D069EFA00B2915BFEAE83E9D04 /* secp256k1_ecdh.h in Headers */, + 7DCF180D72617E724061A331A2D490DE /* secp256k1_main.h in Headers */, + AFEE663D6651584F68885FD6BAA6EB22 /* secp256k1_recovery.h in Headers */, + 91069D6ECCC4A9D14B9A30788E86660F /* util.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - CC09D3EA0325CB97B46D51726F0F950D /* Headers */ = { + D59EF5F9A7C02B9BCDC512142180E03B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 59813826258855E01E9F7F47811BC26F /* QCKDSL.h in Headers */, - 88717F38AC6F589DBC44DFCFCAF1357B /* Quick-umbrella.h in Headers */, - 955FE0E429FCC22EA917659603BCDFC7 /* Quick.h in Headers */, - 7F65C96ED69BBD525FA3A854D6CC7492 /* QuickConfiguration.h in Headers */, - 243750FD9F444FCC04CF43D65F061E40 /* QuickSpec.h in Headers */, - A45395E6ABBF9AD696BD9EC45FE802BB /* QuickSpecBase.h in Headers */, - 5E43EE4ED8550BC1C5409FFC4F89B5FB /* World+DSL.h in Headers */, - 2DFF4BFBF24F21505A469E7306E8E838 /* World.h in Headers */, + CC329DDE2BB25D99600150EC87977C4C /* AnyPromise.h in Headers */, + 35FA8A8C0F5C2390554D932EEE8EFCD3 /* fwd.h in Headers */, + D9D77226091CB2FA4881258D51932159 /* PromiseKit-umbrella.h in Headers */, + 493E31FA984BD0EA65D6C16903A86678 /* PromiseKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - D2AEFAF71E906488A636BE892003BE49 /* Headers */ = { + D6813C8039C765585522E5CF6CC605E9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1A2FC123FE9CBADBDF39D9F13A50E5A9 /* basic-config.h in Headers */, - A44C60B1C3A40B55E2F4B23F05691F39 /* ecdsa.h in Headers */, - EBCD3DDAA634CA7916587A4C42ACCBE4 /* ecdsa_impl.h in Headers */, - E8031EB207CD40763620BB66D03011D1 /* eckey.h in Headers */, - 521A7EA155F261286A20EB218A7A5BDD /* eckey_impl.h in Headers */, - C5A9CC9B590ADE0C78F78FD86D26B34E /* ecmult.h in Headers */, - 948CAEA5CD269A37009EE2528009D24C /* ecmult_const.h in Headers */, - 5D782BFC6BAD94E4CAE9784B7ADC2130 /* ecmult_const_impl.h in Headers */, - 78DD743EF6A045A63563C0EC85929E8D /* ecmult_gen.h in Headers */, - 23A87006413A996DB333EFFF200693C9 /* ecmult_gen_impl.h in Headers */, - 602EA31ACBD45498B8EB0E5BE501D6E1 /* ecmult_impl.h in Headers */, - B6905ABF01F43A02EC1BA75AFE1B85A7 /* field.h in Headers */, - 5BBF2FB1A5FF1ABF58A8B50CE2A221B3 /* field_10x26.h in Headers */, - 51C8CE5D8EC4732E081FD7F0AB678005 /* field_10x26_impl.h in Headers */, - DF8E83B870B96BC2B7E66348754AFB89 /* field_5x52.h in Headers */, - 82F07AFB4196AA17EE4024AE94E12D68 /* field_5x52_asm_impl.h in Headers */, - 16814C8CB5790CBB8DEFD82D060AE4D2 /* field_5x52_impl.h in Headers */, - B6BFE782112D3F7A81DF059B60F3A3D2 /* field_5x52_int128_impl.h in Headers */, - BFBA7C2DFB3249CF3A8EC0B592A508C4 /* field_impl.h in Headers */, - D5BC69D8C22101F211D6F6A472DECF17 /* group.h in Headers */, - B7657A020B1AD12466B398FF2C015F96 /* group_impl.h in Headers */, - C06F105F8E59E886A2F4C8E7B5786D45 /* hash.h in Headers */, - AA849DD558C4DE173D193E4ACE044BF8 /* hash_impl.h in Headers */, - 6AA72849675D033BD777F388DC682F6D /* lax_der_parsing.h in Headers */, - 580BA181A86EC9A423A09533A148F209 /* lax_der_privatekey_parsing.h in Headers */, - E5D13AE6E42CC195D5212D8C95B463FC /* main_impl.h in Headers */, - D494B2F7B863069D52BBC01CA382F4B2 /* main_impl.h in Headers */, - A04F30AAB0567663BF3781B4BA831113 /* num.h in Headers */, - 71DEBCEA4DA00F75D74DF97B69ED510C /* num_gmp.h in Headers */, - C775A1F1C44DEC9E7E6F23E13B322F10 /* num_gmp_impl.h in Headers */, - 193FBDB421D0B9AF22918190BBD6FF28 /* num_impl.h in Headers */, - 3A8A662914F1996B311E375705C87EBA /* scalar.h in Headers */, - AD70A73DC99D4E6A4169DE8430EA3DEF /* scalar_4x64.h in Headers */, - 90AB6413849B9FDE301C2ED80C8B49D1 /* scalar_4x64_impl.h in Headers */, - 91487DD574643E3E8A758C51F2EC7610 /* scalar_8x32.h in Headers */, - 516732E1FFB7FA886F4BD2EFA74A4D7A /* scalar_8x32_impl.h in Headers */, - 8EF73F0A8A13C0F441004514CC107137 /* scalar_impl.h in Headers */, - 898EA46ECD485BD36591ED072B05FA6D /* scalar_low.h in Headers */, - 962FBF0242C285FB2056473ACC05A92C /* scalar_low_impl.h in Headers */, - 0EF0B071FD7ADC777A32B688906C1737 /* scratch.h in Headers */, - 676E4F66A7D3D7CB33924507A18FD46A /* scratch_impl.h in Headers */, - 160208415273638E125CBB0E125D075B /* secp256k1-config.h in Headers */, - 2BB77EBFEA942F46834C680E961816C2 /* secp256k1.h in Headers */, - FEB4193B5677818A5125752E7E10F360 /* secp256k1.swift-umbrella.h in Headers */, - 59F2D081E23D12C600F97976B5E29BEE /* secp256k1_ec_mult_static_context.h in Headers */, - F97FF72C5E91F5545A2F0BA8C32BB2AC /* secp256k1_ecdh.h in Headers */, - C7BDA486C65CE4F519F3462DB2A74D1D /* secp256k1_main.h in Headers */, - 9CB4D15944C59B06250EF248665BB1F6 /* secp256k1_recovery.h in Headers */, - AF9E29680785E4D98DFE4B838756CB66 /* util.h in Headers */, + 9B634DC60D0A7C8C303322F28D9E3B02 /* Pods-Web3_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDD6091973F9D0B25B6763195EF34D5D /* Headers */ = { + F684E10CDA60BAC918A92251A0A1968A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A75294BEDCAE1AAB88962822BEE0C41E /* Pods-Web3_Tests-umbrella.h in Headers */, + E1C5AE23F3288A2E8A13489165FD3FF2 /* CwlCatchException.h in Headers */, + 05D6872E1E4C28423550C859B6E03820 /* CwlMachBadInstructionHandler.h in Headers */, + 38FEA25D16ACC1E6F5C696CD95B41A69 /* CwlPreconditionTesting.h in Headers */, + 9EEF9E84E580920E11E06170D25F65C3 /* DSL.h in Headers */, + 6FC59CBB360B3EF8E45D151D945BCA54 /* mach_excServer.h in Headers */, + C0367D0510CE9E409A33E9B356422017 /* Nimble-umbrella.h in Headers */, + 1FA0DEC9E883929115DD91352F570F3B /* Nimble.h in Headers */, + 30966E26266F62432C8E914340871113 /* NMBExceptionCapture.h in Headers */, + 74C4A30A55AC7DB057CE14BCA15299C4 /* NMBStringify.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */ = { + 0EC2A6F540408AEA22C3E201D4573BFF /* PromiseKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 147FBB7AE98A8D1D30A4B2D9025F106F /* Build configuration list for PBXNativeTarget "SipHash" */; + buildConfigurationList = 225F069ECB756B2C141BB7BD57741D9B /* Build configuration list for PBXNativeTarget "PromiseKit" */; buildPhases = ( - E040795AACD485A39902B01BAC472321 /* Sources */, - 06FC3E95509224887C8E9111CDB9D572 /* Frameworks */, - 3D444249185E020FC46439F04ACBDF67 /* Headers */, + D59EF5F9A7C02B9BCDC512142180E03B /* Headers */, + E2D8804FBFE36360FFE1EF66DC3E5DB9 /* Sources */, + 35ADBA662B9B6C07632BBC68420C1B9F /* Frameworks */, + A74BC522379946ACB999A98DC8641BA3 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = SipHash; - productName = SipHash; - productReference = 29C96EB5E0B3F1DD30B667D77F29FD24 /* SipHash.framework */; + name = PromiseKit; + productName = PromiseKit; + productReference = A762179A16198E27F78399BC2DF7B1CC /* PromiseKit.framework */; productType = "com.apple.product-type.framework"; }; - 2346530DE98A17EB1E093470E3E9EF72 /* Quick */ = { + 227BE1DA11E696352E2D8F3136FE7A66 /* Quick */ = { isa = PBXNativeTarget; - buildConfigurationList = BBFBBFCAF510627E82DCA0F74B5A7039 /* Build configuration list for PBXNativeTarget "Quick" */; + buildConfigurationList = 24C5F1E4AA490A2D20C85B6EF68FDE15 /* Build configuration list for PBXNativeTarget "Quick" */; buildPhases = ( - 974B0E2AC5FF4DAB56C7FE3F40637F64 /* Sources */, - DE8EB533CEE22DB8B903014FB6DAD0A8 /* Frameworks */, - CC09D3EA0325CB97B46D51726F0F950D /* Headers */, + 28C840A6D2FB6C1BFB278D87496E2092 /* Headers */, + 511BE23278E8D20451DBA03C70890433 /* Sources */, + AB2A787BCECB880DF39E87692FDA4777 /* Frameworks */, + F4B99F130ADDEC351243E49166A07ED5 /* Resources */, ); buildRules = ( ); @@ -1903,115 +1834,100 @@ ); name = Quick; productName = Quick; - productReference = 792169B8BC5C9C4E6D7D977DC10E6E0D /* Quick.framework */; + productReference = 1A73ABF9D3CE1B4C1DA1CC6C281508E8 /* Quick.framework */; productType = "com.apple.product-type.framework"; }; - 2B028F713360D9B13ED4B59673121C55 /* CryptoSwift */ = { + 2E92D8B1D3E335F668F432DEFD5446D6 /* Web3 */ = { isa = PBXNativeTarget; - buildConfigurationList = D45566F83573A1648397D8CD3487606A /* Build configuration list for PBXNativeTarget "CryptoSwift" */; + buildConfigurationList = 84E4CBF0D9DECCA6ABCB0B62F03648A2 /* Build configuration list for PBXNativeTarget "Web3" */; buildPhases = ( - A26C0C9502C0DEA298226CBB03E3456D /* Sources */, - D18B08A2C1B87403C350A07FFB0D5830 /* Frameworks */, - ABD5983CED0731FFFF8EF78A04777373 /* Headers */, + 5F6F839DB8781B6520E2D9D15635FF38 /* Headers */, + E867065900EB8C91ADA2C9FA1DBB2BAF /* Sources */, + F7FA1B167121AC8D4D87E1393DC33900 /* Frameworks */, + 77AA1B9AC3511DA94E1B3FC99EB05469 /* Resources */, ); buildRules = ( ); dependencies = ( + 5337713A0DB9F0BA38EB0C32FF674C61 /* PBXTargetDependency */, + FA3F2E0FBFB17B33AB25486EB8B6BC2E /* PBXTargetDependency */, + D54BDDD9D237A894CC7AB0AC1B3F60ED /* PBXTargetDependency */, + 5CDA8885D0758E56A554728A057860C3 /* PBXTargetDependency */, ); - name = CryptoSwift; - productName = CryptoSwift; - productReference = 29127F165C864BE658A9BDF637E7DE0B /* CryptoSwift.framework */; + name = Web3; + productName = Web3; + productReference = CB300F021C5FB5B916B3CDD0A2FA5B2B /* Web3.framework */; productType = "com.apple.product-type.framework"; }; - 4ABFE84ABAAAFE421C48732151CF85E8 /* secp256k1.swift */ = { + 4199AFA0D6B764FC01BD5903BE7D1CAF /* CryptoSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = 8260D8FC7B229B6AFA0F0D4AF3048BC3 /* Build configuration list for PBXNativeTarget "secp256k1.swift" */; + buildConfigurationList = 06FA395FFEAF5E28FA7208D7C6BD74D0 /* Build configuration list for PBXNativeTarget "CryptoSwift" */; buildPhases = ( - 1C57540B71BB9645575DC6DE51433B15 /* Sources */, - AE346A928881E52E94060F34F1E5802A /* Frameworks */, - D2AEFAF71E906488A636BE892003BE49 /* Headers */, + 0BE4AA1CFB0BFCC908FBF0366C02A73B /* Headers */, + 4723685B13526BF5C2E12DE28C2F334F /* Sources */, + 112619710F78B1BA140D6AC8F22DCB56 /* Frameworks */, + 2E9AA85742E9AEED9BC015B266EEA3C9 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = secp256k1.swift; - productName = secp256k1.swift; - productReference = A2377C391F4275A135AFDEE12B2B3FF4 /* secp256k1.framework */; + name = CryptoSwift; + productName = CryptoSwift; + productReference = 80633CB5B67352EB90A228FB07368B9F /* CryptoSwift.framework */; productType = "com.apple.product-type.framework"; }; - 7E65A8D2F3AB83962DC3362AFE05EE9F /* Web3 */ = { + 52CE5DE1EBDEBCE9033633D21B6611A9 /* Pods-Web3_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 4BE14DB4BE8CBAAF5C1EA01F6455F421 /* Build configuration list for PBXNativeTarget "Web3" */; + buildConfigurationList = EE0811EB20AEEC988A47EABB1D4FC8B0 /* Build configuration list for PBXNativeTarget "Pods-Web3_Tests" */; buildPhases = ( - 2C14B024EBE05A3196F464293D9FCC8B /* Sources */, - 718CDC717B873200DB9180BA9800A650 /* Frameworks */, - 1E9A728ED81F99A85DCAB67C6A687810 /* Headers */, + D6813C8039C765585522E5CF6CC605E9 /* Headers */, + 756DA772D22BA0F6B33267B2BEE59149 /* Sources */, + C0EE35B1D04A0FD8E786CE252CA0D2DF /* Frameworks */, + 3A1137AE4F4F407C2B6022AD29BBA6B9 /* Resources */, ); buildRules = ( ); dependencies = ( - 12D2D743F778C6FAB1EFC1455739DB21 /* PBXTargetDependency */, - 5041F742123734B709435B71144AA5D7 /* PBXTargetDependency */, - 62492756CCFFD9C4152F3429686F59CB /* PBXTargetDependency */, - 1865E2F2C0F7261992889DD0A668B408 /* PBXTargetDependency */, - 5ADB895C6E55D161BE6DB942B5A72D0F /* PBXTargetDependency */, + 8D27195E7A3E41EC0E2C4DC149B6777A /* PBXTargetDependency */, + 52E62824CEC50F8FE1A5C56F5374CCF0 /* PBXTargetDependency */, + 675D07CA7576F40F13B0B405324F38E6 /* PBXTargetDependency */, + 7211F1449024CB62342FB64A976F5C99 /* PBXTargetDependency */, + 02998DB44AA93FC21E22763142D1A133 /* PBXTargetDependency */, + 2DDA549A0A1852947DF1DD2C5F0BD0E2 /* PBXTargetDependency */, + 2C0D0C00B9474BA5089B94A19F9840AB /* PBXTargetDependency */, ); - name = Web3; - productName = Web3; - productReference = 5B008028988883CE43A9DBD66D30BC0C /* Web3.framework */; + name = "Pods-Web3_Tests"; + productName = "Pods-Web3_Tests"; + productReference = A59A42DDF506E1C48202E99AE6CC4860 /* Pods_Web3_Tests.framework */; productType = "com.apple.product-type.framework"; }; - C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */ = { + 674748A869E81875D7F4B64F80D09F16 /* BigInt */ = { isa = PBXNativeTarget; - buildConfigurationList = 807E9584CBDCD2E1F4605B22E043D445 /* Build configuration list for PBXNativeTarget "BigInt" */; + buildConfigurationList = 99B2ACFC6379488410567F6184C09A27 /* Build configuration list for PBXNativeTarget "BigInt" */; buildPhases = ( - 2315C61FC7596A2E6552E704F9D649FA /* Sources */, - 752B4ED0415C87837D344CBC97CC0B3B /* Frameworks */, - 4B6DDD0A2774AD5B4BDF8C4E9FD25CC5 /* Headers */, + 3689E26F222BA8B7576F40753A77B2E3 /* Headers */, + 30D04C804979BCBD1FE9118265EB0A75 /* Sources */, + 2019D8912E9793859766B93D233FABFD /* Frameworks */, + C9B16633D4F6F329EF1E7EF498E3C94E /* Resources */, ); buildRules = ( ); dependencies = ( - 46094E3A23379D00F07D19C84E234E1C /* PBXTargetDependency */, ); name = BigInt; productName = BigInt; - productReference = F20634155B8B5C82D5463D4C321BF71D /* BigInt.framework */; - productType = "com.apple.product-type.framework"; - }; - DD20CE7B137F48FDAAD9C5F5F4903567 /* Pods-Web3_Tests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3B90376964D70214A4C790C44DD02719 /* Build configuration list for PBXNativeTarget "Pods-Web3_Tests" */; - buildPhases = ( - 36B9F8782B9B832AF912419F8D9D15E2 /* Sources */, - EF91C46BB07985A9960D9F401B75356B /* Frameworks */, - DDD6091973F9D0B25B6763195EF34D5D /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - A23F5DE9174AAFF668A770C5C18F32E5 /* PBXTargetDependency */, - 92F2C4D443A708D613B1FF65FA603084 /* PBXTargetDependency */, - DAC5B67E615773F158A3BCD6CB507C83 /* PBXTargetDependency */, - 317CBB4CFBF7B1E64ECC40B63B916302 /* PBXTargetDependency */, - 2D58F1367E9F4E4FCABB209D433F56BF /* PBXTargetDependency */, - 7C65615E4AB00F8726616F0510F556D0 /* PBXTargetDependency */, - C041ECB15C8BC322E9484D61AA2392B1 /* PBXTargetDependency */, - 08EFEADF84A58AF0EFD6B2BF996B3E56 /* PBXTargetDependency */, - ); - name = "Pods-Web3_Tests"; - productName = "Pods-Web3_Tests"; - productReference = 516C5CB6872ECC548C62F85C9156AF96 /* Pods_Web3_Tests.framework */; + productReference = 31500F9CFF1D5B27872E829095EAAD51 /* BigInt.framework */; productType = "com.apple.product-type.framework"; }; - DD7C8BF89FE8053D0A2A2D88BB49CF07 /* Nimble */ = { + F554EA343D656E7FB0C1ACC045EB2666 /* Nimble */ = { isa = PBXNativeTarget; - buildConfigurationList = 439502BDB29394EE0D69336E69C8494C /* Build configuration list for PBXNativeTarget "Nimble" */; + buildConfigurationList = E3A98634DB5DA9D006BDFE48B5C34CB5 /* Build configuration list for PBXNativeTarget "Nimble" */; buildPhases = ( - 3B8E072FBCB923980AC89BAC33C449B9 /* Sources */, - 819A9B65073BE3B5599196C0A3B27EBC /* Frameworks */, - 85497845823171A47E23A59621A44463 /* Headers */, + F684E10CDA60BAC918A92251A0A1968A /* Headers */, + 843204FEA6D0A77E8262CB3DE7F86658 /* Sources */, + F9F8CFCD3C9798C561B7623608D3C821 /* Frameworks */, + AD1799A208BE417CCE05899E167D813E /* Resources */, ); buildRules = ( ); @@ -2019,497 +1935,537 @@ ); name = Nimble; productName = Nimble; - productReference = 82F7A8E586A75054A312D575A07CD70F /* Nimble.framework */; + productReference = 22A5CA07622D0C1E300D80BF58508B8F /* Nimble.framework */; productType = "com.apple.product-type.framework"; }; - E89C25AD23BD4B744AACAD59AE929981 /* PromiseKit */ = { + F7E62F39F84D3A2AD069F899B886CABE /* secp256k1.swift */ = { isa = PBXNativeTarget; - buildConfigurationList = F2138C1B2C70F69C733D8F2C72EC3958 /* Build configuration list for PBXNativeTarget "PromiseKit" */; + buildConfigurationList = D8DB944A4CD0501E3A9FB41C2B556B1F /* Build configuration list for PBXNativeTarget "secp256k1.swift" */; buildPhases = ( - 6823520FAC807D7D74DE6C90DB1BCDB7 /* Sources */, - B077108FABB22152D6BFD715A3F993CB /* Frameworks */, - 74FBE4D09324617DBB92C41580931E2A /* Headers */, + A04D9AC9E174AA18044242D4A68118E5 /* Headers */, + 8F11DF0950088E11B29CAD2372201620 /* Sources */, + B758E9590E572E80484536BFBAD490EB /* Frameworks */, + 43E83B1D028318DD937A4027D893CC31 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = PromiseKit; - productName = PromiseKit; - productReference = 7F8C8E3F5393DE36A7A67E40AD91F81A /* PromiseKit.framework */; + name = secp256k1.swift; + productName = secp256k1.swift; + productReference = DA431BD1EEBE3A60A0D7CAFD98C64305 /* secp256k1.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0930; LastUpgradeCheck = 0930; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 0D25E68C4DCD174873E7D4EEF6DFFACE /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 7543DB7009AA6E0245749DF93DBEC5E0 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */, - 2B028F713360D9B13ED4B59673121C55 /* CryptoSwift */, - DD7C8BF89FE8053D0A2A2D88BB49CF07 /* Nimble */, - DD20CE7B137F48FDAAD9C5F5F4903567 /* Pods-Web3_Tests */, - E89C25AD23BD4B744AACAD59AE929981 /* PromiseKit */, - 2346530DE98A17EB1E093470E3E9EF72 /* Quick */, - 4ABFE84ABAAAFE421C48732151CF85E8 /* secp256k1.swift */, - 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */, - 7E65A8D2F3AB83962DC3362AFE05EE9F /* Web3 */, + 674748A869E81875D7F4B64F80D09F16 /* BigInt */, + 4199AFA0D6B764FC01BD5903BE7D1CAF /* CryptoSwift */, + F554EA343D656E7FB0C1ACC045EB2666 /* Nimble */, + 52CE5DE1EBDEBCE9033633D21B6611A9 /* Pods-Web3_Tests */, + 0EC2A6F540408AEA22C3E201D4573BFF /* PromiseKit */, + 227BE1DA11E696352E2D8F3136FE7A66 /* Quick */, + F7E62F39F84D3A2AD069F899B886CABE /* secp256k1.swift */, + 2E92D8B1D3E335F668F432DEFD5446D6 /* Web3 */, ); }; /* End PBXProject section */ -/* Begin PBXSourcesBuildPhase section */ - 1C57540B71BB9645575DC6DE51433B15 /* Sources */ = { - isa = PBXSourcesBuildPhase; +/* Begin PBXResourcesBuildPhase section */ + 2E9AA85742E9AEED9BC015B266EEA3C9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3A1137AE4F4F407C2B6022AD29BBA6B9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 43E83B1D028318DD937A4027D893CC31 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 77AA1B9AC3511DA94E1B3FC99EB05469 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A74BC522379946ACB999A98DC8641BA3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AD1799A208BE417CCE05899E167D813E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C9B16633D4F6F329EF1E7EF498E3C94E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4B99F130ADDEC351243E49166A07ED5 /* Resources */ = { + isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 04E98ED18372766BDEB04F99EB585323 /* lax_der_parsing.c in Sources */, - 92F13FB701DC782CB8797D80CD7933A9 /* lax_der_privatekey_parsing.c in Sources */, - F67E666FE96562AAAB1DDA4DDF2BA7D8 /* secp256k1.c in Sources */, - 08D73A1F94C4C63F164EDB3D0603A9DB /* secp256k1.swift-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2315C61FC7596A2E6552E704F9D649FA /* Sources */ = { +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 30D04C804979BCBD1FE9118265EB0A75 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 17F8E260E7B7A42FFCA1E76A67DBAF35 /* Addition.swift in Sources */, - FFB174C546B4030441F46BB3E8D76318 /* BigInt-dummy.m in Sources */, - 797920E244D191E2FC53D819FDC3963B /* BigInt.swift in Sources */, - 462E11A980823607DB4D49AAFD2C38BF /* BigUInt.swift in Sources */, - B860CBC16C94EA0E1D3A8920567940B9 /* Bitwise Ops.swift in Sources */, - A03E794FE9037A6BDD8BF593E605B4E3 /* Codable.swift in Sources */, - 333171BA934355EACBEDB924CEAF8640 /* Comparable.swift in Sources */, - 8101EDCBF0515FE2355097B75EACF81B /* Data Conversion.swift in Sources */, - DE7CC4778BA0CFB736CAA934A41CA0A3 /* Division.swift in Sources */, - 56FAF62E27B4754D4C80D249CF932846 /* Exponentiation.swift in Sources */, - 0C9F76EAB3D5C99ED2EAD2C422D53856 /* Floating Point Conversion.swift in Sources */, - D8C0D8B8F2272C497D78E490B1F333F7 /* GCD.swift in Sources */, - 2DC344BC76550F546299454C6980DAEC /* Hashable.swift in Sources */, - ABDDF4421E3BEEA21F22577F0B3DD8D7 /* Integer Conversion.swift in Sources */, - CB13A550679E476DD65D8D0C38698838 /* Multiplication.swift in Sources */, - 58DA1DD966DC183DA9C845E12E7D672A /* Prime Test.swift in Sources */, - 13319D017D26653501E0FA331833EC3C /* Random.swift in Sources */, - 60DD3FDE6F25F9072D0578B0F064AE2E /* Shifts.swift in Sources */, - 8F175E58E49A2C412A6F9257E1F237DB /* Square Root.swift in Sources */, - E453C8E1D4964306F4018C2AF2AE441D /* Strideable.swift in Sources */, - 7BE518B7E49B3BCA8E80C23E9584402D /* String Conversion.swift in Sources */, - B8D532DB4114871A3BA722647ACADDEB /* Subtraction.swift in Sources */, - 9AFAB71D972580FF8A1C680954DDF4AB /* Words and Bits.swift in Sources */, + CAA0C9CFA8107CC2E3BED12BAAB7FB5A /* Addition.swift in Sources */, + 820D11186A64F34D5D58836835674C3A /* BigInt-dummy.m in Sources */, + 586E381CD5D78B3461E5BFE531D3673B /* BigInt.swift in Sources */, + EFCA34D5E38E394C66655EF9BB73DAC2 /* BigUInt.swift in Sources */, + 18ECF151CD8EAD1DABB7886847953EBC /* Bitwise Ops.swift in Sources */, + 92F5CAA1E197E757452819F60CCFE9DD /* Codable.swift in Sources */, + B1DAA751864400D09FC66C2550FDAC5E /* Comparable.swift in Sources */, + 753E66EEC524ED21CCEC56DE65C428FE /* Data Conversion.swift in Sources */, + 324C6C1BEE1B572BAEB1D1CCC5CDA6F0 /* Division.swift in Sources */, + E0008A8EEF5DE7C3930DEC0D4A09D01D /* Exponentiation.swift in Sources */, + E1AE9BD94915ABE6283234C369E7709B /* Floating Point Conversion.swift in Sources */, + B963C2BB407C6A94FA7BE1A6AA02B9B8 /* GCD.swift in Sources */, + 59AC26C8DBF1A5A970A38CF9EC61A10E /* Hashable.swift in Sources */, + C83D54A5AB38F44FC290473758898079 /* Integer Conversion.swift in Sources */, + 5FA737B7BA5B008041207D6D035B8F37 /* Multiplication.swift in Sources */, + A20C46FB93B2D89C9CF28281BB95C0F3 /* Prime Test.swift in Sources */, + 82DE4BA03F7FBC86FD4D4408AEC3AAD0 /* Random.swift in Sources */, + E710CB181D8609F10A163E0B9F764504 /* Shifts.swift in Sources */, + F749F2EFD65C93CC4C67266F7E60A74A /* Square Root.swift in Sources */, + F979A2F0033677399C9D7D9E2F95A691 /* Strideable.swift in Sources */, + 7FD6A1E61336904525445C50A6C054BC /* String Conversion.swift in Sources */, + A3D64D9F8469749E8BD720AACF44A0A8 /* Subtraction.swift in Sources */, + 491B89990CA4454F07754C1A8D0FF74E /* Words and Bits.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2C14B024EBE05A3196F464293D9FCC8B /* Sources */ = { + 4723685B13526BF5C2E12DE28C2F334F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 243AA7ACED27D8F2F9049D08D8055E59 /* ABI.swift in Sources */, - 6E954FF56D176015B25945FDFED66943 /* ABIConvertible.swift in Sources */, - 7C4DCE55C3833AD22B641F561F72334B /* ABIDecoder.swift in Sources */, - 0F27AA95B106D35BF65D1B63A7436E4F /* ABIEncoder.swift in Sources */, - 114E516C64D4FF4D60F9DAB1565BCCD7 /* ABIObject.swift in Sources */, - 8C5A0273350370B0F7D9FA5930BEC515 /* BigUInt+BytesConvertible.swift in Sources */, - 5B228FE499A6110B1FCED57451B998C6 /* Bytes+HexString.swift in Sources */, - E13E616DA05606C1211953A7BF36EB5B /* Bytes+SecureRandom.swift in Sources */, - E13CBD442934F033F39207FBAD277AF3 /* Bytes+TrimLeadingZeros.swift in Sources */, - 0CC9A2D905D86E2CF53A02018482D6ED /* Bytes+UInt.swift in Sources */, - A4C462590603CD42643720E6566DFE9D /* BytesConvertible.swift in Sources */, - FCF22C5BB2689204D7FF96BE32B9AEE0 /* CharacterSet+Hex.swift in Sources */, - 0253281C1508F9F07EAC56867A85B84F /* ContractPromiseExtensions.swift in Sources */, - 9FDCC963E0FBA87666BB489C37C8E988 /* Data+BytesConvertible.swift in Sources */, - A0C7831421E66FD6495C7B9E2A939BE7 /* ERC165.swift in Sources */, - 3C34F3D9658C09091A93DE3878CA48CA /* ERC20.swift in Sources */, - 8FB9EC4E9F1A81978D74338E8AB4D774 /* ERC721.swift in Sources */, - 94363B8EAFE5F672D35B60FFAA72033D /* Eth+ABI.swift in Sources */, - 505804306290152567A078C676DF877A /* Eth+Contract.swift in Sources */, - 6F72B22B8AC4DAF29DEF5CE8136AC285 /* EthereumAddress.swift in Sources */, - 94404006C5971B66FA38FA0F1E1D3279 /* EthereumBlockObject.swift in Sources */, - 8B4A0A3B31FF6A9BA12F98DFA897CC05 /* EthereumCall.swift in Sources */, - 7BFFD6AB777EBEC9B1F1C13B42A98093 /* EthereumContract.swift in Sources */, - AB5063D9EABC80ED47DAD20D89FD88A6 /* EthereumData.swift in Sources */, - F6327CF2F6CAEEC3CDDA83255D672860 /* EthereumLogObject.swift in Sources */, - CBF5BFAC6AEF655DA5BDC222E5D3AB51 /* EthereumPrivateKey.swift in Sources */, - 7F58140FA7EA6CA478CA791E4EAFD0F3 /* EthereumPublicKey.swift in Sources */, - 371777D5E7DBB76DD82E84857D054127 /* EthereumQuantity.swift in Sources */, - 55EA57D15EA673C64209D9FB45954005 /* EthereumQuantityTag.swift in Sources */, - 04DF97C460DB8B44110886A6D0A4EEBA /* EthereumSyncStatusObject.swift in Sources */, - EC2EDFEDC52A3A35399405A8FDFD76C5 /* EthereumTransaction.swift in Sources */, - EB1D3C62D39DFAE858690D563C32AE4B /* EthereumTransactionObject.swift in Sources */, - 52F219788A2D94BD2F075E3A253C19AA /* EthereumTransactionReceiptObject.swift in Sources */, - D5FC9713B392766B610C08C5EE806A29 /* EthereumValue.swift in Sources */, - 24FCD7CF566FBF5E22EA399E3D4018A3 /* EthereumValueConvertible.swift in Sources */, - 99E0A31FA4FFD6BC7E98F6F6E1AEE37C /* Exports+PromiseKit.swift in Sources */, - 3D0A48F1CD8E0DF7FE4F5DE652BFC821 /* Exports+Web3.swift in Sources */, - 45363C27E5BFFE10A5BBA9084DCD8509 /* Int+ETH.swift in Sources */, - EE3EF0A377C4C925D0F13204DA3FA0AD /* Promisable.swift in Sources */, - 13B6CCDC17A99784563BEA8166C47A3E /* RLPDecoder.swift in Sources */, - 4D7802DD5751729375C2930BB89A865C /* RLPEncoder.swift in Sources */, - A71C9771DEE203FAB942D5DC1685C6CC /* RLPItem.swift in Sources */, - 7AFE6602B06E168F6DD3E80B4DA0247B /* RLPItemConvertible.swift in Sources */, - 3707702E94EBC6277252F50F96025E33 /* RPCRequest.swift in Sources */, - 88BB0B980040C7B1F0CAA2163CD56707 /* RPCResponse.swift in Sources */, - 1680037F51D3DE1DD96C2C3BE7A4F9CD /* Secp256k1+CTXCreator.swift in Sources */, - 724A06E0F7724C4467DC4EDD48966AA4 /* SolidityEvent.swift in Sources */, - 1F61430528AA536BB6F44C307C1A1529 /* SolidityFunction.swift in Sources */, - F00203C5845E6BC5463239946D2B6A03 /* SolidityInvocation.swift in Sources */, - 68C18E932DCA092B04B9155698485C37 /* SolidityTuple.swift in Sources */, - 506C69C8C61FB1011848599056E9F83C /* SolidityType+Codable.swift in Sources */, - F3F88F899C3A54D3F98FB90922E9102D /* SolidityType.swift in Sources */, - 8F47F30E5D666C7051D8EF4E7B567817 /* SolidityWrappedValue.swift in Sources */, - 97A61285999390366BF8DEE6C4DCD683 /* String+BytesConvertible.swift in Sources */, - F7C9634BA4D9D23A9CD29CB964066C68 /* String+Conversion.swift in Sources */, - C3BB35956F079C15777E64067A9A956E /* String+HexBytes.swift in Sources */, - ACA493CDE02DE65191E27B082C601BEB /* Types+EthereumValueConvertible.swift in Sources */, - 4DEFDCB9C261F44620FDF52AEF53046E /* Types+RLPItemConvertible.swift in Sources */, - D598F1F631E0D57F196CFECEEB586AF2 /* UInt+BytesRepresentable.swift in Sources */, - 8D9A54F21A2B53BC38C6DFEA2B6D7C50 /* UnsignedInteger+BytesConvertible.swift in Sources */, - D20890B4CAAA4F70B332A5D51E7936A4 /* UnsignedInteger+Shifting.swift in Sources */, - 77AE9410F69A57C8838A17DC3BBD37EA /* Values+GeneralHashable.swift in Sources */, - F7BC9862AA63525E4A429E8C79CCADF1 /* Web3+HTTPInitializer.swift in Sources */, - 3F9050963BE24ECE414A22382C932698 /* Web3+PromiseKit.swift in Sources */, - 2423FBA92BF66D18BE9352FFC7E48C70 /* Web3-dummy.m in Sources */, - C6B670E2C8F64F2781EF060754BD6222 /* Web3.swift in Sources */, - 95573FCAAEB7396E794DCB108C906786 /* Web3HttpProvider.swift in Sources */, - 95B18B0AD9DB30F5D60518FB5BA49A10 /* Web3Provider.swift in Sources */, + 59AB425E25DF6E7F8AF78D7B8CA7347D /* AEAD.swift in Sources */, + 91C3469261619928F9CA63F2EC81FD24 /* AEADChaCha20Poly1305.swift in Sources */, + 319BDB83472237EEA8562ECB79749D30 /* AES+Foundation.swift in Sources */, + F819EC6EA7D2DA55E19AF50DBB862F0A /* AES.Cryptors.swift in Sources */, + 9001E9E62B78B0F529DE51B4C8690B1A /* AES.swift in Sources */, + 8B6BF3261CD6188D9D508F8DE26BF471 /* Array+Extension.swift in Sources */, + A8609EBDD85CED0BBE7856046E408497 /* Array+Foundation.swift in Sources */, + 3324E2BB0EFF13F8A495A48C92AAD731 /* Authenticator.swift in Sources */, + 77EE3C9CB05F3195BED530C9FB599481 /* BatchedCollection.swift in Sources */, + A1D96A82A8711832664F7303AEFD4359 /* Bit.swift in Sources */, + FE89145E028F97514845BBBCDFCF05ED /* BlockCipher.swift in Sources */, + C44A421B69CA2AE5D0C42B299CFB04FE /* BlockDecryptor.swift in Sources */, + 0C49EAE41B7EAE212C843A7BB138B7A6 /* BlockEncryptor.swift in Sources */, + 970AB0DCDC59EA0530415233ABDB6E75 /* BlockMode.swift in Sources */, + C6F7946D47A397A47941EF7C09B27A26 /* BlockModeOptions.swift in Sources */, + 7AF9349379C8CACA092674BB7714F413 /* Blowfish+Foundation.swift in Sources */, + 473BD05319983C8B4DE2DD157614FECC /* Blowfish.swift in Sources */, + 3431F5E33F78AB7C0A1565D25671E594 /* CBC.swift in Sources */, + D149EDAC8F492A125F09C5F11B5171B4 /* CBCMAC.swift in Sources */, + 2AECC9858F9621CCAF03A7F31CAF5F68 /* CCM.swift in Sources */, + 699E4CCA8430D921830ED3BBFE9E8EEC /* CFB.swift in Sources */, + 466A25D2EB90E4C77C3750BAC6B2F71A /* ChaCha20+Foundation.swift in Sources */, + B66B9C1E24E72F89FE3E330BEC80A1FA /* ChaCha20.swift in Sources */, + 5FAECF8DDA78E394F93A941B6878234C /* Checksum.swift in Sources */, + 30819A318CA6DF57C7B01294873F9731 /* Cipher.swift in Sources */, + 11E13FE8DC4420AF5942736283AA3913 /* CipherModeWorker.swift in Sources */, + 8EA18644ABC296D69E4F5D9AFFAB43C0 /* CMAC.swift in Sources */, + 8F33DAB50F7D5A01F0F90248CBA942BE /* Collection+Extension.swift in Sources */, + 7F81290E4FCD14135D45DD2277FF7230 /* CompactMap.swift in Sources */, + 577364D94A9C1915DE6CDB9F280CF578 /* Cryptor.swift in Sources */, + 91227FC8663612EAA927C5E4490B2961 /* Cryptors.swift in Sources */, + BBDC438AA87C72F2B4D77CD54FAF4607 /* CryptoSwift-dummy.m in Sources */, + B7D907F02C3FC408DE7FA69671D82BB9 /* CTR.swift in Sources */, + E933B6A54C7C36235FD06CE312641A95 /* Data+Extension.swift in Sources */, + A7253CA8AD620F9A03BFBFCA9A43D5DE /* Digest.swift in Sources */, + 8FCDD99ED8F64891CFE6C472C1FB641A /* DigestType.swift in Sources */, + 03541CD6AD5CC1E500AFDD4A6FD5E12B /* ECB.swift in Sources */, + 69061AA3DCE50E42DBD8B85D7F9E5C4B /* GCM.swift in Sources */, + C0CCD572ED34493C49C1F5F82E775D12 /* Generics.swift in Sources */, + 7E0FB14FCEC8C1438CAD274DD6E785E1 /* HKDF.swift in Sources */, + 9A591561CF28EE328D0A50B30EDC97C6 /* HMAC+Foundation.swift in Sources */, + 6CEEAE540FC9EC080A2E1120610441FD /* HMAC.swift in Sources */, + 576D8F6A41A839FD5FCB1A0E582A1F5E /* Int+Extension.swift in Sources */, + 6BD7F04AC8E15AC8973BEAECAC872A2E /* MD5.swift in Sources */, + 0AD5DFDEF40D71D803951290627C3118 /* NoPadding.swift in Sources */, + 9369F7B56B997D7CB6D5451AFAA0C4F4 /* OFB.swift in Sources */, + 4EC9CCF8F1D0BE6A3CC77A85B118F77C /* Operators.swift in Sources */, + F2D92B4B4E2547312AEA7CFC4681E4D6 /* Padding.swift in Sources */, + 00A47BED4EE4FFD5F4F116C30BCE6959 /* PBKDF1.swift in Sources */, + CDE8A73C13E5926425F981C6C44BE256 /* PBKDF2.swift in Sources */, + 8BFF04442A40B87380A8F7A3735869D1 /* PCBC.swift in Sources */, + 7579DFB18C9375168EBFA3DF97CCA158 /* PKCS5.swift in Sources */, + D3E9072710D911A06B09CC0200689C0C /* PKCS7.swift in Sources */, + F0872C443D5A26B2372FF3811D567080 /* PKCS7Padding.swift in Sources */, + 107AD33415A0C4C80D49FC753A9824C4 /* Poly1305.swift in Sources */, + A9BFE60E348303E69CA8E16BDC6CF839 /* Rabbit+Foundation.swift in Sources */, + 9C5371C8EABA2C61D0B420980985B02F /* Rabbit.swift in Sources */, + 779FBCFE2D103B14B40B8DF6CB4CC781 /* RandomBytesSequence.swift in Sources */, + 1C9FC321589FE864861C2B21A509C67B /* Scrypt.swift in Sources */, + 735886F64401AC98E17FBB936D6DD21C /* SecureBytes.swift in Sources */, + D0AD2F40B7AD04EB9B7841631009FC75 /* SHA1.swift in Sources */, + 70C9DA49355CD208829199C4DD398BFE /* SHA2.swift in Sources */, + 06771458BE34E82CA8BFB33CE1AFC994 /* SHA3.swift in Sources */, + ACC66FF9B02440C92389075D808DF780 /* StreamDecryptor.swift in Sources */, + A268EDF51C73BE404B028961BC0920B5 /* StreamEncryptor.swift in Sources */, + 7607162B63CD11A95BD7596E785C11E6 /* String+Extension.swift in Sources */, + A7A92B2F2D0C5B70A627AB08BC3FC35C /* String+FoundationExtension.swift in Sources */, + 77A37AFFA15F14849BE2E781185E5EAA /* UInt128.swift in Sources */, + 41E6B3C3D69E1165FADA2B616D793A9B /* UInt16+Extension.swift in Sources */, + D6DCFAA7424401BFB0AE68CDF1F6E79A /* UInt32+Extension.swift in Sources */, + 923604A515D5D85BC6A082BAA4B69CF7 /* UInt64+Extension.swift in Sources */, + 0EA7A0B2510FC4E7B293A85C52D1FD2F /* UInt8+Extension.swift in Sources */, + 90DE65DB13EDB7D575A1F8056EC04940 /* Updatable.swift in Sources */, + 625B5F58E9EA766121AF719A182C08D1 /* Utils+Foundation.swift in Sources */, + 4E0984F7370F4AAE787D814F5A9091E9 /* Utils.swift in Sources */, + E39FAF1E8808CC9194C1212DA8E9485C /* ZeroPadding.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 36B9F8782B9B832AF912419F8D9D15E2 /* Sources */ = { + 511BE23278E8D20451DBA03C70890433 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDFF3CA48706D2E82695BA1407D3BAD2 /* Pods-Web3_Tests-dummy.m in Sources */, + C19B5530CFC0A6DF7287283C7FF9CB44 /* Behavior.swift in Sources */, + AD901898CC40587FD9ED284A8C4D02C0 /* Callsite.swift in Sources */, + A92A3069D6F07A4700939C97F0D6E69B /* Closures.swift in Sources */, + C5646519088CEF695E4855CCE41EDF71 /* Configuration.swift in Sources */, + 4FDBFD7A3CDDEBD8296AFC32B48DF344 /* DSL.swift in Sources */, + 4CAAFB5348A8C11160CF1A47D4A56F4D /* ErrorUtility.swift in Sources */, + 249BFCDB0E58636B5E2FACC58867AD75 /* Example.swift in Sources */, + D67D4310606DB5BB033349F5DE5A556D /* ExampleGroup.swift in Sources */, + 28ABE8809674B552C4FF7D1E7B8C02E2 /* ExampleHooks.swift in Sources */, + 257AED3AFAD2ED08C64F2F4447F19D6B /* ExampleMetadata.swift in Sources */, + B08E8D70AAC3F3819C2E40DE59EE3211 /* Filter.swift in Sources */, + ED2A126C4E4D7A2E69F3032B5BB82290 /* HooksPhase.swift in Sources */, + 80BDDBD289C233EF4A55F3A397C2D024 /* NSBundle+CurrentTestBundle.swift in Sources */, + 62BD13E6DB1C15178F0ABC3EDB234B69 /* QCKDSL.m in Sources */, + 16BEDD5279B4C6BDFFEC244180BC630E /* Quick-dummy.m in Sources */, + 6DEC06D2DC1640D739C561399CB4778D /* QuickConfiguration.m in Sources */, + 933F3614269E14C4D8F1259F4BEBF58D /* QuickSelectedTestSuiteBuilder.swift in Sources */, + D9BEEF4AF5581E19B2E4E7DC53847019 /* QuickSpec.m in Sources */, + 1B058BB187DFD43F675B1DFA87AEC9B3 /* QuickSpecBase.m in Sources */, + 18A4DF46EDF5176D4FDE84EBBC38CDEB /* QuickTestSuite.swift in Sources */, + EF3E17C5EBA2E07047B6D3B671C9E6A9 /* String+C99ExtendedIdentifier.swift in Sources */, + 2C9BC6E2774E994D80565F564F77065B /* SuiteHooks.swift in Sources */, + B715FEC7D9D7EBC347840A6C6D487E9C /* URL+FileName.swift in Sources */, + 2E49724E990D51DE863EE748D93CFC33 /* World+DSL.swift in Sources */, + BA03452E0418D123DB6370101E158A0F /* World.swift in Sources */, + D35AB040EB55702A8D91FE73E1323A8F /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3B8E072FBCB923980AC89BAC33C449B9 /* Sources */ = { + 756DA772D22BA0F6B33267B2BEE59149 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F9649DD59BAEE88C6864EEFE73ECA88C /* AdapterProtocols.swift in Sources */, - DF026F6F406A4FB6CEA63B0A4B9E27DD /* AllPass.swift in Sources */, - 32B38992751B96F21324BFC9923BFCBD /* AssertionDispatcher.swift in Sources */, - 73BC5AC2ECDB8722E085F14B53E0D24E /* AssertionRecorder.swift in Sources */, - B2C151B20635A480E1937E3D2B509BB4 /* Async.swift in Sources */, - EAAA05EBBC34225C0DB45797712E24A1 /* AsyncMatcherWrapper.swift in Sources */, - 7E0C9AE6468A5DF91F0F4C7A387D725C /* BeAKindOf.swift in Sources */, - C1D862177DC2999FAC710AC25F253BD0 /* BeAnInstanceOf.swift in Sources */, - BF3B7218901760A6226C7F6346BEF454 /* BeCloseTo.swift in Sources */, - 58C0125D796A97541FDE3414001D8A92 /* BeEmpty.swift in Sources */, - CCDAF11E7AF29E720C587B038145F622 /* BeginWith.swift in Sources */, - AF1174085D9BC5D50FCE0480E9C2BE94 /* BeGreaterThan.swift in Sources */, - 58D964317DFBB10F54A273CB12843017 /* BeGreaterThanOrEqualTo.swift in Sources */, - F4BD249C60F21F5E0F7C1FAC8A5BC2AF /* BeIdenticalTo.swift in Sources */, - B102ABE4E54B71B3D2C2118E2782FAB9 /* BeLessThan.swift in Sources */, - 75538A8B20C7A20AF3D54BBF35D56FFE /* BeLessThanOrEqual.swift in Sources */, - 1E1CE28FFCCD7499620B47C910E9B9E9 /* BeLogical.swift in Sources */, - 75ABB48E3C30C2D736C3D05D6FD566A8 /* BeNil.swift in Sources */, - 3C66D2692E811DAE57A244A67E7AC555 /* BeVoid.swift in Sources */, - A74537420FF0CEDC6B9E82E1DC4C2B15 /* Contain.swift in Sources */, - 25D1805055756CAA69A167CA03B2465C /* ContainElementSatisfying.swift in Sources */, - A272932A4DF9AC2D3B0A21AC70606F6D /* CwlBadInstructionException.swift in Sources */, - C2467221FCD579800B9CD8FBBDB10B4D /* CwlCatchBadInstruction.swift in Sources */, - 7B5222991D1C53DF737242CA6C90012C /* CwlCatchException.m in Sources */, - 42EAAE8CFB95F2352FCE036F263263E1 /* CwlCatchException.swift in Sources */, - 41C783192F7ECD485C8C6384D30CBF11 /* CwlDarwinDefinitions.swift in Sources */, - 5F9AFDECC14365CD10F3D83D50020E32 /* CwlMachBadInstructionHandler.m in Sources */, - ADEE95A3A188BE3095990E20766BCCC8 /* DSL+Wait.swift in Sources */, - 8B55BD430033027AD5FF22D630DD9F62 /* DSL.m in Sources */, - 1A3E19B9F5EEB773C3BB61CA42F8BF62 /* DSL.swift in Sources */, - 3D1A89FDD6B579BAA92AD398E5C019F9 /* EndWith.swift in Sources */, - C8320A6164C870ADDB8A855ADEBBBDC9 /* Equal.swift in Sources */, - BC7B9761322C74FA27969BD55833BA47 /* Errors.swift in Sources */, - 65985C142EE8A74E6E56D5E30A39C79C /* Expectation.swift in Sources */, - 3E04D23B2995705A6106D41F3E3E4E33 /* ExpectationMessage.swift in Sources */, - 4FABBF5CA8F735F48035BE4144613CB7 /* Expression.swift in Sources */, - 17C8EE7DF3F57C8F99EAF63C6E61EA99 /* FailureMessage.swift in Sources */, - 62D26CE7BA3AEDB4E5E87218FDCBBA90 /* Functional.swift in Sources */, - 988EED125395950177DC14AF9BC87D8D /* HaveCount.swift in Sources */, - D9E62C41794D0B5D2CD68CA92C4BA836 /* mach_excServer.c in Sources */, - F28003B228B82B7E1497D4F41F55A31E /* Match.swift in Sources */, - C06FA100C1BBEE34B863BCB8A65359C1 /* MatcherFunc.swift in Sources */, - 6BB0EBEB4730B94AC07458E398D142C8 /* MatcherProtocols.swift in Sources */, - 45F183320C688F9978649F30ABE21D09 /* MatchError.swift in Sources */, - 4CDACD8A5A6CFB688838AA988E7D1E43 /* Nimble-dummy.m in Sources */, - 54CC2049C937561A469575AF9E6A6FE9 /* NimbleEnvironment.swift in Sources */, - CF55697859D633C852C3586384647EB6 /* NimbleXCTestHandler.swift in Sources */, - 6CB4890B9BF5F846E980634AFE83917D /* NMBExceptionCapture.m in Sources */, - 68FD03C72D719117929696B62038B3D7 /* NMBExpectation.swift in Sources */, - A7C13C62E4116CA964A3E82179092AD5 /* NMBObjCMatcher.swift in Sources */, - AE4DA49ECD693BF384CD824DF02D7C6E /* NMBStringify.m in Sources */, - 31C39ED8CB1C9317F1F2840FC919662D /* PostNotification.swift in Sources */, - EF8548E0C37E8888D9DDC11ED89D3568 /* Predicate.swift in Sources */, - EAE2AAE5EB826B38978692984BB22FDD /* RaisesException.swift in Sources */, - EB3A73071ABA60E77E0704649637D8BD /* SatisfyAnyOf.swift in Sources */, - F3BAA36614ABDBC0538B0DEA99CF80A0 /* SourceLocation.swift in Sources */, - 8170866E2ACE0ACFBC6D90081354EC65 /* Stringers.swift in Sources */, - 3B3A88E074630B1EBC2139F4F70F0443 /* ThrowAssertion.swift in Sources */, - 5BF274C2DEF332ED79B1CD15CFEC3498 /* ThrowError.swift in Sources */, - 29A65FF7D1752DFFF87F5DC8F55CE859 /* ToSucceed.swift in Sources */, - A61ADD214AA182EEB2AC95EA3F3D658F /* XCTestObservationCenter+Register.m in Sources */, + 65BFA4E576552C932B77171C2B728576 /* Pods-Web3_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6823520FAC807D7D74DE6C90DB1BCDB7 /* Sources */ = { + 843204FEA6D0A77E8262CB3DE7F86658 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3B937F19F2C57B12359CAB9C0A56AB20 /* after.m in Sources */, - 7E61B9516A328D54979FEF08F9AA67A6 /* after.swift in Sources */, - 29A11960ECF2E4B6BDC8119808FE5C2F /* AnyPromise.m in Sources */, - C5F5ACBDC7195FBB5A70D5F7F7DC96DE /* AnyPromise.swift in Sources */, - C85ADF19B2F6364B3A6EA9965066FD08 /* Box.swift in Sources */, - F7C2C74A9016B95307F03310FBFE6082 /* Catchable.swift in Sources */, - 33B64AC4CC932C510E37B67AC1920298 /* Configuration.swift in Sources */, - FAA0DD2CC8C6EF0BF31893201B3BB661 /* CustomStringConvertible.swift in Sources */, - 546444F7AD490A76C27A5FFB9D44FD99 /* Deprecations.swift in Sources */, - 0A1D3BEF0EB59CBEA42373C6CC8769ED /* dispatch_promise.m in Sources */, - D545D34669C39A7340A8B2AD1FDD6999 /* Error.swift in Sources */, - 00E61F1B0075856EA41049A26853A979 /* firstly.swift in Sources */, - DD09D61F20A5E0C5A8932916650197B7 /* Guarantee.swift in Sources */, - 9ED344948508C45BF417141AB0E35694 /* hang.m in Sources */, - A83290C18AF105A1C351ABF4CA21B93B /* hang.swift in Sources */, - AE609CB4021E839EA3FE2A925CE4C21A /* join.m in Sources */, - 2B6C91CD323DE9FBC92CEA8A45A58B63 /* Promise.swift in Sources */, - D4F71019F5FD233AC51F1A89D3A84A03 /* PromiseKit-dummy.m in Sources */, - BCE3A154DB0630D2D751051A8CBA3DEF /* race.m in Sources */, - 4DD79A9CDE3AF3ADBCF83FA7214631F0 /* race.swift in Sources */, - A6A446A14A13E08AD30BBA55577364D0 /* Resolver.swift in Sources */, - E09FD715FE5C52BFA0576678E909DA46 /* Thenable.swift in Sources */, - 3DE2A54664F9CBAB67FD38D08946D255 /* when.m in Sources */, - 03F1E38183821E4D2FFE22CD9EA0BB04 /* when.swift in Sources */, + A9F93A9C40771906414564A30333FDB9 /* AdapterProtocols.swift in Sources */, + D4FF0990DB524278EB20490C5311E19B /* AllPass.swift in Sources */, + EB062EA45D4A3859C6CEA85DAC1ED237 /* AssertionDispatcher.swift in Sources */, + 5F154C985B9DE1085A993CF9AB332BF2 /* AssertionRecorder.swift in Sources */, + D845D55E7CD75BA58F753A5AA454E422 /* Async.swift in Sources */, + 7AA21A2A7686580BEF335C12D3D7AB81 /* Await.swift in Sources */, + 8784230CBBBC7267F29611E0E1DC961E /* BeAKindOf.swift in Sources */, + 3101D8F2678E107351E1179C14FC7BF5 /* BeAnInstanceOf.swift in Sources */, + F596D6BBE5BAD012376F7CB73D44CE6B /* BeCloseTo.swift in Sources */, + D3A571F180E2A2D8A1248890490C9E36 /* BeEmpty.swift in Sources */, + 0999B997CDAC772A41A7F70CEF4A1D49 /* BeginWith.swift in Sources */, + E421CC9222B4DCD92124CA45FBA6A247 /* BeGreaterThan.swift in Sources */, + A74CEEC58BDEB1F9A37685FCA3376746 /* BeGreaterThanOrEqualTo.swift in Sources */, + 7403EBDEC592DF5F4AA19EEFED35AC5A /* BeIdenticalTo.swift in Sources */, + 89A206D51752309E13BD5C427C35A090 /* BeLessThan.swift in Sources */, + 89D30C28183DF9BFC6C940211DA889D7 /* BeLessThanOrEqual.swift in Sources */, + 8413172B4FBB9E364EC42674F13A9FE3 /* BeLogical.swift in Sources */, + DA28D44BB7C7CE1CC8F91BEE1E89C610 /* BeNil.swift in Sources */, + 94C84E6DFA71C70DF521E9D995C1505F /* BeVoid.swift in Sources */, + 328CBB53BF5236042DF4CB4B751EA062 /* Contain.swift in Sources */, + 03705FCE353B9A436320B5798C9F7A50 /* ContainElementSatisfying.swift in Sources */, + D9FEB1F14A7C841D4BE3109A0F193843 /* CwlBadInstructionException.swift in Sources */, + 1BAA60FABBC4047372D87D9B739C4463 /* CwlCatchBadInstruction.swift in Sources */, + 888B88EF8BDEBCB1702F8BB33BCBC3B2 /* CwlCatchException.m in Sources */, + 24AD9C69B1A899FA7DB0CA4D346319C5 /* CwlCatchException.swift in Sources */, + 31DCC4FEA92A71A9FE8D881B73FC7426 /* CwlDarwinDefinitions.swift in Sources */, + 35087B8F6AC4F000C85B8D672760AFAA /* CwlMachBadInstructionHandler.m in Sources */, + 7FA411A969F1D1A7AD517C3E7B739AA6 /* DSL+Wait.swift in Sources */, + 82607C525BEE07050E18F0BFCF0AEA52 /* DSL.m in Sources */, + 3537F7CBFBE04113D495FF50BC3D6672 /* DSL.swift in Sources */, + 784DC54B4603FF9B368122FCD7D1D897 /* ElementsEqual.swift in Sources */, + DE54DDE5C5B6283DE5ADBBDAA91ED589 /* EndWith.swift in Sources */, + 43E95567704203A2DE95E07947BDF70E /* Equal.swift in Sources */, + 9C3F7FC69ADC5BFCE26D5BCB0B9234C6 /* Errors.swift in Sources */, + E74C63A506330D4E6E1DC8F3894BDC22 /* Expectation.swift in Sources */, + E80F2F25B622EBC3F1CACD1AFD851A11 /* ExpectationMessage.swift in Sources */, + D0117BC10CB96CA7F32536A69C085C49 /* Expression.swift in Sources */, + 373C57D757D6DFAC77450763C6BFA620 /* FailureMessage.swift in Sources */, + F5090F52CF4E6B768D0FB5F676B61AE9 /* Functional.swift in Sources */, + DF50C201EB25B9BDDD6363698ADE639C /* HaveCount.swift in Sources */, + C5808A46FC4C07F235753E2AE4A7511A /* mach_excServer.c in Sources */, + 83E49C3B8280FEEAE4F2A81F64A549B4 /* Match.swift in Sources */, + 966FBB84C847F2BCAED02AA147A2CFAB /* MatcherFunc.swift in Sources */, + C56CE025F6E708D6F5F11DB4EA23728C /* MatcherProtocols.swift in Sources */, + 6ED749CAF781EDB557E30C69637DBC5F /* MatchError.swift in Sources */, + DE41036F5CDFE75D351DEAC46ECD9FA9 /* Nimble-dummy.m in Sources */, + A4B6197170839BA97DE105AA9D1FAD7D /* NimbleEnvironment.swift in Sources */, + D1A4A1DD617C96759F7B2AB2A6AEB0E1 /* NimbleXCTestHandler.swift in Sources */, + B836AB3DB63144FE21C715D2944AEA07 /* NMBExceptionCapture.m in Sources */, + 075311A9B30D68479A7D7404A99B2FB1 /* NMBExpectation.swift in Sources */, + 13FBB20EA4647EA46F0CB2E7254A5F50 /* NMBObjCMatcher.swift in Sources */, + 392B6696BC59BDCD988D7C5DF3E3E1C5 /* NMBStringify.m in Sources */, + 9DB1E08337AC3FF955539F4E0D1074D2 /* PostNotification.swift in Sources */, + A51570857887E8E40B39F91C35358E2D /* Predicate.swift in Sources */, + D1FD91581D2DC0A42C9134862F569C83 /* RaisesException.swift in Sources */, + 1BAEDA109B23A9F1F66A906865309037 /* SatisfyAllOf.swift in Sources */, + 6B4197D2E87B5B445A7AAF18DBA22509 /* SatisfyAnyOf.swift in Sources */, + 0F31FA39DE65E4B1F239F8D4DC999A8A /* SourceLocation.swift in Sources */, + C7B9D1E45DDA944F4C7E372D3A20999C /* Stringers.swift in Sources */, + AC26B8C4461E89CC285F1D3273A659BC /* ThrowAssertion.swift in Sources */, + E40A6E85823CE585BF269D1DF4EF5E04 /* ThrowError.swift in Sources */, + 870471424FE3C6BA3E33C949BEF04D50 /* ToSucceed.swift in Sources */, + 4E70FE29FB2BAD7E5427532B5D2FCF26 /* XCTestObservationCenter+Register.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 974B0E2AC5FF4DAB56C7FE3F40637F64 /* Sources */ = { + 8F11DF0950088E11B29CAD2372201620 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 950C4EF3BE6C0AF8E36543F5537343A8 /* Behavior.swift in Sources */, - 926A649FE11EFDCB42727D024C7F4A5D /* Callsite.swift in Sources */, - 5302D27233F51AE56663EA90E3E0A0EB /* Closures.swift in Sources */, - E7BC7ABB89C61AE49C3418B1EE253BC0 /* Configuration.swift in Sources */, - 06446DAC588EB1B2AAE8C25964300219 /* DSL.swift in Sources */, - 914800174852B084AC0537FD38754F43 /* ErrorUtility.swift in Sources */, - 5AF2D7E1F3906443852F6E35B42FD8AF /* Example.swift in Sources */, - 5DA12C3AA4519E6B6AF858A610C6EDB9 /* ExampleGroup.swift in Sources */, - 2E905B69BAD19315A6185ACAC1926046 /* ExampleHooks.swift in Sources */, - DD6C13F22810736BB0D8A768EEF7147B /* ExampleMetadata.swift in Sources */, - 1E883D3150FB4FB141B051CFF88D8EA3 /* Filter.swift in Sources */, - 5345680D8B31506B920EEF20113190F2 /* HooksPhase.swift in Sources */, - 5B7D62EDBF30129AE23E455995BE088C /* NSBundle+CurrentTestBundle.swift in Sources */, - 772640863EDE795395DC683AFFAE4745 /* NSString+C99ExtendedIdentifier.swift in Sources */, - 333CA5B99F9F1A876DBDCFF3E9453717 /* QCKDSL.m in Sources */, - 96E69D66B7EFCBA7BD6DA96D51957306 /* Quick-dummy.m in Sources */, - 2242E49BD804CA604DBF0E822B17E3D1 /* QuickConfiguration.m in Sources */, - 5EF81B7BD8578DCC6EB11268BB4AB6B6 /* QuickSelectedTestSuiteBuilder.swift in Sources */, - 68C105C22D2EC648C0C172EC185C4B3F /* QuickSpec.m in Sources */, - 2A0011E7B58CC94A9F508ECB049CBFCB /* QuickSpecBase.m in Sources */, - FF2E7C487CC376EB80771CD4CAF14009 /* QuickTestSuite.swift in Sources */, - A0E5776F5F2427C31023A2F828E80984 /* SuiteHooks.swift in Sources */, - 8FD417E437F4B8C25DD9B293D562DA76 /* URL+FileName.swift in Sources */, - 743728AF96DF0E918B274A5F1027F0EF /* World+DSL.swift in Sources */, - 49961509F4D7C807B36D89AA68CE4806 /* World.swift in Sources */, - A7D9ECFC8855A6D099F7828CAFDD0D49 /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */, + 6D6316830EB2C7B6F88E888884CFFD99 /* lax_der_parsing.c in Sources */, + 894761062C875FF692A3D7CC74083219 /* lax_der_privatekey_parsing.c in Sources */, + 061A087E76F79B776019C511A65E5C94 /* secp256k1.c in Sources */, + 3C1ADD139B737138CD0F916B324B19B9 /* secp256k1.swift-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A26C0C9502C0DEA298226CBB03E3456D /* Sources */ = { + E2D8804FBFE36360FFE1EF66DC3E5DB9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - FB15BA25D32470A8F482BCC939D13C1B /* AEAD.swift in Sources */, - E276C7EEA4D748C902348781D1149CE2 /* AEADChaCha20Poly1305.swift in Sources */, - 1746F9F515409D3E7B6F4244D065D2E4 /* AES+Foundation.swift in Sources */, - 3408892AB04D6E4CBF6A5E683FC85C16 /* AES.Cryptors.swift in Sources */, - 05B6C22B055F33FD607845F2B85F8E0E /* AES.swift in Sources */, - A840CF63E5FFFC7FAEFB3532B6064777 /* Array+Extension.swift in Sources */, - 00E21FAD1C8386B5CBF9B600D6B2FC3D /* Array+Foundation.swift in Sources */, - 85036841DB171B9EFAA51F845758479A /* Authenticator.swift in Sources */, - EF9103A06C99DB11BAC1C4502077910F /* BatchedCollection.swift in Sources */, - 436E5447A5C08BC8200FD1930EA28956 /* Bit.swift in Sources */, - 65F08BC670659832594526E23DE432C2 /* BlockCipher.swift in Sources */, - C96B9568ED2E111E7AD8391E7BBEA948 /* BlockMode.swift in Sources */, - 761CF058AE56BD2B1E9B62D4271AE743 /* BlockModeOptions.swift in Sources */, - 9541E50990AFE27D2D7AA288EC7120E3 /* BlockModeWorker.swift in Sources */, - C7DDFC087653E993861F41678EFEEF25 /* Blowfish+Foundation.swift in Sources */, - 08B35AA80FE1693A98F83B918791ED91 /* Blowfish.swift in Sources */, - 3D0F17369E717BC5194B9D183BDFB4F2 /* CBC.swift in Sources */, - 81323FC611C8B4C87B39F952196DE23E /* CFB.swift in Sources */, - 522DF6359729CAB9DEF004FF57A3B7E2 /* ChaCha20+Foundation.swift in Sources */, - F8D63D2D788CE411008A021E415232B5 /* ChaCha20.swift in Sources */, - 6C61D9C454881C29F0B602A4BFE4E48C /* Checksum.swift in Sources */, - 6554AB9AED70749B2EE63C02783D2B44 /* Cipher.swift in Sources */, - 5BF04B92FF992F3D5445F8E05F2EF793 /* CMAC.swift in Sources */, - FDB1FC2465D0902DCD2A2C9058C86441 /* Collection+Extension.swift in Sources */, - 873EAE4831E6B51A702031FE2D11045A /* CompactMap.swift in Sources */, - C17B7AA43E661F5EC719DD426EC35607 /* Cryptors.swift in Sources */, - CDE8F496596F4FB233F4953A88FD52D8 /* CryptoSwift-dummy.m in Sources */, - 26057CBACDD6988A80E850A1FC7B96F7 /* CTR.swift in Sources */, - 85773D405D2DB99F9CFFB3412044242C /* Data+Extension.swift in Sources */, - 27E8A7D487930AFF0F3875060A846F8C /* Digest.swift in Sources */, - 97E201D68B479C003F942AB7197AD996 /* DigestType.swift in Sources */, - BE8FD8E242B75053242382996E9D7CAE /* ECB.swift in Sources */, - 9BDD27DFA7C1928EB85B6A28FCAB8F45 /* Generics.swift in Sources */, - A2C3AE390E3937FA48C0BD8ACD80856C /* HKDF.swift in Sources */, - AB2073A0F05D4F631CAE7305B4EAB264 /* HMAC+Foundation.swift in Sources */, - B511B71D62ACF4C647DB87BC1C7FC584 /* HMAC.swift in Sources */, - CB46EB0C04B3A58240860D07796DBC4A /* Int+Extension.swift in Sources */, - EBC0A4571DD82E4252B6CF4DFCFCC5C8 /* MD5.swift in Sources */, - 47FD5CCEDAE13DBBC9124CC8B32ECC68 /* NoPadding.swift in Sources */, - DC506690AD3EC714AD793F2FA542BAF5 /* OFB.swift in Sources */, - A37C467C69C164534E24A1FBA1C4AD11 /* Operators.swift in Sources */, - 632E9C20DF5668593186EF3735A0F381 /* Padding.swift in Sources */, - 7EFF9C72D918D6B6AB2CF8ED7D4A1F9E /* PBKDF1.swift in Sources */, - D2C0FB61F9E866215A4B1C25854E6BEF /* PBKDF2.swift in Sources */, - FE8DEF834D8781FBD43957BD153A9C39 /* PCBC.swift in Sources */, - B9095076CB219EF2966B0BBE77BC6129 /* PKCS5.swift in Sources */, - 010D6D3F3FF64A6AD0E20DFB3890F7E5 /* PKCS7.swift in Sources */, - B1C5D236ED7686A509E3E075CA70A449 /* PKCS7Padding.swift in Sources */, - 60638CF837BD98488032C902C3D87E9C /* Poly1305.swift in Sources */, - E06E793C4FDACB56FB9BE3343750C9E1 /* Rabbit+Foundation.swift in Sources */, - A66CC82AA0F9132B244F183E0B163766 /* Rabbit.swift in Sources */, - 276FEB359012507AE15E9998DB611B43 /* RandomAccessBlockModeWorker.swift in Sources */, - BEDF3D7587433D1253FB2A996F043BAE /* RandomAccessCryptor.swift in Sources */, - 9C2431B74BA15492B088968D476D1097 /* RandomBytesSequence.swift in Sources */, - A06094DB0F0B53AFDA44AF15D2910301 /* SecureBytes.swift in Sources */, - D378BB3B326499EABDA64870F19A795B /* SHA1.swift in Sources */, - 1A184B7F035E38DB98B51E5E3316C278 /* SHA2.swift in Sources */, - 7EE506E86B102CB8AFB03C0CF62A0E9D /* SHA3.swift in Sources */, - 5A9BF015188AC68A14AB5ACA4A76FB28 /* String+Extension.swift in Sources */, - 838A5E35F9B9A388DB76F5559565D6C2 /* String+FoundationExtension.swift in Sources */, - E80E529556ADCFE878B3670C6274A872 /* UInt16+Extension.swift in Sources */, - AC886133BE8F08ECA23BF4974DC7037E /* UInt32+Extension.swift in Sources */, - 2F9385F6796CDB36C4CB0A320CAB99FA /* UInt64+Extension.swift in Sources */, - 57CFA9AC9D48C651A3AA07E9AE2E83F7 /* UInt8+Extension.swift in Sources */, - F051D55F9B61B1A99C0373BB34596CCE /* Updatable.swift in Sources */, - 3E9BB794F9F0CD7DC78A6A9367FE5687 /* Utils+Foundation.swift in Sources */, - A4B1CA1BECD821503F0323AC6F4DFA7E /* Utils.swift in Sources */, - 70AF7C036B4DDEC1F4AADE7ACDAFE6D3 /* ZeroPadding.swift in Sources */, + F4FFC2DA2DB7D700DEB55DBAEADCC9E0 /* after.m in Sources */, + 9A09E25EC5316A52C372285A8014E24E /* after.swift in Sources */, + 7843D280D25F7EF74802A04058E5E27F /* AnyPromise.m in Sources */, + 724CB950B5A5B1A8646C47978EF92A94 /* AnyPromise.swift in Sources */, + 9A44E8D166174158FE4967B81F1FAE8A /* Box.swift in Sources */, + CA3EC8239870A841A3F1FEBC9240D5E9 /* Catchable.swift in Sources */, + 151469A9167059995E3ADF79B4856155 /* Configuration.swift in Sources */, + F82E15AEFA59B24181FE3296F85E151C /* CustomStringConvertible.swift in Sources */, + A05304999849BC5CBDEA0D7361975D04 /* Deprecations.swift in Sources */, + D76B98A0E02A3F3DFA71A505960D8A03 /* dispatch_promise.m in Sources */, + CF5AECE9150266A7787A6BE8CE21A2CA /* Error.swift in Sources */, + A615F8B74460ACC93BB9E3617DF815BE /* firstly.swift in Sources */, + B6526B4F942E3110EB027A4E2621B0ED /* Guarantee.swift in Sources */, + 5CF8026ECE677DBE4ADBF2E0AF7DBFB6 /* hang.m in Sources */, + 1118DDFB4E4E8A16B6D0006F9FCF44A9 /* hang.swift in Sources */, + 35AF890A4803F59976F035D5AF6D004D /* join.m in Sources */, + CC2294E8F1C133D179B733160EB97B79 /* LogEvent.swift in Sources */, + CB96FF8A0BAE7192F2E3968CBBEC46F5 /* Promise.swift in Sources */, + 625BD4032B32F73D126788DC8A1FDA59 /* PromiseKit-dummy.m in Sources */, + 7CAD453E8508D12AD62A73B4BD1AAE70 /* race.m in Sources */, + AF93B6BF8F9B77FA94122C155906E95D /* race.swift in Sources */, + AE5CCFA709AE3677E58EEE95ABD96A3D /* Resolver.swift in Sources */, + 8F09A5703FB48489098BE732F7ADDA57 /* Thenable.swift in Sources */, + 0CC539462302DF37240B2E3BB202F041 /* when.m in Sources */, + 4ECFA769E073DDA9827659DDA0A6874E /* when.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E040795AACD485A39902B01BAC472321 /* Sources */ = { + E867065900EB8C91ADA2C9FA1DBB2BAF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 04056851010D25CFD03211572FEAEF64 /* Primitive Types.swift in Sources */, - B8C5F834026D0B7291E760AD5FA44226 /* RandomUInt64.swift in Sources */, - 78BEB5D0BC89A216CE64624050A7328F /* SipHash-dummy.m in Sources */, - 2B6AEC2328D5C7204F03D3A477089C5D /* SipHashable.swift in Sources */, - C13CC2A11A4EAE37A097665914030518 /* SipHasher.swift in Sources */, + 7127C33AB60EF855205CD99D6BD2D797 /* ABI.swift in Sources */, + 387ADC2E7F274FC460AB857DFB2A3C4A /* ABIConvertible.swift in Sources */, + 11923E1ECCFE3FBC7BE6A4062B25401F /* ABIDecoder.swift in Sources */, + 11BE4698DF7F5D8C44A681EE99C1A7A7 /* ABIEncoder.swift in Sources */, + 60ABA24A900A194A664D4F92D3204AE3 /* ABIObject.swift in Sources */, + 85FF7A504BB4ED7232F00CE925E568CF /* BigUInt+BytesConvertible.swift in Sources */, + BBFA22D045FA65B4C84F9C9E422F5740 /* Bytes+HexString.swift in Sources */, + 3BC15E78E295F93DB09252E4F2916783 /* Bytes+SecureRandom.swift in Sources */, + C5C97CBA1846FE33AA702E40D2C1FD39 /* Bytes+TrimLeadingZeros.swift in Sources */, + 3EE85E52B8CFBCEFAD5A18948B3CAE34 /* Bytes+UInt.swift in Sources */, + 0616EA83F3D6423032E340B26791D98A /* BytesConvertible.swift in Sources */, + 28C85D4558DBA34DE38356C110329D79 /* CharacterSet+Hex.swift in Sources */, + 95ED6E4558734BE80EECB3D462C8938B /* ContractPromiseExtensions.swift in Sources */, + DEB02EDC0121BB22581ACA8FB29CE553 /* Data+BytesConvertible.swift in Sources */, + 7C561E4A2DAFBD64E27536D259EFBBB1 /* ERC165.swift in Sources */, + B83E7ED850C2527E8BDCB6F6D2AF1905 /* ERC20.swift in Sources */, + 7510B81CFAC15BEF465B18201A245280 /* ERC721.swift in Sources */, + D0F4DCF3B5E25A413441C11FBDF379B6 /* Eth+ABI.swift in Sources */, + 839805423D82B1BF3645B32840BFCFC3 /* Eth+Contract.swift in Sources */, + B7CB8BB133AAC0AFB816CA2F1EE5A5D4 /* EthereumAddress.swift in Sources */, + 3CF6147B0D363508E910EFF0A346356D /* EthereumBlockObject.swift in Sources */, + DB8418E33DCD29AE6E17F3D47DA9B742 /* EthereumCall.swift in Sources */, + F4321AFD9BA81E0DBC597B274EE15AE3 /* EthereumContract.swift in Sources */, + 5023A8211EC3503412E4C6DFD71857A1 /* EthereumData.swift in Sources */, + A866ADBC1F2063A8CE130AD896696E48 /* EthereumLogObject.swift in Sources */, + 76A33567F95AA880D7A1665903049BA2 /* EthereumPrivateKey.swift in Sources */, + 06AB151366AB893BF30A50C3149D319E /* EthereumPublicKey.swift in Sources */, + 6C89A001254A5457C4C77F8371D0FDFE /* EthereumQuantity.swift in Sources */, + 896D45AE32BCD56E198F304B2B0C5DC2 /* EthereumQuantityTag.swift in Sources */, + 0726B8283C8FD63DA45ADC7076BD6750 /* EthereumSyncStatusObject.swift in Sources */, + 290221D267F742DD48CDEF12D2217125 /* EthereumTransaction.swift in Sources */, + 89C884DE6315A87ECFC2EB5F500714AD /* EthereumTransactionObject.swift in Sources */, + 90AB2EFFC71E839E4D1108012BB7E050 /* EthereumTransactionReceiptObject.swift in Sources */, + F69173F4328F63288F29DCA6C81902DD /* EthereumValue.swift in Sources */, + 83471471E1C19882B8D7FB603577B9F0 /* EthereumValueConvertible.swift in Sources */, + 6284D7CAB3540045FCC07B979CBAB573 /* Exports+PromiseKit.swift in Sources */, + FC06196F6BA37949A64F408086A3BDCF /* Exports+Web3.swift in Sources */, + 537CE136BE7F7FD054B10DEE1428BB95 /* Int+ETH.swift in Sources */, + 66CA362EAC6778EC31EDDEA95684FE3F /* Promisable.swift in Sources */, + 2BA401DBD028DEC0FF140312B5EA985F /* RLPDecoder.swift in Sources */, + FF9B34BD1230A982BF86C0D14A585A95 /* RLPEncoder.swift in Sources */, + F7BD5474794EC2668C030C036BF828F6 /* RLPItem.swift in Sources */, + 11DE67234D50CA0DDCB3A89F4F5826BA /* RLPItemConvertible.swift in Sources */, + B6976D4A713D15F0AC297E0004C7FA5E /* RPCRequest.swift in Sources */, + B03045C89E5E3559DC0899E1008C6B22 /* RPCResponse.swift in Sources */, + 2F421B6F2A29D9E52C71B003FD107E38 /* Secp256k1+CTXCreator.swift in Sources */, + F7D1531D2F70EB8D62BA61594E441186 /* SolidityEvent.swift in Sources */, + CAD4F90F6F9C3254203FB1D0FA389D21 /* SolidityFunction.swift in Sources */, + C38946BA0B97D4F54C5AAEF0AE0FFBA7 /* SolidityInvocation.swift in Sources */, + 216C733407E225F280CEA0F222C909C6 /* SolidityTuple.swift in Sources */, + EC1F64900B1D8A3B284F2C1A6A46FD33 /* SolidityType+Codable.swift in Sources */, + 1DFE0F90CDE2430C103826C03918FE2D /* SolidityType.swift in Sources */, + 8DCFDA8A2CA1C4A83BE0A0C23AEA8072 /* SolidityWrappedValue.swift in Sources */, + 35D0D7E64919A91D318720DD0E0EB870 /* String+BytesConvertible.swift in Sources */, + BE38D19DF4AB9012BC248DD827D26D39 /* String+Conversion.swift in Sources */, + 2BBFC4CB11C80CD45C1C0FEBB25D6C5D /* String+HexBytes.swift in Sources */, + 7EDFDE9EDC0DC8E137A33EA6E27837EB /* Types+EthereumValueConvertible.swift in Sources */, + 67FB7252B61E9CDA3643D080A707580A /* Types+RLPItemConvertible.swift in Sources */, + 73968FE6F26450FE4EDCAA9FF894C03E /* UInt+BytesRepresentable.swift in Sources */, + B2605F18CA016F04F6DF845DF23D1B1B /* UnsignedInteger+BytesConvertible.swift in Sources */, + 8E1535340D02DC8C5B7DCA1B9C259172 /* UnsignedInteger+Shifting.swift in Sources */, + 172934C0742DA067B2F7EF5C08D1286B /* Values+GeneralHashable.swift in Sources */, + 072E39940FBC8C41F08EF4FC2498D7EF /* Web3+HTTPInitializer.swift in Sources */, + 5082DE8F9D66A1C21DE6D4E2440EFB64 /* Web3+PromiseKit.swift in Sources */, + ACCFCCD5F4259EFEB2B2CD6D426572BB /* Web3-dummy.m in Sources */, + 50C062B83AFE259FF4B779D3E60271C4 /* Web3.swift in Sources */, + 3891CFC0970F4B9C10C92C0AACF53CDC /* Web3HttpProvider.swift in Sources */, + BB891BEE22E6E6E9FF35D105D677B296 /* Web3Provider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 08EFEADF84A58AF0EFD6B2BF996B3E56 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = secp256k1.swift; - target = 4ABFE84ABAAAFE421C48732151CF85E8 /* secp256k1.swift */; - targetProxy = 2A53A46C366AE464D30483EA04C9EC00 /* PBXContainerItemProxy */; - }; - 12D2D743F778C6FAB1EFC1455739DB21 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BigInt; - target = C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */; - targetProxy = CD486DAE4266A8A1BCE2D1F662A97329 /* PBXContainerItemProxy */; - }; - 1865E2F2C0F7261992889DD0A668B408 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SipHash; - target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; - targetProxy = 09173728EF6D79DB81E9B18A24E38DE5 /* PBXContainerItemProxy */; - }; - 2D58F1367E9F4E4FCABB209D433F56BF /* PBXTargetDependency */ = { + 02998DB44AA93FC21E22763142D1A133 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Quick; - target = 2346530DE98A17EB1E093470E3E9EF72 /* Quick */; - targetProxy = 8E8E0B2C168FCF1E2FDB3DFACC7EBAA2 /* PBXContainerItemProxy */; + target = 227BE1DA11E696352E2D8F3136FE7A66 /* Quick */; + targetProxy = 842270C2871A634A662503DBEFB8C6BD /* PBXContainerItemProxy */; }; - 317CBB4CFBF7B1E64ECC40B63B916302 /* PBXTargetDependency */ = { + 2C0D0C00B9474BA5089B94A19F9840AB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromiseKit; - target = E89C25AD23BD4B744AACAD59AE929981 /* PromiseKit */; - targetProxy = 37B92B85D3D20CC76D97B2653D8C812A /* PBXContainerItemProxy */; + name = secp256k1.swift; + target = F7E62F39F84D3A2AD069F899B886CABE /* secp256k1.swift */; + targetProxy = 7C1633CA3E39376970D79F338D6EB939 /* PBXContainerItemProxy */; }; - 46094E3A23379D00F07D19C84E234E1C /* PBXTargetDependency */ = { + 2DDA549A0A1852947DF1DD2C5F0BD0E2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SipHash; - target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; - targetProxy = E25FA7B325D509BF75B1A951869CADAC /* PBXContainerItemProxy */; + name = Web3; + target = 2E92D8B1D3E335F668F432DEFD5446D6 /* Web3 */; + targetProxy = 7E76FEC8312D890CCCDA242761E9545C /* PBXContainerItemProxy */; }; - 5041F742123734B709435B71144AA5D7 /* PBXTargetDependency */ = { + 52E62824CEC50F8FE1A5C56F5374CCF0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = CryptoSwift; - target = 2B028F713360D9B13ED4B59673121C55 /* CryptoSwift */; - targetProxy = F5B3E5CB9B1FE36F418AA6976D482377 /* PBXContainerItemProxy */; + target = 4199AFA0D6B764FC01BD5903BE7D1CAF /* CryptoSwift */; + targetProxy = B2D6274CD821171B4C080C508B6FABB1 /* PBXContainerItemProxy */; }; - 5ADB895C6E55D161BE6DB942B5A72D0F /* PBXTargetDependency */ = { + 5337713A0DB9F0BA38EB0C32FF674C61 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = secp256k1.swift; - target = 4ABFE84ABAAAFE421C48732151CF85E8 /* secp256k1.swift */; - targetProxy = 32CA101C1880580207A7EECBD6F8060B /* PBXContainerItemProxy */; + name = BigInt; + target = 674748A869E81875D7F4B64F80D09F16 /* BigInt */; + targetProxy = 6A0907C803B12C7B4DBA31768B7F247C /* PBXContainerItemProxy */; }; - 62492756CCFFD9C4152F3429686F59CB /* PBXTargetDependency */ = { + 5CDA8885D0758E56A554728A057860C3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromiseKit; - target = E89C25AD23BD4B744AACAD59AE929981 /* PromiseKit */; - targetProxy = EE31233B9DB6B3CFCCFA461D9DCA64A2 /* PBXContainerItemProxy */; + name = secp256k1.swift; + target = F7E62F39F84D3A2AD069F899B886CABE /* secp256k1.swift */; + targetProxy = 0716052E577FC99931F3605FA0ED639D /* PBXContainerItemProxy */; }; - 7C65615E4AB00F8726616F0510F556D0 /* PBXTargetDependency */ = { + 675D07CA7576F40F13B0B405324F38E6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SipHash; - target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; - targetProxy = 1E9253FE72D5A96264CDCFADFA3A7E27 /* PBXContainerItemProxy */; + name = Nimble; + target = F554EA343D656E7FB0C1ACC045EB2666 /* Nimble */; + targetProxy = C63416DC8E5FBE06E01B5540BEF71732 /* PBXContainerItemProxy */; }; - 92F2C4D443A708D613B1FF65FA603084 /* PBXTargetDependency */ = { + 7211F1449024CB62342FB64A976F5C99 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CryptoSwift; - target = 2B028F713360D9B13ED4B59673121C55 /* CryptoSwift */; - targetProxy = 7DF2EB69A746A314872DD2B9FF11252F /* PBXContainerItemProxy */; + name = PromiseKit; + target = 0EC2A6F540408AEA22C3E201D4573BFF /* PromiseKit */; + targetProxy = 9631A0AC8FEEC90F48AA9CC9673D1747 /* PBXContainerItemProxy */; }; - A23F5DE9174AAFF668A770C5C18F32E5 /* PBXTargetDependency */ = { + 8D27195E7A3E41EC0E2C4DC149B6777A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = BigInt; - target = C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */; - targetProxy = 0384401AD604CD9634172BBF7654D068 /* PBXContainerItemProxy */; + target = 674748A869E81875D7F4B64F80D09F16 /* BigInt */; + targetProxy = 3C7A5D403B07A7200F8DDEED29A120D8 /* PBXContainerItemProxy */; }; - C041ECB15C8BC322E9484D61AA2392B1 /* PBXTargetDependency */ = { + D54BDDD9D237A894CC7AB0AC1B3F60ED /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Web3; - target = 7E65A8D2F3AB83962DC3362AFE05EE9F /* Web3 */; - targetProxy = 724EB159F1BDBAA33AC7C1FE7951B6E7 /* PBXContainerItemProxy */; + name = PromiseKit; + target = 0EC2A6F540408AEA22C3E201D4573BFF /* PromiseKit */; + targetProxy = B70A25A83B5325A5FCF1050F8C04E76E /* PBXContainerItemProxy */; }; - DAC5B67E615773F158A3BCD6CB507C83 /* PBXTargetDependency */ = { + FA3F2E0FBFB17B33AB25486EB8B6BC2E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Nimble; - target = DD7C8BF89FE8053D0A2A2D88BB49CF07 /* Nimble */; - targetProxy = 77CBB720E7F59B48560E29F64056805C /* PBXContainerItemProxy */; + name = CryptoSwift; + target = 4199AFA0D6B764FC01BD5903BE7D1CAF /* CryptoSwift */; + targetProxy = 3C0F6462314EE1A8630F47B2D9018109 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0EFDDADFCEA2E4457E0F02332AD361E7 /* Release */ = { + 156AAC3E36BB55B081D3D5120AF15699 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AC9081BE30ABC886966A1CFBEBB358D9 /* Quick.xcconfig */; + baseConfigurationReference = 47BA56149687EBED665581CF2F220865 /* Nimble.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2520,19 +2476,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Quick/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Nimble/Nimble-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/Quick/Quick.modulemap"; - PRODUCT_MODULE_NAME = Quick; - PRODUCT_NAME = Quick; + MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; + PRODUCT_MODULE_NAME = Nimble; + PRODUCT_NAME = Nimble; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2540,9 +2495,9 @@ }; name = Release; }; - 294AE39574F8324AA3913F024E22B996 /* Debug */ = { + 46ADB71EB0C05A6B3515A51F2B2861FE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0F6330229601CA3ED998D67A49F4AEAC /* secp256k1.swift.xcconfig */; + baseConfigurationReference = 609693025FDA6F9C37B5406BE1ECCF55 /* Quick.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2553,28 +2508,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1.swift/secp256k1.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/secp256k1.swift/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Quick/Quick-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/secp256k1.swift/secp256k1.swift.modulemap"; - PRODUCT_MODULE_NAME = secp256k1; - PRODUCT_NAME = secp256k1; + MODULEMAP_FILE = "Target Support Files/Quick/Quick.modulemap"; + PRODUCT_MODULE_NAME = Quick; + PRODUCT_NAME = Quick; 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"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 29CA10F9E49CDD98ECFD045AECF7EA48 /* Release */ = { + 4FD3F50ABEB3B9D49F1FEE7FF4AAFA2D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3D55284C6B15D846AB1D686E96C1B9E6 /* Web3.xcconfig */; + baseConfigurationReference = 3589AA2CC874BCD6E4D9CCA7BAC5B6DA /* Pods-Web3_Tests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2584,29 +2541,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Web3/Web3-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Web3/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Web3/Web3.modulemap"; - PRODUCT_MODULE_NAME = Web3; - PRODUCT_NAME = Web3; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 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; + name = Debug; }; - 48DA48E525E3B7D8E140536FE5F2054E /* Release */ = { + 4FDA963DF5083E28237FEA9B682D5EB6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFCDC12AF33AEE0F5855C679C2353C6 /* Pods-Web3_Tests.release.xcconfig */; + baseConfigurationReference = A3D9596D8377C7A8A062C997DFB0F664 /* Pods-Web3_Tests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; @@ -2618,7 +2574,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Web3_Tests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -2631,7 +2587,6 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2639,9 +2594,9 @@ }; name = Release; }; - 49776C8B942D6910962B87FCC6540CC8 /* Debug */ = { + 5ACBDED0706DCCC1A356672825C6CA47 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F03E565EEFB2443E6E019D050A6840BC /* SipHash.xcconfig */; + baseConfigurationReference = C20D68BD90487EFA611C653B681393A0 /* Web3.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2652,28 +2607,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SipHash/SipHash-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SipHash/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Web3/Web3-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Web3/Web3-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/SipHash/SipHash.modulemap"; - PRODUCT_MODULE_NAME = SipHash; - PRODUCT_NAME = SipHash; + MODULEMAP_FILE = "Target Support Files/Web3/Web3.modulemap"; + PRODUCT_MODULE_NAME = Web3; + PRODUCT_NAME = Web3; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 4E77B39F9E7C4AA60095E58CB88FF6F2 /* Debug */ = { + 6008E1F9C21742963F57AEECB7AE6B2D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3D55284C6B15D846AB1D686E96C1B9E6 /* Web3.xcconfig */; + baseConfigurationReference = A58F39328C6DAF1EB1E1DD5AB79F4F1A /* secp256k1.swift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2684,28 +2639,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Web3/Web3-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Web3/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/secp256k1.swift/secp256k1.swift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/secp256k1.swift/secp256k1.swift-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/Web3/Web3.modulemap"; - PRODUCT_MODULE_NAME = Web3; - PRODUCT_NAME = Web3; + MODULEMAP_FILE = "Target Support Files/secp256k1.swift/secp256k1.swift.modulemap"; + PRODUCT_MODULE_NAME = secp256k1; + PRODUCT_NAME = secp256k1; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 53206C9497FA6C0942B32E19F7841EB7 /* Debug */ = { + 61E03D1BD34196B354B10EF7278ACFAA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7ED1E4C515EB2C9D64F5B05C0AB321BF /* PromiseKit.xcconfig */; + baseConfigurationReference = 33F25C7124B03BBBD033CA4B78924260 /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2716,18 +2671,17 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PromiseKit/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-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/PromiseKit/PromiseKit.modulemap"; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; + MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = CryptoSwift; 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"; @@ -2735,11 +2689,10 @@ }; name = Debug; }; - 56DA97D6396353C74EC85A2E632C41BC /* Debug */ = { + 7BBCC8B1C0D869615A71C010DF4AB01F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E40227E04804862184614D6C7E47792C /* Pods-Web3_Tests.debug.xcconfig */; + baseConfigurationReference = EC3F11AE52BAD5666EED731D5E375771 /* PromiseKit.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2749,30 +2702,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Web3_Tests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PromiseKit/PromiseKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + 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-Web3_Tests/Pods-Web3_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; + PRODUCT_MODULE_NAME = PromiseKit; + PRODUCT_NAME = PromiseKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 807D12AA36F863F6AB52F2AE41C01A76 /* Release */ = { + 9BA978CED31C16E9AE0691A71CB9A21C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0F6330229601CA3ED998D67A49F4AEAC /* secp256k1.swift.xcconfig */; + baseConfigurationReference = 33F25C7124B03BBBD033CA4B78924260 /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2783,14 +2734,14 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1.swift/secp256k1.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/secp256k1.swift/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-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/secp256k1.swift/secp256k1.swift.modulemap"; - PRODUCT_MODULE_NAME = secp256k1; - PRODUCT_NAME = secp256k1; + MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = CryptoSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -2802,9 +2753,9 @@ }; name = Release; }; - 86A6D91B3DBEA20C1DE2EA75441157EC /* Release */ = { + A71174C42C93A723E428E4B108E7DB86 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 37A1185BF100A2424B9C8310865B35FF /* BigInt.xcconfig */; + baseConfigurationReference = A58F39328C6DAF1EB1E1DD5AB79F4F1A /* secp256k1.swift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2815,27 +2766,25 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BigInt/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/secp256k1.swift/secp256k1.swift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/secp256k1.swift/secp256k1.swift-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/BigInt/BigInt.modulemap"; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = BigInt; + MODULEMAP_FILE = "Target Support Files/secp256k1.swift/secp256k1.swift.modulemap"; + PRODUCT_MODULE_NAME = secp256k1; + PRODUCT_NAME = secp256k1; 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; + name = Debug; }; - 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */ = { + AB4D69770D8ACE3A05E80BB3502666F6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -2867,8 +2816,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -2889,18 +2836,21 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - A31907F14A1DA57DAC314EE3F7D2C06E /* Debug */ = { + C7EABBCC706C2E43709AB31869CE12C1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 37A1185BF100A2424B9C8310865B35FF /* BigInt.xcconfig */; + baseConfigurationReference = 835F1D6786A46A70ED600D33D5EEBFA3 /* BigInt.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2912,7 +2862,7 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BigInt/Info.plist"; + INFOPLIST_FILE = "Target Support Files/BigInt/BigInt-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -2922,7 +2872,6 @@ 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"; @@ -2930,100 +2879,9 @@ }; name = Debug; }; - A89C84DE72699604D9E6A99ABD3AD1B9 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F03E565EEFB2443E6E019D050A6840BC /* SipHash.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/SipHash/SipHash-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SipHash/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/SipHash/SipHash.modulemap"; - PRODUCT_MODULE_NAME = SipHash; - PRODUCT_NAME = SipHash; - 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; - }; - B42B54097A876E8A982CBF5DAA91B1AB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - C07464AA6D9613807178DD08E150809F /* Debug */ = { + D005FBE6C8B3710FB141E6F10EDE9D3C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 96BA022E01F9E926B32E1D180BC8E71B /* CryptoSwift.xcconfig */; + baseConfigurationReference = EC3F11AE52BAD5666EED731D5E375771 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3034,28 +2892,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PromiseKit/PromiseKit-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/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = CryptoSwift; + MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; + PRODUCT_MODULE_NAME = PromiseKit; + PRODUCT_NAME = PromiseKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - C1E2716332197374B72F76FCF7329F94 /* Debug */ = { + DFB503D1C1723AE78254A159AB261B3A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2EF0453618C688C425D05DEBAD2D96F9 /* Nimble.xcconfig */; + baseConfigurationReference = 47BA56149687EBED665581CF2F220865 /* Nimble.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3067,7 +2924,7 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Nimble/Nimble-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -3077,17 +2934,16 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - CE4AD62B5C06C3AAC7FC5233B0A9F34C /* Debug */ = { + DFF4E554A6C2D3662A02518DA134FA0E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AC9081BE30ABC886966A1CFBEBB358D9 /* Quick.xcconfig */; + baseConfigurationReference = C20D68BD90487EFA611C653B681393A0 /* Web3.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3098,18 +2954,17 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Quick/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Web3/Web3-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Web3/Web3-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/Quick/Quick.modulemap"; - PRODUCT_MODULE_NAME = Quick; - PRODUCT_NAME = Quick; + MODULEMAP_FILE = "Target Support Files/Web3/Web3.modulemap"; + PRODUCT_MODULE_NAME = Web3; + PRODUCT_NAME = Web3; 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"; @@ -3117,9 +2972,9 @@ }; name = Debug; }; - D2FB0BDC89B1802D068906EDFD00F71C /* Release */ = { + EBF8AE200FEEEA7E76F422CC76AA374D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7ED1E4C515EB2C9D64F5B05C0AB321BF /* PromiseKit.xcconfig */; + baseConfigurationReference = 609693025FDA6F9C37B5406BE1ECCF55 /* Quick.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3130,62 +2985,87 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PromiseKit/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Quick/Quick-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/PromiseKit/PromiseKit.modulemap"; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; + MODULEMAP_FILE = "Target Support Files/Quick/Quick.modulemap"; + PRODUCT_MODULE_NAME = Quick; + PRODUCT_NAME = Quick; 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; + name = Debug; }; - F6C7FD1CB95173996EB13527E4F19689 /* Release */ = { + F232B5ECA11A71BFA199A229B323F454 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2EF0453618C688C425D05DEBAD2D96F9 /* Nimble.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/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/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/Nimble/Nimble.modulemap"; - PRODUCT_MODULE_NAME = Nimble; - PRODUCT_NAME = Nimble; - 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 = ""; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 4.2; + SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; - FF057F078289AC5B522F99844308D2A3 /* Release */ = { + F2C20D13E1692631E8006B3D1DD91E60 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 96BA022E01F9E926B32E1D180BC8E71B /* CryptoSwift.xcconfig */; + baseConfigurationReference = 835F1D6786A46A70ED600D33D5EEBFA3 /* BigInt.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3196,18 +3076,17 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/BigInt/BigInt-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/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = CryptoSwift; + MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; + PRODUCT_MODULE_NAME = BigInt; + PRODUCT_NAME = BigInt; 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; @@ -3219,97 +3098,88 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 147FBB7AE98A8D1D30A4B2D9025F106F /* Build configuration list for PBXNativeTarget "SipHash" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 49776C8B942D6910962B87FCC6540CC8 /* Debug */, - A89C84DE72699604D9E6A99ABD3AD1B9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 06FA395FFEAF5E28FA7208D7C6BD74D0 /* Build configuration list for PBXNativeTarget "CryptoSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */, - B42B54097A876E8A982CBF5DAA91B1AB /* Release */, + 61E03D1BD34196B354B10EF7278ACFAA /* Debug */, + 9BA978CED31C16E9AE0691A71CB9A21C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3B90376964D70214A4C790C44DD02719 /* Build configuration list for PBXNativeTarget "Pods-Web3_Tests" */ = { + 225F069ECB756B2C141BB7BD57741D9B /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 56DA97D6396353C74EC85A2E632C41BC /* Debug */, - 48DA48E525E3B7D8E140536FE5F2054E /* Release */, + D005FBE6C8B3710FB141E6F10EDE9D3C /* Debug */, + 7BBCC8B1C0D869615A71C010DF4AB01F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 439502BDB29394EE0D69336E69C8494C /* Build configuration list for PBXNativeTarget "Nimble" */ = { + 24C5F1E4AA490A2D20C85B6EF68FDE15 /* Build configuration list for PBXNativeTarget "Quick" */ = { isa = XCConfigurationList; buildConfigurations = ( - C1E2716332197374B72F76FCF7329F94 /* Debug */, - F6C7FD1CB95173996EB13527E4F19689 /* Release */, + EBF8AE200FEEEA7E76F422CC76AA374D /* Debug */, + 46ADB71EB0C05A6B3515A51F2B2861FE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4BE14DB4BE8CBAAF5C1EA01F6455F421 /* Build configuration list for PBXNativeTarget "Web3" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4E77B39F9E7C4AA60095E58CB88FF6F2 /* Debug */, - 29CA10F9E49CDD98ECFD045AECF7EA48 /* Release */, + AB4D69770D8ACE3A05E80BB3502666F6 /* Debug */, + F232B5ECA11A71BFA199A229B323F454 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 807E9584CBDCD2E1F4605B22E043D445 /* Build configuration list for PBXNativeTarget "BigInt" */ = { + 84E4CBF0D9DECCA6ABCB0B62F03648A2 /* Build configuration list for PBXNativeTarget "Web3" */ = { isa = XCConfigurationList; buildConfigurations = ( - A31907F14A1DA57DAC314EE3F7D2C06E /* Debug */, - 86A6D91B3DBEA20C1DE2EA75441157EC /* Release */, + DFF4E554A6C2D3662A02518DA134FA0E /* Debug */, + 5ACBDED0706DCCC1A356672825C6CA47 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8260D8FC7B229B6AFA0F0D4AF3048BC3 /* Build configuration list for PBXNativeTarget "secp256k1.swift" */ = { + 99B2ACFC6379488410567F6184C09A27 /* Build configuration list for PBXNativeTarget "BigInt" */ = { isa = XCConfigurationList; buildConfigurations = ( - 294AE39574F8324AA3913F024E22B996 /* Debug */, - 807D12AA36F863F6AB52F2AE41C01A76 /* Release */, + C7EABBCC706C2E43709AB31869CE12C1 /* Debug */, + F2C20D13E1692631E8006B3D1DD91E60 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BBFBBFCAF510627E82DCA0F74B5A7039 /* Build configuration list for PBXNativeTarget "Quick" */ = { + D8DB944A4CD0501E3A9FB41C2B556B1F /* Build configuration list for PBXNativeTarget "secp256k1.swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - CE4AD62B5C06C3AAC7FC5233B0A9F34C /* Debug */, - 0EFDDADFCEA2E4457E0F02332AD361E7 /* Release */, + A71174C42C93A723E428E4B108E7DB86 /* Debug */, + 6008E1F9C21742963F57AEECB7AE6B2D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D45566F83573A1648397D8CD3487606A /* Build configuration list for PBXNativeTarget "CryptoSwift" */ = { + E3A98634DB5DA9D006BDFE48B5C34CB5 /* Build configuration list for PBXNativeTarget "Nimble" */ = { isa = XCConfigurationList; buildConfigurations = ( - C07464AA6D9613807178DD08E150809F /* Debug */, - FF057F078289AC5B522F99844308D2A3 /* Release */, + DFB503D1C1723AE78254A159AB261B3A /* Debug */, + 156AAC3E36BB55B081D3D5120AF15699 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F2138C1B2C70F69C733D8F2C72EC3958 /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { + EE0811EB20AEEC988A47EABB1D4FC8B0 /* Build configuration list for PBXNativeTarget "Pods-Web3_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 53206C9497FA6C0942B32E19F7841EB7 /* Debug */, - D2FB0BDC89B1802D068906EDFD00F71C /* Release */, + 4FD3F50ABEB3B9D49F1FEE7FF4AAFA2D /* Debug */, + 4FDA963DF5083E28237FEA9B682D5EB6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Example/Pods/PromiseKit/README.md b/Example/Pods/PromiseKit/README.md index fc6b39f2..c06b464f 100644 --- a/Example/Pods/PromiseKit/README.md +++ b/Example/Pods/PromiseKit/README.md @@ -1,8 +1,6 @@ -![PromiseKit](http://promisekit.org/public/img/logo-tight.png) +![PromiseKit](../gh-pages/public/img/logo-tight.png) -![badge-pod] ![badge-languages] ![badge-pms] ![badge-platforms] [![Build Status](https://travis-ci.org/mxcl/PromiseKit.svg?branch=master)](https://travis-ci.org/mxcl/PromiseKit) - -[繁體中文](README.zh_Hant.md) (*outdated*), [简体中文](README.zh_CN.md) (*outdated*) +[![badge-pod][]][cocoapods] ![badge-languages][] ![badge-pms][] ![badge-platforms][] [![badge-travis][]][travis] --- @@ -29,15 +27,20 @@ firstly { ``` PromiseKit is a thoughtful and complete implementation of promises for any -platform with a `swiftc`, it has *excellent* Objective-C bridging and +platform that has a `swiftc`. It has *excellent* Objective-C bridging and *delightful* specializations for iOS, macOS, tvOS and watchOS. It is a top-100 pod used in many of the most popular apps in the world. [![codecov](https://codecov.io/gh/mxcl/PromiseKit/branch/master/graph/badge.svg)](https://codecov.io/gh/mxcl/PromiseKit) -# PromiseKit 6 Released +# PromiseKit 7 Alpha + +We are testing PromiseKit 7 alpha, it is Swift 5 only. It is tagged and thus +importable in all package managers. -PromiseKit 6 has been released; [read the release notes and migration guide][PMK6]. +# PromiseKit 6 + +[Release notes and migration guide][PMK6]. # Quick Start @@ -47,17 +50,44 @@ In your [Podfile]: use_frameworks! target "Change Me!" do - pod "PromiseKit", "~> 6.0" + pod "PromiseKit", "~> 6.8" end ``` -PromiseKit 6, 5 and 4 support Xcode 8.3, 9.0, 9.1, 9.2 and 9.3; Swift 3.1, -3.2, 3.3, 4.0 and 4.1 ; iOS, macOS, tvOS, watchOS, Linux and Android; CocoaPods, -Carthage and SwiftPM; ([CI Matrix](https://travis-ci.org/mxcl/PromiseKit)). +> The above gives an Xcode warning? See our [Installation Guide]. + +PromiseKit 6, 5 and 4 support Xcode 8.3, 9.x and 10.0; Swift 3.1, +3.2, 3.3, 3.4, 4.0, 4.1, 4.2, 4.3 and 5.0 (development snapshots); iOS, macOS, +tvOS, watchOS, Linux and Android; CocoaPods, Carthage and SwiftPM; +([CI Matrix](https://travis-ci.org/mxcl/PromiseKit)). + +For Carthage, SwiftPM, Accio, etc., or for instructions when using older Swifts or Xcodes, see our [Installation Guide]. We recommend +[Carthage](https://github.com/Carthage/Carthage) or +[Accio](https://github.com/JamitLabs/Accio). + +# Professionally Supported PromiseKit is Now Available + +TideLift gives software development teams a single source for purchasing +and maintaining their software, with professional grade assurances from +the experts who know it best, while seamlessly integrating with existing +tools. -For Carthage, SwiftPM, etc., or for instructions when using older Swifts or -Xcodes see our [Installation Guide](Documentation/Installation.md). Please note -that we sincerely recommend [Carthage](https://github.com/Carthage/Carthage). +[Get Professional Support for PromiseKit with TideLift](https://tidelift.com/subscription/pkg/cocoapods-promisekit?utm_source=cocoapods-promisekit&utm_medium=referral&utm_campaign=readme). + +# PromiseKit is Thousands of Hours of Work + +Hey there, I’m Max Howell. I’m a prolific producer of open source software and +probably you already use some of it (I created [`brew`]). I work full-time on +open source and it’s hard; currently *I earn less than minimum wage*. Please +help me continue my work, I appreciate it 🙏🏻 + + + + + +[Other ways to say thanks](http://mxcl.dev/#donate). + +[`brew`]: https://brew.sh # Documentation @@ -68,19 +98,17 @@ that we sincerely recommend [Carthage](https://github.com/Carthage/Carthage). * Manual * [Installation Guide](Documentation/Installation.md) * [Objective-C Guide](Documentation/ObjectiveC.md) - * [Troubleshooting](Documentation/Troubleshooting.md) (eg. solutions to common compile errors) + * [Troubleshooting](Documentation/Troubleshooting.md) (e.g., solutions to common compile errors) * [Appendix](Documentation/Appendix.md) - -If you are looking for a function’s documentation, then please note -[our sources](Sources/) are thoroughly documented. +* [API Reference](https://mxcl.dev/PromiseKit/reference/v6/Classes/Promise.html) # Extensions -Promises are only as useful as the asynchronous tasks they represent, thus we +Promises are only as useful as the asynchronous tasks they represent. Thus, we have converted (almost) all of Apple’s APIs to promises. The default CocoaPod provides Promises and the extensions for Foundation and UIKit. The other extensions are available by specifying additional subspecs in your `Podfile`, -eg: +e.g.: ```ruby pod "PromiseKit/MapKit" # MKDirections().calculate().then { /*…*/ } @@ -94,68 +122,54 @@ All our extensions are separate repositories at the [PromiseKit organization]. Then don’t have them: ```ruby -pod "PromiseKit/CorePromise", "~> 6.0" +pod "PromiseKit/CorePromise", "~> 6.8" ``` -> *Note* Carthage installations come with no extensions by default. +> *Note:* Carthage installations come with no extensions by default. ## Choose Your Networking Library -Promise chains are commonly started with networking, thus we offer [Alamofire]: +Promise chains commonly start with a network operation. Thus, we offer +extensions for `URLSession`: ```swift -// pod 'PromiseKit/Alamofire' # https://github.com/PromiseKit/Alamofire- +// pod 'PromiseKit/Foundation' # https://github.com/PromiseKit/Foundation firstly { - Alamofire - .request("http://example.com", method: .post, parameters: params) - .responseDecodable(Foo.self) + URLSession.shared.dataTask(.promise, with: try makeUrlRequest()).validate() + // ^^ we provide `.validate()` so that eg. 404s get converted to errors +}.map { + try JSONDecoder().decode(Foo.self, with: $0.data) }.done { foo in //… }.catch { error in //… } -``` - -[OMGHTTPURLRQ]: - -```swift -// pod 'PromiseKit/OMGHTTPURLRQ' # https://github.com/PromiseKit/OMGHTTPURLRQ -firstly { - URLSession.shared.POST("http://example.com", JSON: params) -}.map { - try JSONDecoder().decoder(Foo.self, with: $0.data) -}.done { foo in - //… -}.catch { error in - //… +func makeUrlRequest() throws -> URLRequest { + var rq = URLRequest(url: url) + rq.httpMethod = "POST" + rq.addValue("application/json", forHTTPHeaderField: "Content-Type") + rq.addValue("application/json", forHTTPHeaderField: "Accept") + rq.httpBody = try JSONEncoder().encode(obj) + return rq } ``` -And (of course) plain `URLSession`: +And [Alamofire]: ```swift -// pod 'PromiseKit/Foundation' # https://github.com/PromiseKit/Foundation +// pod 'PromiseKit/Alamofire' # https://github.com/PromiseKit/Alamofire- firstly { - URLSession.shared.dataTask(.promise, with: try makeUrlRequest()) -}.map { - try JSONDecoder().decode(Foo.self, with: $0.data) + Alamofire + .request("http://example.com", method: .post, parameters: params) + .responseDecodable(Foo.self) }.done { foo in //… }.catch { error in //… } - -func makeUrlRequest() throws -> URLRequest { - var rq = URLRequest(url: url) - rq.httpMethod = "POST" - rq.addValue("application/json", forHTTPHeaderField: "Content-Type") - rq.addValue("application/json", forHTTPHeaderField: "Accept") - rq.httpBody = try JSONSerialization.jsonData(with: obj) - return rq -} ``` Nowadays, considering that: @@ -163,21 +177,20 @@ Nowadays, considering that: * We almost always POST JSON * We now have `JSONDecoder` * PromiseKit now has `map` and other functional primitives +* PromiseKit (like Alamofire, but not raw-`URLSession`) also defaults to having + callbacks go to the main thread -We recommend vanilla `URLSession`; use less black-boxes, stick closer to the -metal. Alamofire was essential until the three bulletpoints above became true, -but nowadays it isn’t really necessary. OMGHTTPURLRQ was developed before JSON -was the modern standard and thus REST requests were hard, but nowadays you -rarely network anything but JSON. +We recommend vanilla `URLSession`. It uses fewer black boxes and sticks closer to the metal. Alamofire was essential until the three bullet points above +became true, but nowadays it isn’t really necessary. # Support -Please check our [Troubleshooting Guide](Documentation/Troubleshooting.md) and -if after that you still have a question ask at our [Gitter chat channel] or on [our bug tracker]. +Please check our [Troubleshooting Guide](Documentation/Troubleshooting.md), and +if after that you still have a question, ask at our [Gitter chat channel] or on [our bug tracker]. [badge-pod]: https://img.shields.io/cocoapods/v/PromiseKit.svg?label=version -[badge-pms]: https://img.shields.io/badge/supports-CocoaPods%20%7C%20Carthage%20%7C%20SwiftPM-green.svg +[badge-pms]: https://img.shields.io/badge/supports-CocoaPods%20%7C%20Carthage%20%7C%20Accio%20%7C%20SwiftPM-green.svg [badge-languages]: https://img.shields.io/badge/languages-Swift%20%7C%20ObjC-orange.svg [badge-platforms]: https://img.shields.io/badge/platforms-macOS%20%7C%20iOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-lightgrey.svg [badge-mit]: https://img.shields.io/badge/license-MIT-blue.svg @@ -187,4 +200,8 @@ if after that you still have a question ask at our [Gitter chat channel] or on [ [Gitter chat channel]: https://gitter.im/mxcl/PromiseKit [our bug tracker]: https://github.com/mxcl/PromiseKit/issues/new [Podfile]: https://guides.cocoapods.org/syntax/podfile.html -[PMK6]: http://promisekit.org/news/2018/02/PromiseKit-6.0-Released/ +[PMK6]: http://mxcl.dev/PromiseKit/news/2018/02/PromiseKit-6.0-Released/ +[Installation Guide]: Documentation/Installation.md +[badge-travis]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=master +[travis]: https://travis-ci.org/mxcl/PromiseKit +[cocoapods]: https://cocoapods.org/pods/PromiseKit diff --git a/Example/Pods/PromiseKit/Sources/AnyPromise.h b/Example/Pods/PromiseKit/Sources/AnyPromise.h index cd625d9e..cf0d76b4 100644 --- a/Example/Pods/PromiseKit/Sources/AnyPromise.h +++ b/Example/Pods/PromiseKit/Sources/AnyPromise.h @@ -28,8 +28,8 @@ typedef void (^PMKResolver)(id __nullable) NS_REFINED_FOR_SWIFT; - Parameter block: The provided block is immediately executed, inside the block call `resolve` to resolve this promise and cause any attached handlers to execute. If you are wrapping a delegate-based system, we recommend instead to use: initWithResolver: - Returns: A new promise. - Warning: Resolving a promise with `nil` fulfills it. - - SeeAlso: http://promisekit.org/sealing-your-own-promises/ - - SeeAlso: http://promisekit.org/wrapping-delegation/ + - SeeAlso: https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md#making-promises + - SeeAlso: https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#wrapping-delegate-systems */ + (instancetype __nonnull)promiseWithResolverBlock:(void (^ __nonnull)(__nonnull PMKResolver))resolveBlock NS_REFINED_FOR_SWIFT; @@ -182,6 +182,13 @@ typedef void (^PMKResolver)(id __nullable) NS_REFINED_FOR_SWIFT; */ - (AnyPromise * __nonnull(^ __nonnull)(dispatch_queue_t __nonnull, dispatch_block_t __nonnull))ensureOn NS_REFINED_FOR_SWIFT; +/** + Wait until the promise is resolved. + + @return Value if fulfilled or error if rejected. + */ +- (id __nullable)wait NS_REFINED_FOR_SWIFT; + /** Create a new promise with an associated resolver. @@ -232,7 +239,7 @@ typedef void (^PMKBooleanAdapter)(BOOL, NSError * __nullable) NS_REFINED_FOR_SWI @warning *Important* If both parameters are nil, the promise fulfills, if both are non-nil the promise rejects. This is per the convention. - @see http://promisekit.org/sealing-your-own-promises/ + @see https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md#making-promises */ + (instancetype __nonnull)promiseWithAdapterBlock:(void (^ __nonnull)(PMKAdapter __nonnull adapter))block NS_REFINED_FOR_SWIFT; diff --git a/Example/Pods/PromiseKit/Sources/AnyPromise.m b/Example/Pods/PromiseKit/Sources/AnyPromise.m index 36611202..3725beac 100644 --- a/Example/Pods/PromiseKit/Sources/AnyPromise.m +++ b/Example/Pods/PromiseKit/Sources/AnyPromise.m @@ -1,4 +1,8 @@ -#import +#if __has_include("PromiseKit-Swift.h") + #import "PromiseKit-Swift.h" +#else + #import +#endif #import "PMKCallVariadicBlock.m" #import "AnyPromise+Private.h" #import "AnyPromise.h" @@ -108,6 +112,10 @@ - (id)__d { }; } +- (id)wait { + return [d __wait]; +} + - (BOOL)pending { return [[d valueForKey:@"__pending"] boolValue]; } diff --git a/Example/Pods/PromiseKit/Sources/AnyPromise.swift b/Example/Pods/PromiseKit/Sources/AnyPromise.swift index b7133318..3702db29 100644 --- a/Example/Pods/PromiseKit/Sources/AnyPromise.swift +++ b/Example/Pods/PromiseKit/Sources/AnyPromise.swift @@ -25,7 +25,7 @@ import Foundation @objc public func __thenOn(_ q: DispatchQueue, execute: @escaping (Any?) -> Any?) -> AnyPromise { return AnyPromise(__D: __AnyPromise(resolver: { resolve in self.__pipe { obj in - if !(obj is Error) { + if !(obj is NSError) { q.async { resolve(execute(obj)) } @@ -39,7 +39,7 @@ import Foundation @objc public func __catchOn(_ q: DispatchQueue, execute: @escaping (Any?) -> Any?) -> AnyPromise { return AnyPromise(__D: __AnyPromise(resolver: { resolve in self.__pipe { obj in - if obj is Error { + if obj is NSError { q.async { resolve(execute(obj)) } @@ -61,11 +61,31 @@ import Foundation })) } + @objc public func __wait() -> Any? { + if Thread.isMainThread { + conf.logHandler(.waitOnMainThread) + } + + var result = __value + + if result == nil { + let group = DispatchGroup() + group.enter() + self.__pipe { obj in + result = obj + group.leave() + } + group.wait() + } + + return result + } + /// Internal, do not use! Some behaviors undefined. @objc public func __pipe(_ to: @escaping (Any?) -> Void) { let to = { (obj: Any?) -> Void in - if let err = obj as? Error { - to(err as NSError) // or we cannot determine if objects are errors in objc land + if obj is NSError { + to(obj) // or we cannot determine if objects are errors in objc land } else { to(obj) } diff --git a/Example/Pods/PromiseKit/Sources/Box.swift b/Example/Pods/PromiseKit/Sources/Box.swift index 77b02cea..43cd3d1b 100644 --- a/Example/Pods/PromiseKit/Sources/Box.swift +++ b/Example/Pods/PromiseKit/Sources/Box.swift @@ -5,7 +5,7 @@ enum Sealant { case resolved(R) } -class Handlers { +final class Handlers { var bodies: [(R) -> Void] = [] func append(_ item: @escaping(R) -> Void) { bodies.append(item) } } @@ -17,7 +17,7 @@ class Box { func seal(_: T) {} } -class SealedBox: Box { +final class SealedBox: Box { let value: T init(value: T) { @@ -85,12 +85,17 @@ class EmptyBox: Box { extension Optional where Wrapped: DispatchQueue { - func async(_ body: @escaping() -> Void) { + @inline(__always) + func async(flags: DispatchWorkItemFlags?, _ body: @escaping() -> Void) { switch self { case .none: body() case .some(let q): - q.async(execute: body) + if let flags = flags { + q.async(flags: flags, execute: body) + } else { + q.async(execute: body) + } } } } diff --git a/Example/Pods/PromiseKit/Sources/Catchable.swift b/Example/Pods/PromiseKit/Sources/Catchable.swift index 84c322f4..596abdcb 100644 --- a/Example/Pods/PromiseKit/Sources/Catchable.swift +++ b/Example/Pods/PromiseKit/Sources/Catchable.swift @@ -18,10 +18,10 @@ public extension CatchMixin { - Parameter policy: The default policy does not execute your handler for cancellation errors. - Parameter execute: The handler to execute if this promise is rejected. - Returns: A promise finalizer. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ @discardableResult - func `catch`(on: DispatchQueue? = conf.Q.return, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) -> Void) -> PMKFinalizer { + func `catch`(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) -> Void) -> PMKFinalizer { let finalizer = PMKFinalizer() pipe { switch $0 { @@ -29,7 +29,7 @@ public extension CatchMixin { guard policy == .allErrors || !error.isCancelled else { fallthrough } - on.async { + on.async(flags: flags) { body(error) finalizer.pending.resolve(()) } @@ -45,8 +45,10 @@ public class PMKFinalizer { let pending = Guarantee.pending() /// `finally` is the same as `ensure`, but it is not chainable - public func finally(_ body: @escaping () -> Void) { - pending.guarantee.done(body) + public func finally(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Void) { + pending.guarantee.done(on: on, flags: flags) { + body() + } } } @@ -68,9 +70,9 @@ public extension CatchMixin { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ - func recover(on: DispatchQueue? = conf.Q.map, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> U) -> Promise where U.T == T { + func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> U) -> Promise where U.T == T { let rp = Promise(.pending) pipe { switch $0 { @@ -78,7 +80,7 @@ public extension CatchMixin { rp.box.seal(.fulfilled(value)) case .rejected(let error): if policy == .allErrors || !error.isCancelled { - on.async { + on.async(flags: flags) { do { let rv = try body(error) guard rv !== rp else { throw PMKError.returnedSelf } @@ -97,23 +99,21 @@ public extension CatchMixin { /** The provided closure executes when this promise rejects. - This variant of `recover` requires the handler to return a Guarantee, thus it returns a Guarantee itself and your closure cannot `throw`. - Note it is logically impossible for this to take a `catchPolicy`, thus `allErrors` are handled. - + - Note it is logically impossible for this to take a `catchPolicy`, thus `allErrors` are handled. - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ @discardableResult - func recover(on: DispatchQueue? = conf.Q.map, _ body: @escaping(Error) -> Guarantee) -> Guarantee { + func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Error) -> Guarantee) -> Guarantee { let rg = Guarantee(.pending) pipe { switch $0 { case .fulfilled(let value): rg.box.seal(value) case .rejected(let error): - on.async { + on.async(flags: flags) { body(error).pipe(to: rg.box.seal) } } @@ -138,10 +138,10 @@ public extension CatchMixin { - Parameter body: The closure that executes when this promise resolves. - Returns: A new promise, resolved with this promise’s resolution. */ - func ensure(on: DispatchQueue? = conf.Q.return, _ body: @escaping () -> Void) -> Promise { + func ensure(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Void) -> Promise { let rp = Promise(.pending) pipe { result in - on.async { + on.async(flags: flags) { body() rp.box.seal(result) } @@ -149,13 +149,46 @@ public extension CatchMixin { return rp } + /** + The provided closure executes when this promise resolves, whether it rejects or not. + The chain waits on the returned `Guarantee`. + + firstly { + setup() + }.done { + //… + }.ensureThen { + teardown() // -> Guarante + }.catch { + //… + } + + - Parameter on: The queue to which the provided closure dispatches. + - Parameter body: The closure that executes when this promise resolves. + - Returns: A new promise, resolved with this promise’s resolution. + */ + func ensureThen(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Guarantee) -> Promise { + let rp = Promise(.pending) + pipe { result in + on.async(flags: flags) { + body().done { + rp.box.seal(result) + } + } + } + return rp + } + + + /** Consumes the Swift unused-result warning. - Note: You should `catch`, but in situations where you know you don’t need a `catch`, `cauterize` makes your intentions clear. */ - func cauterize() { - self.catch { - Swift.print("PromiseKit:cauterized-error:", $0) + @discardableResult + func cauterize() -> PMKFinalizer { + return self.catch { + conf.logHandler(.cauterized($0)) } } } @@ -170,17 +203,17 @@ public extension CatchMixin where T == Void { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ @discardableResult - func recover(on: DispatchQueue? = conf.Q.map, _ body: @escaping(Error) -> Void) -> Guarantee { + func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Error) -> Void) -> Guarantee { let rg = Guarantee(.pending) pipe { switch $0 { case .fulfilled: rg.box.seal(()) case .rejected(let error): - on.async { + on.async(flags: flags) { body(error) rg.box.seal(()) } @@ -196,9 +229,9 @@ public extension CatchMixin where T == Void { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ - func recover(on: DispatchQueue? = conf.Q.map, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> Void) -> Promise { + func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> Void) -> Promise { let rg = Promise(.pending) pipe { switch $0 { @@ -206,7 +239,7 @@ public extension CatchMixin where T == Void { rg.box.seal(.fulfilled(())) case .rejected(let error): if policy == .allErrors || !error.isCancelled { - on.async { + on.async(flags: flags) { do { rg.box.seal(.fulfilled(try body(error))) } catch { diff --git a/Example/Pods/PromiseKit/Sources/Configuration.swift b/Example/Pods/PromiseKit/Sources/Configuration.swift index 3ec7f554..9d4fc22f 100644 --- a/Example/Pods/PromiseKit/Sources/Configuration.swift +++ b/Example/Pods/PromiseKit/Sources/Configuration.swift @@ -1,13 +1,35 @@ import Dispatch +/** + PromiseKit’s configurable parameters. + + Do not change these after any Promise machinery executes as the configuration object is not thread-safe. + + We would like it to be, but sadly `Swift` does not expose `dispatch_once` et al. which is what we used to use in order to make the configuration immutable once first used. +*/ public struct PMKConfiguration { - /// the default queues that promises handlers dispatch to + /// The default queues that promises handlers dispatch to public var Q: (map: DispatchQueue?, return: DispatchQueue?) = (map: DispatchQueue.main, return: DispatchQueue.main) + /// The default catch-policy for all `catch` and `resolve` public var catchPolicy = CatchPolicy.allErrorsExceptCancellation + + /// The closure used to log PromiseKit events. + /// Not thread safe; change before processing any promises. + /// - Note: The default handler calls `print()` + public var logHandler: (LogEvent) -> () = { event in + switch event { + case .waitOnMainThread: + print("PromiseKit: warning: `wait()` called on main thread!") + case .pendingPromiseDeallocated: + print("PromiseKit: warning: pending promise deallocated") + case .pendingGuaranteeDeallocated: + print("PromiseKit: warning: pending guarantee deallocated") + case .cauterized (let error): + print("PromiseKit:cauterized-error: \(error)") + } + } } -//TODO disallow modification of this after first promise instantiation -//TODO this should be per module too, eg. frameworks you use that provide promises -// should be confident about the queues their code runs on +/// Modify this as soon as possible in your application’s lifetime public var conf = PMKConfiguration() diff --git a/Example/Pods/PromiseKit/Sources/Deprecations.swift b/Example/Pods/PromiseKit/Sources/Deprecations.swift index ac4eb364..a837dcb8 100644 --- a/Example/Pods/PromiseKit/Sources/Deprecations.swift +++ b/Example/Pods/PromiseKit/Sources/Deprecations.swift @@ -37,7 +37,7 @@ public func wrap(_ body: (@escaping (T) -> Void) throws -> Void) -> Promise Void) -> Promise { + func always(on q: DispatchQueue = .main, execute body: @escaping () -> Void) -> Promise { return ensure(on: q, body) } } @@ -45,7 +45,7 @@ public extension Promise { public extension Thenable { #if PMKFullDeprecations /// disabled due to ambiguity with the other `.flatMap` - @available(*, deprecated: 6.1, message: "See: `compactMap`") + @available(*, deprecated, message: "See: `compactMap`") func flatMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T) throws -> U?) -> Promise { return compactMap(on: on, transform) } diff --git a/Example/Pods/PromiseKit/Sources/Error.swift b/Example/Pods/PromiseKit/Sources/Error.swift index 4704ce30..7229e6f4 100644 --- a/Example/Pods/PromiseKit/Sources/Error.swift +++ b/Example/Pods/PromiseKit/Sources/Error.swift @@ -2,7 +2,7 @@ import Foundation public enum PMKError: Error { /** - The completionHandler with form (T?, ErrorType?) was called with (nil, nil) + The completionHandler with form `(T?, Error?)` was called with `(nil, nil)`. This is invalid as per Cocoa/Apple calling conventions. */ case invalidCallingConvention @@ -23,9 +23,14 @@ public enum PMKError: Error { @available(*, deprecated, message: "See: `compactMap`") case flatMap(Any, Any.Type) + /// `nil` was returned from `compactMap` case compactMap(Any, Any.Type) - /// the lastValue or firstValue of a sequence was requested but the sequence was empty + /** + The lastValue or firstValue of a sequence was requested but the sequence was empty. + + Also used if all values of this collection failed the test passed to `firstValue(where:)`. + */ case emptySequence } @@ -59,7 +64,9 @@ extension PMKError: LocalizedError { //////////////////////////////////////////////////////////// Cancellation +/// An error that may represent the cancelled condition public protocol CancellableError: Error { + /// returns true if this Error represents a cancelled condition var isCancelled: Bool { get } } @@ -76,12 +83,21 @@ extension Error { } catch CocoaError.userCancelled { return true } catch { + #if os(macOS) || os(iOS) || os(tvOS) + let pair = { ($0.domain, $0.code) }(error as NSError) + return ("SKErrorDomain", 2) == pair + #else return false + #endif } } } +/// Used by `catch` and `recover` public enum CatchPolicy { + /// Indicates that `catch` or `recover` handle all error types including cancellable-errors. case allErrors + + /// Indicates that `catch` or `recover` handle all error except cancellable-errors. case allErrorsExceptCancellation } diff --git a/Example/Pods/PromiseKit/Sources/Guarantee.swift b/Example/Pods/PromiseKit/Sources/Guarantee.swift index fd6185e2..0e801b37 100644 --- a/Example/Pods/PromiseKit/Sources/Guarantee.swift +++ b/Example/Pods/PromiseKit/Sources/Guarantee.swift @@ -1,23 +1,29 @@ import class Foundation.Thread import Dispatch -/// A `Guarantee` is a functional abstraction around an asynchronous operation that cannot error. -public class Guarantee: Thenable { - let box: Box +/** + A `Guarantee` is a functional abstraction around an asynchronous operation that cannot error. + - See: `Thenable` +*/ +public final class Guarantee: Thenable { + let box: PromiseKit.Box fileprivate init(box: SealedBox) { self.box = box } + /// Returns a `Guarantee` sealed with the provided value. public static func value(_ value: T) -> Guarantee { return .init(box: SealedBox(value: value)) } + /// Returns a pending `Guarantee` that can be resolved with the provided closure’s parameter. public init(resolver body: (@escaping(T) -> Void) -> Void) { - box = EmptyBox() + box = Box() body(box.seal) } + /// - See: `Thenable.pipe` public func pipe(to: @escaping(Result) -> Void) { pipe{ to(.fulfilled($0)) } } @@ -38,6 +44,7 @@ public class Guarantee: Thenable { } } + /// - See: `Thenable.result` public var result: Result? { switch box.inspect() { case .pending: @@ -47,10 +54,22 @@ public class Guarantee: Thenable { } } + final private class Box: EmptyBox { + deinit { + switch inspect() { + case .pending: + PromiseKit.conf.logHandler(.pendingGuaranteeDeallocated) + case .resolved: + break + } + } + } + init(_: PMKUnambiguousInitializer) { - box = EmptyBox() + box = Box() } + /// Returns a tuple of a pending `Guarantee` and a function that resolves it. public class func pending() -> (guarantee: Guarantee, resolve: (T) -> Void) { return { ($0, $0.box.seal) }(Guarantee(.pending)) } @@ -58,21 +77,28 @@ public class Guarantee: Thenable { public extension Guarantee { @discardableResult - func done(on: DispatchQueue? = conf.Q.return, _ body: @escaping(T) -> Void) -> Guarantee { + func done(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> Void) -> Guarantee { let rg = Guarantee(.pending) pipe { (value: T) in - on.async { + on.async(flags: flags) { body(value) rg.box.seal(()) } } return rg } + + func get(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping (T) -> Void) -> Guarantee { + return map(on: on, flags: flags) { + body($0) + return $0 + } + } - func map(on: DispatchQueue? = conf.Q.map, _ body: @escaping(T) -> U) -> Guarantee { + func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> U) -> Guarantee { let rg = Guarantee(.pending) pipe { value in - on.async { + on.async(flags: flags) { rg.box.seal(body(value)) } } @@ -80,17 +106,17 @@ public extension Guarantee { } @discardableResult - func then(on: DispatchQueue? = conf.Q.map, _ body: @escaping(T) -> Guarantee) -> Guarantee { + func then(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> Guarantee) -> Guarantee { let rg = Guarantee(.pending) pipe { value in - on.async { + on.async(flags: flags) { body(value).pipe(to: rg.box.seal) } } return rg } - public func asVoid() -> Guarantee { + func asVoid() -> Guarantee { return map(on: nil) { _ in } } @@ -98,10 +124,10 @@ public extension Guarantee { Blocks this thread, so you know, don’t call this on a serial thread that any part of your chain may use. Like the main thread for example. */ - public func wait() -> T { + func wait() -> T { if Thread.isMainThread { - print("PromiseKit: warning: `wait()` called on main thread!") + conf.logHandler(.waitOnMainThread) } var result = value @@ -117,6 +143,138 @@ public extension Guarantee { } } +public extension Guarantee where T: Sequence { + /** + `Guarantee<[T]>` => `T` -> `U` => `Guarantee<[U]>` + + Guarantee.value([1,2,3]) + .mapValues { integer in integer * 2 } + .done { + // $0 => [2,4,6] + } + */ + func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U]> { + return map(on: on, flags: flags) { $0.map(transform) } + } + + /** + `Guarantee<[T]>` => `T` -> `[U]` => `Guarantee<[U]>` + + Guarantee.value([1,2,3]) + .flatMapValues { integer in [integer, integer] } + .done { + // $0 => [1,1,2,2,3,3] + } + */ + func flatMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U.Iterator.Element]> { + return map(on: on, flags: flags) { (foo: T) in + foo.flatMap { transform($0) } + } + } + + /** + `Guarantee<[T]>` => `T` -> `U?` => `Guarantee<[U]>` + + Guarantee.value(["1","2","a","3"]) + .compactMapValues { Int($0) } + .done { + // $0 => [1,2,3] + } + */ + func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U?) -> Guarantee<[U]> { + return map(on: on, flags: flags) { foo -> [U] in + #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) + return foo.flatMap(transform) + #else + return foo.compactMap(transform) + #endif + } + } + + /** + `Guarantee<[T]>` => `T` -> `Guarantee` => `Guaranetee<[U]>` + + Guarantee.value([1,2,3]) + .thenMap { .value($0 * 2) } + .done { + // $0 => [2,4,6] + } + */ + func thenMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> Guarantee) -> Guarantee<[U]> { + return then(on: on, flags: flags) { + when(fulfilled: $0.map(transform)) + }.recover { + // if happens then is bug inside PromiseKit + fatalError(String(describing: $0)) + } + } + + /** + `Guarantee<[T]>` => `T` -> `Guarantee<[U]>` => `Guarantee<[U]>` + + Guarantee.value([1,2,3]) + .thenFlatMap { integer in .value([integer, integer]) } + .done { + // $0 => [1,1,2,2,3,3] + } + */ + func thenFlatMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U.T.Iterator.Element]> where U.T: Sequence { + return then(on: on, flags: flags) { + when(fulfilled: $0.map(transform)) + }.map(on: nil) { + $0.flatMap { $0 } + }.recover { + // if happens then is bug inside PromiseKit + fatalError(String(describing: $0)) + } + } + + /** + `Guarantee<[T]>` => `T` -> Bool => `Guarantee<[T]>` + + Guarantee.value([1,2,3]) + .filterValues { $0 > 1 } + .done { + // $0 => [2,3] + } + */ + func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ isIncluded: @escaping(T.Iterator.Element) -> Bool) -> Guarantee<[T.Iterator.Element]> { + return map(on: on, flags: flags) { + $0.filter(isIncluded) + } + } + + /** + `Guarantee<[T]>` => (`T`, `T`) -> Bool => `Guarantee<[T]>` + + Guarantee.value([5,2,3,4,1]) + .sortedValues { $0 > $1 } + .done { + // $0 => [5,4,3,2,1] + } + */ + func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ areInIncreasingOrder: @escaping(T.Iterator.Element, T.Iterator.Element) -> Bool) -> Guarantee<[T.Iterator.Element]> { + return map(on: on, flags: flags) { + $0.sorted(by: areInIncreasingOrder) + } + } +} + +public extension Guarantee where T: Sequence, T.Iterator.Element: Comparable { + /** + `Guarantee<[T]>` => `Guarantee<[T]>` + + Guarantee.value([5,2,3,4,1]) + .sortedValues() + .done { + // $0 => [1,2,3,4,5] + } + */ + func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil) -> Guarantee<[T.Iterator.Element]> { + return map(on: on, flags: flags) { $0.sorted() } + } +} + #if swift(>=3.1) public extension Guarantee where T == Void { convenience init() { diff --git a/Example/Pods/PromiseKit/Sources/LogEvent.swift b/Example/Pods/PromiseKit/Sources/LogEvent.swift new file mode 100644 index 00000000..99683bdb --- /dev/null +++ b/Example/Pods/PromiseKit/Sources/LogEvent.swift @@ -0,0 +1,30 @@ +/** + The PromiseKit events which may be logged. + + ```` + /// A promise or guarantee has blocked the main thread + case waitOnMainThread + + /// A promise has been deallocated without being resolved + case pendingPromiseDeallocated + + /// An error which occurred while fulfilling a promise was swallowed + case cauterized(Error) + + /// Errors which give a string error message + case misc (String) + ```` +*/ +public enum LogEvent { + /// A promise or guarantee has blocked the main thread + case waitOnMainThread + + /// A promise has been deallocated without being resolved + case pendingPromiseDeallocated + + /// A guarantee has been deallocated without being resolved + case pendingGuaranteeDeallocated + + /// An error which occurred while resolving a promise was swallowed + case cauterized(Error) +} diff --git a/Example/Pods/PromiseKit/Sources/Promise.swift b/Example/Pods/PromiseKit/Sources/Promise.swift index 32973bb5..da9f6aa2 100644 --- a/Example/Pods/PromiseKit/Sources/Promise.swift +++ b/Example/Pods/PromiseKit/Sources/Promise.swift @@ -1,8 +1,11 @@ import class Foundation.Thread import Dispatch -/// A `Promise` is a functional abstraction around a failable asynchronous operation. -public class Promise: Thenable, CatchMixin { +/** + A `Promise` is a functional abstraction around a failable asynchronous operation. + - See: `Thenable` + */ +public final class Promise: Thenable, CatchMixin { let box: Box> fileprivate init(box: SealedBox>) { @@ -66,7 +69,7 @@ public class Promise: Thenable, CatchMixin { return { ($0, Resolver($0.box)) }(Promise(.pending)) } - /// Internal function required for `Thenable` conformance. + /// - See: `Thenable.pipe` public func pipe(to: @escaping(Result) -> Void) { switch box.inspect() { case .pending: @@ -83,7 +86,7 @@ public class Promise: Thenable, CatchMixin { } } - /// - Returns: The current `Result` for this promise. + /// - See: `Thenable.result` public var result: Result? { switch box.inspect() { case .pending: @@ -99,24 +102,14 @@ public class Promise: Thenable, CatchMixin { } public extension Promise { - /** - Immutably and asynchronously inspect the current `Result`: - - promise.tap{ print($0) }.then{ /*…*/ } - */ - func tap(_ body: @escaping(Result) -> Void) -> Promise { - pipe(to: body) - return self - } - /** Blocks this thread, so—you know—don’t call this on a serial thread that any part of your chain may use. Like the main thread for example. */ - public func wait() throws -> T { + func wait() throws -> T { if Thread.isMainThread { - Swift.print("PromiseKit: warning: `wait()` called on main thread!") + conf.logHandler(LogEvent.waitOnMainThread) } var result = self.result diff --git a/Example/Pods/PromiseKit/Sources/Resolver.swift b/Example/Pods/PromiseKit/Sources/Resolver.swift index f3924946..78531adb 100644 --- a/Example/Pods/PromiseKit/Sources/Resolver.swift +++ b/Example/Pods/PromiseKit/Sources/Resolver.swift @@ -1,4 +1,5 @@ -public class Resolver { +/// An object for resolving promises +public final class Resolver { let box: Box> init(_ box: Box>) { @@ -7,25 +8,29 @@ public class Resolver { deinit { if case .pending = box.inspect() { - print("PromiseKit: warning: pending promise deallocated") + conf.logHandler(.pendingPromiseDeallocated) } } } public extension Resolver { + /// Fulfills the promise with the provided value func fulfill(_ value: T) { box.seal(.fulfilled(value)) } + /// Rejects the promise with the provided error func reject(_ error: Error) { box.seal(.rejected(error)) } - public func resolve(_ result: Result) { + /// Resolves the promise with the provided result + func resolve(_ result: Result) { box.seal(result) } - public func resolve(_ obj: T?, _ error: Error?) { + /// Resolves the promise with the provided value or error + func resolve(_ obj: T?, _ error: Error?) { if let error = error { reject(error) } else if let obj = obj { @@ -35,7 +40,8 @@ public extension Resolver { } } - public func resolve(_ obj: T, _ error: Error?) { + /// Fulfills the promise with the provided value unless the provided error is non-nil + func resolve(_ obj: T, _ error: Error?) { if let error = error { reject(error) } else { @@ -43,13 +49,15 @@ public extension Resolver { } } - public func resolve(_ error: Error?, _ obj: T?) { + /// Resolves the promise, provided for non-conventional value-error ordered completion handlers. + func resolve(_ error: Error?, _ obj: T?) { resolve(obj, error) } } #if swift(>=3.1) extension Resolver where T == Void { + /// Fulfills the promise unless error is non-nil public func resolve(_ error: Error?) { if let error = error { reject(error) @@ -57,6 +65,20 @@ extension Resolver where T == Void { fulfill(()) } } +#if false + // disabled ∵ https://github.com/mxcl/PromiseKit/issues/990 + + /// Fulfills the promise + public func fulfill() { + self.fulfill(()) + } +#else + /// Fulfills the promise + /// - Note: underscore is present due to: https://github.com/mxcl/PromiseKit/issues/990 + public func fulfill_() { + self.fulfill(()) + } +#endif } #endif diff --git a/Example/Pods/PromiseKit/Sources/Thenable.swift b/Example/Pods/PromiseKit/Sources/Thenable.swift index 4ccad042..76e40fe1 100644 --- a/Example/Pods/PromiseKit/Sources/Thenable.swift +++ b/Example/Pods/PromiseKit/Sources/Thenable.swift @@ -2,13 +2,17 @@ import Dispatch /// Thenable represents an asynchronous operation that can be chained. public protocol Thenable: class { + /// The type of the wrapped value associatedtype T + + /// `pipe` is immediately executed when this `Thenable` is resolved func pipe(to: @escaping(Result) -> Void) + + /// The resolved result or nil if pending. var result: Result? { get } } public extension Thenable { - /** The provided closure executes when this promise resolves. @@ -26,12 +30,12 @@ public extension Thenable { //… } */ - func then(on: DispatchQueue? = conf.Q.map, file: StaticString = #file, line: UInt = #line, _ body: @escaping(T) throws -> U) -> Promise { + func then(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) throws -> U) -> Promise { let rp = Promise(.pending) pipe { switch $0 { case .fulfilled(let value): - on.async { + on.async(flags: flags) { do { let rv = try body(value) guard rv !== rp else { throw PMKError.returnedSelf } @@ -64,12 +68,12 @@ public extension Thenable { //… } */ - func map(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T) throws -> U) -> Promise { + func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U) -> Promise { let rp = Promise(.pending) pipe { switch $0 { case .fulfilled(let value): - on.async { + on.async(flags: flags) { do { rp.box.seal(.fulfilled(try transform(value))) } catch { @@ -98,12 +102,12 @@ public extension Thenable { // either `PMKError.compactMap` or a `JSONError` } */ - func compactMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T) throws -> U?) -> Promise { + func compactMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U?) -> Promise { let rp = Promise(.pending) pipe { switch $0 { case .fulfilled(let value): - on.async { + on.async(flags: flags) { do { if let rv = try transform(value) { rp.box.seal(.fulfilled(rv)) @@ -137,12 +141,12 @@ public extension Thenable { print(response.data) } */ - func done(on: DispatchQueue? = conf.Q.return, _ body: @escaping(T) throws -> Void) -> Promise { + func done(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) throws -> Void) -> Promise { let rp = Promise(.pending) pipe { switch $0 { case .fulfilled(let value): - on.async { + on.async(flags: flags) { do { try body(value) rp.box.seal(.fulfilled(())) @@ -177,13 +181,35 @@ public extension Thenable { print(foo, " is Void") } */ - func get(on: DispatchQueue? = conf.Q.return, _ body: @escaping (T) throws -> Void) -> Promise { - return map(on: on) { + func get(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping (T) throws -> Void) -> Promise { + return map(on: on, flags: flags) { try body($0) return $0 } } + /** + The provided closure is executed with promise result. + + This is like `get` but provides the Result of the Promise so you can inspect the value of the chain at this point without causing any side effects. + + - Parameter on: The queue to which the provided closure dispatches. + - Parameter body: The closure that is executed with Result of Promise. + - Returns: A new promise that is resolved with the result that the handler is fed. For example: + + promise.tap{ print($0) }.then{ /*…*/ } + */ + func tap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Result) -> Void) -> Promise { + return Promise { seal in + pipe { result in + on.async(flags: flags) { + body(result) + seal.resolve(result) + } + } + } + } + /// - Returns: a new promise chained off this promise but with its value discarded. func asVoid() -> Promise { return map(on: nil) { _ in } @@ -260,8 +286,8 @@ public extension Thenable where T: Sequence { // $0 => [2,4,6] } */ - func mapValues(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U]> { - return map(on: on){ try $0.map(transform) } + func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U]> { + return map(on: on, flags: flags){ try $0.map(transform) } } /** @@ -275,8 +301,8 @@ public extension Thenable where T: Sequence { // $0 => [1,1,2,2,3,3] } */ - func flatMapValues(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.Iterator.Element]> { - return map(on: on){ (foo: T) in + func flatMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.Iterator.Element]> { + return map(on: on, flags: flags){ (foo: T) in try foo.flatMap{ try transform($0) } } } @@ -292,8 +318,8 @@ public extension Thenable where T: Sequence { // $0 => [1,2,3] } */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U?) -> Promise<[U]> { - return map(on: on) { foo -> [U] in + func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U?) -> Promise<[U]> { + return map(on: on, flags: flags) { foo -> [U] in #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) return try foo.flatMap(transform) #else @@ -313,8 +339,8 @@ public extension Thenable where T: Sequence { // $0 => [2,4,6] } */ - func thenMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.T]> { - return then(on: on) { + func thenMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.T]> { + return then(on: on, flags: flags) { when(fulfilled: try $0.map(transform)) } } @@ -330,8 +356,8 @@ public extension Thenable where T: Sequence { // $0 => [1,1,2,2,3,3] } */ - func thenFlatMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.T.Iterator.Element]> where U.T: Sequence { - return then(on: on) { + func thenFlatMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.T.Iterator.Element]> where U.T: Sequence { + return then(on: on, flags: flags) { when(fulfilled: try $0.map(transform)) }.map(on: nil) { $0.flatMap{ $0 } @@ -339,7 +365,7 @@ public extension Thenable where T: Sequence { } /** - `Promise<[T]>` => `T` -> Bool => `Promise<[U]>` + `Promise<[T]>` => `T` -> Bool => `Promise<[T]>` firstly { .value([1,2,3]) @@ -349,8 +375,8 @@ public extension Thenable where T: Sequence { // $0 => [2,3] } */ - func filterValues(on: DispatchQueue? = conf.Q.map, _ isIncluded: @escaping (T.Iterator.Element) -> Bool) -> Promise<[T.Iterator.Element]> { - return map(on: on) { + func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ isIncluded: @escaping (T.Iterator.Element) -> Bool) -> Promise<[T.Iterator.Element]> { + return map(on: on, flags: flags) { $0.filter(isIncluded) } } @@ -368,6 +394,15 @@ public extension Thenable where T: Collection { } } + func firstValue(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, where test: @escaping (T.Iterator.Element) -> Bool) -> Promise { + return map(on: on, flags: flags) { + for x in $0 where test(x) { + return x + } + throw PMKError.emptySequence + } + } + /// - Returns: a promise fulfilled with the last value of this `Collection` or, if empty, a promise rejected with PMKError.emptySequence. var lastValue: Promise { return map(on: nil) { aa in @@ -383,7 +418,7 @@ public extension Thenable where T: Collection { public extension Thenable where T: Sequence, T.Iterator.Element: Comparable { /// - Returns: a promise fulfilled with the sorted values of this `Sequence`. - func sortedValues(on: DispatchQueue? = conf.Q.map) -> Promise<[T.Iterator.Element]> { - return map(on: on){ $0.sorted() } + func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil) -> Promise<[T.Iterator.Element]> { + return map(on: on, flags: flags){ $0.sorted() } } } diff --git a/Example/Pods/PromiseKit/Sources/after.swift b/Example/Pods/PromiseKit/Sources/after.swift index 2ca5f765..cdaeccd9 100644 --- a/Example/Pods/PromiseKit/Sources/after.swift +++ b/Example/Pods/PromiseKit/Sources/after.swift @@ -2,11 +2,11 @@ import struct Foundation.TimeInterval import Dispatch /** - after(.seconds(2)).then { + after(seconds: 1.5).then { //… } -- Returns: A new promise that fulfills after the specified duration. +- Returns: A guarantee that resolves after the specified duration. */ public func after(seconds: TimeInterval) -> Guarantee { let (rg, seal) = Guarantee.pending() @@ -20,11 +20,11 @@ public func after(seconds: TimeInterval) -> Guarantee { } /** - after(seconds: 1.5).then { + after(.seconds(2)).then { //… } - - Returns: A new promise that fulfills after the specified duration. + - Returns: A guarantee that resolves after the specified duration. */ public func after(_ interval: DispatchTimeInterval) -> Guarantee { let (rg, seal) = Guarantee.pending() diff --git a/Example/Pods/PromiseKit/Sources/hang.swift b/Example/Pods/PromiseKit/Sources/hang.swift index c7423941..53d54dec 100644 --- a/Example/Pods/PromiseKit/Sources/hang.swift +++ b/Example/Pods/PromiseKit/Sources/hang.swift @@ -2,20 +2,25 @@ import Foundation import CoreFoundation /** - Suspends the active thread waiting on the provided promise. + Runs the active run-loop until the provided promise resolves. - Useful when an application's main thread should not terminate before the promise is resolved - (e.g. commandline applications). + This is for debug and is not a generally safe function to use in your applications. We mostly provide it for use in testing environments. - - Returns: The value of the provided promise once resolved. - - Throws: An error, should the promise be resolved with an error. - - SeeAlso: `wait()` + Still if you like, study how it works (by reading the sources!) and use at your own risk. + + - Returns: The value of the resolved promise + - Throws: An error, should the promise be rejected + - See: `wait()` */ public func hang(_ promise: Promise) throws -> T { -#if os(Linux) +#if os(Linux) || os(Android) +#if swift(>=4.2) + let runLoopMode: CFRunLoopMode = kCFRunLoopDefaultMode +#else // isMainThread is not yet implemented on Linux. let runLoopModeRaw = RunLoopMode.defaultRunLoopMode.rawValue._bridgeToObjectiveC() let runLoopMode: CFString = unsafeBitCast(runLoopModeRaw, to: CFString.self) +#endif #else guard Thread.isMainThread else { // hang doesn't make sense on threads that aren't the main thread. diff --git a/Example/Pods/PromiseKit/Sources/race.swift b/Example/Pods/PromiseKit/Sources/race.swift index 3e167cdf..2b817de2 100644 --- a/Example/Pods/PromiseKit/Sources/race.swift +++ b/Example/Pods/PromiseKit/Sources/race.swift @@ -8,30 +8,29 @@ private func _race(_ thenables: [U]) -> Promise { } /** - Resolves with the first resolving promise from a set of promises. + Waits for one promise to resolve race(promise1, promise2, promise3).then { winner in //… } - - Returns: A new promise that resolves when the first promise in the provided promises resolves. - - Warning: If any of the provided promises reject, the returned promise is rejected. - - Warning: aborts if the array is empty. + - Returns: The promise that resolves first + - Warning: If the first resolution is a rejection, the returned promise is rejected */ public func race(_ thenables: U...) -> Promise { return _race(thenables) } /** - Resolves with the first resolving promise from a set of promises. + Waits for one promise to resolve race(promise1, promise2, promise3).then { winner in //… } - - Returns: A new promise that resolves when the first promise in the provided promises resolves. - - Warning: If any of the provided promises reject, the returned promise is rejected. - - Remark: Returns promise rejected with PMKError.badInput if empty array provided + - Returns: The promise that resolves first + - Warning: If the first resolution is a rejection, the returned promise is rejected + - Remark: If the provided array is empty the returned promise is rejected with PMKError.badInput */ public func race(_ thenables: [U]) -> Promise { guard !thenables.isEmpty else { @@ -41,15 +40,13 @@ public func race(_ thenables: [U]) -> Promise { } /** - Resolves with the first resolving Guarantee from a set of promises. + Waits for one guarantee to resolve race(promise1, promise2, promise3).then { winner in //… } - - Returns: A new guarantee that resolves when the first promise in the provided promises resolves. - - Warning: If any of the provided promises reject, the returned promise is rejected. - - Remark: Returns promise rejected with PMKError.badInput if empty array provided + - Returns: The guarantee that resolves first */ public func race(_ guarantees: Guarantee...) -> Guarantee { let rg = Guarantee(.pending) diff --git a/Example/Pods/PromiseKit/Sources/when.swift b/Example/Pods/PromiseKit/Sources/when.swift index 59884cd2..0913c64f 100644 --- a/Example/Pods/PromiseKit/Sources/when.swift +++ b/Example/Pods/PromiseKit/Sources/when.swift @@ -208,7 +208,7 @@ public func when(fulfilled promiseIterator: It, concurrent /** Waits on all provided promises. - `when(fulfilled:)` rejects as soon as one of the provided promises rejects. `when(resolved:)` waits on all provided promises and **never** rejects. + `when(fulfilled:)` rejects as soon as one of the provided promises rejects. `when(resolved:)` waits on all provided promises whatever their result, and then provides an array of `Result` so you can individually inspect the results. As a consequence this function returns a `Guarantee`, ie. errors are lifted from the individual promises into the results array of the returned `Guarantee`. when(resolved: promise1, promise2, promise3).then { results in for result in results where case .fulfilled(let value) { @@ -219,15 +219,14 @@ public func when(fulfilled promiseIterator: It, concurrent } - Returns: A new promise that resolves once all the provided promises resolve. The array is ordered the same as the input, ie. the result order is *not* resolution order. - - Warning: The returned promise can *not* be rejected. - - Note: Any promises that error are implicitly consumed, your UnhandledErrorHandler will not be called. - - Remark: Doesn't take Thenable due to protocol associatedtype paradox + - Note: we do not provide tuple variants for `when(resolved:)` but will accept a pull-request + - Remark: Doesn't take Thenable due to protocol `associatedtype` paradox */ public func when(resolved promises: Promise...) -> Guarantee<[Result]> { return when(resolved: promises) } -/// Waits on all provided promises. +/// - See: `when(resolved: Promise...)` public func when(resolved promises: [Promise]) -> Guarantee<[Result]> { guard !promises.isEmpty else { return .value([]) diff --git a/Example/Pods/Quick/README.md b/Example/Pods/Quick/README.md index e6dc0ad3..2cb397f1 100644 --- a/Example/Pods/Quick/README.md +++ b/Example/Pods/Quick/README.md @@ -4,6 +4,7 @@ [![CocoaPods](https://img.shields.io/cocoapods/v/Quick.svg)](https://cocoapods.org/pods/Quick) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platforms](https://img.shields.io/cocoapods/p/Quick.svg)](https://cocoapods.org/pods/Quick) +[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com) Quick is a behavior-driven development framework for Swift and Objective-C. Inspired by [RSpec](https://github.com/rspec/rspec), [Specta](https://github.com/specta/specta), and [Ginkgo](https://github.com/onsi/ginkgo). @@ -44,7 +45,8 @@ Certain versions of Quick and Nimble only support certain versions of Swift. Dep |Swift version |Quick version |Nimble version | |:--------------------|:---------------|:--------------| -|Swift 3 |v1.0.0 or later |v5.0.0 or later| +|Swift 4.2 |v1.3.2 or later |v7.3.2 or later| +|Swift 3 / Swift 4 |v1.0.0 or later |v5.0.0 or later| |Swift 2.2 / Swift 2.3|v0.9.3 |v4.1.0 | ## Documentation diff --git a/Example/Pods/Quick/Sources/Quick/Behavior.swift b/Example/Pods/Quick/Sources/Quick/Behavior.swift index 1d98702e..7dfefac3 100644 --- a/Example/Pods/Quick/Sources/Quick/Behavior.swift +++ b/Example/Pods/Quick/Sources/Quick/Behavior.swift @@ -4,7 +4,7 @@ open class Behavior { - open static var name: String { return String(describing: self) } + public static var name: String { return String(describing: self) } /** override this method in your behavior to define a set of reusable examples. diff --git a/Example/Pods/Quick/Sources/Quick/Callsite.swift b/Example/Pods/Quick/Sources/Quick/Callsite.swift index f5e37111..47b34421 100644 --- a/Example/Pods/Quick/Sources/Quick/Callsite.swift +++ b/Example/Pods/Quick/Sources/Quick/Callsite.swift @@ -1,18 +1,23 @@ import Foundation -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - public class _CallsiteBase: NSObject {} - #else - public class _CallsiteBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +public class _CallsiteBase: NSObject {} #else public class _CallsiteBase: NSObject {} #endif +// Ideally we would always use `StaticString` as the type for tracking the file name +// in which an example is defined, for consistency with `assert` etc. from the +// stdlib, and because recent versions of the XCTest overlay require `StaticString` +// when calling `XCTFail`. Under the Objective-C runtime (i.e. building on macOS), we +// have to use `String` instead because StaticString can't be generated from Objective-C +#if SWIFT_PACKAGE +public typealias FileString = StaticString +#else +public typealias FileString = String +#endif + /** An object encapsulating the file and line number at which a particular example is defined. @@ -21,14 +26,14 @@ final public class Callsite: _CallsiteBase { /** The absolute path of the file in which an example is defined. */ - public let file: String + public let file: FileString /** The line number on which an example is defined. */ public let line: UInt - internal init(file: String, line: UInt) { + internal init(file: FileString, line: UInt) { self.file = file self.line = line } @@ -40,6 +45,6 @@ extension Callsite { If two callsites are in the same file and on the same line, they must be equal. */ @nonobjc public static func == (lhs: Callsite, rhs: Callsite) -> Bool { - return lhs.file == rhs.file && lhs.line == rhs.line + return String(describing: lhs.file) == String(describing: rhs.file) && lhs.line == rhs.line } } diff --git a/Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift b/Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift index dbb95f11..fe339973 100644 --- a/Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift +++ b/Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift @@ -72,7 +72,7 @@ final public class Configuration: NSObject { provided with metadata on the example that the closure is being run prior to. */ -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc(beforeEachWithMetadata:) public func beforeEach(_ closure: @escaping BeforeExampleWithMetadataClosure) { exampleHooks.appendBefore(closure) @@ -109,7 +109,7 @@ final public class Configuration: NSObject { is provided with metadata on the example that the closure is being run after. */ -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc(afterEachWithMetadata:) public func afterEach(_ closure: @escaping AfterExampleWithMetadataClosure) { exampleHooks.appendAfter(closure) diff --git a/Example/Pods/Quick/Sources/Quick/DSL/DSL.swift b/Example/Pods/Quick/Sources/Quick/DSL/DSL.swift index 94f20c56..284ffe1d 100644 --- a/Example/Pods/Quick/Sources/Quick/DSL/DSL.swift +++ b/Example/Pods/Quick/Sources/Quick/DSL/DSL.swift @@ -127,7 +127,7 @@ public func afterEach(_ closure: @escaping AfterExampleWithMetadataClosure) { - parameter file: The absolute path to the file containing the example. A sensible default is provided. - parameter line: The line containing the example. A sensible default is provided. */ -public func it(_ description: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, closure: @escaping () -> Void) { +public func it(_ description: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, closure: @escaping () -> Void) { World.sharedWorld.it(description, flags: flags, file: file, line: line, closure: closure) } @@ -143,7 +143,7 @@ public func it(_ description: String, flags: FilterFlags = [:], file: String = # - parameter file: The absolute path to the file containing the current example group. A sensible default is provided. - parameter line: The line containing the current example group. A sensible default is provided. */ -public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line) { +public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line) { itBehavesLike(name, flags: flags, file: file, line: line, sharedExampleContext: { return [:] }) } @@ -163,7 +163,7 @@ public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: String - parameter file: The absolute path to the file containing the current example group. A sensible default is provided. - parameter line: The line containing the current example group. A sensible default is provided. */ -public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, sharedExampleContext: @escaping SharedExampleContext) { +public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, sharedExampleContext: @escaping SharedExampleContext) { World.sharedWorld.itBehavesLike(name, sharedExampleContext: sharedExampleContext, flags: flags, file: file, line: line) } @@ -179,7 +179,7 @@ public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: String - parameter file: The absolute path to the file containing the current example group. A sensible default is provided. - parameter line: The line containing the current example group. A sensible default is provided. */ -public func itBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, context: @escaping () -> C) { +public func itBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, context: @escaping () -> C) { World.sharedWorld.itBehavesLike(behavior, context: context, flags: flags, file: file, line: line) } @@ -214,7 +214,7 @@ public func xcontext(_ description: String, flags: FilterFlags, closure: () -> V Use this to quickly mark an `it` closure as pending. This disables the example and ensures the code within the closure is never run. */ -public func xit(_ description: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, closure: @escaping () -> Void) { +public func xit(_ description: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, closure: @escaping () -> Void) { World.sharedWorld.xit(description, flags: flags, file: file, line: line, closure: closure) } @@ -222,7 +222,7 @@ public func xit(_ description: String, flags: FilterFlags = [:], file: String = Use this to quicklu mark an `itBehavesLike` closure as pending. This disables the example group defined by this behavior and ensures the code within is never run. */ -public func xitBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, context: @escaping () -> C) { +public func xitBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, context: @escaping () -> C) { World.sharedWorld.xitBehavesLike(behavior, context: context, flags: flags, file: file, line: line) } /** @@ -245,27 +245,27 @@ public func fcontext(_ description: String, flags: FilterFlags = [:], closure: ( Use this to quickly focus an `it` closure, focusing the example. If any examples in the test suite are focused, only those examples are executed. */ -public func fit(_ description: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, closure: @escaping () -> Void) { +public func fit(_ description: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, closure: @escaping () -> Void) { World.sharedWorld.fit(description, flags: flags, file: file, line: line, closure: closure) } /** Use this to quickly focus an `itBehavesLike` closure. */ -public func fitBehavesLike(_ name: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line) { +public func fitBehavesLike(_ name: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line) { fitBehavesLike(name, flags: flags, file: file, line: line, sharedExampleContext: { return [:] }) } /** Use this to quickly focus an `itBehavesLike` closure. */ -public func fitBehavesLike(_ name: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, sharedExampleContext: @escaping SharedExampleContext) { +public func fitBehavesLike(_ name: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, sharedExampleContext: @escaping SharedExampleContext) { World.sharedWorld.fitBehavesLike(name, sharedExampleContext: sharedExampleContext, flags: flags, file: file, line: line) } /** Use this to quickly focus on `itBehavesLike` closure. */ -public func fitBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, context: @escaping () -> C) { +public func fitBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, context: @escaping () -> C) { World.sharedWorld.fitBehavesLike(behavior, context: context, flags: flags, file: file, line: line) } diff --git a/Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift b/Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift index 52490278..d331d69e 100644 --- a/Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift +++ b/Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift @@ -56,7 +56,7 @@ extension World { currentExampleGroup.hooks.appendBefore(closure) } -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc(beforeEachWithMetadata:) internal func beforeEach(closure: @escaping BeforeExampleWithMetadataClosure) { currentExampleGroup.hooks.appendBefore(closure) @@ -74,7 +74,7 @@ extension World { currentExampleGroup.hooks.appendAfter(closure) } -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc(afterEachWithMetadata:) internal func afterEach(closure: @escaping AfterExampleWithMetadataClosure) { currentExampleGroup.hooks.appendAfter(closure) @@ -85,7 +85,8 @@ extension World { } #endif - internal func it(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + @nonobjc + internal func it(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { if beforesCurrentlyExecuting { raiseError("'it' cannot be used inside 'beforeEach', 'it' may only be used inside 'context' or 'describe'. ") } @@ -100,19 +101,22 @@ extension World { currentExampleGroup.appendExample(example) } - internal func fit(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + @nonobjc + internal func fit(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { var focusedFlags = flags focusedFlags[Filter.focused] = true self.it(description, flags: focusedFlags, file: file, line: line, closure: closure) } - internal func xit(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + @nonobjc + internal func xit(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { var pendingFlags = flags pendingFlags[Filter.pending] = true self.it(description, flags: pendingFlags, file: file, line: line, closure: closure) } - internal func itBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: String, line: UInt) { + @nonobjc + internal func itBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: FileString, line: UInt) { guard currentExampleMetadata == nil else { raiseError("'itBehavesLike' cannot be used inside '\(currentPhase)', 'itBehavesLike' may only be used inside 'context' or 'describe'. ") } @@ -131,13 +135,14 @@ extension World { } } - internal func fitBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: String, line: UInt) { + @nonobjc + internal func fitBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: FileString, line: UInt) { var focusedFlags = flags focusedFlags[Filter.focused] = true self.itBehavesLike(name, sharedExampleContext: sharedExampleContext, flags: focusedFlags, file: file, line: line) } - internal func itBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: String, line: UInt) { + internal func itBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: FileString, line: UInt) { guard currentExampleMetadata == nil else { raiseError("'itBehavesLike' cannot be used inside '\(currentPhase)', 'itBehavesLike' may only be used inside 'context' or 'describe'. ") } @@ -155,36 +160,36 @@ extension World { } } - internal func fitBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: String, line: UInt) { + internal func fitBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: FileString, line: UInt) { var focusedFlags = flags focusedFlags[Filter.focused] = true self.itBehavesLike(behavior, context: context, flags: focusedFlags, file: file, line: line) } - internal func xitBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: String, line: UInt) { + internal func xitBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: FileString, line: UInt) { var pendingFlags = flags pendingFlags[Filter.pending] = true self.itBehavesLike(behavior, context: context, flags: pendingFlags, file: file, line: line) } -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc(itWithDescription:flags:file:line:closure:) - private func objc_it(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + internal func objc_it(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { it(description, flags: flags, file: file, line: line, closure: closure) } @objc(fitWithDescription:flags:file:line:closure:) - private func objc_fit(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + internal func objc_fit(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { fit(description, flags: flags, file: file, line: line, closure: closure) } @objc(xitWithDescription:flags:file:line:closure:) - private func objc_xit(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + internal func objc_xit(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { xit(description, flags: flags, file: file, line: line, closure: closure) } @objc(itBehavesLikeSharedExampleNamed:sharedExampleContext:flags:file:line:) - private func objc_itBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: String, line: UInt) { + internal func objc_itBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: FileString, line: UInt) { itBehavesLike(name, sharedExampleContext: sharedExampleContext, flags: flags, file: file, line: line) } #endif diff --git a/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift b/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift index 155fefd1..f13f43aa 100644 --- a/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift +++ b/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift @@ -1,7 +1,7 @@ import Foundation internal func raiseError(_ message: String) -> Never { -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) NSException(name: .internalInconsistencyException, reason: message, userInfo: nil).raise() #endif diff --git a/Example/Pods/Quick/Sources/Quick/Example.swift b/Example/Pods/Quick/Sources/Quick/Example.swift index c15b31a7..594efa0e 100644 --- a/Example/Pods/Quick/Sources/Quick/Example.swift +++ b/Example/Pods/Quick/Sources/Quick/Example.swift @@ -3,15 +3,9 @@ import Foundation private var numberOfExamplesRun = 0 private var numberOfIncludedExamples = 0 -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - public class _ExampleBase: NSObject {} - #else - public class _ExampleBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +public class _ExampleBase: NSObject {} #else public class _ExampleBase: NSObject {} #endif @@ -81,6 +75,9 @@ final public class Example: _ExampleBase { let exampleMetadata = ExampleMetadata(example: self, exampleIndex: numberOfExamplesRun) world.currentExampleMetadata = exampleMetadata + defer { + world.currentExampleMetadata = nil + } world.exampleHooks.executeBefores(exampleMetadata) group!.phase = .beforesExecuting diff --git a/Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift b/Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift index 3dd28abd..b07b3bd3 100644 --- a/Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift +++ b/Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift @@ -1,14 +1,8 @@ import Foundation -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - public class _ExampleMetadataBase: NSObject {} - #else - public class _ExampleMetadataBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +public class _ExampleMetadataBase: NSObject {} #else public class _ExampleMetadataBase: NSObject {} #endif diff --git a/Example/Pods/Quick/Sources/Quick/Filter.swift b/Example/Pods/Quick/Sources/Quick/Filter.swift index da137f82..304f6ec0 100644 --- a/Example/Pods/Quick/Sources/Quick/Filter.swift +++ b/Example/Pods/Quick/Sources/Quick/Filter.swift @@ -1,14 +1,8 @@ import Foundation -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - public class _FilterBase: NSObject {} - #else - public class _FilterBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +public class _FilterBase: NSObject {} #else public class _FilterBase: NSObject {} #endif diff --git a/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift b/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift index d7a14428..f5596cc0 100644 --- a/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift +++ b/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift @@ -1,4 +1,4 @@ -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) +#if canImport(Darwin) import Foundation @@ -17,7 +17,7 @@ extension Bundle { Module name has to be a valid "C99 extended identifier". */ internal var moduleName: String { - let fileName = bundleURL.fileName as NSString + let fileName = bundleURL.fileName return fileName.c99ExtendedIdentifier } } diff --git a/Example/Pods/Quick/Sources/Quick/NSString+C99ExtendedIdentifier.swift b/Example/Pods/Quick/Sources/Quick/NSString+C99ExtendedIdentifier.swift deleted file mode 100644 index ef73762f..00000000 --- a/Example/Pods/Quick/Sources/Quick/NSString+C99ExtendedIdentifier.swift +++ /dev/null @@ -1,33 +0,0 @@ -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) -import Foundation - -public extension NSString { - - private static var invalidCharacters: CharacterSet = { - var invalidCharacters = CharacterSet() - - let invalidCharacterSets: [CharacterSet] = [ - .whitespacesAndNewlines, - .illegalCharacters, - .controlCharacters, - .punctuationCharacters, - .nonBaseCharacters, - .symbols - ] - - for invalidSet in invalidCharacterSets { - invalidCharacters.formUnion(invalidSet) - } - - return invalidCharacters - }() - - @objc(qck_c99ExtendedIdentifier) - var c99ExtendedIdentifier: String { - let validComponents = components(separatedBy: NSString.invalidCharacters) - let result = validComponents.joined(separator: "_") - - return result.isEmpty ? "_" : result - } -} -#endif diff --git a/Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift b/Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift index 415b6806..865c3ae1 100644 --- a/Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift +++ b/Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift @@ -1,4 +1,4 @@ -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) +#if canImport(Darwin) import Foundation /** diff --git a/Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift b/Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift index 0fe76a72..5cdc6d89 100644 --- a/Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift +++ b/Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift @@ -1,4 +1,4 @@ -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) +#if canImport(Darwin) import XCTest diff --git a/Example/Pods/Quick/Sources/Quick/String+C99ExtendedIdentifier.swift b/Example/Pods/Quick/Sources/Quick/String+C99ExtendedIdentifier.swift new file mode 100644 index 00000000..2dcd6063 --- /dev/null +++ b/Example/Pods/Quick/Sources/Quick/String+C99ExtendedIdentifier.swift @@ -0,0 +1,46 @@ +#if canImport(Darwin) +import Foundation + +extension String { + private static var invalidCharacters: CharacterSet = { + var invalidCharacters = CharacterSet() + + let invalidCharacterSets: [CharacterSet] = [ + .whitespacesAndNewlines, + .illegalCharacters, + .controlCharacters, + .punctuationCharacters, + .nonBaseCharacters, + .symbols + ] + + for invalidSet in invalidCharacterSets { + invalidCharacters.formUnion(invalidSet) + } + + return invalidCharacters + }() + + internal var c99ExtendedIdentifier: String { + let validComponents = components(separatedBy: String.invalidCharacters) + let result = validComponents.joined(separator: "_") + + return result.isEmpty ? "_" : result + } +} + +/// Extension methods or properties for NSObject subclasses are invisible from +/// the Objective-C runtime on static linking unless the consumers add `-ObjC` +/// linker flag, so let's make a wrapper class to mitigate that situation. +/// +/// See: https://github.com/Quick/Quick/issues/785 and https://github.com/Quick/Quick/pull/803 +@objc +class QCKObjCStringUtils: NSObject { + override private init() {} + + @objc + static func c99ExtendedIdentifier(from string: String) -> String { + return string.c99ExtendedIdentifier + } +} +#endif diff --git a/Example/Pods/Quick/Sources/Quick/World.swift b/Example/Pods/Quick/Sources/Quick/World.swift index 127239a5..e6528713 100644 --- a/Example/Pods/Quick/Sources/Quick/World.swift +++ b/Example/Pods/Quick/Sources/Quick/World.swift @@ -12,15 +12,9 @@ public typealias SharedExampleContext = () -> [String: Any] */ public typealias SharedExampleClosure = (@escaping SharedExampleContext) -> Void -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - internal class _WorldBase: NSObject {} - #else - internal class _WorldBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +internal class _WorldBase: NSObject {} #else internal class _WorldBase: NSObject {} #endif @@ -57,7 +51,7 @@ final internal class World: _WorldBase { within this test suite. This is only true within the context of Quick functional tests. */ -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) // Convention of generating Objective-C selector has been changed on Swift 3 @objc(isRunningAdditionalSuites) internal var isRunningAdditionalSuites = false @@ -158,9 +152,9 @@ final internal class World: _WorldBase { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc(examplesForSpecClass:) - private func objc_examples(_ specClass: AnyClass) -> [Example] { + internal func objc_examples(_ specClass: AnyClass) -> [Example] { return examples(specClass) } #endif diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m b/Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m index 937b818c..17beaa76 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m @@ -1,7 +1,12 @@ #import "QuickConfiguration.h" -#import "World.h" #import +#if __has_include("Quick-Swift.h") +#import "Quick-Swift.h" +#else +#import +#endif + typedef void (^QCKClassEnumerationBlock)(Class klass); /** diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m b/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m index 10e8a3d4..624832e9 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m @@ -1,6 +1,10 @@ #import "QCKDSL.h" -#import "World.h" -#import "World+DSL.h" + +#if __has_include("Quick-Swift.h") +#import "Quick-Swift.h" +#else +#import +#endif void qck_beforeSuite(QCKDSLEmptyBlock closure) { [[World sharedWorld] beforeSuite:closure]; diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h b/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h deleted file mode 100644 index a3b85245..00000000 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h +++ /dev/null @@ -1,20 +0,0 @@ -#import - -@interface World (SWIFT_EXTENSION(Quick)) -- (void)beforeSuite:(void (^ __nonnull)(void))closure; -- (void)afterSuite:(void (^ __nonnull)(void))closure; -- (void)sharedExamples:(NSString * __nonnull)name closure:(void (^ __nonnull)(NSDictionary * __nonnull (^ __nonnull)(void)))closure; -- (void)describe:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags closure:(void (^ __nonnull)(void))closure; -- (void)context:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags closure:(void (^ __nonnull)(void))closure; -- (void)fdescribe:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags closure:(void (^ __nonnull)(void))closure; -- (void)xdescribe:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags closure:(void (^ __nonnull)(void))closure; -- (void)beforeEach:(void (^ __nonnull)(void))closure; -- (void)beforeEachWithMetadata:(void (^ __nonnull)(ExampleMetadata * __nonnull))closure; -- (void)afterEach:(void (^ __nonnull)(void))closure; -- (void)afterEachWithMetadata:(void (^ __nonnull)(ExampleMetadata * __nonnull))closure; -- (void)itWithDescription:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags file:(NSString * __nonnull)file line:(NSUInteger)line closure:(void (^ __nonnull)(void))closure; -- (void)fitWithDescription:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags file:(NSString * __nonnull)file line:(NSUInteger)line closure:(void (^ __nonnull)(void))closure; -- (void)xitWithDescription:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags file:(NSString * __nonnull)file line:(NSUInteger)line closure:(void (^ __nonnull)(void))closure; -- (void)itBehavesLikeSharedExampleNamed:(NSString * __nonnull)name sharedExampleContext:(NSDictionary * __nonnull (^ __nonnull)(void))sharedExampleContext flags:(NSDictionary * __nonnull)flags file:(NSString * __nonnull)file line:(NSUInteger)line; -- (void)pending:(NSString * __nonnull)description closure:(void (^ __nonnull)(void))closure; -@end diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h b/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h index 105a97e2..ccf006e9 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h @@ -47,4 +47,10 @@ */ - (void)spec; +/** + Returns the currently executing spec. Use in specs that require XCTestCase + methods, e.g. expectationWithDescription. +*/ +@property (class, nonatomic, readonly) QuickSpec *current; + @end diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m b/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m index 48916797..ed70d352 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m @@ -1,7 +1,11 @@ #import "QuickSpec.h" #import "QuickConfiguration.h" -#import "World.h" + +#if __has_include("Quick-Swift.h") +#import "Quick-Swift.h" +#else #import +#endif static QuickSpec *currentSpec = nil; @@ -75,6 +79,10 @@ + (NSArray *)testInvocations { - (void)spec { } ++ (QuickSpec*) current { + return currentSpec; +} + #pragma mark - Internal Methods /** @@ -101,8 +109,8 @@ + (SEL)addInstanceMethodForExample:(Example *)example classSelectorNames:(NSMuta }); const char *types = [[NSString stringWithFormat:@"%s%s%s", @encode(void), @encode(id), @encode(SEL)] UTF8String]; - - NSString *originalName = example.name.qck_c99ExtendedIdentifier; + + NSString *originalName = [QCKObjCStringUtils c99ExtendedIdentifierFrom:example.name]; NSString *selectorName = originalName; NSUInteger i = 2; diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/World.h b/Example/Pods/Quick/Sources/QuickObjectiveC/World.h deleted file mode 100644 index e638cf6c..00000000 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/World.h +++ /dev/null @@ -1,18 +0,0 @@ -#import - -@class ExampleGroup; -@class ExampleMetadata; - -SWIFT_CLASS("_TtC5Quick5World") -@interface World - -@property (nonatomic) ExampleGroup * __nullable currentExampleGroup; -@property (nonatomic) ExampleMetadata * __nullable currentExampleMetadata; -@property (nonatomic) BOOL isRunningAdditionalSuites; -+ (World * __nonnull)sharedWorld; -- (void)configure:(void (^ __nonnull)(Configuration * __nonnull))closure; -- (void)finalizeConfiguration; -- (ExampleGroup * __nonnull)rootExampleGroupForSpecClass:(Class __nonnull)cls; -- (NSArray * __nonnull)examplesForSpecClass:(Class __nonnull)specClass; -- (void)performWithCurrentExampleGroup:(ExampleGroup * __nonnull)group closure:(void (^ __nonnull)(void))closure; -@end diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m b/Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m index e49939e9..ae63036d 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m @@ -1,6 +1,11 @@ #import #import + +#if __has_include("Quick-Swift.h") +#import "Quick-Swift.h" +#else #import +#endif @interface XCTestSuite (QuickTestSuiteBuilder) @end diff --git a/Example/Pods/SipHash/LICENSE.md b/Example/Pods/SipHash/LICENSE.md deleted file mode 100644 index 07595838..00000000 --- a/Example/Pods/SipHash/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Károly Lőrentey - -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/Example/Pods/SipHash/README.md b/Example/Pods/SipHash/README.md deleted file mode 100644 index 49fe93e0..00000000 --- a/Example/Pods/SipHash/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# SipHash - -[![Swift 4.0](https://img.shields.io/badge/Swift-4-blue.svg)](https://swift.org) -[![License](https://img.shields.io/badge/licence-MIT-blue.svg)](https://github.com/attaswift/SipHash/blob/master/LICENSE.md) -[![Platform](https://img.shields.io/badge/platforms-macOS%20∙%20iOS%20∙%20watchOS%20∙%20tvOS%20∙%20Linux-blue.svg)](https://developer.apple.com/platforms/) - -[![Build Status](https://travis-ci.org/attaswift/SipHash.svg?branch=master)](https://travis-ci.org/attaswift/SipHash) -[![Code Coverage](https://codecov.io/github/attaswift/SipHash/coverage.svg?branch=master)](https://codecov.io/github/attaswift/SipHash?branch=master) - -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg)](https://github.com/Carthage/Carthage) -[![CocoaPod Version](https://img.shields.io/cocoapods/v/SipHash.svg)](http://cocoapods.org/pods/SipHash) - -`SipHash` is a pure Swift implementation of the [SipHash] hashing algorithm designed by -Jean-Philippe Aumasson and Daniel J. Bernstein in 2012: - -[SipHash]: https://131002.net/siphash - -> SipHash is a family of pseudorandom functions (a.k.a. keyed hash functions) optimized for speed on short messages. -> -> Target applications include network traffic authentication and defense against hash-flooding DoS attacks. -> -> SipHash is secure, fast, and simple (for real): -> - SipHash is simpler and faster than previous cryptographic algorithms (e.g. MACs based on universal hashing) -> - SipHash is competitive in performance with insecure non-cryptographic algorithms (e.g. MurmurHash) -> -> -- [131002.net][SipHash] - -SipHash has a variety of flavors; this package implements the one called SipHash-2-4. - -Note that the Swift Standard Library [already includes an implementation][stdlib] of SipHash-2-4 and SipHash-1-3; -however, the APIs are currently private and not available for use outside of stdlib. This package provides an -independent implementation that's available for use in third-party code. - -[stdlib]: https://github.com/apple/swift/blob/master/stdlib/public/core/SipHash.swift.gyb - -The current release of SipHash requires Swift 4. - -## Sample Code - -```swift -import SipHash - -// `SipHashable` is like `Hashable`, but simpler. -struct Book: SipHashable { - let title: String - let pageCount: Int - - // You need to implement this method instead of `hashValue`. - func appendHashes(to hasher: inout SipHasher) { - // Simply append the fields you want to include in the hash. - hasher.append(title) - hasher.append(pageCount) - } - - static func ==(left: Book, right: Book) -> Bool { - return left.title == right.title && left.pageCount == right.pageCount - } -} - -// You can now use Books in sets or as dictionary keys. -let book = Book(title: "The Colour of Magic", pageCount: 206) -let books: Set = [book] - - -// If you prefer to do so, you may also create & use hashers directly. -var hasher = SipHasher() -hasher.add(book) -hasher.add(42) -// Finalizing the hasher extracts the hash value and invalidates it. -let hash = hasher.finalize() -``` - -## Why Would I Use SipHash? - -Writing a good implementation of `hashValue` is hard, even if we just need to combine the values of a couple of fields. -We need to come up with a deterministic function that blends the field values well, producing a fixed-width -result without too many collisions on typical inputs. But how many collisions are "too many"? Do we even know what -our "typical inputs" look like? For me, the answer to both of these questions is usually "I have absolutely no idea", -and I bet you have the same problem. - -Thus, verifying that our `hashValue` implementations work well is an exercise in frustration. - -We need to somehow check the properties of the hash function by looking at its behavior given various inputs. -It is easy enough to write tests for the requirement that equal values have equal `hashValues`. -But verifying that the hash has few collisions requires making some assumptions on the -statistical properties of "typical" inputs -- and even if we'd be somehow confident enough to do that, writing the code -to do it is way too complicated. - -Instead of rolling your own ad-hoc hash function, why not just use an algorithm designed specifically to blend data -into a hash? Using a standardized algorithm means we don't need to worry about collision behavior any more: if the -algorithm was designed well, we'll always have good results. - -The SipHash algorithm is a particularly good choice for hashing. It implements a 64-bit cryptographic -message-authentication code (MAC) with a 256-bit internal state initialized from a 128-bit secret key that's (typically) -randomly generated for each execution of the binary. -SipHash is designed to protect against hash collision attacks, while remaining simple to use and fast. -It is already used by Perl, Python, Ruby, Rust, and even Swift itself -- which is why the documentation of `Hashable` -explicitly warns that the value returned by `hashValue` may be different across executions. - -The standard library already implements SipHash, but the implementation is private. (It is technically available -for use, but it is not formally part of the stdlib API, and it is subject to change/removal across even point releases.) -I expect a refactored version of stdlib's SipHash will become available as public API in a future Swift release. -But while we're waiting for that, this package provides an alternative implementation that is available today. - -## Is this code full of bugs? - -Indubitably. Please report all bugs you find! - -The package has 100% unit test coverage. Unfortunately this doesn't tell you much about its reliability in practice. - -The test suite verifies that the package generates values that match the test vectors supplied by SipHash's original -authors, which makes me reasonably confident that this package implements SipHash correctly. -Obviously, your mileage may vary. - -## Reference docs - -[Nicely formatted reference docs][docs] are available courtesy of [Jazzy]. - -[docs]: https://attaswift.github.io/SipHash/ -[Jazzy]: https://github.com/realm/jazzy - -## Installation - -### CocoaPods - -If you use CocoaPods, you can start using `SipHash` by including it as a dependency in your `Podfile`: - -``` -pod 'SipHash', '~> 1.2' -``` - -### Carthage - -For Carthage, add the following line to your `Cartfile`: - -``` -github "attaswift/SipHash" ~> 1.2 -``` - -### Swift Package Manager - -For Swift Package Manager, add `SipHash` to the dependencies list inside your `Package.swift` file: - -``` -import PackageDescription - -let package = Package( - name: "MyPackage", - dependencies: [ - .Package(url: "https://github.com/attaswift/SipHash.git", from: "1.2.1") - ] -) -``` - -### Standalone Development - -If you don't use a dependency manager, you need to clone this repo somewhere near your project, and add a reference to `SipHash.xcodeproj` to your project's `xcworkspace`. You can put the clone of SipHash wherever you like on disk, but it is a good idea to set it up as a submodule of your app's top-level Git repository. - -To link your application binary with SipHash, just add `SipHash.framework` from the SipHash project to the Embedded Binaries section of your app target's General page in Xcode. As long as the SipHash project file is referenced in your workspace, this framework will be listed in the "Choose items to add" sheet that opens when you click on the "+" button of your target's Embedded Binaries list. - -There is no need to do any additional setup beyond adding the framework targets to Embedded Binaries. diff --git a/Example/Pods/SipHash/SipHash/Primitive Types.swift b/Example/Pods/SipHash/SipHash/Primitive Types.swift deleted file mode 100644 index 45824562..00000000 --- a/Example/Pods/SipHash/SipHash/Primitive Types.swift +++ /dev/null @@ -1,171 +0,0 @@ -// -// Primitive Types.swift -// SipHash -// -// Created by Károly Lőrentey on 2016-11-14. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension SipHasher { - //MARK: Appending buffer slices - - /// Add the contents of `slice` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ slice: Slice) { - self.append(UnsafeRawBufferPointer(rebasing: slice)) - } - - //MARK: Appending Integers - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Bool) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Int) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: UInt) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Int64) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: UInt64) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Int32) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: UInt32) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Int16) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: UInt16) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Int8) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: UInt8) { - var data = value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } -} - -extension SipHasher { - //MARK: Appending Floating Point Types - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Float) { - var data = value.isZero ? 0.0 : value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Double) { - var data = value.isZero ? 0.0 : value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - - #if arch(i386) || arch(x86_64) - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Float80) { - var data = value.isZero ? 0.0 : value - // Float80 is 16 bytes wide but the last 6 are uninitialized. - let buffer = UnsafeRawBufferPointer(start: &data, count: 10) - append(buffer) - } - #endif -} - -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - import CoreGraphics - - extension SipHasher { - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: CGFloat) { - var data = value.isZero ? 0.0 : value - append(UnsafeRawBufferPointer(start: &data, count: MemoryLayout.size)) - } - } -#endif - -extension SipHasher { - //MARK: Appending Optionals - - /// Add `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: Value?) { - if let value = value { - self.append(1 as UInt8) - self.append(value) - } - else { - self.append(0 as UInt8) - } - } -} diff --git a/Example/Pods/SipHash/SipHash/RandomUInt64.swift b/Example/Pods/SipHash/SipHash/RandomUInt64.swift deleted file mode 100644 index d55eb0bd..00000000 --- a/Example/Pods/SipHash/SipHash/RandomUInt64.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// RandomUInt64.swift -// SipHash -// -// Created by Károly Lőrentey on 2016-11-14. -// Copyright © 2016-2017 Károly Lőrentey. -// - -#if os(iOS) || os(macOS) || os(watchOS) || os(tvOS) - import Darwin - - func randomUInt64() -> UInt64 { - return UInt64(arc4random()) << 32 | UInt64(arc4random()) - } -#elseif os(Linux) || os(FreeBSD) - import Glibc - - func randomUInt64() -> UInt64 { - var randomArray = [UInt8](repeating: 0, count: 8) - - let fd = open("/dev/urandom", O_RDONLY) - defer { - close(fd) - } - - let _ = read(fd, &randomArray, MemoryLayout.size * 8) - - var randomInt: UInt64 = 0 - for i in 0.. UInt64 { - fatalError("Unsupported platform") - } -#endif diff --git a/Example/Pods/SipHash/SipHash/SipHashable.swift b/Example/Pods/SipHash/SipHash/SipHashable.swift deleted file mode 100644 index 5811717c..00000000 --- a/Example/Pods/SipHash/SipHash/SipHashable.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// SipHashable.swift -// SipHash -// -// Created by Károly Lőrentey on 2016-11-14. -// Copyright © 2016-2017 Károly Lőrentey. -// - -/// A variant of `Hashable` that makes it simpler to generate good hash values. -/// -/// Instead of `hashValue`, you need to implement `addHashes`, adding -/// data that should contribute to the hash to the supplied hasher. -/// The hasher takes care of blending the supplied data together. -/// -/// Example implementation: -/// -/// ``` -/// struct Book: SipHashable { -/// var title: String -/// var pageCount: Int -/// -/// func appendHashes(to hasher: inout SipHasher) { -/// hasher.append(title) -/// hasher.append(pageCount) -/// } -/// -/// static func ==(left: Book, right: Book) -> Bool { -/// return left.title == right.title && left.pageCount == right.pageCount -/// } -/// } -/// ``` -public protocol SipHashable: Hashable { - /// Add components of `self` that should contribute to hashing to `hash`. - func appendHashes(to hasher: inout SipHasher) -} - -extension SipHashable { - /// The hash value, calculated using `addHashes`. - /// - /// Hash values are not guaranteed to be equal across different executions of your program. - /// Do not save hash values to use during a future execution. - public var hashValue: Int { - var hasher = SipHasher() - appendHashes(to: &hasher) - return hasher.finalize() - } -} - -extension SipHasher { - //MARK: Appending Hashable Values - - /// Add hashing components in `value` to this hash. This method simply calls `value.addHashes`. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: H) { - value.appendHashes(to: &self) - } - - /// Add the hash value of `value` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ value: H) { - append(value.hashValue) - } -} diff --git a/Example/Pods/SipHash/SipHash/SipHasher.swift b/Example/Pods/SipHash/SipHash/SipHasher.swift deleted file mode 100644 index c1bfce62..00000000 --- a/Example/Pods/SipHash/SipHash/SipHasher.swift +++ /dev/null @@ -1,197 +0,0 @@ -// -// SipHasher.swift -// SipHash -// -// Created by Károly Lőrentey on 2016-03-08. -// Copyright © 2016-2017 Károly Lőrentey. - -private func rotateLeft(_ value: UInt64, by amount: UInt64) -> UInt64 { - return (value << amount) | (value >> (64 - amount)) -} - -/// An implementation of the [SipHash-2-4](https://131002.net/siphash) hashing algorithm, -/// suitable for use in projects outside the Swift standard library. -/// (The Swift stdlib already includes SipHash; unfortunately its API is not public.) -/// -/// SipHash was invented by Jean-Philippe Aumasson and Daniel J. Bernstein. -public struct SipHasher { - /// The number of compression rounds. - private static let c = 2 - /// The number of finalization rounds. - private static let d = 4 - - /// The default key, used by the default initializer. - /// Each process has a unique key, chosen randomly when the first instance of `SipHasher` is initialized. - static let key: (UInt64, UInt64) = (randomUInt64(), randomUInt64()) - - /// Word 0 of the internal state, initialized to ASCII encoding of "somepseu". - var v0: UInt64 = 0x736f6d6570736575 - /// Word 1 of the internal state, initialized to ASCII encoding of "dorandom". - var v1: UInt64 = 0x646f72616e646f6d - /// Word 2 of the internal state, initialized to ASCII encoding of "lygenera". - var v2: UInt64 = 0x6c7967656e657261 - /// Word 3 of the internal state, initialized to ASCII encoding of "tedbytes". - var v3: UInt64 = 0x7465646279746573 - - /// The current partial word, not yet mixed in with the internal state. - var pendingBytes: UInt64 = 0 - /// The number of bytes that are currently pending in `tailBytes`. Guaranteed to be between 0 and 7. - var pendingByteCount = 0 - /// The number of bytes collected so far, or -1 if the hash value has already been finalized. - var byteCount = 0 - - //MARK: Initializers - - /// Initialize a new instance with the default key, generated randomly the first time this initializer is called. - public init() { - self.init(k0: SipHasher.key.0, k1: SipHasher.key.1) - } - - /// Initialize a new instance with the specified key. - /// - /// - Parameter k0: The low 64 bits of the secret key. - /// - Parameter k1: The high 64 bits of the secret key. - public init(k0: UInt64, k1: UInt64) { - v0 ^= k0 - v1 ^= k1 - v2 ^= k0 - v3 ^= k1 - } - - private mutating func sipRound() { - v0 = v0 &+ v1 - v1 = rotateLeft(v1, by: 13) - v1 ^= v0 - v0 = rotateLeft(v0, by: 32) - v2 = v2 &+ v3 - v3 = rotateLeft(v3, by: 16) - v3 ^= v2 - v0 = v0 &+ v3 - v3 = rotateLeft(v3, by: 21) - v3 ^= v0 - v2 = v2 &+ v1 - v1 = rotateLeft(v1, by: 17) - v1 ^= v2 - v2 = rotateLeft(v2, by: 32) - } - - mutating func compressWord(_ m: UInt64) { - v3 ^= m - for _ in 0 ..< SipHasher.c { - sipRound() - } - v0 ^= m - } - - mutating func _finalize() -> UInt64 { - precondition(byteCount >= 0) - pendingBytes |= UInt64(byteCount) << 56 - byteCount = -1 - - compressWord(pendingBytes) - - v2 ^= 0xff - for _ in 0 ..< SipHasher.d { - sipRound() - } - - return v0 ^ v1 ^ v2 ^ v3 - } - - //MARK: Appending data - - /// Add all bytes in `buffer` to this hash. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func append(_ buffer: UnsafeRawBufferPointer) { - precondition(byteCount >= 0) - - // Use the first couple of bytes to complete the pending word. - var i = 0 - if pendingByteCount > 0 { - let readCount = min(buffer.count, 8 - pendingByteCount) - var m: UInt64 = 0 - switch readCount { - case 7: - m |= UInt64(buffer[6]) << 48 - fallthrough - case 6: - m |= UInt64(buffer[5]) << 40 - fallthrough - case 5: - m |= UInt64(buffer[4]) << 32 - fallthrough - case 4: - m |= UInt64(buffer[3]) << 24 - fallthrough - case 3: - m |= UInt64(buffer[2]) << 16 - fallthrough - case 2: - m |= UInt64(buffer[1]) << 8 - fallthrough - case 1: - m |= UInt64(buffer[0]) - default: - precondition(readCount == 0) - } - pendingBytes |= m << UInt64(pendingByteCount << 3) - pendingByteCount += readCount - i += readCount - - if pendingByteCount == 8 { - compressWord(pendingBytes) - pendingBytes = 0 - pendingByteCount = 0 - } - } - - let left = (buffer.count - i) & 7 - let end = (buffer.count - i) - left - while i < end { - var m: UInt64 = 0 - withUnsafeMutableBytes(of: &m) { p in - p.copyMemory(from: .init(rebasing: buffer[i ..< i + 8])) - } - compressWord(UInt64(littleEndian: m)) - i += 8 - } - - switch left { - case 7: - pendingBytes |= UInt64(buffer[i + 6]) << 48 - fallthrough - case 6: - pendingBytes |= UInt64(buffer[i + 5]) << 40 - fallthrough - case 5: - pendingBytes |= UInt64(buffer[i + 4]) << 32 - fallthrough - case 4: - pendingBytes |= UInt64(buffer[i + 3]) << 24 - fallthrough - case 3: - pendingBytes |= UInt64(buffer[i + 2]) << 16 - fallthrough - case 2: - pendingBytes |= UInt64(buffer[i + 1]) << 8 - fallthrough - case 1: - pendingBytes |= UInt64(buffer[i]) - default: - precondition(left == 0) - } - pendingByteCount = left - - byteCount += buffer.count - } - - //MARK: Finalization - - /// Finalize this hash and return the hash value. - /// - /// - Requires: `finalize()` hasn't been called on this instance yet. - public mutating func finalize() -> Int { - return Int(truncatingIfNeeded: _finalize()) - } -} diff --git a/Example/Pods/Target Support Files/SipHash/Info.plist b/Example/Pods/Target Support Files/BigInt/BigInt-Info.plist similarity index 96% rename from Example/Pods/Target Support Files/SipHash/Info.plist rename to Example/Pods/Target Support Files/BigInt/BigInt-Info.plist index e433362e..3424ca66 100644 --- a/Example/Pods/Target Support Files/SipHash/Info.plist +++ b/Example/Pods/Target Support Files/BigInt/BigInt-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.2.2 + 4.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/BigInt/BigInt.xcconfig b/Example/Pods/Target Support Files/BigInt/BigInt.xcconfig index 60fc8c3b..218b8332 100644 --- a/Example/Pods/Target Support Files/BigInt/BigInt.xcconfig +++ b/Example/Pods/Target Support Files/BigInt/BigInt.xcconfig @@ -1,7 +1,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BigInt -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist b/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist new file mode 100644 index 00000000..2243fe6e --- /dev/null +++ b/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift-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.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig b/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig index d6712ca7..f3e02343 100644 --- a/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig +++ b/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig @@ -1,14 +1,14 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_UNROLL_LOOPS = YES -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/CryptoSwift PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +SWIFT_COMPILATION_MODE = wholemodule SWIFT_DISABLE_SAFETY_CHECKS = YES -SWIFT_ENFORCE_EXCLUSIVE_ACCESS = compile-time -SWIFT_OPTIMIZATION_LEVEL = -Owholemodule -SWIFT_VERSION = 4.0 +SWIFT_ENFORCE_EXCLUSIVE_ACCESS = debug-only +SWIFT_OPTIMIZATION_LEVEL = -O diff --git a/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist b/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist new file mode 100644 index 00000000..5d999cfc --- /dev/null +++ b/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 8.0.2 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig b/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig index 766d0bbf..51f805fc 100644 --- a/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig +++ b/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig @@ -1,9 +1,10 @@ +APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Nimble ENABLE_BITCODE = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = -weak-lswiftXCTest -weak_framework "XCTest" -OTHER_SWIFT_FLAGS = $(inherited) -suppress-warnings $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -Xlinker -no_application_extension -weak-lswiftXCTest -weak_framework "XCTest" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS $(inherited) -suppress-warnings PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-Info.plist new file mode 100644 index 00000000..2243fe6e --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-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.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-acknowledgements.markdown index 51199c34..a6966e95 100644 --- a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-acknowledgements.markdown @@ -473,31 +473,6 @@ Apache License limitations under the License. -## SipHash - -The MIT License (MIT) - -Copyright (c) 2016 Károly Lőrentey - -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. - - ## Web3 The MIT License (MIT) diff --git a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-acknowledgements.plist index 9e365edc..f2471223 100644 --- a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-acknowledgements.plist @@ -56,7 +56,7 @@ Permission is granted to anyone to use this software for any purpose,including c - This notice may not be removed or altered from any source or binary distribution. - Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' License - Attribution License + Attribution Title CryptoSwift Type @@ -518,37 +518,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FooterText The MIT License (MIT) -Copyright (c) 2016 Károly Lőrentey - -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 - SipHash - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - Copyright (c) 2018 Boilertalk Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-frameworks.sh index 0699d863..74398ba0 100755 --- a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-frameworks.sh @@ -3,10 +3,15 @@ set -e set -u set -o pipefail +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" @@ -36,8 +41,8 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi # Use filter instead of exclude so missing patterns don't throw errors. @@ -47,8 +52,13 @@ install_framework() local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -62,7 +72,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -101,8 +111,8 @@ install_dsym() { # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" @@ -131,7 +141,7 @@ strip_invalid_archs() { for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done @@ -148,7 +158,6 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework" install_framework "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework" - install_framework "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework" install_framework "${BUILT_PRODUCTS_DIR}/Web3/Web3.framework" install_framework "${BUILT_PRODUCTS_DIR}/secp256k1.swift/secp256k1.framework" fi @@ -158,7 +167,6 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework" install_framework "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework" - install_framework "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework" install_framework "${BUILT_PRODUCTS_DIR}/Web3/Web3.framework" install_framework "${BUILT_PRODUCTS_DIR}/secp256k1.swift/secp256k1.framework" fi diff --git a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.debug.xcconfig index be1cece4..3d4b8fd6 100644 --- a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Quick" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/Web3" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Quick" "${PODS_CONFIGURATION_BUILD_DIR}/Web3" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Quick/Quick.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Web3/Web3.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift/secp256k1.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Quick/Quick.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SipHash/SipHash.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Web3/Web3.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift/secp256k1.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CryptoSwift" -framework "Nimble" -framework "PromiseKit" -framework "Quick" -framework "SipHash" -framework "Web3" -framework "secp256k1" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CryptoSwift" -framework "Foundation" -framework "Nimble" -framework "PromiseKit" -framework "Quick" -framework "Web3" -framework "XCTest" -framework "secp256k1" -weak_framework "XCTest" +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/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.release.xcconfig index be1cece4..3d4b8fd6 100644 --- a/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Quick" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/Web3" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Quick" "${PODS_CONFIGURATION_BUILD_DIR}/Web3" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Quick/Quick.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Web3/Web3.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift/secp256k1.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Quick/Quick.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SipHash/SipHash.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Web3/Web3.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift/secp256k1.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CryptoSwift" -framework "Nimble" -framework "PromiseKit" -framework "Quick" -framework "SipHash" -framework "Web3" -framework "secp256k1" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CryptoSwift" -framework "Foundation" -framework "Nimble" -framework "PromiseKit" -framework "Quick" -framework "Web3" -framework "XCTest" -framework "secp256k1" -weak_framework "XCTest" +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/Example/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist b/Example/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist new file mode 100644 index 00000000..e02f936d --- /dev/null +++ b/Example/Pods/Target Support Files/PromiseKit/PromiseKit-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.10.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig b/Example/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig index 744abccf..72d9a100 100644 --- a/Example/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig +++ b/Example/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig @@ -1,7 +1,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -DPMKCocoaPods $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "Foundation" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DPMKCocoaPods PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/Pods/Target Support Files/Quick/Quick-Info.plist b/Example/Pods/Target Support Files/Quick/Quick-Info.plist new file mode 100644 index 00000000..7f71fffc --- /dev/null +++ b/Example/Pods/Target Support Files/Quick/Quick-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Quick/Quick.xcconfig b/Example/Pods/Target Support Files/Quick/Quick.xcconfig index 92f73d78..f0639f1c 100644 --- a/Example/Pods/Target Support Files/Quick/Quick.xcconfig +++ b/Example/Pods/Target Support Files/Quick/Quick.xcconfig @@ -1,9 +1,10 @@ +APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Quick ENABLE_BITCODE = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = -framework "XCTest" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -Xlinker -no_application_extension -framework "XCTest" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/Pods/Target Support Files/SipHash/SipHash-dummy.m b/Example/Pods/Target Support Files/SipHash/SipHash-dummy.m deleted file mode 100644 index 79885299..00000000 --- a/Example/Pods/Target Support Files/SipHash/SipHash-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SipHash : NSObject -@end -@implementation PodsDummy_SipHash -@end diff --git a/Example/Pods/Target Support Files/SipHash/SipHash-prefix.pch b/Example/Pods/Target Support Files/SipHash/SipHash-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/Example/Pods/Target Support Files/SipHash/SipHash-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#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/Example/Pods/Target Support Files/SipHash/SipHash-umbrella.h b/Example/Pods/Target Support Files/SipHash/SipHash-umbrella.h deleted file mode 100644 index 65aec28d..00000000 --- a/Example/Pods/Target Support Files/SipHash/SipHash-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#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 SipHashVersionNumber; -FOUNDATION_EXPORT const unsigned char SipHashVersionString[]; - diff --git a/Example/Pods/Target Support Files/SipHash/SipHash.modulemap b/Example/Pods/Target Support Files/SipHash/SipHash.modulemap deleted file mode 100644 index 067ad6b2..00000000 --- a/Example/Pods/Target Support Files/SipHash/SipHash.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module SipHash { - umbrella header "SipHash-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/Pods/Target Support Files/SipHash/SipHash.xcconfig b/Example/Pods/Target Support Files/SipHash/SipHash.xcconfig deleted file mode 100644 index 3137c804..00000000 --- a/Example/Pods/Target Support Files/SipHash/SipHash.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SipHash -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/SipHash -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES diff --git a/Example/Pods/Target Support Files/Web3/Web3-Info.plist b/Example/Pods/Target Support Files/Web3/Web3-Info.plist new file mode 100644 index 00000000..1caf1ff8 --- /dev/null +++ b/Example/Pods/Target Support Files/Web3/Web3-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.3.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Web3/Web3.xcconfig b/Example/Pods/Target Support Files/Web3/Web3.xcconfig index 457e6ac2..457a3ecf 100644 --- a/Example/Pods/Target Support Files/Web3/Web3.xcconfig +++ b/Example/Pods/Target Support Files/Web3/Web3.xcconfig @@ -1,7 +1,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Web3 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -DWeb3CocoaPods $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DWeb3CocoaPods PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/Pods/Target Support Files/secp256k1.swift/secp256k1.swift-Info.plist b/Example/Pods/Target Support Files/secp256k1.swift/secp256k1.swift-Info.plist new file mode 100644 index 00000000..7db8bd3f --- /dev/null +++ b/Example/Pods/Target Support Files/secp256k1.swift/secp256k1.swift-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.1.4 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/secp256k1.swift/secp256k1.swift.xcconfig b/Example/Pods/Target Support Files/secp256k1.swift/secp256k1.swift.xcconfig index 2b808d47..d23ed544 100644 --- a/Example/Pods/Target Support Files/secp256k1.swift/secp256k1.swift.xcconfig +++ b/Example/Pods/Target Support Files/secp256k1.swift/secp256k1.swift.xcconfig @@ -1,11 +1,11 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/secp256k1/Classes" -OTHER_CFLAGS = $(inherited) -DHAVE_CONFIG_H=1 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-shorten-64-to-32 -Wno-conditional-uninitialized -Wno-unused-function -Wno-long-long -Wno-overlength-strings -O3 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/secp256k1/Classes" +OTHER_CFLAGS = -DHAVE_CONFIG_H=1 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-shorten-64-to-32 -Wno-conditional-uninitialized -Wno-unused-function -Wno-long-long -Wno-overlength-strings -O3 PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/secp256k1.swift PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) ${PODS_ROOT} +SWIFT_INCLUDE_PATHS = ${PODS_ROOT} diff --git a/Example/Web3.xcodeproj/project.pbxproj b/Example/Web3.xcodeproj/project.pbxproj index 93fc87f1..c1736a3a 100644 --- a/Example/Web3.xcodeproj/project.pbxproj +++ b/Example/Web3.xcodeproj/project.pbxproj @@ -374,13 +374,12 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-frameworks.sh", "${BUILT_PRODUCTS_DIR}/BigInt/BigInt.framework", "${BUILT_PRODUCTS_DIR}/CryptoSwift/CryptoSwift.framework", "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework", "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework", - "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework", "${BUILT_PRODUCTS_DIR}/Web3/Web3.framework", "${BUILT_PRODUCTS_DIR}/secp256k1.swift/secp256k1.framework", ); @@ -391,13 +390,12 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PromiseKit.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SipHash.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Web3.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Web3_Tests/Pods-Web3_Tests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ diff --git a/Package.swift b/Package.swift index 4d82cd57..c32408b0 100644 --- a/Package.swift +++ b/Package.swift @@ -17,16 +17,16 @@ let package = Package( ], dependencies: [ // Core dependencies - .package(url: "https://github.com/attaswift/BigInt.git", from: "3.1.0"), - .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", from: "0.8.0"), + .package(url: "https://github.com/attaswift/BigInt.git", from: "4.0.0"), + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", from: "1.0.0"), .package(url: "https://github.com/Boilertalk/secp256k1.swift.git", from: "0.1.1"), // PromiseKit dependency .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.0.0"), // Test dependencies - .package(url: "https://github.com/Quick/Quick.git", from: "1.2.0"), - .package(url: "https://github.com/Quick/Nimble.git", from: "7.0.3") + .package(url: "https://github.com/Quick/Quick.git", from: "2.1.0"), + .package(url: "https://github.com/Quick/Nimble.git", from: "8.0.2") ], targets: [ .target( diff --git a/Web3.podspec b/Web3.podspec index dce1bb18..f5798b5b 100644 --- a/Web3.podspec +++ b/Web3.podspec @@ -32,8 +32,8 @@ HTTP RPC interface provided by this library or a custom RPC interface ss.source_files = 'Web3/Classes/Core/**/*' # Core dependencies - ss.dependency 'BigInt', '~> 3.1' - ss.dependency 'CryptoSwift', '~> 0.8' + ss.dependency 'BigInt', '~> 4.0' + ss.dependency 'CryptoSwift', '~> 1.0' ss.dependency 'secp256k1.swift', '~> 0.1' end From 1ba62583c1f6339dd51b8f5c206f4348b71d5fed Mon Sep 17 00:00:00 2001 From: Koray Koska Date: Fri, 5 Jul 2019 00:13:44 +0200 Subject: [PATCH 2/6] Update travis xcode version --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index f48298f4..22354faf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,8 +13,8 @@ dist: trusty language: generic sudo: required -osx_image: xcode9.4 -xcode_sdk: iphonesimulator11.4 +osx_image: xcode10.2 +xcode_sdk: iphonesimulator12.2 # cache: cocoapods # podfile: Example/Podfile before_install: @@ -38,7 +38,7 @@ script: - while sleep 60; do echo "=====[ $SECONDS seconds still running ]====="; done & # Actual script - if [ $TRAVIS_OS_NAME == "osx" ]; then - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/Web3.xcworkspace -scheme Web3-Example -sdk iphonesimulator11.4 -destination 'platform=iOS Simulator,name=iPhone X,OS=11.4' ONLY_ACTIVE_ARCH=YES | xcpretty; + set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/Web3.xcworkspace -scheme Web3-Example -sdk iphonesimulator12.2 -destination 'platform=iOS Simulator,name=iPhone X,OS=12.2' ONLY_ACTIVE_ARCH=YES | xcpretty; pod lib lint --allow-warnings; fi - swift build From 992692c41f0a7819bff3573eadffe39c6210ea14 Mon Sep 17 00:00:00 2001 From: Koray Koska Date: Fri, 5 Jul 2019 00:14:53 +0200 Subject: [PATCH 3/6] Update .swift-version --- .swift-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.swift-version b/.swift-version index 4d0dcda0..6b244dcd 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.1.2 +5.0.1 From 5229b534cccc2f4c7f1706aa9853d7f30f313705 Mon Sep 17 00:00:00 2001 From: Koray Koska Date: Sun, 7 Jul 2019 11:31:18 +0200 Subject: [PATCH 4/6] Fix errors and warnings for swift5 --- Example/Pods/Pods.xcodeproj/project.pbxproj | 42 ++++++------- .../JsonTests/EthereumBlockObjectTests.swift | 45 -------------- Web3/Classes/ContractABI/ABI/Eth+ABI.swift | 2 +- .../ContractABI/ABI/SolidityType.swift | 52 +++++++++++++++- .../Contract/ContractPromiseExtensions.swift | 8 +-- .../Classes/ContractABI/Contract/ERC165.swift | 2 +- Web3/Classes/ContractABI/Contract/ERC20.swift | 23 ++++--- .../Classes/ContractABI/Contract/ERC721.swift | 28 ++++----- .../ContractABI/Contract/Eth+Contract.swift | 6 +- .../ContractABI/Contract/SolidityEvent.swift | 8 +-- .../Contract/SolidityFunction.swift | 2 +- .../Contract/SolidityInvocation.swift | 6 +- .../Core/Json/EthereumBlockObject.swift | 29 ++++++--- Web3/Classes/Core/Json/EthereumCall.swift | 16 ++--- Web3/Classes/Core/Json/EthereumData.swift | 8 +-- .../Classes/Core/Json/EthereumLogObject.swift | 8 ++- Web3/Classes/Core/Json/EthereumQuantity.swift | 6 +- .../Core/Json/EthereumQuantityTag.swift | 23 +++---- .../Core/Json/EthereumSyncStatusObject.swift | 9 +-- .../Core/Json/EthereumTransactionObject.swift | 16 +++-- .../EthereumTransactionReceiptObject.swift | 15 +++-- Web3/Classes/Core/Json/EthereumValue.swift | 32 +++++----- Web3/Classes/Core/RLP/RLPItem.swift | 26 ++++---- Web3/Classes/Core/Toolbox/Int+ETH.swift | 12 ++-- .../Core/Transaction/EthereumAddress.swift | 5 +- .../Core/Transaction/EthereumPrivateKey.swift | 5 +- .../Core/Transaction/EthereumPublicKey.swift | 4 +- .../Transaction/EthereumTransaction.swift | 29 ++++++--- .../FoundationHTTP/Web3+HTTPInitializer.swift | 2 +- Web3/Classes/PromiseKit/Web3+PromiseKit.swift | 62 +++++++++---------- 30 files changed, 286 insertions(+), 245 deletions(-) diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 10b72909..f9de5dc0 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -498,7 +498,7 @@ 1806DA8A015C8B379CE568F0E8F006F8 /* EthereumData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumData.swift; sourceTree = ""; }; 1841035DDD3B3AFE2756647310317FD6 /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; 19C6B18DF40D9BBCA4CEE08C4968C305 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; - 1A73ABF9D3CE1B4C1DA1CC6C281508E8 /* Quick.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Quick.framework; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1A73ABF9D3CE1B4C1DA1CC6C281508E8 /* Quick.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1B8247950E015D9B65C4467530309ABA /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; 1BC28AD4527A48D2DAE336DBFA88F91D /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Sources/Nimble/Utils/Functional.swift; sourceTree = ""; }; 1F26CF1E8C408C36486E203305DB21BD /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = secp256k1/Classes/secp256k1/src/eckey.h; sourceTree = ""; }; @@ -507,7 +507,7 @@ 211CB7E127D7F40330BFAF4F8EFF356E /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; 2128D08E3B043DFFC8E85F9E7021F516 /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; 21C4CBB7A8B5DC8C6B4302F95BCEB095 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 22A5CA07622D0C1E300D80BF58508B8F /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Nimble.framework; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 22A5CA07622D0C1E300D80BF58508B8F /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 23009ACEA882CF8491E004B72E01065F /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; 23F992A6E4A33A886E6C5AAC38BE8A7B /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = secp256k1/Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; 24A363C158993A74A2E16060D390A4A8 /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; @@ -532,7 +532,7 @@ 2E891EC1DEE6CDBD70868FF4FD85257D /* UnsignedInteger+BytesConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UnsignedInteger+BytesConvertible.swift"; sourceTree = ""; }; 2FBA183F0D910CFF423A57A0DAEE02D2 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; 30C6DA62D78140F597FF34EB9BC36E9F /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; - 31500F9CFF1D5B27872E829095EAAD51 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 31500F9CFF1D5B27872E829095EAAD51 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 335983E6AD34865510138C2694B4EC89 /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = secp256k1/Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; 33F25C7124B03BBBD033CA4B78924260 /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; 3589AA2CC874BCD6E4D9CCA7BAC5B6DA /* Pods-Web3_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Web3_Tests.debug.xcconfig"; sourceTree = ""; }; @@ -609,11 +609,11 @@ 639B09B3688B60572B54B80EC9242617 /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; 65B12C5B72A159A8EB9F7BF7577C9A4A /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; 65EDDEE824FE8C02B392E1C108C7544A /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; - 660690BAEB20133B461E90681347E895 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = secp256k1/Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; + 660690BAEB20133B461E90681347E895 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = secp256k1.c; path = secp256k1/Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; 6660A257A456EB9F9E4CAA918993BFDD /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1/Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; 6710C1BDB439E8BACCD5845ADF11C8F0 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; 6775400A5B8030F2C41E3764B1A9403E /* secp256k1.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1.swift-umbrella.h"; sourceTree = ""; }; - 67A6289602834F825474F86E4D6F7C1F /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; + 67A6289602834F825474F86E4D6F7C1F /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; 67DA42A11C9B2811AB791C650634A418 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = secp256k1/Classes/secp256k1/src/scalar.h; sourceTree = ""; }; 68A36F2EC072B044530D9E4B5A3827E7 /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; 692CB9535D19794A232B6DF3DF72FC95 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; @@ -654,7 +654,7 @@ 7E23F75E2F3950A2010E6ACF0897A9C4 /* Web3+HTTPInitializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+HTTPInitializer.swift"; path = "Web3/Classes/FoundationHTTP/Web3+HTTPInitializer.swift"; sourceTree = ""; }; 7E747D91CACB2E7738DAA5B95FD27182 /* EthereumPublicKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumPublicKey.swift; sourceTree = ""; }; 7F4157581703B8597A64438E7CBF28B7 /* Exports+PromiseKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Exports+PromiseKit.swift"; path = "Web3/Classes/PromiseKit/Exports+PromiseKit.swift"; sourceTree = ""; }; - 80633CB5B67352EB90A228FB07368B9F /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 80633CB5B67352EB90A228FB07368B9F /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 80DF717332ACA0DCC4BEF1EFA951D086 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; 81412DE46F248E4C7E1306F3FABC5CC9 /* ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABI.swift; sourceTree = ""; }; 81D1BB938301BC167842C8B4D3608FEF /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; @@ -686,7 +686,7 @@ 8FA28D8A834252A09BBE506754111459 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; 905536FA82FADFE7ECAF83DEEE838A26 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = Sources/Random.swift; sourceTree = ""; }; 905D988C6D0C73CC5F74C8874AE43540 /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; - 9090D25FFD49682E8CF8406808663F3B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 9090D25FFD49682E8CF8406808663F3B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 92EFDCD60E78961A56B0C305BEABE7AD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 938788AF636369ACF3135F143013542B /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = secp256k1/Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; 93F031CA9C413089F27A67389F7A1580 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; @@ -706,7 +706,7 @@ 9BCB5B457052BBA304FAE1F9FCE1534D /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = Sources/Comparable.swift; sourceTree = ""; }; 9CC91563C01B8E4304F8C3B0A3FE8212 /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; 9CD340A6C4B12AFDC5BB0C5D5D58BCC3 /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9E570E5A92198662DD86FE6E23B88BA2 /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; 9E99A66E087D7B71CFC50C59EAFB7225 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9FA4AC8BA6F81E85613BA6AD144C8517 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; @@ -718,10 +718,10 @@ A3D9596D8377C7A8A062C997DFB0F664 /* Pods-Web3_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Web3_Tests.release.xcconfig"; sourceTree = ""; }; A44597A1E65254F0FF3F44F677D1FA15 /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; A58F39328C6DAF1EB1E1DD5AB79F4F1A /* secp256k1.swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1.swift.xcconfig; sourceTree = ""; }; - A59A42DDF506E1C48202E99AE6CC4860 /* Pods_Web3_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Web3_Tests.framework; path = "Pods-Web3_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + A59A42DDF506E1C48202E99AE6CC4860 /* Pods_Web3_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A68C1E4A9A95876DF949A18EA0B3A2DD /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; A6AB90CE4CAAAA935988810A615F26D8 /* Types+EthereumValueConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Types+EthereumValueConvertible.swift"; sourceTree = ""; }; - A762179A16198E27F78399BC2DF7B1CC /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A762179A16198E27F78399BC2DF7B1CC /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A7D9A6FD5906958CD731F51462C90BD0 /* EthereumSyncStatusObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumSyncStatusObject.swift; sourceTree = ""; }; A7FC0112050A708B9A7F6A8C033E470D /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = Sources/CryptoSwift/Scrypt.swift; sourceTree = ""; }; A84CB579BCD1B99B76EE0B703FFC9020 /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; @@ -737,7 +737,7 @@ AD3241C61D46E469448C4D5503873593 /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; AE7A65BACB10F225BB4B46E70DF49C77 /* UnsignedInteger+Shifting.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UnsignedInteger+Shifting.swift"; sourceTree = ""; }; AECC72784EF1B8D03934912989723FA7 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; - AED76DB0DC83E98683CE5A6863FB7B09 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; + AED76DB0DC83E98683CE5A6863FB7B09 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lax_der_privatekey_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; AEED7779AF23CBC6B72C886B56DFB3EB /* LogEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LogEvent.swift; path = Sources/LogEvent.swift; sourceTree = ""; }; AEEE5E86A85A0252F15481355FE8E4F5 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; B093CF0C1F71DE02C8E65B185D5B4F5D /* Pods-Web3_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Web3_Tests-acknowledgements.plist"; sourceTree = ""; }; @@ -785,7 +785,7 @@ CA58DD640F0A168BA3354C3E711FC1DA /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = Sources/Shifts.swift; sourceTree = ""; }; CA85FD2E23EBC1270DB1C0932CDCD5C2 /* Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Await.swift; path = Sources/Nimble/Utils/Await.swift; sourceTree = ""; }; CA8BBD91B91EA15CB4149971B728850D /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; - CB300F021C5FB5B916B3CDD0A2FA5B2B /* Web3.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Web3.framework; path = Web3.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CB300F021C5FB5B916B3CDD0A2FA5B2B /* Web3.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Web3.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CBFC668B85774EE82EE516A39D052F81 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "secp256k1/Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; CDF6AB032E932E7F67032A2F35C6777B /* SolidityEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SolidityEvent.swift; sourceTree = ""; }; CE7BE0EB74B4E7BCDE553F8CD1657971 /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; @@ -815,14 +815,14 @@ D9AAEB2591BBC6F99108C58D56962534 /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; DA361275BA57D8363E2D1FD10863E28B /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; DA383C37C5F380CCCCECDA735AFD0E77 /* Web3Provider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Web3Provider.swift; sourceTree = ""; }; - DA431BD1EEBE3A60A0D7CAFD98C64305 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = secp256k1.framework; path = secp256k1.swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA431BD1EEBE3A60A0D7CAFD98C64305 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DCFCCF8198BB225C66F2DEFCF8943783 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; DDEEF266566321C3A377CCF0491D1DCD /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = Sources/GCD.swift; sourceTree = ""; }; DF3BBD1EA70B4C367D2C2E34FF02EE1D /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; DF610204B86A7BE697A5DE4B3ED3FA17 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; DF904658A715FE9EBAC2B5A5BFEC0350 /* PromiseKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PromiseKit-Info.plist"; sourceTree = ""; }; E020BCD290C3FE0E94A298C3655285D8 /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = secp256k1/Classes/secp256k1/src/group.h; sourceTree = ""; }; - E029D9EAECAEF059F835738257F5F285 /* Web3.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Web3.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + E029D9EAECAEF059F835738257F5F285 /* Web3.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = Web3.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; E02E666854B62A77BFC8AD44C8F4C22C /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; E03F24DA2E12A3AB13CE19308331EB9A /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; E0757CBC6DA7E1A46E1C0D10BEED254D /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; @@ -856,7 +856,7 @@ F0364E81EEC6028D6F0B0A0E99AB5731 /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = secp256k1/Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; F07AD0F96544427ABB93DC568F5CE86D /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; F0994D146A07AE5F9ABFF4038DC76E3C /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; - F273D3009D7ED8402E4769822AB88D82 /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; + F273D3009D7ED8402E4769822AB88D82 /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lax_der_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; F3D0CB5FA711AE26A29C7EAFC09461F8 /* Eth+Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Eth+Contract.swift"; sourceTree = ""; }; F489FA37E39E002ABF346AB15B2E1E64 /* EthereumPrivateKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumPrivateKey.swift; sourceTree = ""; }; F4A7A7E66502122347F71B12BE3B6398 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; @@ -868,7 +868,7 @@ F6FA8C8BC40688D2B9431F4171E36A33 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; F742A87BD52DB73E00F68A0CB29D8D89 /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; F76226E8EFE3895D2D046A673865942F /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; - F8E64EBD0964710861A3DD91D2B6A94B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + F8E64EBD0964710861A3DD91D2B6A94B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; F97869C54F5EA625031219590CDC128A /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = Sources/Hashable.swift; sourceTree = ""; }; FB2F3A6D63CF4FF2B97E740227CA06EC /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; FFCBA2F7C279121825A61AE78FB9DCEE /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; @@ -1070,7 +1070,6 @@ CE7BE0EB74B4E7BCDE553F8CD1657971 /* XCTestObservationCenter+Register.m */, 7B5346026C122AED0047EED8E8E06E40 /* Support Files */, ); - name = Nimble; path = Nimble; sourceTree = ""; }; @@ -1167,7 +1166,6 @@ EAD50E8C3B95346AE3AB2A8EE9E0F23B /* Words and Bits.swift */, 1583EB07A7C1E8391025FB1009331E65 /* Support Files */, ); - name = BigInt; path = BigInt; sourceTree = ""; }; @@ -1206,7 +1204,6 @@ B325C2782CF0C41EAC424C582F704485 /* XCTestSuite+QuickTestSuiteBuilder.m */, C43C2EB64F862147A95813344A8B90CD /* Support Files */, ); - name = Quick; path = Quick; sourceTree = ""; }; @@ -1356,7 +1353,6 @@ F6484B31B7BBAA40F5F40C0C188BBCBC /* util.h */, CAA1C16917E7905F4BE2A93747322461 /* Support Files */, ); - name = secp256k1.swift; path = secp256k1.swift; sourceTree = ""; }; @@ -1490,7 +1486,6 @@ 170D6B8AF1DDA5FA335C364A06E549CB /* CorePromise */, 5BF9BBD4525CA0018D2CD69AADB14D06 /* Support Files */, ); - name = PromiseKit; path = PromiseKit; sourceTree = ""; }; @@ -1641,7 +1636,6 @@ 3F34A78B4685DFB7498025378FA7A017 /* ZeroPadding.swift */, CE17FF893FC8FC608EEDBB4D59518375 /* Support Files */, ); - name = CryptoSwift; path = CryptoSwift; sourceTree = ""; }; @@ -1970,6 +1964,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; @@ -3056,8 +3051,7 @@ MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; diff --git a/Example/Tests/JsonTests/EthereumBlockObjectTests.swift b/Example/Tests/JsonTests/EthereumBlockObjectTests.swift index 217736ba..a7f47616 100644 --- a/Example/Tests/JsonTests/EthereumBlockObjectTests.swift +++ b/Example/Tests/JsonTests/EthereumBlockObjectTests.swift @@ -185,48 +185,3 @@ class EthereumBlockObjectTests: QuickSpec { } } } - -extension EthereumBlockObject { - - init( - number: EthereumQuantity?, - hash: EthereumData?, - parentHash: EthereumData, - nonce: EthereumData?, - sha3Uncles: EthereumData, - logsBloom: EthereumData?, - transactionsRoot: EthereumData, - stateRoot: EthereumData, - receiptsRoot: EthereumData, - miner: EthereumAddress, - difficulty: EthereumQuantity, - totalDifficulty: EthereumQuantity, - extraData: EthereumData, - size: EthereumQuantity, - gasLimit: EthereumQuantity, - gasUsed: EthereumQuantity, - timestamp: EthereumQuantity, - transactions: [Transaction], - uncles: [EthereumData] - ) { - self.number = number - self.hash = hash - self.parentHash = parentHash - self.nonce = nonce - self.sha3Uncles = sha3Uncles - self.logsBloom = logsBloom - self.transactionsRoot = transactionsRoot - self.stateRoot = stateRoot - self.receiptsRoot = receiptsRoot - self.miner = miner - self.difficulty = difficulty - self.totalDifficulty = totalDifficulty - self.extraData = extraData - self.size = size - self.gasLimit = gasLimit - self.gasUsed = gasUsed - self.timestamp = timestamp - self.transactions = transactions - self.uncles = uncles - } -} diff --git a/Web3/Classes/ContractABI/ABI/Eth+ABI.swift b/Web3/Classes/ContractABI/ABI/Eth+ABI.swift index a76f35ff..3c026fc0 100644 --- a/Web3/Classes/ContractABI/ABI/Eth+ABI.swift +++ b/Web3/Classes/ContractABI/ABI/Eth+ABI.swift @@ -13,7 +13,7 @@ import Foundation public extension Web3.Eth { /// The struct holding all `abi` methods - public var abi: ABI.Type { + var abi: ABI.Type { return ABI.self } diff --git a/Web3/Classes/ContractABI/ABI/SolidityType.swift b/Web3/Classes/ContractABI/ABI/SolidityType.swift index b22506f7..cb22c0ef 100644 --- a/Web3/Classes/ContractABI/ABI/SolidityType.swift +++ b/Web3/Classes/ContractABI/ABI/SolidityType.swift @@ -158,7 +158,7 @@ public indirect enum SolidityType { public extension SolidityType.ValueType { - public var nativeType: ABIConvertible.Type? { + var nativeType: ABIConvertible.Type? { switch self { case .uint(let bits): switch bits { @@ -202,7 +202,7 @@ public extension SolidityType.ValueType { } /// Whether or not the type is considered dynamic - public var isDynamic: Bool { + var isDynamic: Bool { switch self { case .string: // All strings are dynamic @@ -216,7 +216,7 @@ public extension SolidityType.ValueType { } /// String representation used for ABI signature encoding - public var stringValue: String { + var stringValue: String { switch self { case .uint(let bits): return "uint\(bits)" @@ -263,6 +263,21 @@ extension SolidityType: Equatable { } } +extension SolidityType: Hashable { + + public func hash(into hasher: inout Hasher) { + switch self { + case .type(let enumType): + hasher.combine(enumType) + case .array(let enumType, let length): + hasher.combine(enumType) + hasher.combine(length) + case .tuple(let enumType): + hasher.combine(enumType) + } + } +} + extension SolidityType.ValueType: Equatable { public static func ==(_ a: SolidityType.ValueType, _ b: SolidityType.ValueType) -> Bool { switch (a, b) { @@ -287,3 +302,34 @@ extension SolidityType.ValueType: Equatable { } } } + +extension SolidityType.ValueType: Hashable { + + public func hash(into hasher: inout Hasher) { + switch self { + case .uint(let bits): + hasher.combine("0x00") + hasher.combine(bits) + case .int(let bits): + hasher.combine("0x01") + hasher.combine(bits) + case .address: + hasher.combine("0x02") + case .bool: + hasher.combine("0x03") + case .bytes(let length): + hasher.combine("0x04") + hasher.combine(length) + case .string: + hasher.combine("0x05") + case .fixed(let bits, let length): + hasher.combine("0x06") + hasher.combine(bits) + hasher.combine(length) + case .ufixed(let bits, let length): + hasher.combine("0x07") + hasher.combine(bits) + hasher.combine(length) + } + } +} diff --git a/Web3/Classes/ContractABI/Contract/ContractPromiseExtensions.swift b/Web3/Classes/ContractABI/Contract/ContractPromiseExtensions.swift index ad29be82..dea7a400 100644 --- a/Web3/Classes/ContractABI/Contract/ContractPromiseExtensions.swift +++ b/Web3/Classes/ContractABI/Contract/ContractPromiseExtensions.swift @@ -18,19 +18,19 @@ import PromiseKit public extension SolidityInvocation { - public func call(block: EthereumQuantityTag = .latest) -> Promise<[String: Any]> { + func call(block: EthereumQuantityTag = .latest) -> Promise<[String: Any]> { return Promise { seal in self.call(block: block, completion: seal.resolve) } } - public func send(nonce: EthereumQuantity? = nil, from: EthereumAddress, value: EthereumQuantity?, gas: EthereumQuantity, gasPrice: EthereumQuantity?) -> Promise { + func send(nonce: EthereumQuantity? = nil, from: EthereumAddress, value: EthereumQuantity?, gas: EthereumQuantity, gasPrice: EthereumQuantity?) -> Promise { return Promise { seal in self.send(nonce: nonce, from: from, value: value, gas: gas, gasPrice: gasPrice, completion: seal.resolve) } } - public func estimateGas(from: EthereumAddress? = nil, gas: EthereumQuantity? = nil, value: EthereumQuantity? = nil) -> Promise { + func estimateGas(from: EthereumAddress? = nil, gas: EthereumQuantity? = nil, value: EthereumQuantity? = nil) -> Promise { return Promise { seal in self.estimateGas(from: from, gas: gas, value: value, completion: seal.resolve) } @@ -39,7 +39,7 @@ public extension SolidityInvocation { public extension SolidityConstructorInvocation { - public func send(nonce: EthereumQuantity? = nil, from: EthereumAddress, value: EthereumQuantity = 0, gas: EthereumQuantity, gasPrice: EthereumQuantity?) -> Promise { + func send(nonce: EthereumQuantity? = nil, from: EthereumAddress, value: EthereumQuantity = 0, gas: EthereumQuantity, gasPrice: EthereumQuantity?) -> Promise { return Promise { seal in self.send(nonce: nonce, from: from, value: value, gas: gas, gasPrice: gasPrice, completion: seal.resolve) } diff --git a/Web3/Classes/ContractABI/Contract/ERC165.swift b/Web3/Classes/ContractABI/Contract/ERC165.swift index 6dc69c2f..7d369082 100644 --- a/Web3/Classes/ContractABI/Contract/ERC165.swift +++ b/Web3/Classes/ContractABI/Contract/ERC165.swift @@ -18,7 +18,7 @@ public extension ERC165Contract { /// /// - Parameter interface: first 4 bytes of keccak hash of the interface, expressed as a string (ex: "0x01ffc9a7") /// - Returns: Invocation for this method with the interface - public func supportsInterface(interface: String) -> SolidityInvocation { + func supportsInterface(interface: String) -> SolidityInvocation { let inputs = [SolidityFunctionParameter(name: "_interface", type: .bytes(length: 4))] let outputs = [SolidityFunctionParameter(name: "_supportsInterface", type: .bool)] let method = SolidityConstantFunction(name: "supportsInterface", inputs: inputs, outputs: outputs, handler: self) diff --git a/Web3/Classes/ContractABI/Contract/ERC20.swift b/Web3/Classes/ContractABI/Contract/ERC20.swift index eeaa202d..7cba5131 100644 --- a/Web3/Classes/ContractABI/Contract/ERC20.swift +++ b/Web3/Classes/ContractABI/Contract/ERC20.swift @@ -52,7 +52,7 @@ open class GenericERC20Contract: StaticContract, ERC20Contract, AnnotatedERC20 { public extension ERC20Contract { - public static var Transfer: SolidityEvent { + static var Transfer: SolidityEvent { let inputs: [SolidityEvent.Parameter] = [ SolidityEvent.Parameter(name: "_from", type: .address, indexed: true), SolidityEvent.Parameter(name: "_to", type: .address, indexed: true), @@ -61,7 +61,7 @@ public extension ERC20Contract { return SolidityEvent(name: "Transfer", anonymous: false, inputs: inputs) } - public static var Approval: SolidityEvent { + static var Approval: SolidityEvent { let inputs: [SolidityEvent.Parameter] = [ SolidityEvent.Parameter(name: "_owner", type: .address, indexed: true), SolidityEvent.Parameter(name: "_spender", type: .address, indexed: true), @@ -70,20 +70,20 @@ public extension ERC20Contract { return SolidityEvent(name: "Approval", anonymous: false, inputs: inputs) } - public func totalSupply() -> SolidityInvocation { + func totalSupply() -> SolidityInvocation { let outputs = [SolidityFunctionParameter(name: "_totalSupply", type: .uint256)] let method = SolidityConstantFunction(name: "totalSupply", outputs: outputs, handler: self) return method.invoke() } - public func balanceOf(address: EthereumAddress) -> SolidityInvocation { + func balanceOf(address: EthereumAddress) -> SolidityInvocation { let inputs = [SolidityFunctionParameter(name: "_owner", type: .address)] let outputs = [SolidityFunctionParameter(name: "_balance", type: .uint256)] let method = SolidityConstantFunction(name: "balanceOf", inputs: inputs, outputs: outputs, handler: self) return method.invoke(address) } - public func approve(spender: EthereumAddress, value: BigUInt) -> SolidityInvocation { + func approve(spender: EthereumAddress, value: BigUInt) -> SolidityInvocation { let inputs = [ SolidityFunctionParameter(name: "_spender", type: .address), SolidityFunctionParameter(name: "_value", type: .uint256) @@ -92,7 +92,7 @@ public extension ERC20Contract { return method.invoke(spender, value) } - public func allowance(owner: EthereumAddress, spender: EthereumAddress) -> SolidityInvocation { + func allowance(owner: EthereumAddress, spender: EthereumAddress) -> SolidityInvocation { let inputs = [ SolidityFunctionParameter(name: "_owner", type: .address), SolidityFunctionParameter(name: "_spender", type: .address) @@ -104,7 +104,7 @@ public extension ERC20Contract { return method.invoke(owner, spender) } - public func transferFrom(from: EthereumAddress, to: EthereumAddress, value: BigUInt) -> SolidityInvocation { + func transferFrom(from: EthereumAddress, to: EthereumAddress, value: BigUInt) -> SolidityInvocation { let inputs = [ SolidityFunctionParameter(name: "_from", type: .address), SolidityFunctionParameter(name: "_to", type: .address), @@ -114,7 +114,7 @@ public extension ERC20Contract { return method.invoke(from, to, value) } - public func transfer(to: EthereumAddress, value: BigUInt) -> SolidityInvocation { + func transfer(to: EthereumAddress, value: BigUInt) -> SolidityInvocation { let inputs = [ SolidityFunctionParameter(name: "_to", type: .address), SolidityFunctionParameter(name: "_value", type: .uint256) @@ -128,7 +128,7 @@ public extension ERC20Contract { public extension AnnotatedERC20 { - public func name() -> SolidityInvocation { + func name() -> SolidityInvocation { let outputs = [ SolidityFunctionParameter(name: "_name", type: .string) ] @@ -136,7 +136,7 @@ public extension AnnotatedERC20 { return method.invoke() } - public func symbol() -> SolidityInvocation { + func symbol() -> SolidityInvocation { let outputs = [ SolidityFunctionParameter(name: "_symbol", type: .string) ] @@ -144,14 +144,13 @@ public extension AnnotatedERC20 { return method.invoke() } - public func decimals() -> SolidityInvocation { + func decimals() -> SolidityInvocation { let outputs = [ SolidityFunctionParameter(name: "_decimals", type: .uint8) ] let method = SolidityConstantFunction(name: "decimals", inputs: [], outputs: outputs, handler: self) return method.invoke() } - } diff --git a/Web3/Classes/ContractABI/Contract/ERC721.swift b/Web3/Classes/ContractABI/Contract/ERC721.swift index 7d26b337..55fbaa2a 100644 --- a/Web3/Classes/ContractABI/Contract/ERC721.swift +++ b/Web3/Classes/ContractABI/Contract/ERC721.swift @@ -60,7 +60,7 @@ open class GenericERC721Contract: StaticContract, ERC721Contract { public extension ERC721Contract { - public static var Transfer: SolidityEvent { + static var Transfer: SolidityEvent { let inputs: [SolidityEvent.Parameter] = [ SolidityEvent.Parameter(name: "_from", type: .address, indexed: true), SolidityEvent.Parameter(name: "_to", type: .address, indexed: true), @@ -69,7 +69,7 @@ public extension ERC721Contract { return SolidityEvent(name: "Transfer", anonymous: false, inputs: inputs) } - public static var Approval: SolidityEvent { + static var Approval: SolidityEvent { let inputs: [SolidityEvent.Parameter] = [ SolidityEvent.Parameter(name: "_owner", type: .address, indexed: true), SolidityEvent.Parameter(name: "_approved", type: .address, indexed: true), @@ -78,21 +78,21 @@ public extension ERC721Contract { return SolidityEvent(name: "Approval", anonymous: false, inputs: inputs) } - public func balanceOf(address: EthereumAddress) -> SolidityInvocation { + func balanceOf(address: EthereumAddress) -> SolidityInvocation { let inputs = [SolidityFunctionParameter(name: "_owner", type: .address)] let outputs = [SolidityFunctionParameter(name: "_balance", type: .uint256)] let method = SolidityConstantFunction(name: "balanceOf", inputs: inputs, outputs: outputs, handler: self) return method.invoke(address) } - public func ownerOf(tokenId: BigUInt) -> SolidityInvocation { + func ownerOf(tokenId: BigUInt) -> SolidityInvocation { let inputs = [SolidityFunctionParameter(name: "_tokenId", type: .uint256)] let outputs = [SolidityFunctionParameter(name: "_owner", type: .address)] let method = SolidityConstantFunction(name: "ownerOf", inputs: inputs, outputs: outputs, handler: self) return method.invoke(tokenId) } - public func approve(to: EthereumAddress, tokenId: BigUInt) -> SolidityInvocation { + func approve(to: EthereumAddress, tokenId: BigUInt) -> SolidityInvocation { let inputs = [ SolidityFunctionParameter(name: "_to", type: .address), SolidityFunctionParameter(name: "_tokenId", type: .uint256) @@ -101,14 +101,14 @@ public extension ERC721Contract { return method.invoke(to, tokenId) } - public func getApproved(tokenId: BigUInt) -> SolidityInvocation { + func getApproved(tokenId: BigUInt) -> SolidityInvocation { let inputs = [SolidityFunctionParameter(name: "_tokenId", type: .uint256)] let outputs = [SolidityFunctionParameter(name: "_approved", type: .address)] let method = SolidityConstantFunction(name: "getApproved", inputs: inputs, outputs: outputs, handler: self) return method.invoke(tokenId) } - public func transferFrom(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt) -> SolidityInvocation { + func transferFrom(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt) -> SolidityInvocation { let inputs = [ SolidityFunctionParameter(name: "_from", type: .address), SolidityFunctionParameter(name: "_to", type: .address), @@ -118,7 +118,7 @@ public extension ERC721Contract { return method.invoke(from, to, tokenId) } - public func transfer(to: EthereumAddress, tokenId: BigUInt) -> SolidityInvocation { + func transfer(to: EthereumAddress, tokenId: BigUInt) -> SolidityInvocation { let inputs = [ SolidityFunctionParameter(name: "_to", type: .address), SolidityFunctionParameter(name: "_tokenId", type: .uint256) @@ -131,19 +131,19 @@ public extension ERC721Contract { public extension AnnotatedERC721 { - public func name() -> SolidityInvocation { + func name() -> SolidityInvocation { let outputs = [SolidityFunctionParameter(name: "_name", type: .string)] let method = SolidityConstantFunction(name: "name", outputs: outputs, handler: self) return method.invoke() } - public func symbol() -> SolidityInvocation { + func symbol() -> SolidityInvocation { let outputs = [SolidityFunctionParameter(name: "_symbol", type: .string)] let method = SolidityConstantFunction(name: "symbol", outputs: outputs, handler: self) return method.invoke() } - public func tokenURI(tokenId: BigUInt) -> SolidityInvocation { + func tokenURI(tokenId: BigUInt) -> SolidityInvocation { let inputs = [SolidityFunctionParameter(name: "_tokenId", type: .uint256)] let outputs = [SolidityFunctionParameter(name: "_tokenURI", type: .string)] let method = SolidityConstantFunction(name: "tokenURI", inputs: inputs, outputs: outputs, handler: self) @@ -154,20 +154,20 @@ public extension AnnotatedERC721 { public extension EnumeratedERC721 { - public func totalSupply() -> SolidityInvocation { + func totalSupply() -> SolidityInvocation { let outputs = [SolidityFunctionParameter(name: "_totalSupply", type: .uint256)] let method = SolidityConstantFunction(name: "totalSupply", outputs: outputs, handler: self) return method.invoke() } - public func tokenByIndex(index: BigUInt) -> SolidityInvocation { + func tokenByIndex(index: BigUInt) -> SolidityInvocation { let inputs = [SolidityFunctionParameter(name: "_index", type: .uint256)] let outputs = [SolidityFunctionParameter(name: "_tokenId", type: .uint256)] let method = SolidityConstantFunction(name: "tokenByIndex", inputs: inputs, outputs: outputs, handler: self) return method.invoke(index) } - public func tokenOfOwnerByIndex(owner: EthereumAddress, index: BigUInt) -> SolidityInvocation { + func tokenOfOwnerByIndex(owner: EthereumAddress, index: BigUInt) -> SolidityInvocation { let inputs = [ SolidityFunctionParameter(name: "_owner", type: .address), SolidityFunctionParameter(name: "_index", type: .uint256) diff --git a/Web3/Classes/ContractABI/Contract/Eth+Contract.swift b/Web3/Classes/ContractABI/Contract/Eth+Contract.swift index 90904399..42ea485a 100644 --- a/Web3/Classes/ContractABI/Contract/Eth+Contract.swift +++ b/Web3/Classes/ContractABI/Contract/Eth+Contract.swift @@ -32,7 +32,7 @@ public extension Web3.Eth { /// - address: The address of the contract, if it is deployed /// - Returns: Instance of the dynamic contract from the data provided /// - Throws: Error when the ABI data cannot be decoded - public func Contract(json data: Data, abiKey: String?, address: EthereumAddress?) throws -> DynamicContract { + func Contract(json data: Data, abiKey: String?, address: EthereumAddress?) throws -> DynamicContract { let decoder = JSONDecoder() // Many tools generate a JSON file or response that includes the actual ABI nested under another key if let key = abiKey { @@ -56,7 +56,7 @@ public extension Web3.Eth { /// - name: Name of your contract instance /// - address: The address of the contract, if it is deployed /// - Returns: Instance of the dynamic contract as represented in the provided ABI - public func Contract(abi: [ABIObject], address: EthereumAddress? = nil) -> DynamicContract { + func Contract(abi: [ABIObject], address: EthereumAddress? = nil) -> DynamicContract { return DynamicContract(abi: abi, address: address, eth: self) } @@ -67,7 +67,7 @@ public extension Web3.Eth { /// - type: The contract type to initialize. Must conform to `StaticContract` /// - address: Address the contract is deployed at, if it is deployed /// - Returns: An instance of the contract that is configured with this instance of Web3 - public func Contract(type: T.Type, address: EthereumAddress? = nil) -> T { + func Contract(type: T.Type, address: EthereumAddress? = nil) -> T { return T(address: address, eth: self) } diff --git a/Web3/Classes/ContractABI/Contract/SolidityEvent.swift b/Web3/Classes/ContractABI/Contract/SolidityEvent.swift index 71967ce2..c7c43a0e 100644 --- a/Web3/Classes/ContractABI/Contract/SolidityEvent.swift +++ b/Web3/Classes/ContractABI/Contract/SolidityEvent.swift @@ -98,10 +98,10 @@ public struct SolidityEvent { extension SolidityEvent: Hashable { public static func == (lhs: SolidityEvent, rhs: SolidityEvent) -> Bool { - return lhs.hashValue == rhs.hashValue + return lhs.signature == rhs.signature } - - public var hashValue: Int { - return signature.hashValue + + public func hash(into hasher: inout Hasher) { + hasher.combine(signature) } } diff --git a/Web3/Classes/ContractABI/Contract/SolidityFunction.swift b/Web3/Classes/ContractABI/Contract/SolidityFunction.swift index b4b9f3cc..850bede9 100644 --- a/Web3/Classes/ContractABI/Contract/SolidityFunction.swift +++ b/Web3/Classes/ContractABI/Contract/SolidityFunction.swift @@ -77,7 +77,7 @@ public protocol SolidityFunction: class { public extension SolidityFunction { - public var signature: String { + var signature: String { return "\(name)(\(inputs.map { $0.type.stringValue }.joined(separator: ",")))" } diff --git a/Web3/Classes/ContractABI/Contract/SolidityInvocation.swift b/Web3/Classes/ContractABI/Contract/SolidityInvocation.swift index ad61555a..45c6d56a 100644 --- a/Web3/Classes/ContractABI/Contract/SolidityInvocation.swift +++ b/Web3/Classes/ContractABI/Contract/SolidityInvocation.swift @@ -185,11 +185,11 @@ public extension SolidityInvocation { // Default Implementations - public func call(completion: @escaping ([String: Any]?, Error?) -> Void) { + func call(completion: @escaping ([String: Any]?, Error?) -> Void) { self.call(block: .latest, completion: completion) } - public func estimateGas(from: EthereumAddress? = nil, gas: EthereumQuantity? = nil, value: EthereumQuantity? = nil, completion: @escaping (EthereumQuantity?, Error?) -> Void) { + func estimateGas(from: EthereumAddress? = nil, gas: EthereumQuantity? = nil, value: EthereumQuantity? = nil, completion: @escaping (EthereumQuantity?, Error?) -> Void) { guard let data = encodeABI() else { completion(nil, InvocationError.encodingError) return @@ -202,7 +202,7 @@ public extension SolidityInvocation { handler.estimateGas(call, completion: completion) } - public func encodeABI() -> EthereumData? { + func encodeABI() -> EthereumData? { if let hexString = try? ABI.encodeFunctionCall(self) { return try? EthereumData(ethereumValue: hexString) } diff --git a/Web3/Classes/Core/Json/EthereumBlockObject.swift b/Web3/Classes/Core/Json/EthereumBlockObject.swift index e10864f1..e3725b57 100644 --- a/Web3/Classes/Core/Json/EthereumBlockObject.swift +++ b/Web3/Classes/Core/Json/EthereumBlockObject.swift @@ -174,21 +174,36 @@ extension EthereumBlockObject: Equatable { extension EthereumBlockObject.Transaction: Hashable { - public var hashValue: Int { - return hashValues(hash) ^ (object?.hashValue ?? 0) + public func hash(into hasher: inout Hasher) { + hasher.combine(hash) + hasher.combine(object?.hashValue ?? 0) } } extension EthereumBlockObject: Hashable { - public var hashValue: Int { + public func hash(into hasher: inout Hasher) { // As of now we don't include transactions and uncles into the hashValue. This should be sufficiently fast for // the average case, which is enough for now. (Normally there are no block objects which have exact same values // but different transactions and uncles unless they were requested to include only tx hashes/complete objects. // We should test those cases and change this function if it makes a huge difference) - return hashValues( - number, hash, parentHash, nonce, sha3Uncles, logsBloom, transactionsRoot, stateRoot, receiptsRoot, miner, - difficulty, totalDifficulty, extraData, size, gasLimit, gasUsed, timestamp - ) + hasher.combine(number) + hasher.combine(hash) + hasher.combine(parentHash) + hasher.combine(nonce) + hasher.combine(sha3Uncles) + hasher.combine(logsBloom) + hasher.combine(transactionsRoot) + hasher.combine(stateRoot) + hasher.combine(receiptsRoot) + hasher.combine(miner) + + hasher.combine(difficulty) + hasher.combine(totalDifficulty) + hasher.combine(extraData) + hasher.combine(size) + hasher.combine(gasLimit) + hasher.combine(gasUsed) + hasher.combine(timestamp) } } diff --git a/Web3/Classes/Core/Json/EthereumCall.swift b/Web3/Classes/Core/Json/EthereumCall.swift index bd2f6a59..b07e66d8 100644 --- a/Web3/Classes/Core/Json/EthereumCall.swift +++ b/Web3/Classes/Core/Json/EthereumCall.swift @@ -152,17 +152,19 @@ extension EthereumCallParams: Equatable { extension EthereumCall: Hashable { - public var hashValue: Int { - return hashValues( - from, to, gas, gasPrice, value, data - ) + public func hash(into hasher: inout Hasher) { + hasher.combine(from) + hasher.combine(to) + hasher.combine(gas) + hasher.combine(gasPrice) + hasher.combine(value) + hasher.combine(data) } } extension EthereumCallParams: Hashable { - public var hashValue: Int { - // Do we need to include `block` for performance reasons? - return call.hashValue + public func hash(into hasher: inout Hasher) { + hasher.combine(call) } } diff --git a/Web3/Classes/Core/Json/EthereumData.swift b/Web3/Classes/Core/Json/EthereumData.swift index 8f3cdac2..f0a966d9 100644 --- a/Web3/Classes/Core/Json/EthereumData.swift +++ b/Web3/Classes/Core/Json/EthereumData.swift @@ -46,7 +46,7 @@ extension EthereumData: EthereumValueConvertible { public extension EthereumValue { - public var ethereumData: EthereumData? { + var ethereumData: EthereumData? { return try? EthereumData(ethereumValue: self) } } @@ -64,9 +64,7 @@ extension EthereumData: Equatable { extension EthereumData: Hashable { - public var hashValue: Int { - return hashValues( - bytes - ) + public func hash(into hasher: inout Hasher) { + hasher.combine(bytes) } } diff --git a/Web3/Classes/Core/Json/EthereumLogObject.swift b/Web3/Classes/Core/Json/EthereumLogObject.swift index 705ed0e7..be2174e1 100644 --- a/Web3/Classes/Core/Json/EthereumLogObject.swift +++ b/Web3/Classes/Core/Json/EthereumLogObject.swift @@ -64,7 +64,7 @@ extension EthereumLogObject: Equatable { extension EthereumLogObject: Hashable { - public var hashValue: Int { + public func hash(into hasher: inout Hasher) { var removedBytes: UInt8? if let removed = self.removed { removedBytes = removed ? UInt8(0x01) : UInt8(0x00) @@ -76,6 +76,10 @@ extension EthereumLogObject: Hashable { for t in topics { arr.append(t) } - return hashValues(arr) + + for bytes in arr { + // TODO: Is throwing deterministic here? + try? hasher.combine(bytes?.makeBytes()) + } } } diff --git a/Web3/Classes/Core/Json/EthereumQuantity.swift b/Web3/Classes/Core/Json/EthereumQuantity.swift index 1eb0d7c2..1a7699d4 100644 --- a/Web3/Classes/Core/Json/EthereumQuantity.swift +++ b/Web3/Classes/Core/Json/EthereumQuantity.swift @@ -56,7 +56,7 @@ extension EthereumQuantity: EthereumValueConvertible { public extension EthereumValue { - public var ethereumQuantity: EthereumQuantity? { + var ethereumQuantity: EthereumQuantity? { return try? EthereumQuantity(ethereumValue: self) } } @@ -87,7 +87,7 @@ extension EthereumQuantity: Equatable { extension EthereumQuantity: Hashable { - public var hashValue: Int { - return hashValues(quantity) + public func hash(into hasher: inout Hasher) { + hasher.combine(quantity) } } diff --git a/Web3/Classes/Core/Json/EthereumQuantityTag.swift b/Web3/Classes/Core/Json/EthereumQuantityTag.swift index e050d2cc..199502bb 100644 --- a/Web3/Classes/Core/Json/EthereumQuantityTag.swift +++ b/Web3/Classes/Core/Json/EthereumQuantityTag.swift @@ -29,19 +29,19 @@ public struct EthereumQuantityTag { public extension EthereumQuantityTag { - public static var latest: EthereumQuantityTag { + static var latest: EthereumQuantityTag { return self.init(tagType: .latest) } - public static var earliest: EthereumQuantityTag { + static var earliest: EthereumQuantityTag { return self.init(tagType: .earliest) } - public static var pending: EthereumQuantityTag { + static var pending: EthereumQuantityTag { return self.init(tagType: .pending) } - public static func block(_ bigUInt: BigUInt) -> EthereumQuantityTag { + static func block(_ bigUInt: BigUInt) -> EthereumQuantityTag { return self.init(tagType: .block(bigUInt)) } } @@ -126,23 +126,24 @@ extension EthereumQuantityTag: Equatable { extension EthereumQuantityTag.TagType: Hashable { - public var hashValue: Int { + public func hash(into hasher: inout Hasher) { switch self { case .block(let bigInt): - return hashValues(bigInt) + hasher.combine(0x00) + hasher.combine(bigInt) case .latest: - return hashValues(Byte(0x01)) + hasher.combine(0x01) case .earliest: - return hashValues(Byte(0x02)) + hasher.combine(0x02) case .pending: - return hashValues(Byte(0x03)) + hasher.combine(0x03) } } } extension EthereumQuantityTag: Hashable { - public var hashValue: Int { - return tagType.hashValue + public func hash(into hasher: inout Hasher) { + hasher.combine(tagType) } } diff --git a/Web3/Classes/Core/Json/EthereumSyncStatusObject.swift b/Web3/Classes/Core/Json/EthereumSyncStatusObject.swift index 98d5dec2..dc13abf0 100644 --- a/Web3/Classes/Core/Json/EthereumSyncStatusObject.swift +++ b/Web3/Classes/Core/Json/EthereumSyncStatusObject.swift @@ -89,9 +89,10 @@ extension EthereumSyncStatusObject: Equatable { extension EthereumSyncStatusObject: Hashable { - public var hashValue: Int { - return hashValues( - syncing ? UInt8(0x01) : UInt8(0x00), startingBlock, currentBlock, highestBlock - ) + public func hash(into hasher: inout Hasher) { + hasher.combine(syncing) + hasher.combine(startingBlock) + hasher.combine(currentBlock) + hasher.combine(highestBlock) } } diff --git a/Web3/Classes/Core/Json/EthereumTransactionObject.swift b/Web3/Classes/Core/Json/EthereumTransactionObject.swift index 87400c93..0c5377ba 100644 --- a/Web3/Classes/Core/Json/EthereumTransactionObject.swift +++ b/Web3/Classes/Core/Json/EthereumTransactionObject.swift @@ -67,9 +67,17 @@ extension EthereumTransactionObject: Equatable { extension EthereumTransactionObject: Hashable { - public var hashValue: Int { - return hashValues( - hash, nonce, blockHash, blockNumber, transactionIndex, from, to, value, gasPrice, gas, input - ) + public func hash(into hasher: inout Hasher) { + hasher.combine(hash) + hasher.combine(nonce) + hasher.combine(blockHash) + hasher.combine(blockNumber) + hasher.combine(transactionIndex) + hasher.combine(from) + hasher.combine(to) + hasher.combine(value) + hasher.combine(gasPrice) + hasher.combine(gas) + hasher.combine(input) } } diff --git a/Web3/Classes/Core/Json/EthereumTransactionReceiptObject.swift b/Web3/Classes/Core/Json/EthereumTransactionReceiptObject.swift index d734b0ec..b4e4f869 100644 --- a/Web3/Classes/Core/Json/EthereumTransactionReceiptObject.swift +++ b/Web3/Classes/Core/Json/EthereumTransactionReceiptObject.swift @@ -67,10 +67,15 @@ extension EthereumTransactionReceiptObject: Equatable { extension EthereumTransactionReceiptObject: Hashable { - public var hashValue: Int { - // logs are not included as of now but it should be sufficient like that... - return hashValues( - transactionHash, transactionIndex, blockHash, cumulativeGasUsed, gasUsed, contractAddress, logsBloom, root, status - ) + public func hash(into hasher: inout Hasher) { + hasher.combine(transactionHash) + hasher.combine(transactionIndex) + hasher.combine(blockHash) + hasher.combine(cumulativeGasUsed) + hasher.combine(gasUsed) + hasher.combine(contractAddress) + hasher.combine(logsBloom) + hasher.combine(root) + hasher.combine(status) } } diff --git a/Web3/Classes/Core/Json/EthereumValue.swift b/Web3/Classes/Core/Json/EthereumValue.swift index 2a1cd413..f390781f 100644 --- a/Web3/Classes/Core/Json/EthereumValue.swift +++ b/Web3/Classes/Core/Json/EthereumValue.swift @@ -128,19 +128,19 @@ extension EthereumValue: ExpressibleByArrayLiteral { public extension EthereumValue { - public static func string(_ string: String) -> EthereumValue { + static func string(_ string: String) -> EthereumValue { return self.init(stringLiteral: string) } - public static func int(_ int: Int) -> EthereumValue { + static func int(_ int: Int) -> EthereumValue { return self.init(integerLiteral: int) } - public static func bool(_ bool: Bool) -> EthereumValue { + static func bool(_ bool: Bool) -> EthereumValue { return self.init(booleanLiteral: bool) } - public static func array(_ array: [EthereumValueRepresentable]) -> EthereumValue { + static func array(_ array: [EthereumValueRepresentable]) -> EthereumValue { return self.init(array: array) } } @@ -149,7 +149,7 @@ public extension EthereumValue { public extension EthereumValue { - public var string: String? { + var string: String? { if case .string(let string) = valueType { return string } @@ -157,7 +157,7 @@ public extension EthereumValue { return nil } - public var int: Int? { + var int: Int? { if case .int(let int) = valueType { return int } @@ -165,7 +165,7 @@ public extension EthereumValue { return nil } - public var bool: Bool? { + var bool: Bool? { if case .bool(let bool) = valueType { return bool } @@ -173,7 +173,7 @@ public extension EthereumValue { return nil } - public var array: [EthereumValue]? { + var array: [EthereumValue]? { if case .array(let array) = valueType { return array } @@ -241,25 +241,25 @@ extension EthereumValue: Equatable { extension EthereumValue.ValueType: Hashable { - public var hashValue: Int { + public func hash(into hasher: inout Hasher) { switch self { case .string(let str): - return hashValues(str) + hasher.combine(str) case .int(let int): - return hashValues(String(int)) + hasher.combine(int) case .bool(let bool): - return hashValues(bool ? UInt8(0x01) : UInt8(0x00)) + hasher.combine(bool) case .array(let array): - return hashValues(String(array.reduce(0, { $0 ^ $1.hashValue }))) + hasher.combine(array) case .nil: - return hashValues(UInt8(0x00)) + hasher.combine(0x00) } } } extension EthereumValue: Hashable { - public var hashValue: Int { - return valueType.hashValue + public func hash(into hasher: inout Hasher) { + hasher.combine(valueType) } } diff --git a/Web3/Classes/Core/RLP/RLPItem.swift b/Web3/Classes/Core/RLP/RLPItem.swift index 4a2d62f1..395558e3 100644 --- a/Web3/Classes/Core/RLP/RLPItem.swift +++ b/Web3/Classes/Core/RLP/RLPItem.swift @@ -45,15 +45,15 @@ public struct RLPItem { public extension RLPItem { - public static func bytes(_ bytes: Bytes) -> RLPItem { + static func bytes(_ bytes: Bytes) -> RLPItem { return RLPItem(bytes: bytes) } - public static func bytes(_ bytes: Byte...) -> RLPItem { + static func bytes(_ bytes: Byte...) -> RLPItem { return RLPItem(bytes: bytes) } - public init(bytes: Bytes) { + init(bytes: Bytes) { self.init(valueType: .bytes(bytes)) } } @@ -112,7 +112,7 @@ public extension RLPItem { /** * Returns an array of bytes iff `self.valueType` is .bytes. Returns nil otherwise. */ - public var bytes: Bytes? { + var bytes: Bytes? { guard case .bytes(let value) = valueType else { return nil } @@ -122,7 +122,7 @@ public extension RLPItem { /** * Returns the string representation of this item iff `self.valueType` is .bytes. Returns nil otherwise. */ - public var string: String? { + var string: String? { guard case .bytes(let value) = valueType else { return nil } @@ -133,7 +133,7 @@ public extension RLPItem { * Returns the uint representation of this item (big endian represented) iff `self.valueType` is .bytes. * Returns nil otherwise. */ - public var uint: UInt? { + var uint: UInt? { guard case .bytes(let value) = valueType else { return nil } @@ -144,7 +144,7 @@ public extension RLPItem { * Returns the `BigUInt` representation of this item (big endian represented) iff `self.valueType` is .bytes. * Returns nil otherwise. */ - public var bigUInt: BigUInt? { + var bigUInt: BigUInt? { guard case .bytes(let value) = valueType else { return nil } @@ -154,7 +154,7 @@ public extension RLPItem { /** * Returns an array of `RLPItem`'s iff `self.valueType` is .array. Returns nil otherwise. */ - public var array: [RLPItem]? { + var array: [RLPItem]? { guard case .array(let elements) = valueType else { return nil } @@ -238,19 +238,19 @@ extension RLPItem: Equatable { extension RLPItem.ValueType: Hashable { - public var hashValue: Int { + public func hash(into hasher: inout Hasher) { switch self { case .array(let arr): - return hashValues(String(arr.reduce(0, { $0 ^ $1.hashValue }))) + hasher.combine(arr) case .bytes(let bytes): - return hashValues(bytes) + hasher.combine(bytes) } } } extension RLPItem: Hashable { - public var hashValue: Int { - return valueType.hashValue + public func hash(into hasher: inout Hasher) { + hasher.combine(valueType) } } diff --git a/Web3/Classes/Core/Toolbox/Int+ETH.swift b/Web3/Classes/Core/Toolbox/Int+ETH.swift index ff68211f..58e867bf 100644 --- a/Web3/Classes/Core/Toolbox/Int+ETH.swift +++ b/Web3/Classes/Core/Toolbox/Int+ETH.swift @@ -11,36 +11,36 @@ import BigInt public extension BigUInt { - public var eth: BigUInt { + var eth: BigUInt { return self * BigUInt(10).power(18) } - public var gwei: BigUInt { + var gwei: BigUInt { return self * BigUInt(10).power(9) } } public extension UnsignedInteger { - public var eth: BigUInt { + var eth: BigUInt { return BigUInt(self).eth } - public var gwei: BigUInt { + var gwei: BigUInt { return BigUInt(self).gwei } } public extension SignedInteger { - public var eth: BigUInt { + var eth: BigUInt { guard self >= 0 else { return 0 } return BigUInt(self).eth } - public var gwei: BigUInt { + var gwei: BigUInt { guard self >= 0 else { return 0 } diff --git a/Web3/Classes/Core/Transaction/EthereumAddress.swift b/Web3/Classes/Core/Transaction/EthereumAddress.swift index 09814426..32def36f 100644 --- a/Web3/Classes/Core/Transaction/EthereumAddress.swift +++ b/Web3/Classes/Core/Transaction/EthereumAddress.swift @@ -215,7 +215,8 @@ extension EthereumAddress: BytesConvertible { extension EthereumAddress: Hashable { - public var hashValue: Int { - return hashValues(self) + public func hash(into hasher: inout Hasher) { + // TODO: Is throwing deterministic here? + try? hasher.combine(makeBytes()) } } diff --git a/Web3/Classes/Core/Transaction/EthereumPrivateKey.swift b/Web3/Classes/Core/Transaction/EthereumPrivateKey.swift index 338a115b..7b1dcae1 100644 --- a/Web3/Classes/Core/Transaction/EthereumPrivateKey.swift +++ b/Web3/Classes/Core/Transaction/EthereumPrivateKey.swift @@ -303,7 +303,8 @@ extension EthereumPrivateKey: BytesConvertible { extension EthereumPrivateKey: Hashable { - public var hashValue: Int { - return hashValues(self) + public func hash(into hasher: inout Hasher) { + hasher.combine(rawPrivateKey) } } + diff --git a/Web3/Classes/Core/Transaction/EthereumPublicKey.swift b/Web3/Classes/Core/Transaction/EthereumPublicKey.swift index e5cfecd2..ee3846b8 100644 --- a/Web3/Classes/Core/Transaction/EthereumPublicKey.swift +++ b/Web3/Classes/Core/Transaction/EthereumPublicKey.swift @@ -360,7 +360,7 @@ extension EthereumPublicKey: BytesConvertible { extension EthereumPublicKey: Hashable { - public var hashValue: Int { - return hashValues(self) + public func hash(into hasher: inout Hasher) { + hasher.combine(rawPublicKey) } } diff --git a/Web3/Classes/Core/Transaction/EthereumTransaction.swift b/Web3/Classes/Core/Transaction/EthereumTransaction.swift index b96da24c..03cbb225 100644 --- a/Web3/Classes/Core/Transaction/EthereumTransaction.swift +++ b/Web3/Classes/Core/Transaction/EthereumTransaction.swift @@ -359,18 +359,29 @@ extension EthereumSignedTransaction: Equatable { extension EthereumTransaction: Hashable { - public var hashValue: Int { - return hashValues( - nonce, gasPrice, gas, from, to, value, data - ) + public func hash(into hasher: inout Hasher) { + hasher.combine(nonce) + hasher.combine(gasPrice) + hasher.combine(gas) + hasher.combine(from) + hasher.combine(to) + hasher.combine(value) + hasher.combine(data) } } extension EthereumSignedTransaction: Hashable { - - public var hashValue: Int { - return hashValues( - nonce, gasPrice, gasLimit, to, value, data, v, r, s, chainId - ) + + public func hash(into hasher: inout Hasher) { + hasher.combine(nonce) + hasher.combine(gasPrice) + hasher.combine(gasLimit) + hasher.combine(to) + hasher.combine(value) + hasher.combine(data) + hasher.combine(v) + hasher.combine(r) + hasher.combine(s) + hasher.combine(chainId) } } diff --git a/Web3/Classes/FoundationHTTP/Web3+HTTPInitializer.swift b/Web3/Classes/FoundationHTTP/Web3+HTTPInitializer.swift index 8a343097..f12455b1 100644 --- a/Web3/Classes/FoundationHTTP/Web3+HTTPInitializer.swift +++ b/Web3/Classes/FoundationHTTP/Web3+HTTPInitializer.swift @@ -16,7 +16,7 @@ public extension Web3 { * - parameter rpcURL: The URL of the HTTP RPC API. * - parameter rpcId: The rpc id to be used in all requests. Defaults to 1. */ - public init(rpcURL: String, rpcId: Int = 1) { + init(rpcURL: String, rpcId: Int = 1) { self.init(provider: Web3HttpProvider(rpcURL: rpcURL), rpcId: rpcId) } } diff --git a/Web3/Classes/PromiseKit/Web3+PromiseKit.swift b/Web3/Classes/PromiseKit/Web3+PromiseKit.swift index 3e7605ef..5f68b54b 100644 --- a/Web3/Classes/PromiseKit/Web3+PromiseKit.swift +++ b/Web3/Classes/PromiseKit/Web3+PromiseKit.swift @@ -14,7 +14,7 @@ import PromiseKit public extension Web3 { - public func clientVersion() -> Promise { + func clientVersion() -> Promise { return Promise { seal in self.clientVersion { response in response.sealPromise(seal: seal) @@ -25,7 +25,7 @@ public extension Web3 { public extension Web3.Net { - public func version() -> Promise { + func version() -> Promise { return Promise { seal in self.version { response in response.sealPromise(seal: seal) @@ -33,7 +33,7 @@ public extension Web3.Net { } } - public func peerCount() -> Promise { + func peerCount() -> Promise { return Promise { seal in self.peerCount { response in response.sealPromise(seal: seal) @@ -44,7 +44,7 @@ public extension Web3.Net { public extension Web3.Eth { - public func protocolVersion() -> Promise { + func protocolVersion() -> Promise { return Promise { seal in self.protocolVersion { response in response.sealPromise(seal: seal) @@ -52,7 +52,7 @@ public extension Web3.Eth { } } - public func syncing() -> Promise { + func syncing() -> Promise { return Promise { seal in self.syncing { response in response.sealPromise(seal: seal) @@ -60,7 +60,7 @@ public extension Web3.Eth { } } - public func mining() -> Promise { + func mining() -> Promise { return Promise { seal in self.mining { response in response.sealPromise(seal: seal) @@ -68,7 +68,7 @@ public extension Web3.Eth { } } - public func hashrate() -> Promise { + func hashrate() -> Promise { return Promise { seal in self.hashrate { response in response.sealPromise(seal: seal) @@ -76,7 +76,7 @@ public extension Web3.Eth { } } - public func gasPrice() -> Promise { + func gasPrice() -> Promise { return Promise { seal in self.gasPrice { response in response.sealPromise(seal: seal) @@ -84,7 +84,7 @@ public extension Web3.Eth { } } - public func accounts() -> Promise<[EthereumAddress]> { + func accounts() -> Promise<[EthereumAddress]> { return Promise { seal in self.accounts { response in response.sealPromise(seal: seal) @@ -92,7 +92,7 @@ public extension Web3.Eth { } } - public func blockNumber() -> Promise { + func blockNumber() -> Promise { return Promise { seal in self.blockNumber { response in response.sealPromise(seal: seal) @@ -100,7 +100,7 @@ public extension Web3.Eth { } } - public func getBalance(address: EthereumAddress, block: EthereumQuantityTag) -> Promise { + func getBalance(address: EthereumAddress, block: EthereumQuantityTag) -> Promise { return Promise { seal in self.getBalance(address: address, block: block) { response in response.sealPromise(seal: seal) @@ -108,7 +108,7 @@ public extension Web3.Eth { } } - public func getStorageAt( + func getStorageAt( address: EthereumAddress, position: EthereumQuantity, block: EthereumQuantityTag @@ -120,7 +120,7 @@ public extension Web3.Eth { } } - public func getTransactionCount(address: EthereumAddress, block: EthereumQuantityTag) -> Promise { + func getTransactionCount(address: EthereumAddress, block: EthereumQuantityTag) -> Promise { return Promise { seal in self.getTransactionCount(address: address, block: block) { response in response.sealPromise(seal: seal) @@ -128,7 +128,7 @@ public extension Web3.Eth { } } - public func getBlockTransactionCountByHash(blockHash: EthereumData) -> Promise { + func getBlockTransactionCountByHash(blockHash: EthereumData) -> Promise { return Promise { seal in self.getBlockTransactionCountByHash(blockHash: blockHash) { response in response.sealPromise(seal: seal) @@ -136,7 +136,7 @@ public extension Web3.Eth { } } - public func getBlockTransactionCountByNumber(block: EthereumQuantityTag) -> Promise { + func getBlockTransactionCountByNumber(block: EthereumQuantityTag) -> Promise { return Promise { seal in self.getBlockTransactionCountByNumber(block: block) { response in response.sealPromise(seal: seal) @@ -144,7 +144,7 @@ public extension Web3.Eth { } } - public func getUncleCountByBlockHash(blockHash: EthereumData) -> Promise { + func getUncleCountByBlockHash(blockHash: EthereumData) -> Promise { return Promise { seal in self.getUncleCountByBlockHash(blockHash: blockHash) { response in response.sealPromise(seal: seal) @@ -152,7 +152,7 @@ public extension Web3.Eth { } } - public func getUncleCountByBlockNumber(block: EthereumQuantityTag) -> Promise { + func getUncleCountByBlockNumber(block: EthereumQuantityTag) -> Promise { return Promise { seal in self.getUncleCountByBlockNumber(block: block) { response in response.sealPromise(seal: seal) @@ -160,7 +160,7 @@ public extension Web3.Eth { } } - public func getCode(address: EthereumAddress, block: EthereumQuantityTag) -> Promise { + func getCode(address: EthereumAddress, block: EthereumQuantityTag) -> Promise { return Promise { seal in self.getCode(address: address, block: block) { response in response.sealPromise(seal: seal) @@ -168,7 +168,7 @@ public extension Web3.Eth { } } - public func sendRawTransaction(transaction: EthereumSignedTransaction) -> Promise { + func sendRawTransaction(transaction: EthereumSignedTransaction) -> Promise { return Promise { seal in self.sendRawTransaction(transaction: transaction) { response in response.sealPromise(seal: seal) @@ -176,7 +176,7 @@ public extension Web3.Eth { } } - public func sendTransaction(transaction: EthereumTransaction) -> Promise { + func sendTransaction(transaction: EthereumTransaction) -> Promise { return Promise { seal in self.sendTransaction(transaction: transaction) { response in response.sealPromise(seal: seal) @@ -184,7 +184,7 @@ public extension Web3.Eth { } } - public func call(call: EthereumCall, block: EthereumQuantityTag) -> Promise { + func call(call: EthereumCall, block: EthereumQuantityTag) -> Promise { return Promise { seal in self.call(call: call, block: block) { response in response.sealPromise(seal: seal) @@ -192,7 +192,7 @@ public extension Web3.Eth { } } - public func estimateGas(call: EthereumCall) -> Promise { + func estimateGas(call: EthereumCall) -> Promise { return Promise { seal in self.estimateGas(call: call) { response in response.sealPromise(seal: seal) @@ -200,7 +200,7 @@ public extension Web3.Eth { } } - public func getBlockByHash(blockHash: EthereumData, fullTransactionObjects: Bool) -> Promise { + func getBlockByHash(blockHash: EthereumData, fullTransactionObjects: Bool) -> Promise { return Promise { seal in self.getBlockByHash(blockHash: blockHash, fullTransactionObjects: fullTransactionObjects) { response in response.sealPromise(seal: seal) @@ -208,7 +208,7 @@ public extension Web3.Eth { } } - public func getBlockByNumber( + func getBlockByNumber( block: EthereumQuantityTag, fullTransactionObjects: Bool ) -> Promise { @@ -219,7 +219,7 @@ public extension Web3.Eth { } } - public func getTransactionByHash(blockHash: EthereumData) -> Promise { + func getTransactionByHash(blockHash: EthereumData) -> Promise { return Promise { seal in self.getTransactionByHash(blockHash: blockHash) { response in response.sealPromise(seal: seal) @@ -227,7 +227,7 @@ public extension Web3.Eth { } } - public func getTransactionByBlockHashAndIndex( + func getTransactionByBlockHashAndIndex( blockHash: EthereumData, transactionIndex: EthereumQuantity ) -> Promise { @@ -238,7 +238,7 @@ public extension Web3.Eth { } } - public func getTransactionByBlockNumberAndIndex( + func getTransactionByBlockNumberAndIndex( block: EthereumQuantityTag, transactionIndex: EthereumQuantity ) -> Promise { @@ -249,7 +249,7 @@ public extension Web3.Eth { } } - public func getTransactionReceipt(transactionHash: EthereumData) -> Promise { + func getTransactionReceipt(transactionHash: EthereumData) -> Promise { return Promise { seal in self.getTransactionReceipt(transactionHash: transactionHash) { response in response.sealPromise(seal: seal) @@ -257,7 +257,7 @@ public extension Web3.Eth { } } - public func getUncleByBlockHashAndIndex( + func getUncleByBlockHashAndIndex( blockHash: EthereumData, uncleIndex: EthereumQuantity ) -> Promise { @@ -268,7 +268,7 @@ public extension Web3.Eth { } } - public func getUncleByBlockNumberAndIndex( + func getUncleByBlockNumberAndIndex( block: EthereumQuantityTag, uncleIndex: EthereumQuantity ) -> Promise { @@ -282,7 +282,7 @@ public extension Web3.Eth { fileprivate extension Web3Response { - fileprivate func sealPromise(seal: Resolver) { + func sealPromise(seal: Resolver) { seal.resolve(result, error) } } From 08c7bf33d2fcb1a09373beb64c52c491c4b57f41 Mon Sep 17 00:00:00 2001 From: Koray Koska Date: Sun, 7 Jul 2019 12:34:45 +0200 Subject: [PATCH 5/6] Change BytesInitializable to match swift stdlib --- Example/Pods/Pods.xcodeproj/project.pbxproj | 4 -- .../Tests/ABITests/ABIConvertibleTests.swift | 8 ++-- .../JsonTests/EthereumCallParamsTests.swift | 4 +- .../Tests/JsonTests/EthereumDataTests.swift | 4 +- Example/Web3.xcodeproj/project.pbxproj | 5 +- Web3.podspec | 2 + .../ABI/SolidityType+Codable.swift | 2 +- Web3/Classes/Core/Json/EthereumData.swift | 4 +- Web3/Classes/Core/Json/EthereumQuantity.swift | 8 ++-- .../Core/Json/EthereumQuantityTag.swift | 2 +- Web3/Classes/Core/RLP/RLPItem.swift | 2 +- .../Toolbox/BigUInt+BytesConvertible.swift | 4 +- .../Core/Toolbox/BytesConvertible.swift | 8 ++-- .../Toolbox/String+BytesConvertible.swift | 2 +- .../UnsignedInteger+BytesConvertible.swift | 6 +-- .../Core/Toolbox/Values+GeneralHashable.swift | 47 ------------------- .../Core/Transaction/EthereumAddress.swift | 2 +- .../Core/Transaction/EthereumPrivateKey.swift | 2 +- .../Core/Transaction/EthereumPublicKey.swift | 2 +- .../Transaction/EthereumTransaction.swift | 8 ++-- 20 files changed, 39 insertions(+), 87 deletions(-) delete mode 100644 Web3/Classes/Core/Toolbox/Values+GeneralHashable.swift diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index f9de5dc0..a046b165 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -38,7 +38,6 @@ 13FBB20EA4647EA46F0CB2E7254A5F50 /* NMBObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7811CB29E79923E3ACBC5D5AB1216A0B /* NMBObjCMatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 151469A9167059995E3ADF79B4856155 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6710C1BDB439E8BACCD5845ADF11C8F0 /* Configuration.swift */; }; 16BEDD5279B4C6BDFFEC244180BC630E /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15694F6BDA4AF043C86FC01FCE715BEF /* Quick-dummy.m */; }; - 172934C0742DA067B2F7EF5C08D1286B /* Values+GeneralHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71F694DB2FB34861076F8802A63778E2 /* Values+GeneralHashable.swift */; }; 18A4DF46EDF5176D4FDE84EBBC38CDEB /* QuickTestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8498A9662A32AABE7DB0332499D91632 /* QuickTestSuite.swift */; }; 18ECF151CD8EAD1DABB7886847953EBC /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 129BF7DE97010AF311437F120D5FFB7D /* Bitwise Ops.swift */; }; 192FFF7AC7F145E6F594491C8887519B /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CCF92F272148C0D9E9E3A78C85ABF3A /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -630,7 +629,6 @@ 71003D54E0102C32FCA8042BDF1DA8F5 /* Web3-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Web3-Info.plist"; sourceTree = ""; }; 7150D33AF529B6A674C761D938E2CC8D /* secp256k1.swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "secp256k1.swift-Info.plist"; sourceTree = ""; }; 71D48582F8942C459C44EB70204BEE02 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; - 71F694DB2FB34861076F8802A63778E2 /* Values+GeneralHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Values+GeneralHashable.swift"; sourceTree = ""; }; 732A160536A2992F0A0BC0FBCB8B6334 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = Sources/Exponentiation.swift; sourceTree = ""; }; 736E4B6F6880F6DF524D286CCE8616D5 /* Web3.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Web3.modulemap; sourceTree = ""; }; 737F5B9C5CE5255292106F27A06470FD /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; @@ -1540,7 +1538,6 @@ D324D1664C1B34853F426C2F7F658584 /* UInt+BytesRepresentable.swift */, 2E891EC1DEE6CDBD70868FF4FD85257D /* UnsignedInteger+BytesConvertible.swift */, AE7A65BACB10F225BB4B46E70DF49C77 /* UnsignedInteger+Shifting.swift */, - 71F694DB2FB34861076F8802A63778E2 /* Values+GeneralHashable.swift */, ); name = Toolbox; path = Web3/Classes/Core/Toolbox; @@ -2376,7 +2373,6 @@ 73968FE6F26450FE4EDCAA9FF894C03E /* UInt+BytesRepresentable.swift in Sources */, B2605F18CA016F04F6DF845DF23D1B1B /* UnsignedInteger+BytesConvertible.swift in Sources */, 8E1535340D02DC8C5B7DCA1B9C259172 /* UnsignedInteger+Shifting.swift in Sources */, - 172934C0742DA067B2F7EF5C08D1286B /* Values+GeneralHashable.swift in Sources */, 072E39940FBC8C41F08EF4FC2498D7EF /* Web3+HTTPInitializer.swift in Sources */, 5082DE8F9D66A1C21DE6D4E2440EFB64 /* Web3+PromiseKit.swift in Sources */, ACCFCCD5F4259EFEB2B2CD6D426572BB /* Web3-dummy.m in Sources */, diff --git a/Example/Tests/ABITests/ABIConvertibleTests.swift b/Example/Tests/ABITests/ABIConvertibleTests.swift index ec2f6ef6..67c808c5 100644 --- a/Example/Tests/ABITests/ABIConvertibleTests.swift +++ b/Example/Tests/ABITests/ABIConvertibleTests.swift @@ -257,14 +257,14 @@ class ABIConvertibleTests: QuickSpec { context("when encoding to hex string") { it("should encode Data to dynamic bytes") { - let bytes = Data(bytes: [1, 2, 3, 4, 5, 6, 7, 8, 9]) + let bytes = Data([1, 2, 3, 4, 5, 6, 7, 8, 9]) let test = try? ABI.encodeParameters([.bytes(bytes)]) let expected = "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000090102030405060708090000000000000000000000000000000000000000000000" expect(test).to(equal(expected)) } it("should encode Data to fixed bytes") { - let bytes = Data(bytes: [0, 111, 222]) + let bytes = Data([0, 111, 222]) let test = try? ABI.encodeParameters([.fixedBytes(bytes)]) let expected = "0x006fde0000000000000000000000000000000000000000000000000000000000" expect(test).to(equal(expected)) @@ -273,13 +273,13 @@ class ABIConvertibleTests: QuickSpec { context("when decoding from hex string") { it("should decode Data from dynamic bytes") { - let expected = Data(bytes: [1, 2, 3, 4, 5, 6, 7, 8, 9]) + let expected = Data([1, 2, 3, 4, 5, 6, 7, 8, 9]) let test = "00000000000000000000000000000000000000000000000000000000000000090102030405060708090000000000000000000000000000000000000000000000" expect(Data(hexString: test)).to(equal(expected)) } it("should decode Data from fixed bytes") { - let expected = Data(bytes: [0, 111, 222]) + let expected = Data([0, 111, 222]) let test = "006fde0000000000000000000000000000000000000000000000000000000000" expect(Data(hexString: test, length: 3)).to(equal(expected)) } diff --git a/Example/Tests/JsonTests/EthereumCallParamsTests.swift b/Example/Tests/JsonTests/EthereumCallParamsTests.swift index e68c1aa6..b679b70b 100644 --- a/Example/Tests/JsonTests/EthereumCallParamsTests.swift +++ b/Example/Tests/JsonTests/EthereumCallParamsTests.swift @@ -33,7 +33,7 @@ class EthereumCallParamsTests: QuickSpec { gas: 21000, gasPrice: EthereumQuantity(quantity: UInt(21).gwei), value: 10, - data: EthereumData(bytes: [0x00, 0xff]), + data: EthereumData([0x00, 0xff]), block: .latest ) it("should not be nil") { @@ -70,7 +70,7 @@ class EthereumCallParamsTests: QuickSpec { context("decoding") { let str = "[{\"value\":\"0xa\",\"to\":\"0x829bd824b016326a401d083b33d092293333a830\",\"gas\":\"0x5208\",\"data\":\"0x00ff\",\"gasPrice\":\"0x4e3b29200\",\"from\":\"0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5\"},\"latest\"]" - let e = try? self.decoder.decode(EthereumCallParams.self, from: Data(bytes: str.makeBytes())) + let e = try? self.decoder.decode(EthereumCallParams.self, from: Data(str.makeBytes())) it("should not be nil") { expect(e).toNot(beNil()) } diff --git a/Example/Tests/JsonTests/EthereumDataTests.swift b/Example/Tests/JsonTests/EthereumDataTests.swift index 37c88209..24c8d491 100644 --- a/Example/Tests/JsonTests/EthereumDataTests.swift +++ b/Example/Tests/JsonTests/EthereumDataTests.swift @@ -16,13 +16,13 @@ class EthereumDataTests: QuickSpec { describe("ethereum data tests") { context("initialization") { - let data = EthereumData(bytes: [0xab, 0xcf, 0x45, 0x01]) + let data = EthereumData([0xab, 0xcf, 0x45, 0x01]) it("should initialize correctly") { expect(data.bytes) == [0xab, 0xcf, 0x45, 0x01] expect(data.makeBytes()) == [0xab, 0xcf, 0x45, 0x01] } - let data2 = EthereumData(bytes: [0xab, 0xcf, 0x45, 0x01]) + let data2 = EthereumData([0xab, 0xcf, 0x45, 0x01]) it("should be equatable") { expect(data == data2) == true diff --git a/Example/Web3.xcodeproj/project.pbxproj b/Example/Web3.xcodeproj/project.pbxproj index c1736a3a..48b01e3a 100644 --- a/Example/Web3.xcodeproj/project.pbxproj +++ b/Example/Web3.xcodeproj/project.pbxproj @@ -314,6 +314,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -554,7 +555,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -572,7 +573,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Web3.podspec b/Web3.podspec index f5798b5b..65291b4d 100644 --- a/Web3.podspec +++ b/Web3.podspec @@ -22,6 +22,8 @@ HTTP RPC interface provided by this library or a custom RPC interface s.tvos.deployment_target = '9.0' s.watchos.deployment_target = '2.0' + s.swift_version = '5.0.1' + s.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DWeb3CocoaPods' } diff --git a/Web3/Classes/ContractABI/ABI/SolidityType+Codable.swift b/Web3/Classes/ContractABI/ABI/SolidityType+Codable.swift index 08d8ab9b..c2905b70 100644 --- a/Web3/Classes/ContractABI/ABI/SolidityType+Codable.swift +++ b/Web3/Classes/ContractABI/ABI/SolidityType+Codable.swift @@ -29,7 +29,7 @@ extension NSRegularExpression { return matches.flatMap { match -> [String] in return (0.. EthereumValue { diff --git a/Web3/Classes/Core/Json/EthereumQuantity.swift b/Web3/Classes/Core/Json/EthereumQuantity.swift index 1a7699d4..a1562809 100644 --- a/Web3/Classes/Core/Json/EthereumQuantity.swift +++ b/Web3/Classes/Core/Json/EthereumQuantity.swift @@ -14,7 +14,7 @@ public struct EthereumQuantity { public let quantity: BigUInt public static func bytes(_ bytes: Bytes) -> EthereumQuantity { - return self.init(quantity: BigUInt(bytes: bytes)) + return self.init(quantity: BigUInt(bytes)) } public init(quantity: BigUInt) { @@ -31,7 +31,7 @@ extension EthereumQuantity: ExpressibleByIntegerLiteral { public typealias IntegerLiteralType = UInt64 public init(integerLiteral value: UInt64) { - self.init(quantity: BigUInt(value)) + self.init(quantity: BigUInt.init(integerLiteral: value)) } } @@ -46,7 +46,7 @@ extension EthereumQuantity: EthereumValueConvertible { throw EthereumValueInitializableError.notInitializable } - try self.init(quantity: BigUInt(bytes: str.quantityHexBytes())) + try self.init(quantity: BigUInt(str.quantityHexBytes())) } public func ethereumValue() -> EthereumValue { @@ -65,7 +65,7 @@ public extension EthereumValue { extension EthereumQuantity: BytesConvertible { - public init(bytes: Bytes) { + public init(_ bytes: Bytes) { self = EthereumQuantity.bytes(bytes) } diff --git a/Web3/Classes/Core/Json/EthereumQuantityTag.swift b/Web3/Classes/Core/Json/EthereumQuantityTag.swift index 199502bb..1ec52c09 100644 --- a/Web3/Classes/Core/Json/EthereumQuantityTag.swift +++ b/Web3/Classes/Core/Json/EthereumQuantityTag.swift @@ -64,7 +64,7 @@ extension EthereumQuantityTag: EthereumValueConvertible { } else if str == "pending" { tagType = .pending } else { - guard let hex = try? BigUInt(bytes: str.quantityHexBytes()) else { + guard let hex = try? BigUInt(str.quantityHexBytes()) else { throw EthereumValueInitializableError.notInitializable } tagType = .block(hex) diff --git a/Web3/Classes/Core/RLP/RLPItem.swift b/Web3/Classes/Core/RLP/RLPItem.swift index 395558e3..6c931041 100644 --- a/Web3/Classes/Core/RLP/RLPItem.swift +++ b/Web3/Classes/Core/RLP/RLPItem.swift @@ -148,7 +148,7 @@ public extension RLPItem { guard case .bytes(let value) = valueType else { return nil } - return BigUInt(bytes: value) + return BigUInt(value) } /** diff --git a/Web3/Classes/Core/Toolbox/BigUInt+BytesConvertible.swift b/Web3/Classes/Core/Toolbox/BigUInt+BytesConvertible.swift index dce18af0..a0dfe63a 100644 --- a/Web3/Classes/Core/Toolbox/BigUInt+BytesConvertible.swift +++ b/Web3/Classes/Core/Toolbox/BigUInt+BytesConvertible.swift @@ -22,7 +22,7 @@ extension BigUInt: BytesConvertible { return bytes } - public init(bytes: Bytes) { + public init(_ bytes: Bytes) { var bytes = bytes var words: [Word] = [] @@ -34,7 +34,7 @@ extension BigUInt: BytesConvertible { } for i in Swift.stride(from: 0, to: bytes.count, by: wordSize) { - let word = BigUInt.Word(bytes: Array(bytes[i..<(i + wordSize)])) + let word = BigUInt.Word(Array(bytes[i..<(i + wordSize)])) words.insert(word, at: 0) } diff --git a/Web3/Classes/Core/Toolbox/BytesConvertible.swift b/Web3/Classes/Core/Toolbox/BytesConvertible.swift index 5194ba3f..94dc404f 100644 --- a/Web3/Classes/Core/Toolbox/BytesConvertible.swift +++ b/Web3/Classes/Core/Toolbox/BytesConvertible.swift @@ -25,7 +25,7 @@ public protocol BytesRepresentable { * Implementable if the type can be represented with Bytes */ public protocol BytesInitializable { - init(bytes: Bytes) throws + init(_ bytes: Bytes) throws } /** @@ -33,9 +33,9 @@ public protocol BytesInitializable { */ public typealias BytesConvertible = BytesRepresentable & BytesInitializable -extension BytesInitializable { - public init(bytes: BytesRepresentable) throws { +public extension BytesInitializable { + init(_ bytes: BytesRepresentable) throws { let bytes = try bytes.makeBytes() - try self.init(bytes: bytes) + try self.init(bytes) } } diff --git a/Web3/Classes/Core/Toolbox/String+BytesConvertible.swift b/Web3/Classes/Core/Toolbox/String+BytesConvertible.swift index d64857ac..cc625623 100644 --- a/Web3/Classes/Core/Toolbox/String+BytesConvertible.swift +++ b/Web3/Classes/Core/Toolbox/String+BytesConvertible.swift @@ -20,7 +20,7 @@ extension String: BytesConvertible { /** * Initializes a string with the given UTF8 represented byte array */ - public init(bytes: Bytes) { + public init(_ bytes: Bytes) { self = bytes.makeString() } } diff --git a/Web3/Classes/Core/Toolbox/UnsignedInteger+BytesConvertible.swift b/Web3/Classes/Core/Toolbox/UnsignedInteger+BytesConvertible.swift index 62c9da3b..c9969435 100644 --- a/Web3/Classes/Core/Toolbox/UnsignedInteger+BytesConvertible.swift +++ b/Web3/Classes/Core/Toolbox/UnsignedInteger+BytesConvertible.swift @@ -25,13 +25,13 @@ extension UnsignedInteger { * - parameter bytes: The bytes to be converted * */ - public init(bytes: Bytes) { + public init(_ bytes: Bytes) { // 8 bytes in UInt64, etc. clips overflow let prefix = bytes.suffix(MemoryLayout.size) var value: UInt64 = 0 prefix.forEach { byte in value <<= 8 // 1 byte is 8 bits - value |= UInt64(byte) + value |= (UInt64(exactly: byte) ?? 0) } self.init(value) @@ -57,7 +57,7 @@ extension UnsignedInteger { (1...size).forEach { _ in let next = copy & byteMask #if swift(>=4) - let byte = Byte(UInt64(next)) + let byte = (Byte(exactly: UInt64(next)) ?? 0) #else let byte = Byte(next.toUIntMax()) #endif diff --git a/Web3/Classes/Core/Toolbox/Values+GeneralHashable.swift b/Web3/Classes/Core/Toolbox/Values+GeneralHashable.swift deleted file mode 100644 index 699e624f..00000000 --- a/Web3/Classes/Core/Toolbox/Values+GeneralHashable.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// Values+GeneralHashable.swift -// Web3 -// -// Created by Koray Koska on 27.03.18. -// Copyright © 2018 Boilertalk. All rights reserved. -// - -import Foundation -import CryptoSwift - -func hashValues(_ values: [BytesRepresentable?]) -> Int { - var raw = Bytes() - - for v in values { - // Is throwing deterministic? If not this could cause issues... - if let elems = try? v?.makeBytes(), let arr = elems { - raw.append(contentsOf: arr) - } - } - - let hash = SHA3(variant: .keccak256).calculate(for: raw) - - return hash.biggestInt() -} - -func hashValues(_ values: BytesRepresentable?...) -> Int { - return hashValues(values) -} - -private extension Array where Element == UInt8 { - - func biggestInt() -> Int { - let size = MemoryLayout.size - - var int = 0 - - for i in 0..<(size - 1) { - if i >= self.count { - break - } - int = int | (Int(self[i]) << (i * 8)) - } - - return int - } -} diff --git a/Web3/Classes/Core/Transaction/EthereumAddress.swift b/Web3/Classes/Core/Transaction/EthereumAddress.swift index 32def36f..cd5b146f 100644 --- a/Web3/Classes/Core/Transaction/EthereumAddress.swift +++ b/Web3/Classes/Core/Transaction/EthereumAddress.swift @@ -202,7 +202,7 @@ extension EthereumAddress: Equatable { extension EthereumAddress: BytesConvertible { - public init(bytes: Bytes) throws { + public init(_ bytes: Bytes) throws { try self.init(rawAddress: bytes) } diff --git a/Web3/Classes/Core/Transaction/EthereumPrivateKey.swift b/Web3/Classes/Core/Transaction/EthereumPrivateKey.swift index 7b1dcae1..2cd4b04c 100644 --- a/Web3/Classes/Core/Transaction/EthereumPrivateKey.swift +++ b/Web3/Classes/Core/Transaction/EthereumPrivateKey.swift @@ -59,7 +59,7 @@ public final class EthereumPrivateKey { /** * Convenient initializer for `init(privateKey:)` */ - public required convenience init(bytes: Bytes) throws { + public required convenience init(_ bytes: Bytes) throws { try self.init(privateKey: bytes) } diff --git a/Web3/Classes/Core/Transaction/EthereumPublicKey.swift b/Web3/Classes/Core/Transaction/EthereumPublicKey.swift index ee3846b8..ddd32d0c 100644 --- a/Web3/Classes/Core/Transaction/EthereumPublicKey.swift +++ b/Web3/Classes/Core/Transaction/EthereumPublicKey.swift @@ -32,7 +32,7 @@ public final class EthereumPublicKey { /** * Convenient initializer for `init(publicKey:)` */ - public required convenience init(bytes: Bytes) throws { + public required convenience init(_ bytes: Bytes) throws { try self.init(publicKey: bytes) } diff --git a/Web3/Classes/Core/Transaction/EthereumTransaction.swift b/Web3/Classes/Core/Transaction/EthereumTransaction.swift index 03cbb225..36f8ecd6 100644 --- a/Web3/Classes/Core/Transaction/EthereumTransaction.swift +++ b/Web3/Classes/Core/Transaction/EthereumTransaction.swift @@ -51,7 +51,7 @@ public struct EthereumTransaction: Codable { from: EthereumAddress? = nil, to: EthereumAddress? = nil, value: EthereumQuantity? = nil, - data: EthereumData = EthereumData(bytes: []) + data: EthereumData = EthereumData([]) ) { self.nonce = nonce self.gasPrice = gasPrice @@ -100,8 +100,8 @@ public struct EthereumTransaction: Codable { v = sigV + big27 + chainIdCalc } - let r = BigUInt(bytes: signature.r) - let s = BigUInt(bytes: signature.s) + let r = BigUInt(signature.r) + let s = BigUInt(signature.s) return EthereumSignedTransaction( nonce: nonce, @@ -302,7 +302,7 @@ extension EthereumSignedTransaction: RLPItemConvertible { gasLimit: EthereumQuantity(quantity: gasLimit), to: to, value: EthereumQuantity(quantity: value), - data: EthereumData(bytes: data), + data: EthereumData(data), v: EthereumQuantity(quantity: v), r: EthereumQuantity(quantity: r), s: EthereumQuantity(quantity: s), From 0ef4e649471c29b564218a2169523871e7368ae7 Mon Sep 17 00:00:00 2001 From: Koray Koska Date: Sun, 7 Jul 2019 13:00:14 +0200 Subject: [PATCH 6/6] Fix warnings --- Web3/Classes/ContractABI/ABI/ABIConvertible.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Web3/Classes/ContractABI/ABI/ABIConvertible.swift b/Web3/Classes/ContractABI/ABI/ABIConvertible.swift index 6348c357..dcf67f27 100644 --- a/Web3/Classes/ContractABI/ABI/ABIConvertible.swift +++ b/Web3/Classes/ContractABI/ABI/ABIConvertible.swift @@ -290,7 +290,7 @@ extension Data: ABIConvertible { let bytes = valueString.hexToBytes() //trim bytes to length let trimmedBytes = bytes.prefix(length) - self.init(bytes: trimmedBytes) + self.init(trimmedBytes) } public init?(hexString: String, length: UInt) { @@ -298,7 +298,7 @@ extension Data: ABIConvertible { let bytes = hexString.hexToBytes() //trim bytes to length let trimmedBytes = bytes.prefix(Int(length)) - self.init(bytes: trimmedBytes) + self.init(trimmedBytes) } public func abiEncode(dynamic: Bool) -> String? {