Full Code of spring-media/Carlos for AI

master 26ca894e3cef cached
164 files
784.3 KB
238.2k tokens
1 requests
Download .txt
Showing preview only (840K chars total). Download the full file or copy to clipboard to get everything.
Repository: spring-media/Carlos
Branch: master
Commit: 26ca894e3cef
Files: 164
Total size: 784.3 KB

Directory structure:
gitextract_a123yuin/

├── .github/
│   └── workflows/
│       └── pr.yml
├── .gitignore
├── .gitmodules
├── .swiftformat
├── .swiftlint.yml
├── .swiftpm/
│   └── xcode/
│       ├── package.xcworkspace/
│       │   └── contents.xcworkspacedata
│       └── xcshareddata/
│           └── xcschemes/
│               └── Carlos.xcscheme
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Carlos.podspec
├── Carlos.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       ├── IDEWorkspaceChecks.plist
│   │       └── swiftpm/
│   │           └── Package.resolved
│   └── xcshareddata/
│       └── xcschemes/
│           ├── Carlos iOS.xcscheme
│           └── Carlos watchOS.xcscheme
├── Carlos.xcworkspace/
│   ├── contents.xcworkspacedata
│   └── xcshareddata/
│       ├── IDEWorkspaceChecks.plist
│       └── swiftpm/
│           └── Package.resolved
├── Example/
│   ├── CarlosMacSample/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   └── ViewController.swift
│   ├── CarlosTvSample/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── App Icon & Top Shelf Image.brandassets/
│   │   │   │   ├── App Icon - Large.imagestack/
│   │   │   │   │   ├── Back.imagestacklayer/
│   │   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Front.imagestacklayer/
│   │   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Middle.imagestacklayer/
│   │   │   │   │       ├── Content.imageset/
│   │   │   │   │       │   └── Contents.json
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── App Icon - Small.imagestack/
│   │   │   │   │   ├── Back.imagestacklayer/
│   │   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Front.imagestacklayer/
│   │   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Middle.imagestacklayer/
│   │   │   │   │       ├── Content.imageset/
│   │   │   │   │       │   └── Contents.json
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Top Shelf Image Wide.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Top Shelf Image.imageset/
│   │   │   │       └── Contents.json
│   │   │   ├── Contents.json
│   │   │   └── LaunchImage.launchimage/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   └── ViewController.swift
│   ├── CarlosWatchSample/
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── Interface.storyboard
│   │   └── Info.plist
│   ├── CarlosWatchSample Extension/
│   │   ├── Assets.xcassets/
│   │   │   ├── Contents.json
│   │   │   └── placeholder.imageset/
│   │   │       └── Contents.json
│   │   ├── CountryRow.swift
│   │   ├── ExtensionDelegate.swift
│   │   ├── Info.plist
│   │   └── InterfaceController.swift
│   ├── Example/
│   │   ├── AppDelegate.swift
│   │   ├── Base.lproj/
│   │   │   └── Main.storyboard
│   │   ├── BaseCacheViewController.swift
│   │   ├── ComplexCacheSampleViewController.swift
│   │   ├── ConditionedCacheSampleViewController.swift
│   │   ├── DataCacheSampleViewController.swift
│   │   ├── DelayedNetworkFetcher.swift
│   │   ├── ExampleCell.swift
│   │   ├── ExamplesListViewController.swift
│   │   ├── ImageCacheSampleViewController.swift
│   │   ├── Images.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Info.plist
│   │   ├── JSONCacheSampleViewController.swift
│   │   ├── MemoryWarningSampleViewController.swift
│   │   ├── PooledCacheSampleViewController.swift
│   │   ├── SwitchCacheSampleViewController.swift
│   │   └── UserDefaultsCacheSampleViewController.swift
│   └── Example.xcodeproj/
│       ├── project.pbxproj
│       └── project.xcworkspace/
│           ├── contents.xcworkspacedata
│           └── xcshareddata/
│               └── IDEWorkspaceChecks.plist
├── Gemfile
├── LICENSE
├── MIGRATING.md
├── Package.resolved
├── Package.swift
├── README.md
├── Sources/
│   └── Carlos/
│       ├── CacheLevels/
│       │   ├── BatchAllCache.swift
│       │   ├── Composed.swift
│       │   ├── Conditioned.swift
│       │   ├── DiskCacheLevel.swift
│       │   ├── Fetcher.swift
│       │   ├── MemoryCacheLevel.swift
│       │   ├── NSUserDefaultsCacheLevel.swift
│       │   ├── NetworkFetcher.swift
│       │   └── PoolCache.swift
│       ├── CacheProvider.swift
│       ├── Carlos.swift
│       ├── Core/
│       │   ├── BasicCache.swift
│       │   ├── BasicFetcher.swift
│       │   ├── Errors.swift
│       │   ├── ExpensiveObject.swift
│       │   ├── Extensions.swift
│       │   ├── FetcherValueTransformation.swift
│       │   ├── FunctionComposition.swift
│       │   ├── Logger.swift
│       │   ├── MemoryWarning.swift
│       │   ├── StringConvertible.swift
│       │   └── UnfairLock.swift
│       ├── Info.plist
│       ├── Operations/
│       │   ├── CacheLevel+Batch.swift
│       │   ├── KeyTransformation.swift
│       │   ├── Normalize.swift
│       │   ├── PostProcess.swift
│       │   ├── SwitchCache.swift
│       │   └── ValueTransformation.swift
│       └── Transformers/
│           ├── ComposedOneWayTransformer.swift
│           ├── ComposedTwoWayTransformer.swift
│           ├── ConditionedOneWayTransformer.swift
│           ├── ConditionedOutputProcessing.swift
│           ├── ConditionedTwoWayTransformer.swift
│           ├── ConditionedValueTransformation.swift
│           ├── ImageTransformer.swift
│           ├── JSONTransformer.swift
│           ├── OneWayTransformer.swift
│           ├── StringTransformer.swift
│           ├── Transformers.swift
│           └── TwoWayTransformer.swift
├── Tests/
│   └── CarlosTests/
│       ├── BasicCacheTests.swift
│       ├── BasicFetcherTests.swift
│       ├── BatchTests.swift
│       ├── CacheProviderTests.swift
│       ├── CompositionTests.swift
│       ├── ConditionedCacheTests.swift
│       ├── ConditionedOneWayTransformationBoxTests.swift
│       ├── ConditionedOutputProcessingTests.swift
│       ├── ConditionedTransformersTests.swift
│       ├── ConditionedTwoWayTransformationBoxTests.swift
│       ├── ConditionedValueTransformationTests.swift
│       ├── DiskCacheTests.swift
│       ├── Fakes/
│       │   ├── Base64EncodedImage.swift
│       │   ├── CacheLevelFake.swift
│       │   └── FetcherFake.swift
│       ├── FetcherValueTransformationTests.swift
│       ├── ImageTransformerTests.swift
│       ├── Info.plist
│       ├── JSONTransformerTests.swift
│       ├── KeyTransformationTests.swift
│       ├── MKDistanceFormatterTransformerTests.swift
│       ├── MemoryCacheLevelTests.swift
│       ├── MemoryWarningNotificationTests.swift
│       ├── NSDateFormatterTransformerTests.swift
│       ├── NSNumberFormatterTransformerTests.swift
│       ├── NSUserDefaultsCacheLevelTests.swift
│       ├── NetworkFetcherTests.swift
│       ├── NormalizationTests.swift
│       ├── OneWayTransformationBoxTests.swift
│       ├── OneWayTransformerCompositionTests.swift
│       ├── PoolCacheTests.swift
│       ├── PostProcessTests.swift
│       ├── StringConvertibleTests.swift
│       ├── StringTransformerTests.swift
│       ├── SwitchCacheTests.swift
│       ├── TwoWayTransformationBoxTests.swift
│       ├── TwoWayTransformerCompositionTests.swift
│       └── ValueTransformationTests.swift
└── fastlane/
    ├── Fastfile
    ├── README.md
    └── Scanfile

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/pr.yml
================================================
name: PR

on:
  pull_request: 
    branches:
      - master

jobs:
  pr:
    runs-on: macos-11
    
    steps:
      - uses: actions/checkout@v2
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.6

      - uses: maxim-lobanov/setup-xcode@v1
        with:
          xcode-version: latest-stable

      - name: Prepare
        run: bundle install
      
      - name: Test
        run: bundle exec fastlane test

================================================
FILE: .gitignore
================================================
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## macOS 
.DS_Store

## Build generated
build/
DerivedData

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata

## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint

## Obj-C/Swift specific
*.hmap
*.ipa

## Playgrounds
timeline.xctimeline
playground.xcworkspace

# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
.build/
.bundle/

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md

fastlane/report.xml
fastlane/screenshots


================================================
FILE: .gitmodules
================================================


================================================
FILE: .swiftformat
================================================
# file options

--exclude Carthage,Build,.build,.swiftpm,SourcePackages
--symlinks ignore
--swiftversion 5.3

# format options

--allman false
--binarygrouping 4,8
--commas inline
--comments indent
--decimalgrouping 3,6
--elseposition same-line
--empty void
--exponentcase lowercase
--exponentgrouping disabled
--fractiongrouping disabled
--guardelse same-line
--header ignore
--hexgrouping 4,8
--hexliteralcase uppercase
--ifdef indent
--indent 2
--indentcase false
--importgrouping testable-bottom
--linebreaks lf
--maxwidth none
--octalgrouping 4,8
--patternlet hoist
--operatorfunc spaced
--nospaceoperators ..<, ...
--self remove
--semicolons inline
--stripunusedargs always
--trimwhitespace always
--wraparguments before-first
--wrapcollections before-first


================================================
FILE: .swiftlint.yml
================================================
disabled_rules:
  - redundant_string_enum_value
  - line_length
  - trailing_whitespace
  - identifier_name
  - opening_brace

opt_in_rules:
  - closure_spacing
  - conditional_returns_on_newline
  - empty_count
  - explicit_init
  - fatal_error_message
  - first_where
  - force_unwrapping
  - overridden_super_call
  - prohibited_super_call
  - redundant_nil_coalescing
  - operator_usage_whitespace

  - array_init
  - contains_over_first_not_nil
  - joined_default_parameter
  - line_length
  - literal_expression_end_indentation
  - multiline_parameters
  - override_in_extension
  - pattern_matching_keywords
  - redundant_string_enum_value
  - sorted_first_last
  - unneeded_parentheses_in_closure_argument
  - vertical_parameter_alignment_on_call

  - nimble_operator
  - quick_discouraged_call
  - quick_discouraged_focused_test
  - quick_discouraged_pending_test
  - single_test_class

  # TODO: maybe turn it on one day... (a lot of fixes)
  # - closure_end_indentation
  # - let_var_whitespace
  # - implicitly_unwrapped_optional
  # - private_outlet
  # - object_literal
  # - sorted_imports
  # - strict_fileprivate
  # - switch_case_on_newline

included:
  - Sources
  - Tests
  - Example

excluded:
  - SourcePackages
  - .build 
  - Build
  - .swiftpm
  - Carthage


cyclomatic_complexity:
  warning: 25

type_body_length:
  warning: 300
  error: 500

file_length:
  warning: 500
  error: 800

type_name:
  min_length: 3
  max_length:
    warning: 50
    error: 60
  excluded:
    - Id
    - Ad

nesting:
  type_level:
    warning: 3
    error: 5

superfluous_disable_command: warning
force_unwrapping: error
trailing_semicolon: error

reporter: "xcode"


================================================
FILE: .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:">
   </FileRef>
</Workspace>


================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/Carlos.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1150"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "Carlos"
               BuildableName = "Carlos"
               BlueprintName = "Carlos"
               ReferencedContainer = "container:">
            </BuildableReference>
         </BuildActionEntry>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "NO"
            buildForProfiling = "NO"
            buildForArchiving = "NO"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CarlosTests"
               BuildableName = "CarlosTests"
               BlueprintName = "CarlosTests"
               ReferencedContainer = "container:">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES"
      codeCoverageEnabled = "YES"
      onlyGenerateCoverageForSpecifiedTargets = "YES">
      <CodeCoverageTargets>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "Carlos"
            BuildableName = "Carlos"
            BlueprintName = "Carlos"
            ReferencedContainer = "container:">
         </BuildableReference>
      </CodeCoverageTargets>
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CarlosTests"
               BuildableName = "CarlosTests"
               BlueprintName = "CarlosTests"
               ReferencedContainer = "container:">
            </BuildableReference>
         </TestableReference>
      </Testables>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "Carlos"
            BuildableName = "Carlos"
            BlueprintName = "Carlos"
            ReferencedContainer = "container:">
         </BuildableReference>
      </MacroExpansion>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: CHANGELOG.md
================================================
# Changelog

## 1.0.0 
**Breaking Changes**
- Swift 5.3 and Xcode 12 support 
- The codebase has been migrated from PiedPiper to Combine
- The minimum supported OS version set to Combine's minimum supported version: iOS 13, macOS 10.15, watchOS 6, tvOS 13.
- Removed `Dispatched.swift` and `RequestCapperCache.swift` because the functionality they provided could be easily re-implemented using Combine operators.

**New Features** 
- `Carlos` is now powered by Combine which means you can use awesome Combine provided operators on the Carlos cached values!

## 0.10.0
**New Features**
- Swift Package Manager Support 
- Xcode 11.5 Migration

## 0.9

**Breaking Changes**
- Swift 3.0 support (for Swift 2.3 use specific commit `5d354c829d766568f164c386c59de21357b5ccff` instead)
- `batchGetAll` has been removed and replaced with a reified `allBatch` (see **New features**)
- All deprecated functions have been removed
- All custom operators have been removed in favor of their function counterparts
- macOS and tvOS support has been temporarily dropped and will be probably re-added in the future 
- `set` method on `CacheLevel` now returns a `Future` enabling error-handling and progress-tracking of `set` calls.

**New Features**
- It's now possible to lift a `CacheLevel` into one that operates on a sequence of keys and returns a sequence of values. You can use `allBatch` to create a concrete `BatchAllCache`. You can use `get` on this cache if you want to pass a list of keys and get the success callback when **all** of them succeed and the failure callback **as soon as one** of them fails (old behavior of `batchGetAll`), or you can compose or transform an `allBatch` cache just like any another `CacheLevel`. Consult the `README.md` for an example.


## 0.8

**Breaking Changes**
- The codebase has been migrated to Swift 2.2
- `Promise` now has only an empty `init`. If you used one of the convenience `init` (with `value:`, with `error:` or with `value:error:`), they now moved to `Future`.

## 0.7
**Breaking Changes**
- `onCompletion` argument now is a closure accepting a `Result<T>` as a parameter instead of a tuple `(value: T?, error: ErrorType?)`. `Result<T>` is the usual `enum` (aka `Either`) that can be `.Success(T)`, `.Error(ErrorType)` or `Cancelled` in case of canceled computations.
- Please add a `import PiedPiper` line everywhere you make use of Carlos' `Future`s or `Promise`s, since with 0.7 we now ship a separate `Pied Piper` framework.
- `AsyncComputation` has been removed from the public API. Please use `OneWayTransformer` (or `CacheLevel`) instead now.

**Deprecated**
- APIs using closures instead of `Fetcher`, `CacheLevel` or `OneWayTransformer` parameters are now deprecated in favor of their counterparts. They will be removed from Carlos with the 1.0 release.

**New Features**
- It's now possible to batch a set of fetch requests. You can use `batchGetAll` if you want to pass a list of keys and get the success callback when **all** of them succeed and the failure callback **as soon as one** of them fails, or `batchGetSome` if you want to pass a list of keys and get the success callback when all of them completed (successfully or not) but only get the list of successful responses back.

**Fixes**
- Correctly updates access date on the disk cache when calling `set` on a `DiskCacheLevel`

## 0.6

**New features**
- It's now possible to conditionally post-process values fetched from `CacheLevel`s (or fetch closures) on the key used to fetch the value. Use the function `conditionedPostProcess` or consult the `README.md` for more information
- It's now possible to conditionally transform values fetched from (or set on) `CacheLevel`s on the key used to fetch (or set) the value. Use the function `conditionedValueTransformation` or consult the `README.md` for more information

**Fixes**
- `Carthage` integration works again

**Minor improvements**
- `CacheProvider` now has accessors to retrieve shared instances of the built-in caches (`sharedImageCache`, `sharedDataCache` and `sharedJSONCache`)

## 0.5

**New features**
- `Promise` can now be canceled. Call `cancel()` to cancel a `Promise`. Be notified of a canceled operation with the `onCancel` function. Use `onCancel` to setup the cancel behavior of your custom operation. Remember that an operation can only be canceled once, and can only be *executing*, *canceled*, *failed* or *succeeded* at any given time.
- It's now possible to apply a condition to a `OneWayTransformer`. You can call `conditioned` on the instance of `OneWayTransformer` to decorate and pass the condition on the input. This means you can effectively implement conditioned key transformations on `CacheLevel`s. Moreover, you can implement conditioned post processing transformations as well. For this, though, keep in mind that the input of the `OneWayTransformer` will be the output of the cache, not the key.
- It's now possible to apply a condition to a `TwoWayTransformer`. You can call `conditioned` on the instance of `TwoWayTransformer` to decorate and pass two conditions: the one to apply for the forward transformation and the one to apply for the inverse transformation, that will take of course different input types. This means you can effectively implement conditioned value transformations on `CacheLevel`s. 
- A new `NSUserDefaultsCacheLevel` is now included in `Carlos`. You can use this `CacheLevel` to persist values on `NSUserDefaults`, and you can even use multiple instances of this level to persist sandboxed sets of values
- It's now possible to dispatch a `CacheLevel` or a fetch closure on a given GCD queue. Use the `dispatch` protocol extension or the `~>>` operator and pass the  specific `dispatch_queue_t`. Global functions are not provided since we're moving towards a global-functions-free API for `Carlos 1.0`

**Major changes**
- **API Breaking**: `CacheRequest` is now renamed to `Future`. All the public API return `Future` instances now, and you can use `Promise` for your custom cache levels and fetchers
- **API Breaking**: `OneWayTransformer` and `TwoWayTransformer` are now asynchronous, i.e. they return a `Future<T>` instead of a `T` directly
- **API Breaking**: all the `conditioned` variants now take an asynchronous condition closure, i.e. the closure has to return a `Future<Bool>` instead of a `(Bool, ErrorType)` tuple
- All the global functions are now **deprecated**. They will be removed from the public API with the release of `Carlos 1.0`

**Minor improvements**
- `Promise` can now be initialized with an `Optional<T>` and an `ErrorType`, correctly behaving depending on the optional value
- `Promise` now has a `mimic` function that takes a `Future<T>` and succeeds or fails when the given `Future` does so
- `ImageTransformer` now applies its tranformations on a background queue
- `JSONTransformer` now passes the right error when the transformations fail 
- `CacheProvider.dataCache` now pools requests on the network **and** disk levels, so pooled requests don't result in multiple `set` calls on the disk level
- It's now possible to `cancel` operations coming from a `NetworkFetcher`
- `Int`, `Float`, `Double` and `Character` conform to `ExpensiveObject` now with a unit (`1`) cost
- Added a `MIGRATING.md` to the repo and to the Wiki that explains how to migrate to new versions of `Carlos` (only for breaking changes)


## 0.4

**Major changes**
- Adds a `Fetcher` protocol that you can use to create your custom fetchers.
- Adds the possibility to transform values coming out of `Fetcher` instances through `OneWayTransformer` objects without forcing them to be `TwoWayTransformer` as in the case of transforming values of `CacheLevel` instances 
- Adds a `JSONCache` function to `CacheProvider`
- Adds output processers to process/sanitize values coming out of `CacheLevel`s (see `postProcess`) 
- Adds a way to compose multiple `OneWayTransformer`s through functions, operators and protocol extensions
- Adds a way to compose multiple `TwoWayTransformer`s through functions, operators and protocol extensions
- Adds a `normalize` function and protocol extension transforming `CacheLevel` instances into `BasicCache` ones to make it easier to store instance properties
- Adds a `JSONTransformer` class conforming to `TwoWayTransformer`
- Adds a `ImageTransformer` class for the iOS and WatchOS 2 frameworks conforming to `TwoWayTransformer`
- Adds a `StringTransformer` class conforming to `TwoWayTransformer`

**Minor improvements**
- `invert` is now available as a protocol extension to the `TwoWayTransformer` protocol

**WatchOS 2**
- Adds `WatchOS 2` support through `CocoaPods`

**tvOS**
- Adds framework support for `tvOS`

## 0.3

**Major changes**
- Codebase converted to `Swift 2.0`
- Adds `WatchOS 2` support
- Adds `Mac OS X 10.9+` support

**API-Breaking changes**
- `CacheRequest.onFailure` now passes an `ErrorType` instead of an `NSError`

**Minor improvements**
- Adds an `onCompletion` method to the `CacheRequest` class, that will be called in both success and failure cases

## 0.2

**Major changes**
- Includes a `CacheProvider` class to create commonly used caches
- Includes a Playground to quickly test Carlos and custom cache architectures
- includes a new `switchLevels` function to have multiple cache lanes

**Minor improvements**
- Improves `DiskCacheLevel` and `MemoryCacheLevel` by having protocol-based keys
- Defines safer Transformers (either `OneWayTransformer` or `TwoWayTransformer`) that return Optionals. If a conversion fails, set operations silently fail and get operations fail with a meaningful error.
- Extends the `conditioned` function and the `<?>` operator to support fetch closures
- Improves the code documentation

**Bugfixes**
- Fixes an issue where the `NetworkFetcher` would not correctly handle multiple get requests for the same URL

## 0.1

- First release


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Carlos

If you want to contribute to this repo, please:

- Create an issue explaining your problem and your solution
- Clone the repo on your local machine
- Create a branch with the issue number and a short abstract of the feature name
- Implement your solution
- Write tests (untested features won't be merged)
- When all the tests are written and green, create a pull request, with a short description of the approach taken

================================================
FILE: Carlos.podspec
================================================
#
# Be sure to run `pod lib lint Carlos.podspec' to ensure this is a
# valid spec and remove all comments before submitting the spec.
#

Pod::Spec.new do |s|
  s.name             = "Carlos"
  s.version          = "1.0.0"
  s.summary          = "A simple but flexible cache."
  s.description      = <<-DESC
			Carlos is a small set of classes convenience operators to realize custom, flexible and powerful cache layers in your iOS, watchOS, tvOS and Mac OS X applications.
                       DESC
  s.homepage         = "https://github.com/spring-media/Carlos"
  s.license          = 'MIT'
  s.author           = { "Vittorio Monaco" => "vittorio.monaco1@gmail.com" }
  s.source           = { :git => "https://github.com/spring-media/Carlos.git", :tag => s.version.to_s }
  s.swift_version    = '5.0'

  s.ios.deployment_target     = '13.0'
  s.watchos.deployment_target = '6.0'

  s.source_files          = 'Sources/Carlos/*.swift'
  s.watchos.exclude_files = 'Sources/Carlos/MemoryWarning.swift'

  s.requires_arc = true
end


================================================
FILE: Carlos.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 52;
	objects = {

/* Begin PBXBuildFile section */
		5205729B1BB8716E0098DD09 /* StringTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5205729A1BB8716E0098DD09 /* StringTransformer.swift */; };
		520572A91BB8752B0098DD09 /* StringTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520572A81BB8752B0098DD09 /* StringTransformerTests.swift */; };
		5207E6991BE13D2E0062DEAC /* ExpensiveObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5207E6981BE13D2E0062DEAC /* ExpensiveObject.swift */; };
		5207E6AD1BE15BCE0062DEAC /* NSUserDefaultsCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5207E6AC1BE15BCE0062DEAC /* NSUserDefaultsCacheLevel.swift */; };
		520DBB4F1CF6307500F9ABE3 /* BatchAllCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520DBB4E1CF6307500F9ABE3 /* BatchAllCache.swift */; };
		5222107C1C501C5400E682D1 /* ConditionedOneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222107B1C501C5400E682D1 /* ConditionedOneWayTransformer.swift */; };
		5222108B1C501F2100E682D1 /* ConditionedTwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222108A1C501F2100E682D1 /* ConditionedTwoWayTransformer.swift */; };
		522210901C50358700E682D1 /* ConditionedOneWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222108F1C50358700E682D1 /* ConditionedOneWayTransformationBoxTests.swift */; };
		523257D21B51993000A10A56 /* TwoWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523257D11B51993000A10A56 /* TwoWayTransformationBoxTests.swift */; };
		523257D41B519AB900A10A56 /* OneWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523257D31B519AB900A10A56 /* OneWayTransformationBoxTests.swift */; };
		5235BAD71BE175BE0049CFA6 /* NSUserDefaultsCacheLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5235BAD61BE175BE0049CFA6 /* NSUserDefaultsCacheLevelTests.swift */; };
		524019BC1C0AF9ED00749957 /* CacheProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 524019BB1C0AF9ED00749957 /* CacheProviderTests.swift */; };
		5243C4B31B77670F00737B3B /* StringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5243C4B21B77670F00737B3B /* StringConvertible.swift */; };
		5243C4BF1B77686300737B3B /* StringConvertibleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5243C4BE1B77686300737B3B /* StringConvertibleTests.swift */; };
		52463F6E1C181D1B0034D032 /* ConditionedOutputProcessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F6D1C181D1B0034D032 /* ConditionedOutputProcessing.swift */; };
		52463F7D1C18264B0034D032 /* ConditionedOutputProcessingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F7C1C18264B0034D032 /* ConditionedOutputProcessingTests.swift */; };
		52463F7F1C1837CF0034D032 /* ConditionedValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F7E1C1837CF0034D032 /* ConditionedValueTransformation.swift */; };
		5250E3801BB1345700EB7388 /* Normalize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5250E37F1BB1345700EB7388 /* Normalize.swift */; };
		5250E3841BB137BF00EB7388 /* NormalizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5250E3831BB137BF00EB7388 /* NormalizationTests.swift */; };
		5257BBB41BBFC3FD00787819 /* ComposedTwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5257BBB31BBFC3FD00787819 /* ComposedTwoWayTransformer.swift */; };
		5257BBC21BBFC7A800787819 /* TwoWayTransformerCompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5257BBC11BBFC7A800787819 /* TwoWayTransformerCompositionTests.swift */; };
		526005AF1BB84AB200D96242 /* ImageTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526005AE1BB84AB200D96242 /* ImageTransformerTests.swift */; };
		526078251BE2590E0022040B /* ConditionedTransformersTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526078241BE2590E0022040B /* ConditionedTransformersTests.swift */; };
		52615CD41BBC8123001DA9BE /* ComposedOneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52615CD31BBC8123001DA9BE /* ComposedOneWayTransformer.swift */; };
		52615CE21BBC87F4001DA9BE /* OneWayTransformerCompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52615CE11BBC87F4001DA9BE /* OneWayTransformerCompositionTests.swift */; };
		526339751B52435C00074CB9 /* KeyTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339741B52435C00074CB9 /* KeyTransformation.swift */; };
		526339771B52450C00074CB9 /* ConditionedCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339761B52450C00074CB9 /* ConditionedCacheTests.swift */; };
		5263397B1B52536700074CB9 /* KeyTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397A1B52536700074CB9 /* KeyTransformationTests.swift */; };
		5263397D1B525D1600074CB9 /* MemoryCacheLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397C1B525D1600074CB9 /* MemoryCacheLevelTests.swift */; };
		5263397F1B52760F00074CB9 /* ValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397E1B52760F00074CB9 /* ValueTransformationTests.swift */; };
		526339811B52805000074CB9 /* MemoryWarningNotificationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339801B52805000074CB9 /* MemoryWarningNotificationTests.swift */; };
		526339831B52866900074CB9 /* BasicCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339821B52866900074CB9 /* BasicCacheTests.swift */; };
		526339851B52A82800074CB9 /* CompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339841B52A82800074CB9 /* CompositionTests.swift */; };
		526339891B52B51C00074CB9 /* DiskCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339881B52B51C00074CB9 /* DiskCacheTests.swift */; };
		52635A4F1B4F0F6F00F187EE /* BasicCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3C1B4F0F6F00F187EE /* BasicCache.swift */; };
		52635A511B4F0F6F00F187EE /* Carlos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3E1B4F0F6F00F187EE /* Carlos.swift */; };
		52635A521B4F0F6F00F187EE /* Composed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3F1B4F0F6F00F187EE /* Composed.swift */; };
		52635A531B4F0F6F00F187EE /* Conditioned.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A401B4F0F6F00F187EE /* Conditioned.swift */; };
		52635A551B4F0F6F00F187EE /* DiskCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A421B4F0F6F00F187EE /* DiskCacheLevel.swift */; };
		52635A561B4F0F6F00F187EE /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A431B4F0F6F00F187EE /* Errors.swift */; };
		52635A571B4F0F6F00F187EE /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A441B4F0F6F00F187EE /* Extensions.swift */; };
		52635A581B4F0F6F00F187EE /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A451B4F0F6F00F187EE /* Logger.swift */; };
		52635A591B4F0F6F00F187EE /* MemoryCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A461B4F0F6F00F187EE /* MemoryCacheLevel.swift */; };
		52635A5A1B4F0F6F00F187EE /* MemoryWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A471B4F0F6F00F187EE /* MemoryWarning.swift */; };
		52635A5B1B4F0F6F00F187EE /* NetworkFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A481B4F0F6F00F187EE /* NetworkFetcher.swift */; };
		52635A5C1B4F0F6F00F187EE /* OneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A491B4F0F6F00F187EE /* OneWayTransformer.swift */; };
		52635A5D1B4F0F6F00F187EE /* PoolCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4A1B4F0F6F00F187EE /* PoolCache.swift */; };
		52635A5F1B4F0F6F00F187EE /* ValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4C1B4F0F6F00F187EE /* ValueTransformation.swift */; };
		52635A601B4F0F6F00F187EE /* Transformers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4D1B4F0F6F00F187EE /* Transformers.swift */; };
		52635A611B4F0F6F00F187EE /* TwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4E1B4F0F6F00F187EE /* TwoWayTransformer.swift */; };
		5274A99B1BC05CB0006962E8 /* FetcherValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A99A1BC05CB0006962E8 /* FetcherValueTransformation.swift */; };
		5274A9A01BC0613C006962E8 /* BasicFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A99F1BC0613C006962E8 /* BasicFetcher.swift */; };
		5274A9CD1BC06976006962E8 /* BasicFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A9CC1BC06976006962E8 /* BasicFetcherTests.swift */; };
		5274A9D91BC069E7006962E8 /* FetcherValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A9D81BC069E7006962E8 /* FetcherValueTransformationTests.swift */; };
		527C65471B7A66D90005023B /* SwitchCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527C65461B7A66D90005023B /* SwitchCache.swift */; };
		527C65531B7A89440005023B /* SwitchCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527C65521B7A89440005023B /* SwitchCacheTests.swift */; };
		5291C8531BB7FAA800C4E15E /* JSONTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5291C8521BB7FAA800C4E15E /* JSONTransformerTests.swift */; };
		52B7621C1BB84F160087CD91 /* JSONTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B7621B1BB84F160087CD91 /* JSONTransformer.swift */; };
		52BBFD561B51BA140000084A /* CacheLevelFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BBFD551B51BA140000084A /* CacheLevelFake.swift */; };
		52BBFD581B51BAD20000084A /* PoolCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BBFD571B51BAD20000084A /* PoolCacheTests.swift */; };
		52BED3501CE87C38002C045A /* Carlos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52635A1D1B4F0F3D00F187EE /* Carlos.framework */; };
		52D5F3481C503C6700BA3452 /* ConditionedTwoWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D5F3471C503C6700BA3452 /* ConditionedTwoWayTransformationBoxTests.swift */; };
		52D5F3541C52C32000BA3452 /* ConditionedValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D5F3531C52C32000BA3452 /* ConditionedValueTransformationTests.swift */; };
		52D7DDAD1C54F4E1007E5328 /* CacheLevel+Batch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D7DDAC1C54F4E1007E5328 /* CacheLevel+Batch.swift */; };
		52D7DDBC1C552854007E5328 /* BatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D7DDBB1C552854007E5328 /* BatchTests.swift */; };
		52E0CBF91BBC4E1800F20C22 /* PostProcess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E0CBF81BBC4E1800F20C22 /* PostProcess.swift */; };
		52E197021BBC6B27004BF6C5 /* PostProcessTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E197011BBC6B27004BF6C5 /* PostProcessTests.swift */; };
		52F0644F1B51AC0D00145C98 /* NSDateFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F0644E1B51AC0D00145C98 /* NSDateFormatterTransformerTests.swift */; };
		52F064511B51AE4300145C98 /* NSNumberFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F064501B51AE4300145C98 /* NSNumberFormatterTransformerTests.swift */; };
		52F064551B51B26200145C98 /* MKDistanceFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F064541B51B26200145C98 /* MKDistanceFormatterTransformerTests.swift */; };
		AD22FB2D1B70BBF6007F319F /* CacheProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD22FB2C1B70BBF5007F319F /* CacheProvider.swift */; };
		C71C59751B6A722800AE5294 /* NetworkFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C71C59731B6A721C00AE5294 /* NetworkFetcherTests.swift */; };
		CC0313E124ACBBC8002AB2BE /* Base64EncodedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0313DF24ACBBC8002AB2BE /* Base64EncodedImage.swift */; };
		CC0313E724ACCF94002AB2BE /* Transformers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4D1B4F0F6F00F187EE /* Transformers.swift */; };
		CC0313E824ACCF94002AB2BE /* ConditionedTwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222108A1C501F2100E682D1 /* ConditionedTwoWayTransformer.swift */; };
		CC0313E924ACCF94002AB2BE /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A441B4F0F6F00F187EE /* Extensions.swift */; };
		CC0313EA24ACCF94002AB2BE /* ConditionedValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F7E1C1837CF0034D032 /* ConditionedValueTransformation.swift */; };
		CC0313EB24ACCF94002AB2BE /* NetworkFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A481B4F0F6F00F187EE /* NetworkFetcher.swift */; };
		CC0313EC24ACCF94002AB2BE /* SwitchCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527C65461B7A66D90005023B /* SwitchCache.swift */; };
		CC0313ED24ACCF94002AB2BE /* MemoryCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A461B4F0F6F00F187EE /* MemoryCacheLevel.swift */; };
		CC0313EE24ACCF94002AB2BE /* Carlos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3E1B4F0F6F00F187EE /* Carlos.swift */; };
		CC0313EF24ACCF94002AB2BE /* CacheLevel+Batch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D7DDAC1C54F4E1007E5328 /* CacheLevel+Batch.swift */; };
		CC0313F024ACCF94002AB2BE /* BasicCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3C1B4F0F6F00F187EE /* BasicCache.swift */; };
		CC0313F224ACCF94002AB2BE /* ImageTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC7061D24AC93EA00D16827 /* ImageTransformer.swift */; };
		CC0313F324ACCF94002AB2BE /* ValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4C1B4F0F6F00F187EE /* ValueTransformation.swift */; };
		CC0313F424ACCF94002AB2BE /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A451B4F0F6F00F187EE /* Logger.swift */; };
		CC0313F524ACCF94002AB2BE /* ComposedTwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5257BBB31BBFC3FD00787819 /* ComposedTwoWayTransformer.swift */; };
		CC0313F624ACCF94002AB2BE /* KeyTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339741B52435C00074CB9 /* KeyTransformation.swift */; };
		CC0313F724ACCF94002AB2BE /* CacheProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD22FB2C1B70BBF5007F319F /* CacheProvider.swift */; };
		CC0313F824ACCF94002AB2BE /* NSUserDefaultsCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5207E6AC1BE15BCE0062DEAC /* NSUserDefaultsCacheLevel.swift */; };
		CC0313F924ACCF94002AB2BE /* BatchAllCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520DBB4E1CF6307500F9ABE3 /* BatchAllCache.swift */; };
		CC0313FC24ACCF94002AB2BE /* ComposedOneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52615CD31BBC8123001DA9BE /* ComposedOneWayTransformer.swift */; };
		CC0313FD24ACCF94002AB2BE /* StringTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5205729A1BB8716E0098DD09 /* StringTransformer.swift */; };
		CC0313FE24ACCF94002AB2BE /* FetcherValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A99A1BC05CB0006962E8 /* FetcherValueTransformation.swift */; };
		CC0313FF24ACCF94002AB2BE /* PoolCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4A1B4F0F6F00F187EE /* PoolCache.swift */; };
		CC03140024ACCF94002AB2BE /* PostProcess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E0CBF81BBC4E1800F20C22 /* PostProcess.swift */; };
		CC03140224ACCF94002AB2BE /* OneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A491B4F0F6F00F187EE /* OneWayTransformer.swift */; };
		CC03140324ACCF94002AB2BE /* ConditionedOutputProcessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F6D1C181D1B0034D032 /* ConditionedOutputProcessing.swift */; };
		CC03140424ACCF94002AB2BE /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A431B4F0F6F00F187EE /* Errors.swift */; };
		CC03140524ACCF94002AB2BE /* ExpensiveObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5207E6981BE13D2E0062DEAC /* ExpensiveObject.swift */; };
		CC03140624ACCF94002AB2BE /* TwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4E1B4F0F6F00F187EE /* TwoWayTransformer.swift */; };
		CC03140724ACCF94002AB2BE /* CacheProvider+ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC7061C24AC93EA00D16827 /* CacheProvider+ImageCache.swift */; };
		CC03140824ACCF94002AB2BE /* DiskCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A421B4F0F6F00F187EE /* DiskCacheLevel.swift */; };
		CC03140924ACCF94002AB2BE /* MemoryWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A471B4F0F6F00F187EE /* MemoryWarning.swift */; };
		CC03140A24ACCF94002AB2BE /* Composed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3F1B4F0F6F00F187EE /* Composed.swift */; };
		CC03140B24ACCF94002AB2BE /* Conditioned.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A401B4F0F6F00F187EE /* Conditioned.swift */; };
		CC03140C24ACCF94002AB2BE /* JSONTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B7621B1BB84F160087CD91 /* JSONTransformer.swift */; };
		CC03140D24ACCF94002AB2BE /* StringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5243C4B21B77670F00737B3B /* StringConvertible.swift */; };
		CC03140E24ACCF94002AB2BE /* BasicFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A99F1BC0613C006962E8 /* BasicFetcher.swift */; };
		CC03140F24ACCF94002AB2BE /* Normalize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5250E37F1BB1345700EB7388 /* Normalize.swift */; };
		CC03141024ACCF94002AB2BE /* ConditionedOneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222107B1C501C5400E682D1 /* ConditionedOneWayTransformer.swift */; };
		CC03142024ACCF99002AB2BE /* ImageTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526005AE1BB84AB200D96242 /* ImageTransformerTests.swift */; };
		CC03142124ACCF99002AB2BE /* MemoryWarningNotificationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339801B52805000074CB9 /* MemoryWarningNotificationTests.swift */; };
		CC03142224ACCF99002AB2BE /* StringConvertibleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5243C4BE1B77686300737B3B /* StringConvertibleTests.swift */; };
		CC03142324ACCF99002AB2BE /* DiskCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339881B52B51C00074CB9 /* DiskCacheTests.swift */; };
		CC03142424ACCF99002AB2BE /* ConditionedTwoWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D5F3471C503C6700BA3452 /* ConditionedTwoWayTransformationBoxTests.swift */; };
		CC03142524ACCF99002AB2BE /* MKDistanceFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F064541B51B26200145C98 /* MKDistanceFormatterTransformerTests.swift */; };
		CC03142624ACCF99002AB2BE /* StringTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520572A81BB8752B0098DD09 /* StringTransformerTests.swift */; };
		CC03142724ACCF99002AB2BE /* ConditionedOutputProcessingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F7C1C18264B0034D032 /* ConditionedOutputProcessingTests.swift */; };
		CC03142924ACCF99002AB2BE /* OneWayTransformerCompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52615CE11BBC87F4001DA9BE /* OneWayTransformerCompositionTests.swift */; };
		CC03142A24ACCF99002AB2BE /* JSONTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5291C8521BB7FAA800C4E15E /* JSONTransformerTests.swift */; };
		CC03142B24ACCF99002AB2BE /* OneWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523257D31B519AB900A10A56 /* OneWayTransformationBoxTests.swift */; };
		CC03142C24ACCF99002AB2BE /* ConditionedOneWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222108F1C50358700E682D1 /* ConditionedOneWayTransformationBoxTests.swift */; };
		CC03142D24ACCF99002AB2BE /* SwitchCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527C65521B7A89440005023B /* SwitchCacheTests.swift */; };
		CC03142F24ACCF99002AB2BE /* CacheLevelFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BBFD551B51BA140000084A /* CacheLevelFake.swift */; };
		CC03143124ACCF99002AB2BE /* BatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D7DDBB1C552854007E5328 /* BatchTests.swift */; };
		CC03143224ACCF99002AB2BE /* NSDateFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F0644E1B51AC0D00145C98 /* NSDateFormatterTransformerTests.swift */; };
		CC03143324ACCF99002AB2BE /* FetcherValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A9D81BC069E7006962E8 /* FetcherValueTransformationTests.swift */; };
		CC03143424ACCF99002AB2BE /* Base64EncodedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0313DF24ACBBC8002AB2BE /* Base64EncodedImage.swift */; };
		CC03143524ACCF99002AB2BE /* BasicCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339821B52866900074CB9 /* BasicCacheTests.swift */; };
		CC03143624ACCF99002AB2BE /* ValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397E1B52760F00074CB9 /* ValueTransformationTests.swift */; };
		CC03143724ACCF99002AB2BE /* TwoWayTransformerCompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5257BBC11BBFC7A800787819 /* TwoWayTransformerCompositionTests.swift */; };
		CC03143824ACCF99002AB2BE /* CacheProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 524019BB1C0AF9ED00749957 /* CacheProviderTests.swift */; };
		CC03143924ACCF99002AB2BE /* MemoryCacheLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397C1B525D1600074CB9 /* MemoryCacheLevelTests.swift */; };
		CC03143A24ACCF99002AB2BE /* KeyTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397A1B52536700074CB9 /* KeyTransformationTests.swift */; };
		CC03143B24ACCF99002AB2BE /* ConditionedTransformersTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526078241BE2590E0022040B /* ConditionedTransformersTests.swift */; };
		CC03143C24ACCF99002AB2BE /* CompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339841B52A82800074CB9 /* CompositionTests.swift */; };
		CC03143D24ACCF99002AB2BE /* PoolCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BBFD571B51BAD20000084A /* PoolCacheTests.swift */; };
		CC03143E24ACCF99002AB2BE /* ConditionedCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339761B52450C00074CB9 /* ConditionedCacheTests.swift */; };
		CC03143F24ACCF99002AB2BE /* NSNumberFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F064501B51AE4300145C98 /* NSNumberFormatterTransformerTests.swift */; };
		CC03144024ACCF99002AB2BE /* NetworkFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C71C59731B6A721C00AE5294 /* NetworkFetcherTests.swift */; };
		CC03144124ACCF99002AB2BE /* BasicFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A9CC1BC06976006962E8 /* BasicFetcherTests.swift */; };
		CC03144224ACCF99002AB2BE /* ConditionedValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D5F3531C52C32000BA3452 /* ConditionedValueTransformationTests.swift */; };
		CC03144324ACCF99002AB2BE /* PostProcessTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E197011BBC6B27004BF6C5 /* PostProcessTests.swift */; };
		CC03144424ACCF99002AB2BE /* NSUserDefaultsCacheLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5235BAD61BE175BE0049CFA6 /* NSUserDefaultsCacheLevelTests.swift */; };
		CC03144524ACCF99002AB2BE /* NormalizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5250E3831BB137BF00EB7388 /* NormalizationTests.swift */; };
		CC03144624ACCF99002AB2BE /* TwoWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523257D11B51993000A10A56 /* TwoWayTransformationBoxTests.swift */; };
		CC03145924ACCFA0002AB2BE /* Transformers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4D1B4F0F6F00F187EE /* Transformers.swift */; };
		CC03145A24ACCFA0002AB2BE /* ConditionedTwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222108A1C501F2100E682D1 /* ConditionedTwoWayTransformer.swift */; };
		CC03145B24ACCFA0002AB2BE /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A441B4F0F6F00F187EE /* Extensions.swift */; };
		CC03145C24ACCFA0002AB2BE /* ConditionedValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F7E1C1837CF0034D032 /* ConditionedValueTransformation.swift */; };
		CC03145D24ACCFA0002AB2BE /* NetworkFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A481B4F0F6F00F187EE /* NetworkFetcher.swift */; };
		CC03145E24ACCFA0002AB2BE /* SwitchCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527C65461B7A66D90005023B /* SwitchCache.swift */; };
		CC03145F24ACCFA0002AB2BE /* MemoryCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A461B4F0F6F00F187EE /* MemoryCacheLevel.swift */; };
		CC03146024ACCFA0002AB2BE /* Carlos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3E1B4F0F6F00F187EE /* Carlos.swift */; };
		CC03146124ACCFA0002AB2BE /* CacheLevel+Batch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D7DDAC1C54F4E1007E5328 /* CacheLevel+Batch.swift */; };
		CC03146224ACCFA0002AB2BE /* BasicCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3C1B4F0F6F00F187EE /* BasicCache.swift */; };
		CC03146424ACCFA0002AB2BE /* ImageTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC7061D24AC93EA00D16827 /* ImageTransformer.swift */; };
		CC03146524ACCFA0002AB2BE /* ValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4C1B4F0F6F00F187EE /* ValueTransformation.swift */; };
		CC03146624ACCFA0002AB2BE /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A451B4F0F6F00F187EE /* Logger.swift */; };
		CC03146724ACCFA0002AB2BE /* ComposedTwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5257BBB31BBFC3FD00787819 /* ComposedTwoWayTransformer.swift */; };
		CC03146824ACCFA0002AB2BE /* KeyTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339741B52435C00074CB9 /* KeyTransformation.swift */; };
		CC03146924ACCFA0002AB2BE /* CacheProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD22FB2C1B70BBF5007F319F /* CacheProvider.swift */; };
		CC03146A24ACCFA0002AB2BE /* NSUserDefaultsCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5207E6AC1BE15BCE0062DEAC /* NSUserDefaultsCacheLevel.swift */; };
		CC03146B24ACCFA0002AB2BE /* BatchAllCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520DBB4E1CF6307500F9ABE3 /* BatchAllCache.swift */; };
		CC03146E24ACCFA0002AB2BE /* ComposedOneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52615CD31BBC8123001DA9BE /* ComposedOneWayTransformer.swift */; };
		CC03146F24ACCFA0002AB2BE /* StringTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5205729A1BB8716E0098DD09 /* StringTransformer.swift */; };
		CC03147024ACCFA0002AB2BE /* FetcherValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A99A1BC05CB0006962E8 /* FetcherValueTransformation.swift */; };
		CC03147124ACCFA0002AB2BE /* PoolCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4A1B4F0F6F00F187EE /* PoolCache.swift */; };
		CC03147224ACCFA0002AB2BE /* PostProcess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E0CBF81BBC4E1800F20C22 /* PostProcess.swift */; };
		CC03147424ACCFA0002AB2BE /* OneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A491B4F0F6F00F187EE /* OneWayTransformer.swift */; };
		CC03147524ACCFA0002AB2BE /* ConditionedOutputProcessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F6D1C181D1B0034D032 /* ConditionedOutputProcessing.swift */; };
		CC03147624ACCFA0002AB2BE /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A431B4F0F6F00F187EE /* Errors.swift */; };
		CC03147724ACCFA0002AB2BE /* ExpensiveObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5207E6981BE13D2E0062DEAC /* ExpensiveObject.swift */; };
		CC03147824ACCFA0002AB2BE /* TwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4E1B4F0F6F00F187EE /* TwoWayTransformer.swift */; };
		CC03147924ACCFA0002AB2BE /* CacheProvider+ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC7061C24AC93EA00D16827 /* CacheProvider+ImageCache.swift */; };
		CC03147A24ACCFA0002AB2BE /* DiskCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A421B4F0F6F00F187EE /* DiskCacheLevel.swift */; };
		CC03147B24ACCFA0002AB2BE /* MemoryWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A471B4F0F6F00F187EE /* MemoryWarning.swift */; };
		CC03147C24ACCFA0002AB2BE /* Composed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3F1B4F0F6F00F187EE /* Composed.swift */; };
		CC03147D24ACCFA0002AB2BE /* Conditioned.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A401B4F0F6F00F187EE /* Conditioned.swift */; };
		CC03147E24ACCFA0002AB2BE /* JSONTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B7621B1BB84F160087CD91 /* JSONTransformer.swift */; };
		CC03147F24ACCFA0002AB2BE /* StringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5243C4B21B77670F00737B3B /* StringConvertible.swift */; };
		CC03148024ACCFA0002AB2BE /* BasicFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A99F1BC0613C006962E8 /* BasicFetcher.swift */; };
		CC03148124ACCFA0002AB2BE /* Normalize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5250E37F1BB1345700EB7388 /* Normalize.swift */; };
		CC03148224ACCFA0002AB2BE /* ConditionedOneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222107B1C501C5400E682D1 /* ConditionedOneWayTransformer.swift */; };
		CC0314C924ACCFAC002AB2BE /* ImageTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526005AE1BB84AB200D96242 /* ImageTransformerTests.swift */; };
		CC0314CA24ACCFAC002AB2BE /* MemoryWarningNotificationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339801B52805000074CB9 /* MemoryWarningNotificationTests.swift */; };
		CC0314CB24ACCFAC002AB2BE /* StringConvertibleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5243C4BE1B77686300737B3B /* StringConvertibleTests.swift */; };
		CC0314CC24ACCFAC002AB2BE /* DiskCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339881B52B51C00074CB9 /* DiskCacheTests.swift */; };
		CC0314CD24ACCFAC002AB2BE /* ConditionedTwoWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D5F3471C503C6700BA3452 /* ConditionedTwoWayTransformationBoxTests.swift */; };
		CC0314CE24ACCFAC002AB2BE /* MKDistanceFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F064541B51B26200145C98 /* MKDistanceFormatterTransformerTests.swift */; };
		CC0314CF24ACCFAC002AB2BE /* StringTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520572A81BB8752B0098DD09 /* StringTransformerTests.swift */; };
		CC0314D024ACCFAC002AB2BE /* ConditionedOutputProcessingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F7C1C18264B0034D032 /* ConditionedOutputProcessingTests.swift */; };
		CC0314D224ACCFAC002AB2BE /* OneWayTransformerCompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52615CE11BBC87F4001DA9BE /* OneWayTransformerCompositionTests.swift */; };
		CC0314D324ACCFAC002AB2BE /* JSONTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5291C8521BB7FAA800C4E15E /* JSONTransformerTests.swift */; };
		CC0314D424ACCFAC002AB2BE /* OneWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523257D31B519AB900A10A56 /* OneWayTransformationBoxTests.swift */; };
		CC0314D524ACCFAC002AB2BE /* ConditionedOneWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222108F1C50358700E682D1 /* ConditionedOneWayTransformationBoxTests.swift */; };
		CC0314D624ACCFAC002AB2BE /* SwitchCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527C65521B7A89440005023B /* SwitchCacheTests.swift */; };
		CC0314D824ACCFAC002AB2BE /* CacheLevelFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BBFD551B51BA140000084A /* CacheLevelFake.swift */; };
		CC0314DA24ACCFAC002AB2BE /* BatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D7DDBB1C552854007E5328 /* BatchTests.swift */; };
		CC0314DB24ACCFAC002AB2BE /* NSDateFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F0644E1B51AC0D00145C98 /* NSDateFormatterTransformerTests.swift */; };
		CC0314DC24ACCFAC002AB2BE /* FetcherValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A9D81BC069E7006962E8 /* FetcherValueTransformationTests.swift */; };
		CC0314DD24ACCFAC002AB2BE /* Base64EncodedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0313DF24ACBBC8002AB2BE /* Base64EncodedImage.swift */; };
		CC0314DE24ACCFAC002AB2BE /* BasicCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339821B52866900074CB9 /* BasicCacheTests.swift */; };
		CC0314DF24ACCFAC002AB2BE /* ValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397E1B52760F00074CB9 /* ValueTransformationTests.swift */; };
		CC0314E024ACCFAC002AB2BE /* TwoWayTransformerCompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5257BBC11BBFC7A800787819 /* TwoWayTransformerCompositionTests.swift */; };
		CC0314E124ACCFAC002AB2BE /* CacheProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 524019BB1C0AF9ED00749957 /* CacheProviderTests.swift */; };
		CC0314E224ACCFAC002AB2BE /* MemoryCacheLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397C1B525D1600074CB9 /* MemoryCacheLevelTests.swift */; };
		CC0314E324ACCFAC002AB2BE /* KeyTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263397A1B52536700074CB9 /* KeyTransformationTests.swift */; };
		CC0314E424ACCFAC002AB2BE /* ConditionedTransformersTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526078241BE2590E0022040B /* ConditionedTransformersTests.swift */; };
		CC0314E524ACCFAC002AB2BE /* CompositionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339841B52A82800074CB9 /* CompositionTests.swift */; };
		CC0314E624ACCFAC002AB2BE /* PoolCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BBFD571B51BAD20000084A /* PoolCacheTests.swift */; };
		CC0314E724ACCFAC002AB2BE /* ConditionedCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339761B52450C00074CB9 /* ConditionedCacheTests.swift */; };
		CC0314E824ACCFAC002AB2BE /* NSNumberFormatterTransformerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F064501B51AE4300145C98 /* NSNumberFormatterTransformerTests.swift */; };
		CC0314E924ACCFAC002AB2BE /* NetworkFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C71C59731B6A721C00AE5294 /* NetworkFetcherTests.swift */; };
		CC0314EA24ACCFAC002AB2BE /* BasicFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A9CC1BC06976006962E8 /* BasicFetcherTests.swift */; };
		CC0314EB24ACCFAC002AB2BE /* ConditionedValueTransformationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D5F3531C52C32000BA3452 /* ConditionedValueTransformationTests.swift */; };
		CC0314EC24ACCFAC002AB2BE /* PostProcessTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E197011BBC6B27004BF6C5 /* PostProcessTests.swift */; };
		CC0314ED24ACCFAC002AB2BE /* NSUserDefaultsCacheLevelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5235BAD61BE175BE0049CFA6 /* NSUserDefaultsCacheLevelTests.swift */; };
		CC0314EE24ACCFAC002AB2BE /* NormalizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5250E3831BB137BF00EB7388 /* NormalizationTests.swift */; };
		CC0314EF24ACCFAC002AB2BE /* TwoWayTransformationBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523257D11B51993000A10A56 /* TwoWayTransformationBoxTests.swift */; };
		CC03150224ACCFB1002AB2BE /* Transformers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4D1B4F0F6F00F187EE /* Transformers.swift */; };
		CC03150324ACCFB1002AB2BE /* ConditionedTwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222108A1C501F2100E682D1 /* ConditionedTwoWayTransformer.swift */; };
		CC03150424ACCFB1002AB2BE /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A441B4F0F6F00F187EE /* Extensions.swift */; };
		CC03150524ACCFB1002AB2BE /* ConditionedValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F7E1C1837CF0034D032 /* ConditionedValueTransformation.swift */; };
		CC03150624ACCFB1002AB2BE /* NetworkFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A481B4F0F6F00F187EE /* NetworkFetcher.swift */; };
		CC03150724ACCFB1002AB2BE /* SwitchCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527C65461B7A66D90005023B /* SwitchCache.swift */; };
		CC03150824ACCFB1002AB2BE /* MemoryCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A461B4F0F6F00F187EE /* MemoryCacheLevel.swift */; };
		CC03150924ACCFB1002AB2BE /* Carlos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3E1B4F0F6F00F187EE /* Carlos.swift */; };
		CC03150A24ACCFB1002AB2BE /* CacheLevel+Batch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D7DDAC1C54F4E1007E5328 /* CacheLevel+Batch.swift */; };
		CC03150B24ACCFB1002AB2BE /* BasicCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3C1B4F0F6F00F187EE /* BasicCache.swift */; };
		CC03150D24ACCFB1002AB2BE /* ImageTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC7061D24AC93EA00D16827 /* ImageTransformer.swift */; };
		CC03150E24ACCFB1002AB2BE /* ValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4C1B4F0F6F00F187EE /* ValueTransformation.swift */; };
		CC03150F24ACCFB1002AB2BE /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A451B4F0F6F00F187EE /* Logger.swift */; };
		CC03151024ACCFB1002AB2BE /* ComposedTwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5257BBB31BBFC3FD00787819 /* ComposedTwoWayTransformer.swift */; };
		CC03151124ACCFB1002AB2BE /* KeyTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526339741B52435C00074CB9 /* KeyTransformation.swift */; };
		CC03151224ACCFB1002AB2BE /* CacheProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD22FB2C1B70BBF5007F319F /* CacheProvider.swift */; };
		CC03151324ACCFB1002AB2BE /* NSUserDefaultsCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5207E6AC1BE15BCE0062DEAC /* NSUserDefaultsCacheLevel.swift */; };
		CC03151424ACCFB1002AB2BE /* BatchAllCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520DBB4E1CF6307500F9ABE3 /* BatchAllCache.swift */; };
		CC03151724ACCFB1002AB2BE /* ComposedOneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52615CD31BBC8123001DA9BE /* ComposedOneWayTransformer.swift */; };
		CC03151824ACCFB1002AB2BE /* StringTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5205729A1BB8716E0098DD09 /* StringTransformer.swift */; };
		CC03151924ACCFB1002AB2BE /* FetcherValueTransformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A99A1BC05CB0006962E8 /* FetcherValueTransformation.swift */; };
		CC03151A24ACCFB1002AB2BE /* PoolCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4A1B4F0F6F00F187EE /* PoolCache.swift */; };
		CC03151B24ACCFB1002AB2BE /* PostProcess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E0CBF81BBC4E1800F20C22 /* PostProcess.swift */; };
		CC03151D24ACCFB1002AB2BE /* OneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A491B4F0F6F00F187EE /* OneWayTransformer.swift */; };
		CC03151E24ACCFB1002AB2BE /* ConditionedOutputProcessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52463F6D1C181D1B0034D032 /* ConditionedOutputProcessing.swift */; };
		CC03151F24ACCFB1002AB2BE /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A431B4F0F6F00F187EE /* Errors.swift */; };
		CC03152024ACCFB1002AB2BE /* ExpensiveObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5207E6981BE13D2E0062DEAC /* ExpensiveObject.swift */; };
		CC03152124ACCFB1002AB2BE /* TwoWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A4E1B4F0F6F00F187EE /* TwoWayTransformer.swift */; };
		CC03152224ACCFB1002AB2BE /* CacheProvider+ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC7061C24AC93EA00D16827 /* CacheProvider+ImageCache.swift */; };
		CC03152324ACCFB1002AB2BE /* DiskCacheLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A421B4F0F6F00F187EE /* DiskCacheLevel.swift */; };
		CC03152424ACCFB1002AB2BE /* MemoryWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A471B4F0F6F00F187EE /* MemoryWarning.swift */; };
		CC03152524ACCFB1002AB2BE /* Composed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A3F1B4F0F6F00F187EE /* Composed.swift */; };
		CC03152624ACCFB1002AB2BE /* Conditioned.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52635A401B4F0F6F00F187EE /* Conditioned.swift */; };
		CC03152724ACCFB1002AB2BE /* JSONTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B7621B1BB84F160087CD91 /* JSONTransformer.swift */; };
		CC03152824ACCFB1002AB2BE /* StringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5243C4B21B77670F00737B3B /* StringConvertible.swift */; };
		CC03152924ACCFB1002AB2BE /* BasicFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5274A99F1BC0613C006962E8 /* BasicFetcher.swift */; };
		CC03152A24ACCFB1002AB2BE /* Normalize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5250E37F1BB1345700EB7388 /* Normalize.swift */; };
		CC03152B24ACCFB1002AB2BE /* ConditionedOneWayTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222107B1C501C5400E682D1 /* ConditionedOneWayTransformer.swift */; };
		CC5C369224EC164D004AD171 /* FunctionComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C369024EC164C004AD171 /* FunctionComposition.swift */; };
		CC5C369324EC164D004AD171 /* FunctionComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C369024EC164C004AD171 /* FunctionComposition.swift */; };
		CC5C369424EC164D004AD171 /* FunctionComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C369024EC164C004AD171 /* FunctionComposition.swift */; };
		CC5C369524EC164D004AD171 /* FunctionComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C369024EC164C004AD171 /* FunctionComposition.swift */; };
		CC5C369624EC164D004AD171 /* UnfairLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C369124EC164D004AD171 /* UnfairLock.swift */; };
		CC5C369724EC164D004AD171 /* UnfairLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C369124EC164D004AD171 /* UnfairLock.swift */; };
		CC5C369824EC164D004AD171 /* UnfairLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C369124EC164D004AD171 /* UnfairLock.swift */; };
		CC5C369924EC164D004AD171 /* UnfairLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C369124EC164D004AD171 /* UnfairLock.swift */; };
		CC5C36A124EC16BB004AD171 /* Quick in Frameworks */ = {isa = PBXBuildFile; productRef = CC5C36A024EC16BB004AD171 /* Quick */; };
		CC5C36A324EC16BF004AD171 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = CC5C36A224EC16BF004AD171 /* Nimble */; };
		CC5C36A524EC16C6004AD171 /* Quick in Frameworks */ = {isa = PBXBuildFile; productRef = CC5C36A424EC16C6004AD171 /* Quick */; };
		CC5C36A724EC16C9004AD171 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = CC5C36A624EC16C9004AD171 /* Nimble */; };
		CC5C36AF24EC16D3004AD171 /* Quick in Frameworks */ = {isa = PBXBuildFile; productRef = CC5C36AE24EC16D3004AD171 /* Quick */; };
		CC5C36B124EC16D3004AD171 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = CC5C36B024EC16D3004AD171 /* Nimble */; };
		CC5C36BD24EC1725004AD171 /* FetcherFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C36B824EC1717004AD171 /* FetcherFake.swift */; };
		CC5C36BE24EC1726004AD171 /* FetcherFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C36B824EC1717004AD171 /* FetcherFake.swift */; };
		CC5C36BF24EC1727004AD171 /* FetcherFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5C36B824EC1717004AD171 /* FetcherFake.swift */; };
		CCC7061E24AC93EA00D16827 /* CacheProvider+ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC7061C24AC93EA00D16827 /* CacheProvider+ImageCache.swift */; };
		CCC7062224AC93EA00D16827 /* ImageTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC7061D24AC93EA00D16827 /* ImageTransformer.swift */; };
		CCC88F7624ADD4F2008C4060 /* Carlos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC03141924ACCF94002AB2BE /* Carlos.framework */; };
		CCC88F8424ADD56C008C4060 /* Carlos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC03148B24ACCFA0002AB2BE /* Carlos.framework */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		52635A6D1B4F110500F187EE /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = AD695CD71B46CD65004E998D /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 52635A1C1B4F0F3D00F187EE;
			remoteInfo = Carlos;
		};
		CC0315A824ACCFFD002AB2BE /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = AD695CD71B46CD65004E998D /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = CC0313E424ACCF94002AB2BE;
			remoteInfo = "Carlos macOS";
		};
		CC0315B624ACD0A1002AB2BE /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = AD695CD71B46CD65004E998D /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = CC03145624ACCFA0002AB2BE;
			remoteInfo = "Carlos tvOS";
		};
/* End PBXContainerItemProxy section */

/* Begin PBXCopyFilesBuildPhase section */
		52BED3511CE87C3C002C045A /* Copy Frameworks */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 12;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
			);
			name = "Copy Frameworks";
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03144D24ACCF99002AB2BE /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC0314F624ACCFAC002AB2BE /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CCC88F7524ADD4E0008C4060 /* Embed Frameworks */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
			);
			name = "Embed Frameworks";
			runOnlyForDeploymentPostprocessing = 0;
		};
		CCC88F8324ADD564008C4060 /* Embed Frameworks */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
			);
			name = "Embed Frameworks";
			runOnlyForDeploymentPostprocessing = 0;
		};
		CCC88F9124ADD5A1008C4060 /* Embed Frameworks */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
			);
			name = "Embed Frameworks";
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		5205729A1BB8716E0098DD09 /* StringTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringTransformer.swift; sourceTree = "<group>"; };
		520572A81BB8752B0098DD09 /* StringTransformerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringTransformerTests.swift; sourceTree = "<group>"; };
		5207E6981BE13D2E0062DEAC /* ExpensiveObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExpensiveObject.swift; sourceTree = "<group>"; };
		5207E6AC1BE15BCE0062DEAC /* NSUserDefaultsCacheLevel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSUserDefaultsCacheLevel.swift; sourceTree = "<group>"; };
		520DBB4E1CF6307500F9ABE3 /* BatchAllCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchAllCache.swift; sourceTree = "<group>"; };
		5222107B1C501C5400E682D1 /* ConditionedOneWayTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedOneWayTransformer.swift; sourceTree = "<group>"; };
		5222108A1C501F2100E682D1 /* ConditionedTwoWayTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedTwoWayTransformer.swift; sourceTree = "<group>"; };
		5222108F1C50358700E682D1 /* ConditionedOneWayTransformationBoxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedOneWayTransformationBoxTests.swift; sourceTree = "<group>"; };
		523257D11B51993000A10A56 /* TwoWayTransformationBoxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoWayTransformationBoxTests.swift; sourceTree = "<group>"; };
		523257D31B519AB900A10A56 /* OneWayTransformationBoxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OneWayTransformationBoxTests.swift; sourceTree = "<group>"; };
		5235BAD61BE175BE0049CFA6 /* NSUserDefaultsCacheLevelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSUserDefaultsCacheLevelTests.swift; sourceTree = "<group>"; };
		524019BB1C0AF9ED00749957 /* CacheProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CacheProviderTests.swift; sourceTree = "<group>"; };
		5243C4B21B77670F00737B3B /* StringConvertible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringConvertible.swift; sourceTree = "<group>"; };
		5243C4BE1B77686300737B3B /* StringConvertibleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringConvertibleTests.swift; sourceTree = "<group>"; };
		52463F6D1C181D1B0034D032 /* ConditionedOutputProcessing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedOutputProcessing.swift; sourceTree = "<group>"; };
		52463F7C1C18264B0034D032 /* ConditionedOutputProcessingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedOutputProcessingTests.swift; sourceTree = "<group>"; };
		52463F7E1C1837CF0034D032 /* ConditionedValueTransformation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedValueTransformation.swift; sourceTree = "<group>"; };
		5250E37F1BB1345700EB7388 /* Normalize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Normalize.swift; sourceTree = "<group>"; };
		5250E3831BB137BF00EB7388 /* NormalizationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NormalizationTests.swift; sourceTree = "<group>"; };
		5257BBB31BBFC3FD00787819 /* ComposedTwoWayTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComposedTwoWayTransformer.swift; sourceTree = "<group>"; };
		5257BBC11BBFC7A800787819 /* TwoWayTransformerCompositionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoWayTransformerCompositionTests.swift; sourceTree = "<group>"; };
		526005AE1BB84AB200D96242 /* ImageTransformerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageTransformerTests.swift; sourceTree = "<group>"; };
		526005BA1BB84BBC00D96242 /* swift-og.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "swift-og.png"; sourceTree = "<group>"; };
		526078241BE2590E0022040B /* ConditionedTransformersTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedTransformersTests.swift; sourceTree = "<group>"; };
		52615CD31BBC8123001DA9BE /* ComposedOneWayTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComposedOneWayTransformer.swift; sourceTree = "<group>"; };
		52615CE11BBC87F4001DA9BE /* OneWayTransformerCompositionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OneWayTransformerCompositionTests.swift; sourceTree = "<group>"; };
		526339741B52435C00074CB9 /* KeyTransformation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyTransformation.swift; sourceTree = "<group>"; };
		526339761B52450C00074CB9 /* ConditionedCacheTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedCacheTests.swift; sourceTree = "<group>"; };
		5263397A1B52536700074CB9 /* KeyTransformationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyTransformationTests.swift; sourceTree = "<group>"; };
		5263397C1B525D1600074CB9 /* MemoryCacheLevelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MemoryCacheLevelTests.swift; sourceTree = "<group>"; };
		5263397E1B52760F00074CB9 /* ValueTransformationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ValueTransformationTests.swift; sourceTree = "<group>"; };
		526339801B52805000074CB9 /* MemoryWarningNotificationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MemoryWarningNotificationTests.swift; sourceTree = "<group>"; };
		526339821B52866900074CB9 /* BasicCacheTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicCacheTests.swift; sourceTree = "<group>"; };
		526339841B52A82800074CB9 /* CompositionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompositionTests.swift; sourceTree = "<group>"; };
		526339881B52B51C00074CB9 /* DiskCacheTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiskCacheTests.swift; sourceTree = "<group>"; };
		52635A1D1B4F0F3D00F187EE /* Carlos.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Carlos.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		52635A201B4F0F3D00F187EE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		52635A3C1B4F0F6F00F187EE /* BasicCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicCache.swift; sourceTree = "<group>"; };
		52635A3E1B4F0F6F00F187EE /* Carlos.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Carlos.swift; sourceTree = "<group>"; };
		52635A3F1B4F0F6F00F187EE /* Composed.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Composed.swift; sourceTree = "<group>"; };
		52635A401B4F0F6F00F187EE /* Conditioned.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Conditioned.swift; sourceTree = "<group>"; };
		52635A421B4F0F6F00F187EE /* DiskCacheLevel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiskCacheLevel.swift; sourceTree = "<group>"; };
		52635A431B4F0F6F00F187EE /* Errors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = "<group>"; };
		52635A441B4F0F6F00F187EE /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
		52635A451B4F0F6F00F187EE /* Logger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = "<group>"; };
		52635A461B4F0F6F00F187EE /* MemoryCacheLevel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MemoryCacheLevel.swift; sourceTree = "<group>"; };
		52635A471B4F0F6F00F187EE /* MemoryWarning.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MemoryWarning.swift; sourceTree = "<group>"; };
		52635A481B4F0F6F00F187EE /* NetworkFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkFetcher.swift; sourceTree = "<group>"; };
		52635A491B4F0F6F00F187EE /* OneWayTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OneWayTransformer.swift; sourceTree = "<group>"; };
		52635A4A1B4F0F6F00F187EE /* PoolCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PoolCache.swift; sourceTree = "<group>"; };
		52635A4C1B4F0F6F00F187EE /* ValueTransformation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ValueTransformation.swift; sourceTree = "<group>"; };
		52635A4D1B4F0F6F00F187EE /* Transformers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Transformers.swift; sourceTree = "<group>"; };
		52635A4E1B4F0F6F00F187EE /* TwoWayTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoWayTransformer.swift; sourceTree = "<group>"; };
		52635A661B4F110500F187EE /* Carlos iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Carlos iOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
		52635A691B4F110500F187EE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		5274A99A1BC05CB0006962E8 /* FetcherValueTransformation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetcherValueTransformation.swift; sourceTree = "<group>"; };
		5274A99F1BC0613C006962E8 /* BasicFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicFetcher.swift; sourceTree = "<group>"; };
		5274A9CC1BC06976006962E8 /* BasicFetcherTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicFetcherTests.swift; sourceTree = "<group>"; };
		5274A9D81BC069E7006962E8 /* FetcherValueTransformationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetcherValueTransformationTests.swift; sourceTree = "<group>"; };
		527C65461B7A66D90005023B /* SwitchCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwitchCache.swift; sourceTree = "<group>"; };
		527C65521B7A89440005023B /* SwitchCacheTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwitchCacheTests.swift; sourceTree = "<group>"; };
		5291C8521BB7FAA800C4E15E /* JSONTransformerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSONTransformerTests.swift; sourceTree = "<group>"; };
		52B7621B1BB84F160087CD91 /* JSONTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSONTransformer.swift; sourceTree = "<group>"; };
		52BBFD551B51BA140000084A /* CacheLevelFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CacheLevelFake.swift; sourceTree = "<group>"; };
		52BBFD571B51BAD20000084A /* PoolCacheTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PoolCacheTests.swift; sourceTree = "<group>"; };
		52D5F3471C503C6700BA3452 /* ConditionedTwoWayTransformationBoxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedTwoWayTransformationBoxTests.swift; sourceTree = "<group>"; };
		52D5F3531C52C32000BA3452 /* ConditionedValueTransformationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionedValueTransformationTests.swift; sourceTree = "<group>"; };
		52D7DDAC1C54F4E1007E5328 /* CacheLevel+Batch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CacheLevel+Batch.swift"; sourceTree = "<group>"; };
		52D7DDBB1C552854007E5328 /* BatchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchTests.swift; sourceTree = "<group>"; };
		52E0CBF81BBC4E1800F20C22 /* PostProcess.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostProcess.swift; sourceTree = "<group>"; };
		52E197011BBC6B27004BF6C5 /* PostProcessTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostProcessTests.swift; sourceTree = "<group>"; };
		52F0644E1B51AC0D00145C98 /* NSDateFormatterTransformerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDateFormatterTransformerTests.swift; sourceTree = "<group>"; };
		52F064501B51AE4300145C98 /* NSNumberFormatterTransformerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSNumberFormatterTransformerTests.swift; sourceTree = "<group>"; };
		52F064541B51B26200145C98 /* MKDistanceFormatterTransformerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MKDistanceFormatterTransformerTests.swift; sourceTree = "<group>"; };
		AD22FB2C1B70BBF5007F319F /* CacheProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CacheProvider.swift; sourceTree = "<group>"; };
		C71C59731B6A721C00AE5294 /* NetworkFetcherTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkFetcherTests.swift; sourceTree = "<group>"; };
		CC0313DF24ACBBC8002AB2BE /* Base64EncodedImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Base64EncodedImage.swift; sourceTree = "<group>"; };
		CC0313E024ACBBC8002AB2BE /* CacheLevelFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CacheLevelFake.swift; sourceTree = "<group>"; };
		CC03141924ACCF94002AB2BE /* Carlos.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Carlos.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		CC03145424ACCF99002AB2BE /* Carlos macOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Carlos macOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
		CC03148B24ACCFA0002AB2BE /* Carlos.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Carlos.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		CC0314FD24ACCFAC002AB2BE /* Carlos tvOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Carlos tvOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
		CC03153424ACCFB1002AB2BE /* Carlos.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Carlos.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		CC5C369024EC164C004AD171 /* FunctionComposition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FunctionComposition.swift; sourceTree = "<group>"; };
		CC5C369124EC164D004AD171 /* UnfairLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnfairLock.swift; sourceTree = "<group>"; };
		CC5C36B824EC1717004AD171 /* FetcherFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetcherFake.swift; sourceTree = "<group>"; };
		CCC7061C24AC93EA00D16827 /* CacheProvider+ImageCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CacheProvider+ImageCache.swift"; sourceTree = "<group>"; };
		CCC7061D24AC93EA00D16827 /* ImageTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageTransformer.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		52635A191B4F0F3D00F187EE /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		52635A631B4F110500F187EE /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CC5C36A324EC16BF004AD171 /* Nimble in Frameworks */,
				CC5C36A124EC16BB004AD171 /* Quick in Frameworks */,
				52BED3501CE87C38002C045A /* Carlos.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03141124ACCF94002AB2BE /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03144724ACCF99002AB2BE /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CC5C36A724EC16C9004AD171 /* Nimble in Frameworks */,
				CC5C36A524EC16C6004AD171 /* Quick in Frameworks */,
				CCC88F7624ADD4F2008C4060 /* Carlos.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03148324ACCFA0002AB2BE /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC0314F024ACCFAC002AB2BE /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CC5C36B124EC16D3004AD171 /* Nimble in Frameworks */,
				CC5C36AF24EC16D3004AD171 /* Quick in Frameworks */,
				CCC88F8424ADD56C008C4060 /* Carlos.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03152C24ACCFB1002AB2BE /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		2677A0397774353D4B14F63F /* Frameworks */ = {
			isa = PBXGroup;
			children = (
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		52635A1E1B4F0F3D00F187EE /* Carlos */ = {
			isa = PBXGroup;
			children = (
				CCC7061C24AC93EA00D16827 /* CacheProvider+ImageCache.swift */,
				CCC7061D24AC93EA00D16827 /* ImageTransformer.swift */,
				520DBB4E1CF6307500F9ABE3 /* BatchAllCache.swift */,
				52635A1F1B4F0F3D00F187EE /* Supporting Files */,
				52635A3C1B4F0F6F00F187EE /* BasicCache.swift */,
				52635A3E1B4F0F6F00F187EE /* Carlos.swift */,
				52635A3F1B4F0F6F00F187EE /* Composed.swift */,
				52635A401B4F0F6F00F187EE /* Conditioned.swift */,
				52635A421B4F0F6F00F187EE /* DiskCacheLevel.swift */,
				52635A431B4F0F6F00F187EE /* Errors.swift */,
				52635A441B4F0F6F00F187EE /* Extensions.swift */,
				52635A451B4F0F6F00F187EE /* Logger.swift */,
				52635A461B4F0F6F00F187EE /* MemoryCacheLevel.swift */,
				52635A471B4F0F6F00F187EE /* MemoryWarning.swift */,
				52635A481B4F0F6F00F187EE /* NetworkFetcher.swift */,
				52635A491B4F0F6F00F187EE /* OneWayTransformer.swift */,
				52635A4A1B4F0F6F00F187EE /* PoolCache.swift */,
				52635A4C1B4F0F6F00F187EE /* ValueTransformation.swift */,
				5274A99A1BC05CB0006962E8 /* FetcherValueTransformation.swift */,
				CC5C369024EC164C004AD171 /* FunctionComposition.swift */,
				CC5C369124EC164D004AD171 /* UnfairLock.swift */,
				52635A4D1B4F0F6F00F187EE /* Transformers.swift */,
				52635A4E1B4F0F6F00F187EE /* TwoWayTransformer.swift */,
				526339741B52435C00074CB9 /* KeyTransformation.swift */,
				AD22FB2C1B70BBF5007F319F /* CacheProvider.swift */,
				5243C4B21B77670F00737B3B /* StringConvertible.swift */,
				527C65461B7A66D90005023B /* SwitchCache.swift */,
				5250E37F1BB1345700EB7388 /* Normalize.swift */,
				52B7621B1BB84F160087CD91 /* JSONTransformer.swift */,
				5205729A1BB8716E0098DD09 /* StringTransformer.swift */,
				52E0CBF81BBC4E1800F20C22 /* PostProcess.swift */,
				52615CD31BBC8123001DA9BE /* ComposedOneWayTransformer.swift */,
				5257BBB31BBFC3FD00787819 /* ComposedTwoWayTransformer.swift */,
				5274A99F1BC0613C006962E8 /* BasicFetcher.swift */,
				5207E6981BE13D2E0062DEAC /* ExpensiveObject.swift */,
				5207E6AC1BE15BCE0062DEAC /* NSUserDefaultsCacheLevel.swift */,
				52463F6D1C181D1B0034D032 /* ConditionedOutputProcessing.swift */,
				52463F7E1C1837CF0034D032 /* ConditionedValueTransformation.swift */,
				5222107B1C501C5400E682D1 /* ConditionedOneWayTransformer.swift */,
				5222108A1C501F2100E682D1 /* ConditionedTwoWayTransformer.swift */,
				52D7DDAC1C54F4E1007E5328 /* CacheLevel+Batch.swift */,
			);
			name = Carlos;
			path = Sources/Carlos;
			sourceTree = SOURCE_ROOT;
		};
		52635A1F1B4F0F3D00F187EE /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				52635A201B4F0F3D00F187EE /* Info.plist */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		52635A671B4F110500F187EE /* CarlosTests */ = {
			isa = PBXGroup;
			children = (
				CC0313DE24ACBBC8002AB2BE /* Fakes */,
				52635A681B4F110500F187EE /* Supporting Files */,
				523257D11B51993000A10A56 /* TwoWayTransformationBoxTests.swift */,
				523257D31B519AB900A10A56 /* OneWayTransformationBoxTests.swift */,
				52F0644E1B51AC0D00145C98 /* NSDateFormatterTransformerTests.swift */,
				52F064501B51AE4300145C98 /* NSNumberFormatterTransformerTests.swift */,
				52F064541B51B26200145C98 /* MKDistanceFormatterTransformerTests.swift */,
				C71C59731B6A721C00AE5294 /* NetworkFetcherTests.swift */,
				52BBFD571B51BAD20000084A /* PoolCacheTests.swift */,
				526339761B52450C00074CB9 /* ConditionedCacheTests.swift */,
				5263397A1B52536700074CB9 /* KeyTransformationTests.swift */,
				5263397C1B525D1600074CB9 /* MemoryCacheLevelTests.swift */,
				5263397E1B52760F00074CB9 /* ValueTransformationTests.swift */,
				526339801B52805000074CB9 /* MemoryWarningNotificationTests.swift */,
				526339821B52866900074CB9 /* BasicCacheTests.swift */,
				526339841B52A82800074CB9 /* CompositionTests.swift */,
				526339881B52B51C00074CB9 /* DiskCacheTests.swift */,
				5243C4BE1B77686300737B3B /* StringConvertibleTests.swift */,
				527C65521B7A89440005023B /* SwitchCacheTests.swift */,
				5250E3831BB137BF00EB7388 /* NormalizationTests.swift */,
				5291C8521BB7FAA800C4E15E /* JSONTransformerTests.swift */,
				526005AE1BB84AB200D96242 /* ImageTransformerTests.swift */,
				520572A81BB8752B0098DD09 /* StringTransformerTests.swift */,
				52E197011BBC6B27004BF6C5 /* PostProcessTests.swift */,
				52615CE11BBC87F4001DA9BE /* OneWayTransformerCompositionTests.swift */,
				5257BBC11BBFC7A800787819 /* TwoWayTransformerCompositionTests.swift */,
				5274A9CC1BC06976006962E8 /* BasicFetcherTests.swift */,
				5274A9D81BC069E7006962E8 /* FetcherValueTransformationTests.swift */,
				5235BAD61BE175BE0049CFA6 /* NSUserDefaultsCacheLevelTests.swift */,
				526078241BE2590E0022040B /* ConditionedTransformersTests.swift */,
				524019BB1C0AF9ED00749957 /* CacheProviderTests.swift */,
				52463F7C1C18264B0034D032 /* ConditionedOutputProcessingTests.swift */,
				5222108F1C50358700E682D1 /* ConditionedOneWayTransformationBoxTests.swift */,
				52D5F3471C503C6700BA3452 /* ConditionedTwoWayTransformationBoxTests.swift */,
				52D5F3531C52C32000BA3452 /* ConditionedValueTransformationTests.swift */,
				52D7DDBB1C552854007E5328 /* BatchTests.swift */,
			);
			name = CarlosTests;
			path = Tests/CarlosTests;
			sourceTree = SOURCE_ROOT;
		};
		52635A681B4F110500F187EE /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				526005BA1BB84BBC00D96242 /* swift-og.png */,
				52BBFD4A1B51BA070000084A /* Fakes */,
				52635A691B4F110500F187EE /* Info.plist */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		52BBFD4A1B51BA070000084A /* Fakes */ = {
			isa = PBXGroup;
			children = (
				52BBFD551B51BA140000084A /* CacheLevelFake.swift */,
			);
			path = Fakes;
			sourceTree = "<group>";
		};
		AD695CD61B46CD65004E998D = {
			isa = PBXGroup;
			children = (
				52635A1E1B4F0F3D00F187EE /* Carlos */,
				52635A671B4F110500F187EE /* CarlosTests */,
				AD695CE01B46CD65004E998D /* Products */,
				2677A0397774353D4B14F63F /* Frameworks */,
			);
			sourceTree = "<group>";
		};
		AD695CE01B46CD65004E998D /* Products */ = {
			isa = PBXGroup;
			children = (
				52635A1D1B4F0F3D00F187EE /* Carlos.framework */,
				52635A661B4F110500F187EE /* Carlos iOS Tests.xctest */,
				CC03141924ACCF94002AB2BE /* Carlos.framework */,
				CC03145424ACCF99002AB2BE /* Carlos macOS Tests.xctest */,
				CC03148B24ACCFA0002AB2BE /* Carlos.framework */,
				CC0314FD24ACCFAC002AB2BE /* Carlos tvOS Tests.xctest */,
				CC03153424ACCFB1002AB2BE /* Carlos.framework */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		CC0313DE24ACBBC8002AB2BE /* Fakes */ = {
			isa = PBXGroup;
			children = (
				CC5C36B824EC1717004AD171 /* FetcherFake.swift */,
				CC0313DF24ACBBC8002AB2BE /* Base64EncodedImage.swift */,
				CC0313E024ACBBC8002AB2BE /* CacheLevelFake.swift */,
			);
			path = Fakes;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
		52635A1A1B4F0F3D00F187EE /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03141324ACCF94002AB2BE /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03148524ACCFA0002AB2BE /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03152E24ACCFB1002AB2BE /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXHeadersBuildPhase section */

/* Begin PBXNativeTarget section */
		52635A1C1B4F0F3D00F187EE /* Carlos iOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 52635A361B4F0F3E00F187EE /* Build configuration list for PBXNativeTarget "Carlos iOS" */;
			buildPhases = (
				52635A181B4F0F3D00F187EE /* Sources */,
				52635A191B4F0F3D00F187EE /* Frameworks */,
				52635A1A1B4F0F3D00F187EE /* Headers */,
				52635A1B1B4F0F3D00F187EE /* Resources */,
				CCC88F7524ADD4E0008C4060 /* Embed Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "Carlos iOS";
			packageProductDependencies = (
			);
			productName = Carlos;
			productReference = 52635A1D1B4F0F3D00F187EE /* Carlos.framework */;
			productType = "com.apple.product-type.framework";
		};
		52635A651B4F110500F187EE /* Carlos iOS Tests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 52635A6F1B4F110500F187EE /* Build configuration list for PBXNativeTarget "Carlos iOS Tests" */;
			buildPhases = (
				52635A621B4F110500F187EE /* Sources */,
				52635A631B4F110500F187EE /* Frameworks */,
				52635A641B4F110500F187EE /* Resources */,
				52BED3511CE87C3C002C045A /* Copy Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
				52635A6E1B4F110500F187EE /* PBXTargetDependency */,
			);
			name = "Carlos iOS Tests";
			packageProductDependencies = (
				CC5C36A024EC16BB004AD171 /* Quick */,
				CC5C36A224EC16BF004AD171 /* Nimble */,
			);
			productName = CarlosTests;
			productReference = 52635A661B4F110500F187EE /* Carlos iOS Tests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
		CC0313E424ACCF94002AB2BE /* Carlos macOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CC03141624ACCF94002AB2BE /* Build configuration list for PBXNativeTarget "Carlos macOS" */;
			buildPhases = (
				CC0313E524ACCF94002AB2BE /* Sources */,
				CC03141124ACCF94002AB2BE /* Frameworks */,
				CC03141324ACCF94002AB2BE /* Headers */,
				CC03141524ACCF94002AB2BE /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "Carlos macOS";
			packageProductDependencies = (
			);
			productName = Carlos;
			productReference = CC03141924ACCF94002AB2BE /* Carlos.framework */;
			productType = "com.apple.product-type.framework";
		};
		CC03141B24ACCF99002AB2BE /* Carlos macOS Tests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CC03145124ACCF99002AB2BE /* Build configuration list for PBXNativeTarget "Carlos macOS Tests" */;
			buildPhases = (
				CC03141E24ACCF99002AB2BE /* Sources */,
				CC03144724ACCF99002AB2BE /* Frameworks */,
				CC03144B24ACCF99002AB2BE /* Resources */,
				CC03144D24ACCF99002AB2BE /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
				CC0315A924ACCFFD002AB2BE /* PBXTargetDependency */,
			);
			name = "Carlos macOS Tests";
			packageProductDependencies = (
				CC5C36A424EC16C6004AD171 /* Quick */,
				CC5C36A624EC16C9004AD171 /* Nimble */,
			);
			productName = CarlosTests;
			productReference = CC03145424ACCF99002AB2BE /* Carlos macOS Tests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
		CC03145624ACCFA0002AB2BE /* Carlos tvOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CC03148824ACCFA0002AB2BE /* Build configuration list for PBXNativeTarget "Carlos tvOS" */;
			buildPhases = (
				CC03145724ACCFA0002AB2BE /* Sources */,
				CC03148324ACCFA0002AB2BE /* Frameworks */,
				CC03148524ACCFA0002AB2BE /* Headers */,
				CC03148724ACCFA0002AB2BE /* Resources */,
				CCC88F8324ADD564008C4060 /* Embed Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "Carlos tvOS";
			packageProductDependencies = (
			);
			productName = Carlos;
			productReference = CC03148B24ACCFA0002AB2BE /* Carlos.framework */;
			productType = "com.apple.product-type.framework";
		};
		CC0314C424ACCFAC002AB2BE /* Carlos tvOS Tests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CC0314FA24ACCFAC002AB2BE /* Build configuration list for PBXNativeTarget "Carlos tvOS Tests" */;
			buildPhases = (
				CC0314C724ACCFAC002AB2BE /* Sources */,
				CC0314F024ACCFAC002AB2BE /* Frameworks */,
				CC0314F424ACCFAC002AB2BE /* Resources */,
				CC0314F624ACCFAC002AB2BE /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
				CC0315B724ACD0A1002AB2BE /* PBXTargetDependency */,
			);
			name = "Carlos tvOS Tests";
			packageProductDependencies = (
				CC5C36AE24EC16D3004AD171 /* Quick */,
				CC5C36B024EC16D3004AD171 /* Nimble */,
			);
			productName = CarlosTests;
			productReference = CC0314FD24ACCFAC002AB2BE /* Carlos tvOS Tests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
		CC0314FF24ACCFB1002AB2BE /* Carlos watchOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CC03153124ACCFB1002AB2BE /* Build configuration list for PBXNativeTarget "Carlos watchOS" */;
			buildPhases = (
				CC03150024ACCFB1002AB2BE /* Sources */,
				CC03152C24ACCFB1002AB2BE /* Frameworks */,
				CC03152E24ACCFB1002AB2BE /* Headers */,
				CC03153024ACCFB1002AB2BE /* Resources */,
				CCC88F9124ADD5A1008C4060 /* Embed Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "Carlos watchOS";
			packageProductDependencies = (
			);
			productName = Carlos;
			productReference = CC03153424ACCFB1002AB2BE /* Carlos.framework */;
			productType = "com.apple.product-type.framework";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		AD695CD71B46CD65004E998D /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftMigration = 0700;
				LastSwiftUpdateCheck = 0730;
				LastUpgradeCheck = 1200;
				ORGANIZATIONNAME = WeltN24;
				TargetAttributes = {
					52635A1C1B4F0F3D00F187EE = {
						CreatedOnToolsVersion = 6.4;
						LastSwiftMigration = 1020;
					};
					52635A651B4F110500F187EE = {
						CreatedOnToolsVersion = 6.4;
						LastSwiftMigration = 1150;
						ProvisioningStyle = Manual;
					};
				};
			};
			buildConfigurationList = AD695CDA1B46CD65004E998D /* Build configuration list for PBXProject "Carlos" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = AD695CD61B46CD65004E998D;
			packageReferences = (
				CC5C368A24EC1619004AD171 /* XCRemoteSwiftPackageReference "Quick" */,
				CC5C368D24EC1636004AD171 /* XCRemoteSwiftPackageReference "Nimble" */,
			);
			productRefGroup = AD695CE01B46CD65004E998D /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				52635A1C1B4F0F3D00F187EE /* Carlos iOS */,
				52635A651B4F110500F187EE /* Carlos iOS Tests */,
				CC0313E424ACCF94002AB2BE /* Carlos macOS */,
				CC03141B24ACCF99002AB2BE /* Carlos macOS Tests */,
				CC03145624ACCFA0002AB2BE /* Carlos tvOS */,
				CC0314C424ACCFAC002AB2BE /* Carlos tvOS Tests */,
				CC0314FF24ACCFB1002AB2BE /* Carlos watchOS */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		52635A1B1B4F0F3D00F187EE /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		52635A641B4F110500F187EE /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03141524ACCF94002AB2BE /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03144B24ACCF99002AB2BE /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03148724ACCFA0002AB2BE /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC0314F424ACCFAC002AB2BE /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03153024ACCFB1002AB2BE /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		52635A181B4F0F3D00F187EE /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				52635A601B4F0F6F00F187EE /* Transformers.swift in Sources */,
				5222108B1C501F2100E682D1 /* ConditionedTwoWayTransformer.swift in Sources */,
				52635A571B4F0F6F00F187EE /* Extensions.swift in Sources */,
				52463F7F1C1837CF0034D032 /* ConditionedValueTransformation.swift in Sources */,
				52635A5B1B4F0F6F00F187EE /* NetworkFetcher.swift in Sources */,
				527C65471B7A66D90005023B /* SwitchCache.swift in Sources */,
				52635A591B4F0F6F00F187EE /* MemoryCacheLevel.swift in Sources */,
				52635A511B4F0F6F00F187EE /* Carlos.swift in Sources */,
				52D7DDAD1C54F4E1007E5328 /* CacheLevel+Batch.swift in Sources */,
				52635A4F1B4F0F6F00F187EE /* BasicCache.swift in Sources */,
				CCC7062224AC93EA00D16827 /* ImageTransformer.swift in Sources */,
				52635A5F1B4F0F6F00F187EE /* ValueTransformation.swift in Sources */,
				52635A581B4F0F6F00F187EE /* Logger.swift in Sources */,
				5257BBB41BBFC3FD00787819 /* ComposedTwoWayTransformer.swift in Sources */,
				526339751B52435C00074CB9 /* KeyTransformation.swift in Sources */,
				AD22FB2D1B70BBF6007F319F /* CacheProvider.swift in Sources */,
				5207E6AD1BE15BCE0062DEAC /* NSUserDefaultsCacheLevel.swift in Sources */,
				520DBB4F1CF6307500F9ABE3 /* BatchAllCache.swift in Sources */,
				52615CD41BBC8123001DA9BE /* ComposedOneWayTransformer.swift in Sources */,
				5205729B1BB8716E0098DD09 /* StringTransformer.swift in Sources */,
				5274A99B1BC05CB0006962E8 /* FetcherValueTransformation.swift in Sources */,
				52635A5D1B4F0F6F00F187EE /* PoolCache.swift in Sources */,
				52E0CBF91BBC4E1800F20C22 /* PostProcess.swift in Sources */,
				52635A5C1B4F0F6F00F187EE /* OneWayTransformer.swift in Sources */,
				52463F6E1C181D1B0034D032 /* ConditionedOutputProcessing.swift in Sources */,
				52635A561B4F0F6F00F187EE /* Errors.swift in Sources */,
				5207E6991BE13D2E0062DEAC /* ExpensiveObject.swift in Sources */,
				52635A611B4F0F6F00F187EE /* TwoWayTransformer.swift in Sources */,
				CC5C369224EC164D004AD171 /* FunctionComposition.swift in Sources */,
				CCC7061E24AC93EA00D16827 /* CacheProvider+ImageCache.swift in Sources */,
				52635A551B4F0F6F00F187EE /* DiskCacheLevel.swift in Sources */,
				52635A5A1B4F0F6F00F187EE /* MemoryWarning.swift in Sources */,
				52635A521B4F0F6F00F187EE /* Composed.swift in Sources */,
				CC5C369624EC164D004AD171 /* UnfairLock.swift in Sources */,
				52635A531B4F0F6F00F187EE /* Conditioned.swift in Sources */,
				52B7621C1BB84F160087CD91 /* JSONTransformer.swift in Sources */,
				5243C4B31B77670F00737B3B /* StringConvertible.swift in Sources */,
				5274A9A01BC0613C006962E8 /* BasicFetcher.swift in Sources */,
				5250E3801BB1345700EB7388 /* Normalize.swift in Sources */,
				5222107C1C501C5400E682D1 /* ConditionedOneWayTransformer.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		52635A621B4F110500F187EE /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				526005AF1BB84AB200D96242 /* ImageTransformerTests.swift in Sources */,
				526339811B52805000074CB9 /* MemoryWarningNotificationTests.swift in Sources */,
				5243C4BF1B77686300737B3B /* StringConvertibleTests.swift in Sources */,
				526339891B52B51C00074CB9 /* DiskCacheTests.swift in Sources */,
				52D5F3481C503C6700BA3452 /* ConditionedTwoWayTransformationBoxTests.swift in Sources */,
				52F064551B51B26200145C98 /* MKDistanceFormatterTransformerTests.swift in Sources */,
				520572A91BB8752B0098DD09 /* StringTransformerTests.swift in Sources */,
				52463F7D1C18264B0034D032 /* ConditionedOutputProcessingTests.swift in Sources */,
				52615CE21BBC87F4001DA9BE /* OneWayTransformerCompositionTests.swift in Sources */,
				5291C8531BB7FAA800C4E15E /* JSONTransformerTests.swift in Sources */,
				523257D41B519AB900A10A56 /* OneWayTransformationBoxTests.swift in Sources */,
				522210901C50358700E682D1 /* ConditionedOneWayTransformationBoxTests.swift in Sources */,
				527C65531B7A89440005023B /* SwitchCacheTests.swift in Sources */,
				52BBFD561B51BA140000084A /* CacheLevelFake.swift in Sources */,
				52D7DDBC1C552854007E5328 /* BatchTests.swift in Sources */,
				52F0644F1B51AC0D00145C98 /* NSDateFormatterTransformerTests.swift in Sources */,
				5274A9D91BC069E7006962E8 /* FetcherValueTransformationTests.swift in Sources */,
				CC0313E124ACBBC8002AB2BE /* Base64EncodedImage.swift in Sources */,
				526339831B52866900074CB9 /* BasicCacheTests.swift in Sources */,
				5263397F1B52760F00074CB9 /* ValueTransformationTests.swift in Sources */,
				5257BBC21BBFC7A800787819 /* TwoWayTransformerCompositionTests.swift in Sources */,
				524019BC1C0AF9ED00749957 /* CacheProviderTests.swift in Sources */,
				5263397D1B525D1600074CB9 /* MemoryCacheLevelTests.swift in Sources */,
				5263397B1B52536700074CB9 /* KeyTransformationTests.swift in Sources */,
				526078251BE2590E0022040B /* ConditionedTransformersTests.swift in Sources */,
				526339851B52A82800074CB9 /* CompositionTests.swift in Sources */,
				52BBFD581B51BAD20000084A /* PoolCacheTests.swift in Sources */,
				526339771B52450C00074CB9 /* ConditionedCacheTests.swift in Sources */,
				52F064511B51AE4300145C98 /* NSNumberFormatterTransformerTests.swift in Sources */,
				C71C59751B6A722800AE5294 /* NetworkFetcherTests.swift in Sources */,
				5274A9CD1BC06976006962E8 /* BasicFetcherTests.swift in Sources */,
				52D5F3541C52C32000BA3452 /* ConditionedValueTransformationTests.swift in Sources */,
				CC5C36BF24EC1727004AD171 /* FetcherFake.swift in Sources */,
				52E197021BBC6B27004BF6C5 /* PostProcessTests.swift in Sources */,
				5235BAD71BE175BE0049CFA6 /* NSUserDefaultsCacheLevelTests.swift in Sources */,
				5250E3841BB137BF00EB7388 /* NormalizationTests.swift in Sources */,
				523257D21B51993000A10A56 /* TwoWayTransformationBoxTests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC0313E524ACCF94002AB2BE /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CC0313E724ACCF94002AB2BE /* Transformers.swift in Sources */,
				CC0313E824ACCF94002AB2BE /* ConditionedTwoWayTransformer.swift in Sources */,
				CC0313E924ACCF94002AB2BE /* Extensions.swift in Sources */,
				CC0313EA24ACCF94002AB2BE /* ConditionedValueTransformation.swift in Sources */,
				CC0313EB24ACCF94002AB2BE /* NetworkFetcher.swift in Sources */,
				CC0313EC24ACCF94002AB2BE /* SwitchCache.swift in Sources */,
				CC0313ED24ACCF94002AB2BE /* MemoryCacheLevel.swift in Sources */,
				CC0313EE24ACCF94002AB2BE /* Carlos.swift in Sources */,
				CC0313EF24ACCF94002AB2BE /* CacheLevel+Batch.swift in Sources */,
				CC0313F024ACCF94002AB2BE /* BasicCache.swift in Sources */,
				CC0313F224ACCF94002AB2BE /* ImageTransformer.swift in Sources */,
				CC0313F324ACCF94002AB2BE /* ValueTransformation.swift in Sources */,
				CC0313F424ACCF94002AB2BE /* Logger.swift in Sources */,
				CC0313F524ACCF94002AB2BE /* ComposedTwoWayTransformer.swift in Sources */,
				CC0313F624ACCF94002AB2BE /* KeyTransformation.swift in Sources */,
				CC0313F724ACCF94002AB2BE /* CacheProvider.swift in Sources */,
				CC0313F824ACCF94002AB2BE /* NSUserDefaultsCacheLevel.swift in Sources */,
				CC0313F924ACCF94002AB2BE /* BatchAllCache.swift in Sources */,
				CC0313FC24ACCF94002AB2BE /* ComposedOneWayTransformer.swift in Sources */,
				CC0313FD24ACCF94002AB2BE /* StringTransformer.swift in Sources */,
				CC0313FE24ACCF94002AB2BE /* FetcherValueTransformation.swift in Sources */,
				CC0313FF24ACCF94002AB2BE /* PoolCache.swift in Sources */,
				CC03140024ACCF94002AB2BE /* PostProcess.swift in Sources */,
				CC03140224ACCF94002AB2BE /* OneWayTransformer.swift in Sources */,
				CC03140324ACCF94002AB2BE /* ConditionedOutputProcessing.swift in Sources */,
				CC03140424ACCF94002AB2BE /* Errors.swift in Sources */,
				CC03140524ACCF94002AB2BE /* ExpensiveObject.swift in Sources */,
				CC03140624ACCF94002AB2BE /* TwoWayTransformer.swift in Sources */,
				CC5C369324EC164D004AD171 /* FunctionComposition.swift in Sources */,
				CC03140724ACCF94002AB2BE /* CacheProvider+ImageCache.swift in Sources */,
				CC03140824ACCF94002AB2BE /* DiskCacheLevel.swift in Sources */,
				CC03140924ACCF94002AB2BE /* MemoryWarning.swift in Sources */,
				CC03140A24ACCF94002AB2BE /* Composed.swift in Sources */,
				CC5C369724EC164D004AD171 /* UnfairLock.swift in Sources */,
				CC03140B24ACCF94002AB2BE /* Conditioned.swift in Sources */,
				CC03140C24ACCF94002AB2BE /* JSONTransformer.swift in Sources */,
				CC03140D24ACCF94002AB2BE /* StringConvertible.swift in Sources */,
				CC03140E24ACCF94002AB2BE /* BasicFetcher.swift in Sources */,
				CC03140F24ACCF94002AB2BE /* Normalize.swift in Sources */,
				CC03141024ACCF94002AB2BE /* ConditionedOneWayTransformer.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03141E24ACCF99002AB2BE /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CC03142024ACCF99002AB2BE /* ImageTransformerTests.swift in Sources */,
				CC03142124ACCF99002AB2BE /* MemoryWarningNotificationTests.swift in Sources */,
				CC03142224ACCF99002AB2BE /* StringConvertibleTests.swift in Sources */,
				CC03142324ACCF99002AB2BE /* DiskCacheTests.swift in Sources */,
				CC03142424ACCF99002AB2BE /* ConditionedTwoWayTransformationBoxTests.swift in Sources */,
				CC03142524ACCF99002AB2BE /* MKDistanceFormatterTransformerTests.swift in Sources */,
				CC03142624ACCF99002AB2BE /* StringTransformerTests.swift in Sources */,
				CC03142724ACCF99002AB2BE /* ConditionedOutputProcessingTests.swift in Sources */,
				CC03142924ACCF99002AB2BE /* OneWayTransformerCompositionTests.swift in Sources */,
				CC03142A24ACCF99002AB2BE /* JSONTransformerTests.swift in Sources */,
				CC03142B24ACCF99002AB2BE /* OneWayTransformationBoxTests.swift in Sources */,
				CC03142C24ACCF99002AB2BE /* ConditionedOneWayTransformationBoxTests.swift in Sources */,
				CC03142D24ACCF99002AB2BE /* SwitchCacheTests.swift in Sources */,
				CC03142F24ACCF99002AB2BE /* CacheLevelFake.swift in Sources */,
				CC03143124ACCF99002AB2BE /* BatchTests.swift in Sources */,
				CC03143224ACCF99002AB2BE /* NSDateFormatterTransformerTests.swift in Sources */,
				CC03143324ACCF99002AB2BE /* FetcherValueTransformationTests.swift in Sources */,
				CC03143424ACCF99002AB2BE /* Base64EncodedImage.swift in Sources */,
				CC03143524ACCF99002AB2BE /* BasicCacheTests.swift in Sources */,
				CC03143624ACCF99002AB2BE /* ValueTransformationTests.swift in Sources */,
				CC03143724ACCF99002AB2BE /* TwoWayTransformerCompositionTests.swift in Sources */,
				CC03143824ACCF99002AB2BE /* CacheProviderTests.swift in Sources */,
				CC03143924ACCF99002AB2BE /* MemoryCacheLevelTests.swift in Sources */,
				CC03143A24ACCF99002AB2BE /* KeyTransformationTests.swift in Sources */,
				CC03143B24ACCF99002AB2BE /* ConditionedTransformersTests.swift in Sources */,
				CC03143C24ACCF99002AB2BE /* CompositionTests.swift in Sources */,
				CC03143D24ACCF99002AB2BE /* PoolCacheTests.swift in Sources */,
				CC03143E24ACCF99002AB2BE /* ConditionedCacheTests.swift in Sources */,
				CC03143F24ACCF99002AB2BE /* NSNumberFormatterTransformerTests.swift in Sources */,
				CC03144024ACCF99002AB2BE /* NetworkFetcherTests.swift in Sources */,
				CC03144124ACCF99002AB2BE /* BasicFetcherTests.swift in Sources */,
				CC03144224ACCF99002AB2BE /* ConditionedValueTransformationTests.swift in Sources */,
				CC5C36BE24EC1726004AD171 /* FetcherFake.swift in Sources */,
				CC03144324ACCF99002AB2BE /* PostProcessTests.swift in Sources */,
				CC03144424ACCF99002AB2BE /* NSUserDefaultsCacheLevelTests.swift in Sources */,
				CC03144524ACCF99002AB2BE /* NormalizationTests.swift in Sources */,
				CC03144624ACCF99002AB2BE /* TwoWayTransformationBoxTests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03145724ACCFA0002AB2BE /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CC03145924ACCFA0002AB2BE /* Transformers.swift in Sources */,
				CC03145A24ACCFA0002AB2BE /* ConditionedTwoWayTransformer.swift in Sources */,
				CC03145B24ACCFA0002AB2BE /* Extensions.swift in Sources */,
				CC03145C24ACCFA0002AB2BE /* ConditionedValueTransformation.swift in Sources */,
				CC03145D24ACCFA0002AB2BE /* NetworkFetcher.swift in Sources */,
				CC03145E24ACCFA0002AB2BE /* SwitchCache.swift in Sources */,
				CC03145F24ACCFA0002AB2BE /* MemoryCacheLevel.swift in Sources */,
				CC03146024ACCFA0002AB2BE /* Carlos.swift in Sources */,
				CC03146124ACCFA0002AB2BE /* CacheLevel+Batch.swift in Sources */,
				CC03146224ACCFA0002AB2BE /* BasicCache.swift in Sources */,
				CC03146424ACCFA0002AB2BE /* ImageTransformer.swift in Sources */,
				CC03146524ACCFA0002AB2BE /* ValueTransformation.swift in Sources */,
				CC03146624ACCFA0002AB2BE /* Logger.swift in Sources */,
				CC03146724ACCFA0002AB2BE /* ComposedTwoWayTransformer.swift in Sources */,
				CC03146824ACCFA0002AB2BE /* KeyTransformation.swift in Sources */,
				CC03146924ACCFA0002AB2BE /* CacheProvider.swift in Sources */,
				CC03146A24ACCFA0002AB2BE /* NSUserDefaultsCacheLevel.swift in Sources */,
				CC03146B24ACCFA0002AB2BE /* BatchAllCache.swift in Sources */,
				CC03146E24ACCFA0002AB2BE /* ComposedOneWayTransformer.swift in Sources */,
				CC03146F24ACCFA0002AB2BE /* StringTransformer.swift in Sources */,
				CC03147024ACCFA0002AB2BE /* FetcherValueTransformation.swift in Sources */,
				CC03147124ACCFA0002AB2BE /* PoolCache.swift in Sources */,
				CC03147224ACCFA0002AB2BE /* PostProcess.swift in Sources */,
				CC03147424ACCFA0002AB2BE /* OneWayTransformer.swift in Sources */,
				CC03147524ACCFA0002AB2BE /* ConditionedOutputProcessing.swift in Sources */,
				CC03147624ACCFA0002AB2BE /* Errors.swift in Sources */,
				CC03147724ACCFA0002AB2BE /* ExpensiveObject.swift in Sources */,
				CC03147824ACCFA0002AB2BE /* TwoWayTransformer.swift in Sources */,
				CC5C369424EC164D004AD171 /* FunctionComposition.swift in Sources */,
				CC03147924ACCFA0002AB2BE /* CacheProvider+ImageCache.swift in Sources */,
				CC03147A24ACCFA0002AB2BE /* DiskCacheLevel.swift in Sources */,
				CC03147B24ACCFA0002AB2BE /* MemoryWarning.swift in Sources */,
				CC03147C24ACCFA0002AB2BE /* Composed.swift in Sources */,
				CC5C369824EC164D004AD171 /* UnfairLock.swift in Sources */,
				CC03147D24ACCFA0002AB2BE /* Conditioned.swift in Sources */,
				CC03147E24ACCFA0002AB2BE /* JSONTransformer.swift in Sources */,
				CC03147F24ACCFA0002AB2BE /* StringConvertible.swift in Sources */,
				CC03148024ACCFA0002AB2BE /* BasicFetcher.swift in Sources */,
				CC03148124ACCFA0002AB2BE /* Normalize.swift in Sources */,
				CC03148224ACCFA0002AB2BE /* ConditionedOneWayTransformer.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC0314C724ACCFAC002AB2BE /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CC0314C924ACCFAC002AB2BE /* ImageTransformerTests.swift in Sources */,
				CC0314CA24ACCFAC002AB2BE /* MemoryWarningNotificationTests.swift in Sources */,
				CC0314CB24ACCFAC002AB2BE /* StringConvertibleTests.swift in Sources */,
				CC0314CC24ACCFAC002AB2BE /* DiskCacheTests.swift in Sources */,
				CC0314CD24ACCFAC002AB2BE /* ConditionedTwoWayTransformationBoxTests.swift in Sources */,
				CC0314CE24ACCFAC002AB2BE /* MKDistanceFormatterTransformerTests.swift in Sources */,
				CC0314CF24ACCFAC002AB2BE /* StringTransformerTests.swift in Sources */,
				CC0314D024ACCFAC002AB2BE /* ConditionedOutputProcessingTests.swift in Sources */,
				CC0314D224ACCFAC002AB2BE /* OneWayTransformerCompositionTests.swift in Sources */,
				CC0314D324ACCFAC002AB2BE /* JSONTransformerTests.swift in Sources */,
				CC0314D424ACCFAC002AB2BE /* OneWayTransformationBoxTests.swift in Sources */,
				CC0314D524ACCFAC002AB2BE /* ConditionedOneWayTransformationBoxTests.swift in Sources */,
				CC0314D624ACCFAC002AB2BE /* SwitchCacheTests.swift in Sources */,
				CC0314D824ACCFAC002AB2BE /* CacheLevelFake.swift in Sources */,
				CC0314DA24ACCFAC002AB2BE /* BatchTests.swift in Sources */,
				CC0314DB24ACCFAC002AB2BE /* NSDateFormatterTransformerTests.swift in Sources */,
				CC0314DC24ACCFAC002AB2BE /* FetcherValueTransformationTests.swift in Sources */,
				CC0314DD24ACCFAC002AB2BE /* Base64EncodedImage.swift in Sources */,
				CC0314DE24ACCFAC002AB2BE /* BasicCacheTests.swift in Sources */,
				CC0314DF24ACCFAC002AB2BE /* ValueTransformationTests.swift in Sources */,
				CC0314E024ACCFAC002AB2BE /* TwoWayTransformerCompositionTests.swift in Sources */,
				CC0314E124ACCFAC002AB2BE /* CacheProviderTests.swift in Sources */,
				CC0314E224ACCFAC002AB2BE /* MemoryCacheLevelTests.swift in Sources */,
				CC0314E324ACCFAC002AB2BE /* KeyTransformationTests.swift in Sources */,
				CC0314E424ACCFAC002AB2BE /* ConditionedTransformersTests.swift in Sources */,
				CC0314E524ACCFAC002AB2BE /* CompositionTests.swift in Sources */,
				CC0314E624ACCFAC002AB2BE /* PoolCacheTests.swift in Sources */,
				CC0314E724ACCFAC002AB2BE /* ConditionedCacheTests.swift in Sources */,
				CC0314E824ACCFAC002AB2BE /* NSNumberFormatterTransformerTests.swift in Sources */,
				CC0314E924ACCFAC002AB2BE /* NetworkFetcherTests.swift in Sources */,
				CC0314EA24ACCFAC002AB2BE /* BasicFetcherTests.swift in Sources */,
				CC0314EB24ACCFAC002AB2BE /* ConditionedValueTransformationTests.swift in Sources */,
				CC5C36BD24EC1725004AD171 /* FetcherFake.swift in Sources */,
				CC0314EC24ACCFAC002AB2BE /* PostProcessTests.swift in Sources */,
				CC0314ED24ACCFAC002AB2BE /* NSUserDefaultsCacheLevelTests.swift in Sources */,
				CC0314EE24ACCFAC002AB2BE /* NormalizationTests.swift in Sources */,
				CC0314EF24ACCFAC002AB2BE /* TwoWayTransformationBoxTests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CC03150024ACCFB1002AB2BE /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CC03150224ACCFB1002AB2BE /* Transformers.swift in Sources */,
				CC03150324ACCFB1002AB2BE /* ConditionedTwoWayTransformer.swift in Sources */,
				CC03150424ACCFB1002AB2BE /* Extensions.swift in Sources */,
				CC03150524ACCFB1002AB2BE /* ConditionedValueTransformation.swift in Sources */,
				CC03150624ACCFB1002AB2BE /* NetworkFetcher.swift in Sources */,
				CC03150724ACCFB1002AB2BE /* SwitchCache.swift in Sources */,
				CC03150824ACCFB1002AB2BE /* MemoryCacheLevel.swift in Sources */,
				CC03150924ACCFB1002AB2BE /* Carlos.swift in Sources */,
				CC03150A24ACCFB1002AB2BE /* CacheLevel+Batch.swift in Sources */,
				CC03150B24ACCFB1002AB2BE /* BasicCache.swift in Sources */,
				CC03150D24ACCFB1002AB2BE /* ImageTransformer.swift in Sources */,
				CC03150E24ACCFB1002AB2BE /* ValueTransformation.swift in Sources */,
				CC03150F24ACCFB1002AB2BE /* Logger.swift in Sources */,
				CC03151024ACCFB1002AB2BE /* ComposedTwoWayTransformer.swift in Sources */,
				CC03151124ACCFB1002AB2BE /* KeyTransformation.swift in Sources */,
				CC03151224ACCFB1002AB2BE /* CacheProvider.swift in Sources */,
				CC03151324ACCFB1002AB2BE /* NSUserDefaultsCacheLevel.swift in Sources */,
				CC03151424ACCFB1002AB2BE /* BatchAllCache.swift in Sources */,
				CC03151724ACCFB1002AB2BE /* ComposedOneWayTransformer.swift in Sources */,
				CC03151824ACCFB1002AB2BE /* StringTransformer.swift in Sources */,
				CC03151924ACCFB1002AB2BE /* FetcherValueTransformation.swift in Sources */,
				CC03151A24ACCFB1002AB2BE /* PoolCache.swift in Sources */,
				CC03151B24ACCFB1002AB2BE /* PostProcess.swift in Sources */,
				CC03151D24ACCFB1002AB2BE /* OneWayTransformer.swift in Sources */,
				CC03151E24ACCFB1002AB2BE /* ConditionedOutputProcessing.swift in Sources */,
				CC03151F24ACCFB1002AB2BE /* Errors.swift in Sources */,
				CC03152024ACCFB1002AB2BE /* ExpensiveObject.swift in Sources */,
				CC03152124ACCFB1002AB2BE /* TwoWayTransformer.swift in Sources */,
				CC5C369524EC164D004AD171 /* FunctionComposition.swift in Sources */,
				CC03152224ACCFB1002AB2BE /* CacheProvider+ImageCache.swift in Sources */,
				CC03152324ACCFB1002AB2BE /* DiskCacheLevel.swift in Sources */,
				CC03152424ACCFB1002AB2BE /* MemoryWarning.swift in Sources */,
				CC03152524ACCFB1002AB2BE /* Composed.swift in Sources */,
				CC5C369924EC164D004AD171 /* UnfairLock.swift in Sources */,
				CC03152624ACCFB1002AB2BE /* Conditioned.swift in Sources */,
				CC03152724ACCFB1002AB2BE /* JSONTransformer.swift in Sources */,
				CC03152824ACCFB1002AB2BE /* StringConvertible.swift in Sources */,
				CC03152924ACCFB1002AB2BE /* BasicFetcher.swift in Sources */,
				CC03152A24ACCFB1002AB2BE /* Normalize.swift in Sources */,
				CC03152B24ACCFB1002AB2BE /* ConditionedOneWayTransformer.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		52635A6E1B4F110500F187EE /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 52635A1C1B4F0F3D00F187EE /* Carlos iOS */;
			targetProxy = 52635A6D1B4F110500F187EE /* PBXContainerItemProxy */;
		};
		CC0315A924ACCFFD002AB2BE /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = CC0313E424ACCF94002AB2BE /* Carlos macOS */;
			targetProxy = CC0315A824ACCFFD002AB2BE /* PBXContainerItemProxy */;
		};
		CC0315B724ACD0A1002AB2BE /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = CC03145624ACCFA0002AB2BE /* Carlos tvOS */;
			targetProxy = CC0315B624ACD0A1002AB2BE /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin XCBuildConfiguration section */
		52635A371B4F0F3E00F187EE /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ENABLE_MODULES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				MARKETING_VERSION = 1.0.0;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
				SUPPORTS_MACCATALYST = YES;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				TARGETED_DEVICE_FAMILY = "1,2";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Debug;
		};
		52635A381B4F0F3E00F187EE /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ENABLE_MODULES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				MARKETING_VERSION = 1.0.0;
				SDKROOT = iphoneos;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
				SUPPORTS_MACCATALYST = YES;
				SWIFT_COMPILATION_MODE = wholemodule;
				SWIFT_OPTIMIZATION_LEVEL = "-O";
				TARGETED_DEVICE_FAMILY = "1,2";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Release;
		};
		52635A701B4F110500F187EE /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				DEVELOPMENT_TEAM = "";
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(inherited)",
					"$(PROJECT_DIR)/Carthage/Build/iOS",
				);
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				INFOPLIST_FILE = Tests/CarlosTests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = iphoneos;
				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_SWIFT3_OBJC_INFERENCE = Default;
				SWIFT_VERSION = 5.0;
			};
			name = Debug;
		};
		52635A711B4F110500F187EE /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				DEVELOPMENT_TEAM = "";
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(inherited)",
					"$(PROJECT_DIR)/Carthage/Build/iOS",
				);
				INFOPLIST_FILE = Tests/CarlosTests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = iphoneos;
				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
				SWIFT_SWIFT3_OBJC_INFERENCE = Default;
				SWIFT_VERSION = 5.0;
			};
			name = Release;
		};
		AD695CFC1B46CD65004E998D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = 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_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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				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;
				INFOPLIST_FILE = Sources/Carlos/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
				MACOSX_DEPLOYMENT_TARGET = 10.15;
				MARKETING_VERSION = 0.10.0;
				ONLY_ACTIVE_ARCH = YES;
				PRODUCT_BUNDLE_IDENTIFIER = de.axelspringer.carlos;
				PRODUCT_NAME = Carlos;
				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvos macosx watchos watchsimulator appletvsimulator";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 5.0;
				TVOS_DEPLOYMENT_TARGET = 10.0;
				WATCHOS_DEPLOYMENT_TARGET = 3.0;
			};
			name = Debug;
		};
		AD695CFD1B46CD65004E998D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = 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_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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				INFOPLIST_FILE = Sources/Carlos/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
				MACOSX_DEPLOYMENT_TARGET = 10.15;
				MARKETING_VERSION = 0.10.0;
				PRODUCT_BUNDLE_IDENTIFIER = de.axelspringer.carlos;
				PRODUCT_NAME = Carlos;
				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvos macosx watchos watchsimulator appletvsimulator";
				SWIFT_COMPILATION_MODE = wholemodule;
				SWIFT_OPTIMIZATION_LEVEL = "-O";
				SWIFT_VERSION = 5.0;
				TVOS_DEPLOYMENT_TARGET = 10.0;
				VALIDATE_PRODUCT = YES;
				WATCHOS_DEPLOYMENT_TARGET = 3.0;
			};
			name = Release;
		};
		CC03141724ACCF94002AB2BE /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ENABLE_MODULES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				MARKETING_VERSION = 1.0.0;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = macosx;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = macosx;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Debug;
		};
		CC03141824ACCF94002AB2BE /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ENABLE_MODULES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				MARKETING_VERSION = 1.0.0;
				SDKROOT = macosx;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = macosx;
				SWIFT_COMPILATION_MODE = wholemodule;
				SWIFT_OPTIMIZATION_LEVEL = "-O";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Release;
		};
		CC03145224ACCF99002AB2BE /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				DEVELOPMENT_TEAM = "";
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(inherited)",
					"$(PROJECT_DIR)/Carthage/Build/Mac",
				);
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				INFOPLIST_FILE = Tests/CarlosTests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx;
				SUPPORTED_PLATFORMS = macosx;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_SWIFT3_OBJC_INFERENCE = Default;
				SWIFT_VERSION = 5.0;
			};
			name = Debug;
		};
		CC03145324ACCF99002AB2BE /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				DEVELOPMENT_TEAM = "";
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(inherited)",
					"$(PROJECT_DIR)/Carthage/Build/Mac",
				);
				INFOPLIST_FILE = Tests/CarlosTests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx;
				SUPPORTED_PLATFORMS = macosx;
				SWIFT_SWIFT3_OBJC_INFERENCE = Default;
				SWIFT_VERSION = 5.0;
			};
			name = Release;
		};
		CC03148924ACCFA0002AB2BE /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ENABLE_MODULES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				MARKETING_VERSION = 1.0.0;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = appletvos;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				TVOS_DEPLOYMENT_TARGET = 13.0;
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Debug;
		};
		CC03148A24ACCFA0002AB2BE /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ENABLE_MODULES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				MARKETING_VERSION = 1.0.0;
				SDKROOT = appletvos;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
				SWIFT_COMPILATION_MODE = wholemodule;
				SWIFT_OPTIMIZATION_LEVEL = "-O";
				TVOS_DEPLOYMENT_TARGET = 13.0;
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Release;
		};
		CC0314FB24ACCFAC002AB2BE /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				DEVELOPMENT_TEAM = "";
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(inherited)",
					"$(PROJECT_DIR)/Carthage/Build/tvOS",
				);
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				INFOPLIST_FILE = Tests/CarlosTests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = appletvos;
				SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_SWIFT3_OBJC_INFERENCE = Default;
				SWIFT_VERSION = 5.0;
			};
			name = Debug;
		};
		CC0314FC24ACCFAC002AB2BE /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				DEVELOPMENT_TEAM = "";
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(inherited)",
					"$(PROJECT_DIR)/Carthage/Build/tvOS",
				);
				INFOPLIST_FILE = Tests/CarlosTests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = appletvos;
				SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
				SWIFT_SWIFT3_OBJC_INFERENCE = Default;
				SWIFT_VERSION = 5.0;
			};
			name = Release;
		};
		CC03153224ACCFB1002AB2BE /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ENABLE_MODULES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				MARKETING_VERSION = 1.0.0;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = watchos;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = "watchsimulator watchos";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
				WATCHOS_DEPLOYMENT_TARGET = 6.0;
			};
			name = Debug;
		};
		CC03153324ACCFB1002AB2BE /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ENABLE_MODULES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				MARKETING_VERSION = 1.0.0;
				SDKROOT = watchos;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = "watchsimulator watchos";
				SWIFT_COMPILATION_MODE = wholemodule;
				SWIFT_OPTIMIZATION_LEVEL = "-O";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
				WATCHOS_DEPLOYMENT_TARGET = 6.0;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		52635A361B4F0F3E00F187EE /* Build configuration list for PBXNativeTarget "Carlos iOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				52635A371B4F0F3E00F187EE /* Debug */,
				52635A381B4F0F3E00F187EE /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		52635A6F1B4F110500F187EE /* Build configuration list for PBXNativeTarget "Carlos iOS Tests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				52635A701B4F110500F187EE /* Debug */,
				52635A711B4F110500F187EE /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		AD695CDA1B46CD65004E998D /* Build configuration list for PBXProject "Carlos" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				AD695CFC1B46CD65004E998D /* Debug */,
				AD695CFD1B46CD65004E998D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CC03141624ACCF94002AB2BE /* Build configuration list for PBXNativeTarget "Carlos macOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CC03141724ACCF94002AB2BE /* Debug */,
				CC03141824ACCF94002AB2BE /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CC03145124ACCF99002AB2BE /* Build configuration list for PBXNativeTarget "Carlos macOS Tests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CC03145224ACCF99002AB2BE /* Debug */,
				CC03145324ACCF99002AB2BE /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CC03148824ACCFA0002AB2BE /* Build configuration list for PBXNativeTarget "Carlos tvOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CC03148924ACCFA0002AB2BE /* Debug */,
				CC03148A24ACCFA0002AB2BE /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CC0314FA24ACCFAC002AB2BE /* Build configuration list for PBXNativeTarget "Carlos tvOS Tests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CC0314FB24ACCFAC002AB2BE /* Debug */,
				CC0314FC24ACCFAC002AB2BE /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CC03153124ACCFB1002AB2BE /* Build configuration list for PBXNativeTarget "Carlos watchOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CC03153224ACCFB1002AB2BE /* Debug */,
				CC03153324ACCFB1002AB2BE /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */

/* Begin XCRemoteSwiftPackageReference section */
		CC5C368A24EC1619004AD171 /* XCRemoteSwiftPackageReference "Quick" */ = {
			isa = XCRemoteSwiftPackageReference;
			repositoryURL = "https://github.com/Quick/Quick.git";
			requirement = {
				kind = upToNextMajorVersion;
				minimumVersion = 3.0.0;
			};
		};
		CC5C368D24EC1636004AD171 /* XCRemoteSwiftPackageReference "Nimble" */ = {
			isa = XCRemoteSwiftPackageReference;
			repositoryURL = "https://github.com/Quick/Nimble.git";
			requirement = {
				kind = upToNextMajorVersion;
				minimumVersion = 8.1.0;
			};
		};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
		CC5C36A024EC16BB004AD171 /* Quick */ = {
			isa = XCSwiftPackageProductDependency;
			package = CC5C368A24EC1619004AD171 /* XCRemoteSwiftPackageReference "Quick" */;
			productName = Quick;
		};
		CC5C36A224EC16BF004AD171 /* Nimble */ = {
			isa = XCSwiftPackageProductDependency;
			package = CC5C368D24EC1636004AD171 /* XCRemoteSwiftPackageReference "Nimble" */;
			productName = Nimble;
		};
		CC5C36A424EC16C6004AD171 /* Quick */ = {
			isa = XCSwiftPackageProductDependency;
			package = CC5C368A24EC1619004AD171 /* XCRemoteSwiftPackageReference "Quick" */;
			productName = Quick;
		};
		CC5C36A624EC16C9004AD171 /* Nimble */ = {
			isa = XCSwiftPackageProductDependency;
			package = CC5C368D24EC1636004AD171 /* XCRemoteSwiftPackageReference "Nimble" */;
			productName = Nimble;
		};
		CC5C36AE24EC16D3004AD171 /* Quick */ = {
			isa = XCSwiftPackageProductDependency;
			package = CC5C368A24EC1619004AD171 /* XCRemoteSwiftPackageReference "Quick" */;
			productName = Quick;
		};
		CC5C36B024EC16D3004AD171 /* Nimble */ = {
			isa = XCSwiftPackageProductDependency;
			package = CC5C368D24EC1636004AD171 /* XCRemoteSwiftPackageReference "Nimble" */;
			productName = Nimble;
		};
/* End XCSwiftPackageProductDependency section */
	};
	rootObject = AD695CD71B46CD65004E998D /* Project object */;
}


================================================
FILE: Carlos.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:">
   </FileRef>
</Workspace>


================================================
FILE: Carlos.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: Carlos.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
================================================
{
  "object": {
    "pins": [
      {
        "package": "Nimble",
        "repositoryURL": "https://github.com/Quick/Nimble.git",
        "state": {
          "branch": null,
          "revision": "7a46a5fc86cb917f69e3daf79fcb045283d8f008",
          "version": "8.1.2"
        }
      },
      {
        "package": "Quick",
        "repositoryURL": "https://github.com/Quick/Quick.git",
        "state": {
          "branch": null,
          "revision": "0038bcbab4292f3b028632556507c124e5ba69f3",
          "version": "3.0.0"
        }
      }
    ]
  },
  "version": 1
}


================================================
FILE: Carlos.xcodeproj/xcshareddata/xcschemes/Carlos iOS.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1200"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "52635A1C1B4F0F3D00F187EE"
               BuildableName = "Carlos.framework"
               BlueprintName = "Carlos iOS"
               ReferencedContainer = "container:Carlos.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "52635A651B4F110500F187EE"
               BuildableName = "Carlos iOS Tests.xctest"
               BlueprintName = "Carlos iOS Tests"
               ReferencedContainer = "container:Carlos.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "52635A1C1B4F0F3D00F187EE"
            BuildableName = "Carlos.framework"
            BlueprintName = "Carlos iOS"
            ReferencedContainer = "container:Carlos.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: Carlos.xcodeproj/xcshareddata/xcschemes/Carlos watchOS.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1200"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CC0314FF24ACCFB1002AB2BE"
               BuildableName = "Carlos.framework"
               BlueprintName = "Carlos watchOS"
               ReferencedContainer = "container:Carlos.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CC03156D24ACCFBE002AB2BE"
               BuildableName = "Carlos watchOS Tests.xctest"
               BlueprintName = "Carlos watchOS Tests"
               ReferencedContainer = "container:Carlos.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CC0314FF24ACCFB1002AB2BE"
            BuildableName = "Carlos.framework"
            BlueprintName = "Carlos watchOS"
            ReferencedContainer = "container:Carlos.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: Carlos.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "group:">
   </FileRef>
   <FileRef
      location = "group:Example/Example.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: Carlos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: Carlos.xcworkspace/xcshareddata/swiftpm/Package.resolved
================================================
{
  "object": {
    "pins": [
      {
        "package": "CwlCatchException",
        "repositoryURL": "https://github.com/mattgallagher/CwlCatchException.git",
        "state": {
          "branch": null,
          "revision": "682841464136f8c66e04afe5dbd01ab51a3a56f2",
          "version": "2.1.0"
        }
      },
      {
        "package": "CwlPreconditionTesting",
        "repositoryURL": "https://github.com/mattgallagher/CwlPreconditionTesting.git",
        "state": {
          "branch": null,
          "revision": "02b7a39a99c4da27abe03cab2053a9034379639f",
          "version": "2.0.0"
        }
      },
      {
        "package": "Nimble",
        "repositoryURL": "https://github.com/Quick/Nimble.git",
        "state": {
          "branch": null,
          "revision": "af1730dde4e6c0d45bf01b99f8a41713ce536790",
          "version": "9.2.0"
        }
      },
      {
        "package": "Quick",
        "repositoryURL": "https://github.com/Quick/Quick.git",
        "state": {
          "branch": null,
          "revision": "bd86ca0141e3cfb333546de5a11ede63f0c4a0e6",
          "version": "4.0.0"
        }
      }
    ]
  },
  "version": 1
}


================================================
FILE: Example/CarlosMacSample/AppDelegate.swift
================================================
import Carlos
import Cocoa
import Combine

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
  let cache = CacheProvider.dataCache()

  private var cancellables = Set<AnyCancellable>()

  func applicationDidFinishLaunching(_: Notification) {
    cache.get(URL(string: "https://github.com/WeltN24/Carlos")!)
      .sink(receiveCompletion: { completion in
        if case let .failure(error) = completion {
          print("Got the following error from the data cache:")
          print(error)
        }
      }, receiveValue: { value in
        print("Got the following string from the data cache:")
        print(String(describing: String(data: value as Data, encoding: .utf8)))
      })
      .store(in: &cancellables)
  }
}


================================================
FILE: Example/CarlosMacSample/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "mac",
      "size" : "16x16",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "16x16",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "32x32",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "32x32",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "128x128",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "128x128",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "256x256",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "256x256",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "512x512",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "512x512",
      "scale" : "2x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosMacSample/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="8187.4" systemVersion="14F27" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
    <dependencies>
        <deployment identifier="macosx"/>
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8187.4"/>
    </dependencies>
    <scenes>
        <!--Application-->
        <scene sceneID="JPo-4y-FX3">
            <objects>
                <application id="hnw-xV-0zn" sceneMemberID="viewController">
                    <menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
                        <items>
                            <menuItem title="CarlosMacSample" id="1Xt-HY-uBw">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="CarlosMacSample" systemMenu="apple" id="uQy-DD-JDr">
                                    <items>
                                        <menuItem title="Hide CarlosMacSample" keyEquivalent="h" id="Olw-nP-bQN">
                                            <connections>
                                                <action selector="hide:" target="Ady-hI-5gd" id="PnN-Uc-m68"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
                                            <connections>
                                                <action selector="hideOtherApplications:" target="Ady-hI-5gd" id="VT4-aY-XCT"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Show All" id="Kd2-mp-pUS">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <connections>
                                                <action selector="unhideAllApplications:" target="Ady-hI-5gd" id="Dhg-Le-xox"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
                                        <menuItem title="Quit CarlosMacSample" keyEquivalent="q" id="4sb-4s-VLi">
                                            <connections>
                                                <action selector="terminate:" target="Ady-hI-5gd" id="Te7-pn-YzF"/>
                                            </connections>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                            <menuItem title="Window" id="aUF-d1-5bR">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
                                    <items>
                                        <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
                                            <connections>
                                                <action selector="performMiniaturize:" target="Ady-hI-5gd" id="VwT-WD-YPe"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
                                        <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <connections>
                                                <action selector="arrangeInFront:" target="Ady-hI-5gd" id="DRN-fu-gQh"/>
                                            </connections>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                        </items>
                    </menu>
                    <connections>
                        <outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
                    </connections>
                </application>
                <customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="CarlosMacSample" customModuleProvider="target"/>
                <customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="75" y="0.0"/>
        </scene>
        <!--Window Controller-->
        <scene sceneID="R2V-B0-nI4">
            <objects>
                <windowController id="B8D-0N-5wS" sceneMemberID="viewController">
                    <window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="default" id="IQv-IB-iLA">
                        <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
                        <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
                        <rect key="contentRect" x="196" y="240" width="480" height="270"/>
                        <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
                    </window>
                    <connections>
                        <segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
                    </connections>
                </windowController>
                <customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="75" y="250"/>
        </scene>
        <!--View Controller-->
        <scene sceneID="hIz-AP-VOD">
            <objects>
                <viewController id="XfG-lQ-9wD" customClass="ViewController" customModule="CarlosMacSample" customModuleProvider="target" sceneMemberID="viewController">
                    <view key="view" id="m2S-Jp-Qdl">
                        <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
                        <autoresizingMask key="autoresizingMask"/>
                    </view>
                </viewController>
                <customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="75" y="655"/>
        </scene>
    </scenes>
</document>


================================================
FILE: Example/CarlosMacSample/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIconFile</key>
	<string></string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSMinimumSystemVersion</key>
	<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2015 WeltN24. All rights reserved.</string>
	<key>NSMainStoryboardFile</key>
	<string>Main</string>
	<key>NSPrincipalClass</key>
	<string>NSApplication</string>
</dict>
</plist>


================================================
FILE: Example/CarlosMacSample/ViewController.swift
================================================
import Cocoa

class ViewController: NSViewController {
  override func viewDidLoad() {
    if #available(OSX 10.10, *) {
      super.viewDidLoad()
    }
  }
}


================================================
FILE: Example/CarlosTvSample/AppDelegate.swift
================================================
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  var window: UIWindow?

  private func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    true
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "tv",
      "scale" : "1x"
    },
    {
      "idiom" : "tv",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json
================================================
{
  "layers" : [
    {
      "filename" : "Front.imagestacklayer"
    },
    {
      "filename" : "Middle.imagestacklayer"
    },
    {
      "filename" : "Back.imagestacklayer"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "tv",
      "scale" : "1x"
    },
    {
      "idiom" : "tv",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "tv",
      "scale" : "1x"
    },
    {
      "idiom" : "tv",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "tv",
      "scale" : "1x"
    },
    {
      "idiom" : "tv",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json
================================================
{
  "layers" : [
    {
      "filename" : "Front.imagestacklayer"
    },
    {
      "filename" : "Middle.imagestacklayer"
    },
    {
      "filename" : "Back.imagestacklayer"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "tv",
      "scale" : "1x"
    },
    {
      "idiom" : "tv",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "tv",
      "scale" : "1x"
    },
    {
      "idiom" : "tv",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json
================================================
{
  "assets" : [
    {
      "filename" : "App Icon - Large.imagestack",
      "idiom" : "tv",
      "role" : "primary-app-icon",
      "size" : "1280x768"
    },
    {
      "filename" : "App Icon - Small.imagestack",
      "idiom" : "tv",
      "role" : "primary-app-icon",
      "size" : "400x240"
    },
    {
      "filename" : "Top Shelf Image Wide.imageset",
      "idiom" : "tv",
      "role" : "top-shelf-image-wide",
      "size" : "2320x720"
    },
    {
      "filename" : "Top Shelf Image.imageset",
      "idiom" : "tv",
      "role" : "top-shelf-image",
      "size" : "1920x720"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "tv",
      "scale" : "1x"
    },
    {
      "idiom" : "tv",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "tv",
      "scale" : "1x"
    },
    {
      "idiom" : "tv",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosTvSample/Assets.xcassets/LaunchImage.launchimage/Contents.json
================================================
{
  "images" : [
    {
      "extent" : "full-screen",
      "idiom" : "tv",
      "minimum-system-version" : "11.0",
      "orientation" : "landscape",
      "scale" : "2x"
    },
    {
      "extent" : "full-screen",
      "idiom" : "tv",
      "minimum-system-version" : "9.0",
      "orientation" : "landscape",
      "scale" : "1x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosTvSample/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder.AppleTV.Storyboard" version="3.0" toolsVersion="9052" systemVersion="14F27" targetRuntime="AppleTV" propertyAccessControl="none" useAutolayout="YES" initialViewController="BYZ-38-t0r">
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9040"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="tne-QT-ifu">
            <objects>
                <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="CarlosTvSample" customModuleProvider="target" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
                        <rect key="frame" x="0.0" y="0.0" width="1920" height="1080"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
            </objects>
        </scene>
    </scenes>
</document>


================================================
FILE: Example/CarlosTvSample/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
	</dict>
	<key>UIMainStoryboardFile</key>
	<string>Main</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>arm64</string>
	</array>
</dict>
</plist>


================================================
FILE: Example/CarlosTvSample/ViewController.swift
================================================
import Carlos
import Combine
import UIKit

class BitcoinResult {
  let USDValue: Float

  init(USDValue: Float) {
    self.USDValue = USDValue
  }
}

extension BitcoinResult: ExpensiveObject {
  var cost: Int {
    1
  }
}

enum SampleError: Error {
  case invalidJSON
}

class ViewController: UIViewController {
  private var cancellables = Set<AnyCancellable>()

  override func viewDidLoad() {
    super.viewDidLoad()

    let JSONFetcher: BasicFetcher<URL, AnyObject> = NetworkFetcher().transformValues(JSONTransformer())
    let cache = JSONFetcher.transformValues(BTCTransformer())

    cache.get(URL(string: "http://coinabul.com/api.php")!)
      .sink(receiveCompletion: { completion in
        print(completion)
      }, receiveValue: { result in
        print("Bitcoin value is \(result.USDValue) USD")
      }).store(in: &cancellables)
  }
}

struct BTCTransformer: OneWayTransformer {
  func transform(_ val: AnyObject) -> AnyPublisher<BitcoinResult, Error> {
    Future { promise in
      if let JSON = val as? [String: AnyObject],
        let BTCDict = JSON["BTC"] as? [String: AnyObject],
        let USDStringValue = BTCDict["USD"] as? String,
        let USDFloatValue = Float(USDStringValue)
      {
        promise(.success(BitcoinResult(USDValue: USDFloatValue)))
      } else {
        promise(.failure(SampleError.invalidJSON))
      }
    }.eraseToAnyPublisher()
  }
}


================================================
FILE: Example/CarlosWatchSample/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "watch",
      "role" : "notificationCenter",
      "scale" : "2x",
      "size" : "24x24",
      "subtype" : "38mm"
    },
    {
      "idiom" : "watch",
      "role" : "notificationCenter",
      "scale" : "2x",
      "size" : "27.5x27.5",
      "subtype" : "42mm"
    },
    {
      "idiom" : "watch",
      "role" : "companionSettings",
      "scale" : "2x",
      "size" : "29x29"
    },
    {
      "idiom" : "watch",
      "role" : "companionSettings",
      "scale" : "3x",
      "size" : "29x29"
    },
    {
      "idiom" : "watch",
      "role" : "appLauncher",
      "scale" : "2x",
      "size" : "40x40",
      "subtype" : "38mm"
    },
    {
      "idiom" : "watch",
      "role" : "appLauncher",
      "scale" : "2x",
      "size" : "44x44",
      "subtype" : "40mm"
    },
    {
      "idiom" : "watch",
      "role" : "appLauncher",
      "scale" : "2x",
      "size" : "50x50",
      "subtype" : "44mm"
    },
    {
      "idiom" : "watch",
      "role" : "quickLook",
      "scale" : "2x",
      "size" : "86x86",
      "subtype" : "38mm"
    },
    {
      "idiom" : "watch",
      "role" : "quickLook",
      "scale" : "2x",
      "size" : "98x98",
      "subtype" : "42mm"
    },
    {
      "idiom" : "watch",
      "role" : "quickLook",
      "scale" : "2x",
      "size" : "108x108",
      "subtype" : "44mm"
    },
    {
      "idiom" : "watch-marketing",
      "scale" : "1x",
      "size" : "1024x1024"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Example/CarlosWatchSample/Base.lproj/Interface.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder.WatchKit.Storyboard" version="3.0" toolsVersion="16097" targetRuntime="watchKit" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="AgC-eL-Hgc">
    <device id="watch38"/>
    <dependencies>
        <deployment identifier="watchOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBWatchKitPlugin" version="16012"/>
    </dependencies>
    <scenes>
        <!--Interface Controller-->
        <scene sceneID="aou-V4-d1y">
            <objects>
                <controller id="AgC-eL-Hgc" customClass="InterfaceController" customModule="CarlosWatchSample" customModuleProvider="target">
                    <items>
                        <table alignment="left" id="4vB-1a-vCi">
                            <items>
                                <tableRow identifier="CountryRow" selectable="NO" id="bP4-0c-GQ5" customClass="CountryRow" customModule="CarlosWatchSample_Extension">
                                    <group key="rootItem" width="1" alignment="left" id="LFy-O2-6xt">
                                        <items>
                                            <imageView width="40" height="40" alignment="left" verticalAlignment="center" image="placeholder" contentMode="scaleAspectFit" id="NVm-KX-mV7"/>
                                            <label alignment="right" verticalAlignment="center" text="Label" textAlignment="right" id="ctA-kb-6ko"/>
                                        </items>
                                    </group>
                                    <connections>
                                        <outlet property="countryName" destination="ctA-kb-6ko" id="CpW-S9-yCK"/>
                                        <outlet property="flagImage" destination="NVm-KX-mV7" id="oHm-K2-5el"/>
                                    </connections>
                                </tableRow>
                            </items>
                        </table>
                    </items>
                    <connections>
                        <outlet property="tableView" destination="4vB-1a-vCi" id="lfY-0Y-VFd"/>
                    </connections>
                </controller>
            </objects>
            <point key="canvasLocation" x="34" y="31"/>
        </scene>
    </scenes>
    <resources>
        <image name="placeholder" width="50" height="32.5"/>
    </resources>
</document>


================================================
FILE: Example/CarlosWatchSample/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDisplayName</key>
	<string>CarlosSample</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
	</array>
	<key>WKCompanionAppBundleIdentifier</key>
	<string>de.axelspringer.CarlosSample</string>
	<key>WKWatchKitApp</key>
	<true/>
</dict>
</plist>


================================================
FILE: Example/CarlosWatchSample Extension/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosWatchSample Extension/Assets.xcassets/placeholder.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "filename" : "placeholder.jpg",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "placeholder-1.jpg",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/CarlosWatchSample Extension/CountryRow.swift
================================================
import Foundation
import WatchKit

class CountryRow: NSObject {
  @IBOutlet var countryName: WKInterfaceLabel!
  @IBOutlet var flagImage: WKInterfaceImage!
}


================================================
FILE: Example/CarlosWatchSample Extension/ExtensionDelegate.swift
================================================
import WatchKit

class ExtensionDelegate: NSObject, WKExtensionDelegate {
  func applicationDidFinishLaunching() {}
}


================================================
FILE: Example/CarlosWatchSample Extension/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDisplayName</key>
	<string>CarlosWatchSample Extension</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>XPC!</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
	</dict>
	<key>NSExtension</key>
	<dict>
		<key>NSExtensionAttributes</key>
		<dict>
			<key>WKAppBundleIdentifier</key>
			<string>de.axelspringer.CarlosSample.watchkitapp</string>
		</dict>
		<key>NSExtensionPointIdentifier</key>
		<string>com.apple.watchkit</string>
	</dict>
	<key>RemoteInterfacePrincipalClass</key>
	<string>$(PRODUCT_MODULE_NAME).InterfaceController</string>
	<key>WKExtensionDelegateClassName</key>
	<string>$(PRODUCT_MODULE_NAME).ExtensionDelegate</string>
</dict>
</plist>


================================================
FILE: Example/CarlosWatchSample Extension/InterfaceController.swift
================================================
import Foundation
import WatchKit

import Carlos
import Combine

private struct Country {
  let name: String
  let flagURL: URL
}

class InterfaceController: WKInterfaceController {
  @IBOutlet var tableView: WKInterfaceTable!

  let imageCache = CacheProvider.imageCache()

  private var cancellables = Set<AnyCancellable>()

  private let countries = [
    Country(name: "Italy", flagURL: URL(string: "http://2.bp.blogspot.com/-51ZhmfLCi9s/VBLNUQL-giI/AAAAAAAAAfA/LTayxh5K3C4/s1600/flag_italy_mini.gif")!),
    Country(name: "Germany", flagURL: URL(string: "http://www.weezerpedia.com/wiki/images/e/eb/Flag-germany.png")!),
    Country(name: "France", flagURL: URL(string: "http://www.worldflagsportal.com/pics/thumbnails/france-flag.png")!),
    Country(name: "Netherlands", flagURL: URL(string: "https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Flag_of_the_Netherlands.svg/50px-Flag_of_the_Netherlands.svg.png")!),
    Country(name: "South Africa", flagURL: URL(string: "https://8b90b43d6bcfc09ee36c-3ad5470e7d4bb324e402ac2f90d6d0ba.ssl.cf3.rackcdn.com/soaf_1.gif")!),
    Country(name: "USA", flagURL: URL(string: "http://www.scramblestuff.us/images/us_flag.png")!),
    Country(name: "Australia", flagURL: URL(string: "http://dropdownaustralia.com/wp-content/uploads/2013/11/Australian-Flag.png")!),
    Country(name: "Spain", flagURL: URL(string: "http://www.romanhomes.com/vacation_rentals/images/navona-campo-fiori-turtles-dream/navona-campo-fiori-turtles-dream/flag-spain-small.jpg")!),
    Country(name: "Austria", flagURL: URL(string: "http://flagpedia.net/data/flags/mini/at.png")!),
    Country(name: "Congo", flagURL: URL(string: "https://www.usaid.gov/sites/default/files/styles/40x24_flag/public/missions/flags/congo-democratic-republic-of.gif?itok=xRT3uqRi")!),
    Country(name: "Cuba", flagURL: URL(string: "http://flagpedia.net/data/flags/mini/cu.png")!),
    Country(name: "UK", flagURL: URL(string: "http://images.smh.com.au/2012/07/18/3464759/Olympic-Flag-Icon_Great_Britain.gif")!)
  ]

  override func awake(withContext context: Any?) {
    super.awake(withContext: context)

    tableView.setNumberOfRows(countries.count, withRowType: "CountryRow")

    for (idx, country) in countries.enumerated() {
      if let row = tableView.rowController(at: idx) as? CountryRow {
        row.countryName.setText(country.name)
        row.flagImage.setImage(UIImage(named: "placeholder"))

        imageCache.get(country.flagURL).sink(receiveCompletion: { _ in }) { image in
          row.flagImage.setImage(image)
        }.store(in: &cancellables)
      }
    }
  }
}


================================================
FILE: Example/Example/AppDelegate.swift
================================================
import Carlos
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  var window: UIWindow?

  func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    true
  }
}

func simpleCache() -> BasicCache<URL, NSData> {
  CacheProvider.dataCache()
}

func delayedNetworkCache() -> BasicCache<URL, NSData> {
  MemoryCacheLevel().compose(DiskCacheLevel()).compose(DelayedNetworkFetcher())
}


================================================
FILE: Example/Example/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="VM7-XC-H0K">
    <device id="retina6_1" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17126"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--Examples List View Controller-->
        <scene sceneID="tne-QT-ifu">
            <objects>
                <viewController id="BYZ-38-t0r" customClass="ExamplesListViewController" customModule="ExampleSample" customModuleProvider="target" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="55" sectionHeaderHeight="25" sectionFooterHeight="25" translatesAutoresizingMaskIntoConstraints="NO" id="djL-bZ-Ujc">
                                <rect key="frame" x="0.0" y="0.0" width="414" height="862"/>
                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                <prototypes>
                                    <tableViewCell contentMode="scaleToFill" selectionStyle="gray" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ExampleCell" textLabel="Y1w-6b-lFT" detailTextLabel="M2d-GP-Pks" style="IBUITableViewCellStyleSubtitle" id="ZDi-Dd-fxb" customClass="ExampleCell" customModule="ExampleSample" customModuleProvider="target">
                                        <rect key="frame" x="0.0" y="28" width="414" height="55"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ZDi-Dd-fxb" id="B7j-5P-dn7">
                                            <rect key="frame" x="0.0" y="0.0" width="383" height="55"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Y1w-6b-lFT">
                                                    <rect key="frame" x="20" y="9" width="33" height="20.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="M2d-GP-Pks">
                                                    <rect key="frame" x="20" y="30.5" width="44" height="14.5"/>
                                                    <autoresizingMask key="autoresizingMask"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                    </tableViewCell>
                                </prototypes>
                                <connections>
                                    <outlet property="dataSource" destination="BYZ-38-t0r" id="nKd-lv-2yD"/>
                                    <outlet property="delegate" destination="BYZ-38-t0r" id="pQc-8n-I1R"/>
                                </connections>
                            </tableView>
                        </subviews>
                        <constraints>
                            <constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="djL-bZ-Ujc" secondAttribute="bottom" id="Ck2-7n-bFe"/>
                            <constraint firstItem="djL-bZ-Ujc" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="top" id="IWw-0Q-kP2"/>
                            <constraint firstItem="djL-bZ-Ujc" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="ORi-fU-9V7"/>
                            <constraint firstAttribute="trailing" secondItem="djL-bZ-Ujc" secondAttribute="trailing" id="qU0-CL-ASH"/>
                        </constraints>
                    </view>
                    <navigationItem key="navigationItem" id="tKY-HU-2kc"/>
                    <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
                    <connections>
                        <segue destination="pIu-kR-eaS" kind="show" identifier="userDefaultsCache" id="5dU-FT-vcl"/>
                        <segue destination="cPe-S0-2ZW" kind="show" identifier="memoryWarning" id="Q7g-M3-nP3"/>
                        <segue destination="gIf-ro-V0s" kind="show" identifier="complexCache" id="ToB-
Download .txt
gitextract_a123yuin/

├── .github/
│   └── workflows/
│       └── pr.yml
├── .gitignore
├── .gitmodules
├── .swiftformat
├── .swiftlint.yml
├── .swiftpm/
│   └── xcode/
│       ├── package.xcworkspace/
│       │   └── contents.xcworkspacedata
│       └── xcshareddata/
│           └── xcschemes/
│               └── Carlos.xcscheme
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Carlos.podspec
├── Carlos.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       ├── IDEWorkspaceChecks.plist
│   │       └── swiftpm/
│   │           └── Package.resolved
│   └── xcshareddata/
│       └── xcschemes/
│           ├── Carlos iOS.xcscheme
│           └── Carlos watchOS.xcscheme
├── Carlos.xcworkspace/
│   ├── contents.xcworkspacedata
│   └── xcshareddata/
│       ├── IDEWorkspaceChecks.plist
│       └── swiftpm/
│           └── Package.resolved
├── Example/
│   ├── CarlosMacSample/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   └── ViewController.swift
│   ├── CarlosTvSample/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── App Icon & Top Shelf Image.brandassets/
│   │   │   │   ├── App Icon - Large.imagestack/
│   │   │   │   │   ├── Back.imagestacklayer/
│   │   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Front.imagestacklayer/
│   │   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Middle.imagestacklayer/
│   │   │   │   │       ├── Content.imageset/
│   │   │   │   │       │   └── Contents.json
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── App Icon - Small.imagestack/
│   │   │   │   │   ├── Back.imagestacklayer/
│   │   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Front.imagestacklayer/
│   │   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Middle.imagestacklayer/
│   │   │   │   │       ├── Content.imageset/
│   │   │   │   │       │   └── Contents.json
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Top Shelf Image Wide.imageset/
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Top Shelf Image.imageset/
│   │   │   │       └── Contents.json
│   │   │   ├── Contents.json
│   │   │   └── LaunchImage.launchimage/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   └── ViewController.swift
│   ├── CarlosWatchSample/
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── Interface.storyboard
│   │   └── Info.plist
│   ├── CarlosWatchSample Extension/
│   │   ├── Assets.xcassets/
│   │   │   ├── Contents.json
│   │   │   └── placeholder.imageset/
│   │   │       └── Contents.json
│   │   ├── CountryRow.swift
│   │   ├── ExtensionDelegate.swift
│   │   ├── Info.plist
│   │   └── InterfaceController.swift
│   ├── Example/
│   │   ├── AppDelegate.swift
│   │   ├── Base.lproj/
│   │   │   └── Main.storyboard
│   │   ├── BaseCacheViewController.swift
│   │   ├── ComplexCacheSampleViewController.swift
│   │   ├── ConditionedCacheSampleViewController.swift
│   │   ├── DataCacheSampleViewController.swift
│   │   ├── DelayedNetworkFetcher.swift
│   │   ├── ExampleCell.swift
│   │   ├── ExamplesListViewController.swift
│   │   ├── ImageCacheSampleViewController.swift
│   │   ├── Images.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Info.plist
│   │   ├── JSONCacheSampleViewController.swift
│   │   ├── MemoryWarningSampleViewController.swift
│   │   ├── PooledCacheSampleViewController.swift
│   │   ├── SwitchCacheSampleViewController.swift
│   │   └── UserDefaultsCacheSampleViewController.swift
│   └── Example.xcodeproj/
│       ├── project.pbxproj
│       └── project.xcworkspace/
│           ├── contents.xcworkspacedata
│           └── xcshareddata/
│               └── IDEWorkspaceChecks.plist
├── Gemfile
├── LICENSE
├── MIGRATING.md
├── Package.resolved
├── Package.swift
├── README.md
├── Sources/
│   └── Carlos/
│       ├── CacheLevels/
│       │   ├── BatchAllCache.swift
│       │   ├── Composed.swift
│       │   ├── Conditioned.swift
│       │   ├── DiskCacheLevel.swift
│       │   ├── Fetcher.swift
│       │   ├── MemoryCacheLevel.swift
│       │   ├── NSUserDefaultsCacheLevel.swift
│       │   ├── NetworkFetcher.swift
│       │   └── PoolCache.swift
│       ├── CacheProvider.swift
│       ├── Carlos.swift
│       ├── Core/
│       │   ├── BasicCache.swift
│       │   ├── BasicFetcher.swift
│       │   ├── Errors.swift
│       │   ├── ExpensiveObject.swift
│       │   ├── Extensions.swift
│       │   ├── FetcherValueTransformation.swift
│       │   ├── FunctionComposition.swift
│       │   ├── Logger.swift
│       │   ├── MemoryWarning.swift
│       │   ├── StringConvertible.swift
│       │   └── UnfairLock.swift
│       ├── Info.plist
│       ├── Operations/
│       │   ├── CacheLevel+Batch.swift
│       │   ├── KeyTransformation.swift
│       │   ├── Normalize.swift
│       │   ├── PostProcess.swift
│       │   ├── SwitchCache.swift
│       │   └── ValueTransformation.swift
│       └── Transformers/
│           ├── ComposedOneWayTransformer.swift
│           ├── ComposedTwoWayTransformer.swift
│           ├── ConditionedOneWayTransformer.swift
│           ├── ConditionedOutputProcessing.swift
│           ├── ConditionedTwoWayTransformer.swift
│           ├── ConditionedValueTransformation.swift
│           ├── ImageTransformer.swift
│           ├── JSONTransformer.swift
│           ├── OneWayTransformer.swift
│           ├── StringTransformer.swift
│           ├── Transformers.swift
│           └── TwoWayTransformer.swift
├── Tests/
│   └── CarlosTests/
│       ├── BasicCacheTests.swift
│       ├── BasicFetcherTests.swift
│       ├── BatchTests.swift
│       ├── CacheProviderTests.swift
│       ├── CompositionTests.swift
│       ├── ConditionedCacheTests.swift
│       ├── ConditionedOneWayTransformationBoxTests.swift
│       ├── ConditionedOutputProcessingTests.swift
│       ├── ConditionedTransformersTests.swift
│       ├── ConditionedTwoWayTransformationBoxTests.swift
│       ├── ConditionedValueTransformationTests.swift
│       ├── DiskCacheTests.swift
│       ├── Fakes/
│       │   ├── Base64EncodedImage.swift
│       │   ├── CacheLevelFake.swift
│       │   └── FetcherFake.swift
│       ├── FetcherValueTransformationTests.swift
│       ├── ImageTransformerTests.swift
│       ├── Info.plist
│       ├── JSONTransformerTests.swift
│       ├── KeyTransformationTests.swift
│       ├── MKDistanceFormatterTransformerTests.swift
│       ├── MemoryCacheLevelTests.swift
│       ├── MemoryWarningNotificationTests.swift
│       ├── NSDateFormatterTransformerTests.swift
│       ├── NSNumberFormatterTransformerTests.swift
│       ├── NSUserDefaultsCacheLevelTests.swift
│       ├── NetworkFetcherTests.swift
│       ├── NormalizationTests.swift
│       ├── OneWayTransformationBoxTests.swift
│       ├── OneWayTransformerCompositionTests.swift
│       ├── PoolCacheTests.swift
│       ├── PostProcessTests.swift
│       ├── StringConvertibleTests.swift
│       ├── StringTransformerTests.swift
│       ├── SwitchCacheTests.swift
│       ├── TwoWayTransformationBoxTests.swift
│       ├── TwoWayTransformerCompositionTests.swift
│       └── ValueTransformationTests.swift
└── fastlane/
    ├── Fastfile
    ├── README.md
    └── Scanfile
Condensed preview — 164 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (857K chars).
[
  {
    "path": ".github/workflows/pr.yml",
    "chars": 432,
    "preview": "name: PR\n\non:\n  pull_request: \n    branches:\n      - master\n\njobs:\n  pr:\n    runs-on: macos-11\n    \n    steps:\n      - u"
  },
  {
    "path": ".gitignore",
    "chars": 1402,
    "preview": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n"
  },
  {
    "path": ".gitmodules",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".swiftformat",
    "chars": 764,
    "preview": "# file options\n\n--exclude Carthage,Build,.build,.swiftpm,SourcePackages\n--symlinks ignore\n--swiftversion 5.3\n\n# format o"
  },
  {
    "path": ".swiftlint.yml",
    "chars": 1671,
    "preview": "disabled_rules:\n  - redundant_string_enum_value\n  - line_length\n  - trailing_whitespace\n  - identifier_name\n  - opening_"
  },
  {
    "path": ".swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": ".swiftpm/xcode/xcshareddata/xcschemes/Carlos.xcscheme",
    "chars": 3637,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1150\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "CHANGELOG.md",
    "chars": 9870,
    "preview": "# Changelog\n\n## 1.0.0 \n**Breaking Changes**\n- Swift 5.3 and Xcode 12 support \n- The codebase has been migrated from Pied"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 444,
    "preview": "# Contributing to Carlos\n\nIf you want to contribute to this repo, please:\n\n- Create an issue explaining your problem and"
  },
  {
    "path": "Carlos.podspec",
    "chars": 1029,
    "preview": "#\n# Be sure to run `pod lib lint Carlos.podspec' to ensure this is a\n# valid spec and remove all comments before submitt"
  },
  {
    "path": "Carlos.xcodeproj/project.pbxproj",
    "chars": 126940,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 52;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Carlos.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "Carlos.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Carlos.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved",
    "chars": 575,
    "preview": "{\n  \"object\": {\n    \"pins\": [\n      {\n        \"package\": \"Nimble\",\n        \"repositoryURL\": \"https://github.com/Quick/Ni"
  },
  {
    "path": "Carlos.xcodeproj/xcshareddata/xcschemes/Carlos iOS.xcscheme",
    "chars": 2820,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1200\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Carlos.xcodeproj/xcshareddata/xcschemes/Carlos watchOS.xcscheme",
    "chars": 2836,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1200\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Carlos.xcworkspace/contents.xcworkspacedata",
    "chars": 214,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:\">\n   </FileRe"
  },
  {
    "path": "Carlos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Carlos.xcworkspace/xcshareddata/swiftpm/Package.resolved",
    "chars": 1165,
    "preview": "{\n  \"object\": {\n    \"pins\": [\n      {\n        \"package\": \"CwlCatchException\",\n        \"repositoryURL\": \"https://github.c"
  },
  {
    "path": "Example/CarlosMacSample/AppDelegate.swift",
    "chars": 748,
    "preview": "import Carlos\nimport Cocoa\nimport Combine\n\n@NSApplicationMain\nclass AppDelegate: NSObject, NSApplicationDelegate {\n  let"
  },
  {
    "path": "Example/CarlosMacSample/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 903,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"16x16\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : "
  },
  {
    "path": "Example/CarlosMacSample/Base.lproj/Main.storyboard",
    "chars": 7261,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB\""
  },
  {
    "path": "Example/CarlosMacSample/Info.plist",
    "chars": 1081,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/CarlosMacSample/ViewController.swift",
    "chars": 159,
    "preview": "import Cocoa\n\nclass ViewController: NSViewController {\n  override func viewDidLoad() {\n    if #available(OSX 10.10, *) {"
  },
  {
    "path": "Example/CarlosTvSample/AppDelegate.swift",
    "chars": 257,
    "preview": "import UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n  var window: UIWindow?\n\n  priv"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json",
    "chars": 194,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json",
    "chars": 250,
    "preview": "{\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.imagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.imagestacklaye"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json",
    "chars": 194,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json",
    "chars": 194,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json",
    "chars": 194,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json",
    "chars": 250,
    "preview": "{\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.imagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.imagestacklaye"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json",
    "chars": 194,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json",
    "chars": 194,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json",
    "chars": 667,
    "preview": "{\n  \"assets\" : [\n    {\n      \"filename\" : \"App Icon - Large.imagestack\",\n      \"idiom\" : \"tv\",\n      \"role\" : \"primary-a"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json",
    "chars": 194,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json",
    "chars": 194,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/CarlosTvSample/Assets.xcassets/LaunchImage.launchimage/Contents.json",
    "chars": 409,
    "preview": "{\n  \"images\" : [\n    {\n      \"extent\" : \"full-screen\",\n      \"idiom\" : \"tv\",\n      \"minimum-system-version\" : \"11.0\",\n  "
  },
  {
    "path": "Example/CarlosTvSample/Base.lproj/Main.storyboard",
    "chars": 1574,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder.AppleTV.Storyboard\" ve"
  },
  {
    "path": "Example/CarlosTvSample/Info.plist",
    "chars": 1012,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/CarlosTvSample/ViewController.swift",
    "chars": 1392,
    "preview": "import Carlos\nimport Combine\nimport UIKit\n\nclass BitcoinResult {\n  let USDValue: Float\n\n  init(USDValue: Float) {\n    se"
  },
  {
    "path": "Example/CarlosWatchSample/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 1543,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"watch\",\n      \"role\" : \"notificationCenter\",\n      \"scale\" : \"2x\",\n      \"size\" "
  },
  {
    "path": "Example/CarlosWatchSample/Base.lproj/Interface.storyboard",
    "chars": 2595,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder.WatchKit.Storyboard\" version=\"3.0\" too"
  },
  {
    "path": "Example/CarlosWatchSample/Info.plist",
    "chars": 1095,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/CarlosWatchSample Extension/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/CarlosWatchSample Extension/Assets.xcassets/placeholder.imageset/Contents.json",
    "chars": 348,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"placeholder.jpg\",\n      \"scale\" : \"1x\"\n    },\n  "
  },
  {
    "path": "Example/CarlosWatchSample Extension/CountryRow.swift",
    "chars": 158,
    "preview": "import Foundation\nimport WatchKit\n\nclass CountryRow: NSObject {\n  @IBOutlet var countryName: WKInterfaceLabel!\n  @IBOutl"
  },
  {
    "path": "Example/CarlosWatchSample Extension/ExtensionDelegate.swift",
    "chars": 118,
    "preview": "import WatchKit\n\nclass ExtensionDelegate: NSObject, WKExtensionDelegate {\n  func applicationDidFinishLaunching() {}\n}\n"
  },
  {
    "path": "Example/CarlosWatchSample Extension/Info.plist",
    "chars": 1382,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/CarlosWatchSample Extension/InterfaceController.swift",
    "chars": 2595,
    "preview": "import Foundation\nimport WatchKit\n\nimport Carlos\nimport Combine\n\nprivate struct Country {\n  let name: String\n  let flagU"
  },
  {
    "path": "Example/Example/AppDelegate.swift",
    "chars": 481,
    "preview": "import Carlos\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n  var window: UIW"
  },
  {
    "path": "Example/Example/Base.lproj/Main.storyboard",
    "chars": 90459,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/Example/BaseCacheViewController.swift",
    "chars": 1103,
    "preview": "import Carlos\nimport Foundation\nimport UIKit\n\nclass BaseCacheViewController: UIViewController {\n  @IBOutlet var urlKeyFi"
  },
  {
    "path": "Example/Example/ComplexCacheSampleViewController.swift",
    "chars": 3048,
    "preview": "import Foundation\nimport UIKit\n\nimport Carlos\nimport Combine\n\nstruct ModelDomain {\n  let name: String\n  let identifier: "
  },
  {
    "path": "Example/Example/ConditionedCacheSampleViewController.swift",
    "chars": 1620,
    "preview": "import Foundation\nimport UIKit\n\nimport Carlos\nimport Combine\n\nenum ConditionError: Error {\n  case globalKillSwitch\n  cas"
  },
  {
    "path": "Example/Example/DataCacheSampleViewController.swift",
    "chars": 585,
    "preview": "import Carlos\nimport Combine\nimport Foundation\nimport UIKit\n\nclass DataCacheSampleViewController: BaseCacheViewControlle"
  },
  {
    "path": "Example/Example/DelayedNetworkFetcher.swift",
    "chars": 284,
    "preview": "import Foundation\n\nimport Carlos\nimport Combine\n\nfinal class DelayedNetworkFetcher: NetworkFetcher {\n  override func get"
  },
  {
    "path": "Example/Example/ExampleCell.swift",
    "chars": 254,
    "preview": "import Foundation\nimport UIKit\n\nclass ExampleCell: UITableViewCell {\n  static let Identifier = \"ExampleCell\"\n\n  func con"
  },
  {
    "path": "Example/Example/ExamplesListViewController.swift",
    "chars": 2688,
    "preview": "import Foundation\nimport UIKit\n\nstruct ExamplesListSection {\n  let name: String\n  let samples: [Example]\n}\n\nstruct Examp"
  },
  {
    "path": "Example/Example/ImageCacheSampleViewController.swift",
    "chars": 1349,
    "preview": "import Foundation\nimport UIKit\n\nimport Carlos\nimport Combine\n\nfinal class ImageCacheSampleViewController: BaseCacheViewC"
  },
  {
    "path": "Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 1590,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\""
  },
  {
    "path": "Example/Example/Info.plist",
    "chars": 1585,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Example/JSONCacheSampleViewController.swift",
    "chars": 1364,
    "preview": "import Foundation\nimport UIKit\n\nimport Carlos\nimport Combine\n\nprivate var myContext = 0\n\nfinal class JSONCacheSampleView"
  },
  {
    "path": "Example/Example/MemoryWarningSampleViewController.swift",
    "chars": 1049,
    "preview": "import Carlos\nimport Combine\nimport Foundation\nimport UIKit\n\nclass MemoryWarningSampleViewController: BaseCacheViewContr"
  },
  {
    "path": "Example/Example/PooledCacheSampleViewController.swift",
    "chars": 913,
    "preview": "import Foundation\nimport UIKit\n\nimport Carlos\nimport Combine\n\nfinal class PooledCacheSampleViewController: BaseCacheView"
  },
  {
    "path": "Example/Example/SwitchCacheSampleViewController.swift",
    "chars": 1377,
    "preview": "import Foundation\nimport UIKit\n\nimport Carlos\nimport Combine\n\nfinal class SwitchCacheSampleViewController: BaseCacheView"
  },
  {
    "path": "Example/Example/UserDefaultsCacheSampleViewController.swift",
    "chars": 1281,
    "preview": "import Foundation\nimport UIKit\n\nimport Carlos\nimport Combine\n\nfinal class UserDefaultsCacheSampleViewController: BaseCac"
  },
  {
    "path": "Example/Example.xcodeproj/project.pbxproj",
    "chars": 46057,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 52;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 195,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/ilisovyi"
  },
  {
    "path": "Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Gemfile",
    "chars": 68,
    "preview": "source 'https://rubygems.org'\n\ngem 'fastlane', '~> 2.140'\ngem 'rake'"
  },
  {
    "path": "LICENSE",
    "chars": 1101,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2020 SPRING AS Digital News Media GmbH\n\nPermission is hereby granted, free of charg"
  },
  {
    "path": "MIGRATING.md",
    "chars": 4611,
    "preview": "## Migrating from 0.8 to 0.9\n\n### Swift 3 support\n\nPlease make sure to convert all usages of `Carlos` APIs to the Swift "
  },
  {
    "path": "Package.resolved",
    "chars": 1165,
    "preview": "{\n  \"object\": {\n    \"pins\": [\n      {\n        \"package\": \"CwlCatchException\",\n        \"repositoryURL\": \"https://github.c"
  },
  {
    "path": "Package.swift",
    "chars": 722,
    "preview": "// swift-tools-version:5.2\n\nimport PackageDescription\n\nlet package = Package(\n  name: \"Carlos\",\n  platforms: [\n    .iOS("
  },
  {
    "path": "README.md",
    "chars": 34754,
    "preview": "# Carlos\r\n\r\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://git"
  },
  {
    "path": "Sources/Carlos/CacheLevels/BatchAllCache.swift",
    "chars": 1882,
    "preview": "import Combine\n\n/// A reified batchGetAll\npublic final class BatchAllCache<KeySeq: Sequence, Cache: CacheLevel>: CacheLe"
  },
  {
    "path": "Sources/Carlos/CacheLevels/Composed.swift",
    "chars": 1780,
    "preview": "import Combine\nimport Foundation\n\nextension CacheLevel {\n  /**\n   Composes two cache levels\n\n   - parameter cache: The s"
  },
  {
    "path": "Sources/Carlos/CacheLevels/Conditioned.swift",
    "chars": 3966,
    "preview": "import Combine\nimport Foundation\n\nextension CacheLevel {\n  /**\n   Wraps the CacheLevel with a boolean condition on the k"
  },
  {
    "path": "Sources/Carlos/CacheLevels/DiskCacheLevel.swift",
    "chars": 9151,
    "preview": "import Combine\nimport Foundation\n\npublic enum DiskCacheLevelError: Error {\n  case diskArchiveWriteFailed\n}\n\n/// This cla"
  },
  {
    "path": "Sources/Carlos/CacheLevels/Fetcher.swift",
    "chars": 757,
    "preview": "//\n//  Fetcher.swift\n//\n//\n//  Created by Lisovyi, Ivan on 24.10.20.\n//\n\nimport Combine\nimport Foundation\n\n/// An abstra"
  },
  {
    "path": "Sources/Carlos/CacheLevels/MemoryCacheLevel.swift",
    "chars": 2426,
    "preview": "import Combine\nimport Foundation\n\n/// This class is a memory cache level. It internally uses NSCache, and has a configur"
  },
  {
    "path": "Sources/Carlos/CacheLevels/NSUserDefaultsCacheLevel.swift",
    "chars": 5735,
    "preview": "import Combine\nimport Foundation\n\n/**\n Default name for the persistent domain used by the NSUserDefaultsCacheLevel\n\n Kee"
  },
  {
    "path": "Sources/Carlos/CacheLevels/NetworkFetcher.swift",
    "chars": 2060,
    "preview": "import Foundation\n\nimport Combine\n\npublic enum NetworkFetcherError: Error {\n  /// Used when the status code of the netwo"
  },
  {
    "path": "Sources/Carlos/CacheLevels/PoolCache.swift",
    "chars": 2934,
    "preview": "import Combine\nimport Foundation\n\nextension CacheLevel where KeyType: Hashable {\n  /// Wraps the CacheLevel with a reque"
  },
  {
    "path": "Sources/Carlos/CacheProvider.swift",
    "chars": 2151,
    "preview": "import Foundation\n\n/// A provider for the built-int caches.\npublic enum CacheProvider {\n  /// A shared data cache instan"
  },
  {
    "path": "Sources/Carlos/Carlos.swift",
    "chars": 1626,
    "preview": "import Combine\nimport Foundation\n\npublic struct CarlosGlobals {\n  public static let queueNamePrefix = \"com.carlos.\"\n  pu"
  },
  {
    "path": "Sources/Carlos/Core/BasicCache.swift",
    "chars": 2842,
    "preview": "import Combine\nimport Foundation\n\n/// A wrapper cache that explicitly takes get, set, clear and memory warning closures\n"
  },
  {
    "path": "Sources/Carlos/Core/BasicFetcher.swift",
    "chars": 924,
    "preview": "import Combine\nimport Foundation\n\n/// A wrapper fetcher that explicitly takes a get closure\npublic final class BasicFetc"
  },
  {
    "path": "Sources/Carlos/Core/Errors.swift",
    "chars": 720,
    "preview": "import Foundation\n\npublic enum FetchError: Error {\n  /// Used when a cache level doesn't have a value in the cache\n  cas"
  },
  {
    "path": "Sources/Carlos/Core/ExpensiveObject.swift",
    "chars": 1373,
    "preview": "import Foundation\n\n/// Abstracts objects that have a cost (useful for the MemoryCacheLevel)\npublic protocol ExpensiveObj"
  },
  {
    "path": "Sources/Carlos/Core/Extensions.swift",
    "chars": 530,
    "preview": "import Combine\nimport CryptoKit\nimport Foundation\n\npublic extension String {\n  func MD5String() -> String {\n    guard le"
  },
  {
    "path": "Sources/Carlos/Core/FetcherValueTransformation.swift",
    "chars": 787,
    "preview": "import Combine\nimport Foundation\n\nextension Fetcher {\n  /**\n   Applies a transformation to the fetcher\n   The transforma"
  },
  {
    "path": "Sources/Carlos/Core/FunctionComposition.swift",
    "chars": 2608,
    "preview": "import Combine\nimport Foundation\n\ninfix operator >>>: CompositionPrecedence\nprecedencegroup CompositionPrecedence {\n  as"
  },
  {
    "path": "Sources/Carlos/Core/Logger.swift",
    "chars": 989,
    "preview": "import Foundation\n\n/// A simple logger to use instead of println with configurable output closure\npublic final class Log"
  },
  {
    "path": "Sources/Carlos/Core/MemoryWarning.swift",
    "chars": 1363,
    "preview": "import Foundation\n\n#if os(iOS) || os(tvOS)\n  import UIKit\n#endif\n\n#if !os(watchOS)\n  extension CacheLevel where Self: An"
  },
  {
    "path": "Sources/Carlos/Core/StringConvertible.swift",
    "chars": 763,
    "preview": "import Foundation\n\n/// Represents a type that can be converted to a string\npublic protocol StringConvertible {\n  /**\n   "
  },
  {
    "path": "Sources/Carlos/Core/UnfairLock.swift",
    "chars": 672,
    "preview": "//\n//  UnfairLock.swift\n//\n//\n//  Created by Lisovyi, Ivan on 16.08.20.\n//\n\nimport Foundation\n\nfinal class UnfairLock {\n"
  },
  {
    "path": "Sources/Carlos/Info.plist",
    "chars": 823,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Sources/Carlos/Operations/CacheLevel+Batch.swift",
    "chars": 990,
    "preview": "import Combine\nimport Foundation\n\nextension CacheLevel {\n  /**\n   Performs a batch of get requests on this CacheLevel\n\n "
  },
  {
    "path": "Sources/Carlos/Operations/KeyTransformation.swift",
    "chars": 1196,
    "preview": "import Combine\nimport Foundation\n\nextension CacheLevel {\n  /**\n   Applies a transformation to the cache level\n   The tra"
  },
  {
    "path": "Sources/Carlos/Operations/Normalize.swift",
    "chars": 792,
    "preview": "import Foundation\n\nextension CacheLevel {\n  /**\n   Normalizes the CacheLevel into a BasicCache.\n   Use this function whe"
  },
  {
    "path": "Sources/Carlos/Operations/PostProcess.swift",
    "chars": 999,
    "preview": "import Foundation\n\nextension CacheLevel {\n  /**\n   Adds a post-processing step to the get results of this CacheLevel\n\n  "
  },
  {
    "path": "Sources/Carlos/Operations/SwitchCache.swift",
    "chars": 1975,
    "preview": "import Foundation\nimport Combine\n\n/// Convenience enumeration to specify which of two switched cache levels should be us"
  },
  {
    "path": "Sources/Carlos/Operations/ValueTransformation.swift",
    "chars": 1101,
    "preview": "import Combine\nimport Foundation\n\nextension CacheLevel {\n  /**\n   Applies a transformation to the cache level\n   The tra"
  },
  {
    "path": "Sources/Carlos/Transformers/ComposedOneWayTransformer.swift",
    "chars": 512,
    "preview": "import Foundation\n\nextension OneWayTransformer {\n  /**\n   Composes the transformer with another OneWayTransformer\n\n   - "
  },
  {
    "path": "Sources/Carlos/Transformers/ComposedTwoWayTransformer.swift",
    "chars": 614,
    "preview": "import Combine\nimport Foundation\n\nextension TwoWayTransformer {\n  /**\n   Composes the transformer with another TwoWayTra"
  },
  {
    "path": "Sources/Carlos/Transformers/ConditionedOneWayTransformer.swift",
    "chars": 2705,
    "preview": "import Combine\nimport Foundation\n\n/// Abstract an object that can conditionally transform values to another type\npublic "
  },
  {
    "path": "Sources/Carlos/Transformers/ConditionedOutputProcessing.swift",
    "chars": 1228,
    "preview": "import Combine\nimport Foundation\n\nextension CacheLevel {\n  /**\n   Adds a conditioned post-processing step to the get res"
  },
  {
    "path": "Sources/Carlos/Transformers/ConditionedTwoWayTransformer.swift",
    "chars": 4141,
    "preview": "import Combine\nimport Foundation\n\n/// Abstract an object that can conditionally transform values to another type and bac"
  },
  {
    "path": "Sources/Carlos/Transformers/ConditionedValueTransformation.swift",
    "chars": 1532,
    "preview": "import Combine\nimport Foundation\n\nextension CacheLevel {\n  /**\n   Applies a conditional transformation to the cache leve"
  },
  {
    "path": "Sources/Carlos/Transformers/ImageTransformer.swift",
    "chars": 2277,
    "preview": "import Foundation\n\nimport Combine\n\n#if os(macOS)\n  import Cocoa\n  public typealias CarlosImage = NSImage\n#else\n  import "
  },
  {
    "path": "Sources/Carlos/Transformers/JSONTransformer.swift",
    "chars": 1628,
    "preview": "import Combine\nimport Foundation\n\n/**\n This class takes care of transforming NSData instances into JSON objects in the f"
  },
  {
    "path": "Sources/Carlos/Transformers/OneWayTransformer.swift",
    "chars": 1508,
    "preview": "import Combine\nimport Foundation\n\n/// Abstract an object that can transform values to another type\npublic protocol OneWa"
  },
  {
    "path": "Sources/Carlos/Transformers/StringTransformer.swift",
    "chars": 1906,
    "preview": "import Combine\nimport Foundation\n\n/**\n This class takes care of transforming NSData instances into String values.\n */\npu"
  },
  {
    "path": "Sources/Carlos/Transformers/Transformers.swift",
    "chars": 2670,
    "preview": "import Combine\nimport Foundation\nimport MapKit\n\npublic enum NSDateFormatterError: Error {\n  case invalidInputString\n}\n\n/"
  },
  {
    "path": "Sources/Carlos/Transformers/TwoWayTransformer.swift",
    "chars": 2455,
    "preview": "import Combine\nimport Foundation\n\n/// Abstract an object that can transform values to another type and back to the origi"
  },
  {
    "path": "Tests/CarlosTests/BasicCacheTests.swift",
    "chars": 5665,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nenum TestError: Error {\n  case anotherError"
  },
  {
    "path": "Tests/CarlosTests/BasicFetcherTests.swift",
    "chars": 2732,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class BasicFetcherTests: QuickSpec {\n"
  },
  {
    "path": "Tests/CarlosTests/BatchTests.swift",
    "chars": 9356,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class BatchAllCacheTests: QuickSpec {"
  },
  {
    "path": "Tests/CarlosTests/CacheProviderTests.swift",
    "chars": 2027,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\n\nfinal class CacheProviderTests: QuickSpec {\n  override fun"
  },
  {
    "path": "Tests/CarlosTests/CompositionTests.swift",
    "chars": 27420,
    "preview": "import Foundation\nimport XCTest\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct ComposedCacheSharedExa"
  },
  {
    "path": "Tests/CarlosTests/ConditionedCacheTests.swift",
    "chars": 8419,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct ConditionedCacheSharedExamplesContex"
  },
  {
    "path": "Tests/CarlosTests/ConditionedOneWayTransformationBoxTests.swift",
    "chars": 6122,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class ConditionedOneWayTransformation"
  },
  {
    "path": "Tests/CarlosTests/ConditionedOutputProcessingTests.swift",
    "chars": 11114,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct ConditionedPostProcessSharedExamples"
  },
  {
    "path": "Tests/CarlosTests/ConditionedTransformersTests.swift",
    "chars": 10242,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct ConditionedTransformerSharedExamples"
  },
  {
    "path": "Tests/CarlosTests/ConditionedTwoWayTransformationBoxTests.swift",
    "chars": 21586,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class ConditionedTwoWayTransformation"
  },
  {
    "path": "Tests/CarlosTests/ConditionedValueTransformationTests.swift",
    "chars": 12899,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct ConditionedValueTransformationShared"
  },
  {
    "path": "Tests/CarlosTests/DiskCacheTests.swift",
    "chars": 9584,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nprivate func filesInDirectory(directory: St"
  },
  {
    "path": "Tests/CarlosTests/Fakes/Base64EncodedImage.swift",
    "chars": 78307,
    "preview": "//\n//  Base64EncodedImage.swift\n//\n//\n//  Created by Lisovyi, Ivan on 01.07.20.\n//\n\nimport Foundation\n\nlet base64Encoded"
  },
  {
    "path": "Tests/CarlosTests/Fakes/CacheLevelFake.swift",
    "chars": 2096,
    "preview": "import Foundation\n\nimport Carlos\nimport Combine\n\nclass CacheLevelFake<A: Hashable, B>: CacheLevel {\n  typealias KeyType "
  },
  {
    "path": "Tests/CarlosTests/Fakes/FetcherFake.swift",
    "chars": 567,
    "preview": "//\n//  FetcherFake.swift\n//\n//\n//  Created by Lisovyi, Ivan on 17.08.20.\n//\n\nimport Foundation\n\nimport Carlos\nimport Com"
  },
  {
    "path": "Tests/CarlosTests/FetcherValueTransformationTests.swift",
    "chars": 5171,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct FetcherValueTransformationsSharedExa"
  },
  {
    "path": "Tests/CarlosTests/ImageTransformerTests.swift",
    "chars": 3245,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\n#if !os(macOS)\n  import UIKit\n\n  final clas"
  },
  {
    "path": "Tests/CarlosTests/Info.plist",
    "chars": 733,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Tests/CarlosTests/JSONTransformerTests.swift",
    "chars": 6125,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class JSONTransformerTests: QuickSpec"
  },
  {
    "path": "Tests/CarlosTests/KeyTransformationTests.swift",
    "chars": 11142,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct KeyTransformationsSharedExamplesCont"
  },
  {
    "path": "Tests/CarlosTests/MKDistanceFormatterTransformerTests.swift",
    "chars": 1471,
    "preview": "import Foundation\nimport MapKit\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class MKDistanceFormatt"
  },
  {
    "path": "Tests/CarlosTests/MemoryCacheLevelTests.swift",
    "chars": 6947,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class MemoryCacheLevelTests: QuickSpe"
  },
  {
    "path": "Tests/CarlosTests/MemoryWarningNotificationTests.swift",
    "chars": 2168,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\n\n#if !os(macOS)\n  import UIKit\n\n  class MemoryWarningNotifi"
  },
  {
    "path": "Tests/CarlosTests/NSDateFormatterTransformerTests.swift",
    "chars": 3231,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class NSDateFormatterTransformerTests"
  },
  {
    "path": "Tests/CarlosTests/NSNumberFormatterTransformerTests.swift",
    "chars": 5135,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class NSNumberFormatterTransformerTes"
  },
  {
    "path": "Tests/CarlosTests/NSUserDefaultsCacheLevelTests.swift",
    "chars": 9465,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class NSUserDefaultsCacheLevelTests: "
  },
  {
    "path": "Tests/CarlosTests/NetworkFetcherTests.swift",
    "chars": 1278,
    "preview": "//\n//  NetworkFetcherTests.swift\n//  Carlos\n//\n//  Created by Esad Hajdarevic on 30/07/15.\n//  Copyright (c) 2015 WeltN2"
  },
  {
    "path": "Tests/CarlosTests/NormalizationTests.swift",
    "chars": 4737,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct NormalizedCacheSharedExamplesContext"
  },
  {
    "path": "Tests/CarlosTests/OneWayTransformationBoxTests.swift",
    "chars": 2347,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class OneWayTransformationBoxTests: Q"
  },
  {
    "path": "Tests/CarlosTests/OneWayTransformerCompositionTests.swift",
    "chars": 3389,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct ComposedOneWayTransformerSharedExamp"
  },
  {
    "path": "Tests/CarlosTests/PoolCacheTests.swift",
    "chars": 10939,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct PoolCacheSharedExamplesContext {\n  s"
  },
  {
    "path": "Tests/CarlosTests/PostProcessTests.swift",
    "chars": 7107,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct PostProcessSharedExamplesContext {\n "
  },
  {
    "path": "Tests/CarlosTests/StringConvertibleTests.swift",
    "chars": 464,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\n\nfinal class StringConvertibleTests: QuickSpec {\n  override"
  },
  {
    "path": "Tests/CarlosTests/StringTransformerTests.swift",
    "chars": 2076,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nfinal class StringTransformerTests: QuickSp"
  },
  {
    "path": "Tests/CarlosTests/SwitchCacheTests.swift",
    "chars": 21110,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nlet switchClosure: (String) -> CacheLevelSw"
  },
  {
    "path": "Tests/CarlosTests/TwoWayTransformationBoxTests.swift",
    "chars": 8873,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct TwoWayTransformationBoxSharedExample"
  },
  {
    "path": "Tests/CarlosTests/TwoWayTransformerCompositionTests.swift",
    "chars": 5177,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct ComposedTwoWayTransformerSharedExamp"
  },
  {
    "path": "Tests/CarlosTests/ValueTransformationTests.swift",
    "chars": 10188,
    "preview": "import Foundation\n\nimport Nimble\nimport Quick\n\nimport Carlos\nimport Combine\n\nstruct ValueTransformationsSharedExamplesCo"
  },
  {
    "path": "fastlane/Fastfile",
    "chars": 331,
    "preview": "# https://github.com/KrauseFx/fastlane/tree/master/docs\n# All available actions: https://github.com/KrauseFx/fastlane/bl"
  },
  {
    "path": "fastlane/README.md",
    "chars": 662,
    "preview": "fastlane documentation\n================\n# Installation\n\nMake sure you have the latest version of the Xcode command line "
  },
  {
    "path": "fastlane/Scanfile",
    "chars": 56,
    "preview": "# https://github.com/fastlane/scan#scanfile\n\nclean true\n"
  }
]

About this extraction

This page contains the full source code of the spring-media/Carlos GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 164 files (784.3 KB), approximately 238.2k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!