[
  {
    "path": ".gitignore",
    "content": "build/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\n\nPods/\n.DS_Store"
  },
  {
    "path": ".travis.yml",
    "content": "language: objective-c\nosx_image: xcode10.2\ninstall:\n- gem install xcpretty\n- gem install cocoapods --pre\nscript:\n- pod update\n- set -o pipefail && xcodebuild -workspace Cartography.xcworkspace -scheme 'Cartography-Mac' test | xcpretty -c\n- set -o pipefail && env NSUnbufferedIO=YES xcodebuild -workspace ./Cartography.xcworkspace -scheme Cartography-iOS -destination 'platform=iOS Simulator,name=iPhone 6s Plus'  build test | xcpretty \n\nenv:\n  global:\n    secure: odPR+Uvp5Enxc8qlFxuUo+aYVf1zS9xF7t2at4IXAJtP0wegwmG8dYOZ5IiMZP/gbBtAWWYc2en4NVnqS9K9wPFIrKdShMwBGnRcsYPj3b6kH/vQM/OLwzYFit2oSqhR3n4RP5UM+lc4jJnfqrK7StMY6ZxCkvLdZkMbFGqVJ20=\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Code of Conduct\n\nAs contributors and maintainers of this project, we pledge to respect all people\nwho contribute through reporting issues, posting feature requests, updating\ndocumentation, submitting pull requests or patches, and other activities.\n\nWe are committed to making participation in this project a harassment-free\nexperience for everyone, regardless of level of experience, gender, gender\nidentity and expression, sexual orientation, disability, personal appearance,\nbody size, race, ethnicity, age, or religion.\n\nExamples of unacceptable behavior by participants include the use of sexual\nlanguage or imagery, derogatory comments or personal attacks, trolling, public\nor private harassment, insults, or other unprofessional conduct.\n\nProject maintainers have the right and responsibility to remove, edit, or reject\ncomments, commits, code, wiki edits, issues, and other contributions that are\nnot aligned to this Code of Conduct. Project maintainers who do not follow the\nCode of Conduct may be removed from the project team.\n\nThis code of conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community.\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by opening an issue or contacting one or more of the project\nmaintainers.\n\nThis Code of Conduct is adapted from the [Contributor Covenant, version\n1.1.0](http://contributor- covenant.org/version/1/1/0/)\n"
  },
  {
    "path": "Cartography/Align.swift",
    "content": "//\n//  Align.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/02/15.\n//  Copyright (c) 2015 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\nprivate func makeEqual<P: RelativeEquality, T: LayoutProxy>(by attribute: (T) -> P, items: [T]) -> [NSLayoutConstraint] {\n    if let first = items.first {\n        if let first = first as? AutoresizingMaskLayoutProxy {\n            first.translatesAutoresizingMaskIntoConstraints = false\n        }\n\n        let rest = items.dropFirst()\n        \n        return rest.reduce([]) { acc, current in\n            if let current = current as? AutoresizingMaskLayoutProxy {\n                current.translatesAutoresizingMaskIntoConstraints = false\n            }\n\n            return acc + [ attribute(first) == attribute(current) ]\n        }\n    } else {\n        return []\n    }\n}\n\n/// Aligns multiple items by their top edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(top items: [SupportsTopLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.top }, items: items.map(AnyTopLayoutProxy.init))\n}\n\n/// Aligns multiple items by their top edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(top first: SupportsTopLayoutProxy, _ rest: SupportsTopLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(top: [first] + rest)\n}\n\n/// Aligns multiple items by their right edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(right items: [SupportsRightLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.right }, items: items.map(AnyRightLayoutProxy.init))\n}\n\n/// Aligns multiple items by their right edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(right first: SupportsRightLayoutProxy, _ rest: SupportsRightLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(right: [first] + rest)\n}\n\n/// Aligns multiple items by their bottom edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(bottom items: [SupportsBottomLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.bottom }, items: items.map(AnyBottomLayoutProxy.init))\n}\n\n/// Aligns multiple items by their bottom edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(bottom first: SupportsBottomLayoutProxy, _ rest: SupportsBottomLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(bottom: [first] + rest)\n}\n\n/// Aligns multiple items by their left edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(left items: [SupportsLeftLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.left }, items: items.map(AnyLeftLayoutProxy.init))\n}\n\n/// Aligns multiple items by their left edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(left first: SupportsLeftLayoutProxy, _ rest: SupportsLeftLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(left: [first] + rest)\n}\n\n/// Aligns multiple items by their leading edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(leading items: [SupportsLeadingLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.leading }, items: items.map(AnyLeadingLayoutProxy.init))\n}\n\n/// Aligns multiple items by their leading edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(leading first: SupportsLeadingLayoutProxy, _ rest: SupportsLeadingLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(leading: [first] + rest)\n}\n\n/// Aligns multiple items by their trailing edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(trailing items: [SupportsTrailingLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.trailing }, items: items.map(AnyTrailingLayoutProxy.init))\n}\n\n/// Aligns multiple vies by their trailing edge.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(trailing first: SupportsTrailingLayoutProxy, _ rest: SupportsTrailingLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(trailing: [first] + rest)\n}\n\n/// Aligns multiple items by their horizontal center.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(centerX items: [SupportsCenterXLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.centerX }, items: items.map(AnyCenterXLayoutProxy.init))\n}\n\n/// Aligns multiple items by their horizontal center.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(centerX first: SupportsCenterXLayoutProxy, _ rest: SupportsCenterXLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(centerX: [first] + rest)\n}\n\n/// Aligns multiple items by their vertical center.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(centerY items: [SupportsCenterYLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.centerY }, items: items.map(AnyCenterYLayoutProxy.init))\n}\n\n/// Aligns multiple items by their vertical center.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(centerY first: SupportsCenterYLayoutProxy, _ rest: SupportsCenterYLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(centerY: [first] + rest)\n}\n\n/// Aligns multiple items by their baseline.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter items: an array of items to align\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(baseline items: [SupportsBaselineLayoutProxy]) -> [NSLayoutConstraint] {\n    return makeEqual(by: { $0.baseline }, items: items.map(AnyBaselineLayoutProxy.init))\n}\n\n/// Aligns multiple items by their baseline.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func align(baseline first: SupportsBaselineLayoutProxy, _ rest: SupportsBaselineLayoutProxy...) -> [NSLayoutConstraint] {\n    return align(baseline: [first] + rest)\n}\n"
  },
  {
    "path": "Cartography/AutoresizingMaskLayoutProxy.swift",
    "content": "//\n//  AutoresizingMaskLayoutProxy.swift\n//  Cartography-iOS\n//\n//  Created by Vitor Travain on 24/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n\npublic protocol AutoresizingMaskLayoutProxy: LayoutProxy {\n    var translatesAutoresizingMaskIntoConstraints: Bool { get set }\n}\n"
  },
  {
    "path": "Cartography/Cartography.h",
    "content": "//\n//  Cartography.h\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#import <TargetConditionals.h>\n\n#if TARGET_OS_IPHONE || TARGET_OS_TV\n    #import <UIKit/UIKit.h>\n#else\n    #import <AppKit/AppKit.h>\n#endif\n\n//! Project version number for Cartography.\nFOUNDATION_EXPORT double CartographyVersionNumber;\n\n//! Project version string for Cartography.\nFOUNDATION_EXPORT const unsigned char CartographyVersionString[];\n"
  },
  {
    "path": "Cartography/Coefficients.swift",
    "content": "//\n//  Coefficients.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n#if os(iOS) || os(tvOS)\n    import UIKit\n#endif\n\npublic struct Coefficients {\n    var multiplier: CGFloat = 1\n    var constant: CGFloat = 0\n\n    init() { }\n\n    init(_ multiplier: CGFloat, _ constant: CGFloat) {\n        self.constant = constant\n        self.multiplier = multiplier\n    }\n}\n\n// MARK: Addition\n\npublic func + (c: CGFloat, rhs: Coefficients) -> Coefficients {\n    return Coefficients(rhs.multiplier, rhs.constant + c)\n}\n\npublic func + (lhs: Coefficients, rhs: CGFloat) -> Coefficients {\n    return rhs + lhs\n}\n\n// MARK: Subtraction\n\npublic func - (c: CGFloat, rhs: Coefficients) -> Coefficients {\n    return Coefficients(rhs.multiplier, rhs.constant - c)\n}\n\npublic func - (lhs: Coefficients, rhs: CGFloat) -> Coefficients {\n    return rhs - lhs\n}\n\n// MARK: Multiplication\n\npublic func * (m: CGFloat, rhs: Coefficients) -> Coefficients {\n    return Coefficients(rhs.multiplier * m, rhs.constant * m)\n}\n\npublic func * (lhs: Coefficients, rhs: CGFloat) -> Coefficients {\n    return rhs * lhs\n}\n\n// MARK: Division\n\npublic func / (m: CGFloat, rhs: Coefficients) -> Coefficients {\n    return Coefficients(rhs.multiplier / m, rhs.constant / m)\n}\n\npublic func / (lhs: Coefficients, rhs: CGFloat) -> Coefficients {\n    return rhs / lhs\n}\n"
  },
  {
    "path": "Cartography/Compound.swift",
    "content": "//\n//  Compound.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 18/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\npublic protocol Compound {\n    var context: Context { get }\n    var properties: [Property] { get }\n}\n\n/// Compound properties conforming to this protocol can use the `==` operator\n/// with other compound properties of the same type.\npublic protocol RelativeCompoundEquality : Compound { }\n\n/// Declares a property equal to a the result of an expression.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The expression.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func == <P: RelativeCompoundEquality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {\n    return lhs.context.addConstraint(lhs, coefficients: rhs.coefficients, to: rhs.value)\n}\n\n/// Declares a property equal to another compound property.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n@discardableResult public func == <P: RelativeCompoundEquality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {\n    return lhs.context.addConstraint(lhs, to: rhs)\n}\n\n/// Compound properties conforming to this protocol can use the `<=` and `>=`\n/// operators with other compound properties of the same type.\npublic protocol RelativeCompoundInequality : Compound { }\n\n/// Declares a property less than or equal to another compound property.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func <= <P: RelativeCompoundInequality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {\n    return lhs.context.addConstraint(lhs, to: rhs, relation: .lessThanOrEqual)\n}\n\n/// Declares a property greater than or equal to another compound property.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {\n    return lhs.context.addConstraint(lhs, to: rhs, relation: .greaterThanOrEqual)\n}\n\n/// Declares a property less than or equal to the result of an expression.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func <= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {\n    return lhs.context.addConstraint(lhs, coefficients: rhs.coefficients, to: rhs.value, relation: .lessThanOrEqual)\n}\n\n/// Declares a property greater than or equal to the result of an expression.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {\n    return lhs.context.addConstraint(lhs, coefficients: rhs.coefficients, to: rhs.value, relation: .greaterThanOrEqual)\n}\n"
  },
  {
    "path": "Cartography/Constrain.swift",
    "content": "//\n//  Constrain.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 30/09/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n\n/// Removes all constraints for a group.\n///\n/// - parameter clear: The `ConstraintGroup` whose constraints should be removed.\n///\npublic func constrain(clear group: ConstraintGroup) {\n    group.replaceConstraints([])\n}\n\n/// Updates the constraints of a single layout item.\n///\n/// - parameter item:       The item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem>(_ item: A, replace group: ConstraintGroup = .init(), block: (A.ProxyType) -> Void) -> ConstraintGroup {\n    let proxy = item.asProxy()\n\n    block(proxy)\n\n    group.replaceConstraints(proxy.context.constraints)\n\n    return group\n}\n\n/// Updates the constraints of two layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem>(_ item1: A, _ item2: B, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n\n    block(proxy1, proxy2)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of three layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter item3:      An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem, C: LayoutItem>(_ item1: A, _ item2: B, _ item3: C, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType, C.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n    let proxy3 = item3.asProxy(context: ctx)\n\n    block(proxy1, proxy2, proxy3)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of four layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter item3:      An item to layout.\n/// - parameter item4:      An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem, C: LayoutItem, D: LayoutItem>(_ item1: A, _ item2: B, _ item3: C, _ item4: D, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType, C.ProxyType, D.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n    let proxy3 = item3.asProxy(context: ctx)\n    let proxy4 = item4.asProxy(context: ctx)\n\n    block(proxy1, proxy2, proxy3, proxy4)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of five layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter item3:      An item to layout.\n/// - parameter item4:      An item to layout.\n/// - parameter item5:      An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem, C: LayoutItem, D: LayoutItem, E: LayoutItem>(_ item1: A, _ item2: B, _ item3: C, _ item4: D, _ item5: E, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType, C.ProxyType, D.ProxyType, E.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n    let proxy3 = item3.asProxy(context: ctx)\n    let proxy4 = item4.asProxy(context: ctx)\n    let proxy5 = item5.asProxy(context: ctx)\n\n    block(proxy1, proxy2, proxy3, proxy4, proxy5)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of six layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter item3:      An item to layout.\n/// - parameter item4:      An item to layout.\n/// - parameter item5:      An item to layout.\n/// - parameter item6:      An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem, C: LayoutItem, D: LayoutItem, E: LayoutItem, F: LayoutItem>(_ item1: A, _ item2: B, _ item3: C, _ item4: D, _ item5: E, _ item6: F, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType, C.ProxyType, D.ProxyType, E.ProxyType, F.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n    let proxy3 = item3.asProxy(context: ctx)\n    let proxy4 = item4.asProxy(context: ctx)\n    let proxy5 = item5.asProxy(context: ctx)\n    let proxy6 = item6.asProxy(context: ctx)\n\n    block(proxy1, proxy2, proxy3, proxy4, proxy5, proxy6)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of seven layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter item3:      An item to layout.\n/// - parameter item4:      An item to layout.\n/// - parameter item5:      An item to layout.\n/// - parameter item6:      An item to layout.\n/// - parameter item7:      An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem, C: LayoutItem, D: LayoutItem, E: LayoutItem, F: LayoutItem, G: LayoutItem>(_ item1: A, _ item2: B, _ item3: C, _ item4: D, _ item5: E, _ item6: F, _ item7: G, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType, C.ProxyType, D.ProxyType, E.ProxyType, F.ProxyType, G.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n    let proxy3 = item3.asProxy(context: ctx)\n    let proxy4 = item4.asProxy(context: ctx)\n    let proxy5 = item5.asProxy(context: ctx)\n    let proxy6 = item6.asProxy(context: ctx)\n    let proxy7 = item7.asProxy(context: ctx)\n\n    block(proxy1, proxy2, proxy3, proxy4, proxy5, proxy6, proxy7)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of eight layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter item3:      An item to layout.\n/// - parameter item4:      An item to layout.\n/// - parameter item5:      An item to layout.\n/// - parameter item6:      An item to layout.\n/// - parameter item7:      An item to layout.\n/// - parameter item8:      An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem, C: LayoutItem, D: LayoutItem, E: LayoutItem, F: LayoutItem, G: LayoutItem, H: LayoutItem>(_ item1: A, _ item2: B, _ item3: C, _ item4: D, _ item5: E, _ item6: F, _ item7: G, _ item8: H, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType, C.ProxyType, D.ProxyType, E.ProxyType, F.ProxyType, G.ProxyType, H.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n    let proxy3 = item3.asProxy(context: ctx)\n    let proxy4 = item4.asProxy(context: ctx)\n    let proxy5 = item5.asProxy(context: ctx)\n    let proxy6 = item6.asProxy(context: ctx)\n    let proxy7 = item7.asProxy(context: ctx)\n    let proxy8 = item8.asProxy(context: ctx)\n\n    block(proxy1, proxy2, proxy3, proxy4, proxy5, proxy6, proxy7, proxy8)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of nine layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter item3:      An item to layout.\n/// - parameter item4:      An item to layout.\n/// - parameter item5:      An item to layout.\n/// - parameter item6:      An item to layout.\n/// - parameter item7:      An item to layout.\n/// - parameter item8:      An item to layout.\n/// - parameter item9:      An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem, C: LayoutItem, D: LayoutItem, E: LayoutItem, F: LayoutItem, G: LayoutItem, H: LayoutItem, I: LayoutItem>(_ item1: A, _ item2: B, _ item3: C, _ item4: D, _ item5: E, _ item6: F, _ item7: G, _ item8: H, _ item9: I, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType, C.ProxyType, D.ProxyType, E.ProxyType, F.ProxyType, G.ProxyType, H.ProxyType, I.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n    let proxy3 = item3.asProxy(context: ctx)\n    let proxy4 = item4.asProxy(context: ctx)\n    let proxy5 = item5.asProxy(context: ctx)\n    let proxy6 = item6.asProxy(context: ctx)\n    let proxy7 = item7.asProxy(context: ctx)\n    let proxy8 = item8.asProxy(context: ctx)\n    let proxy9 = item9.asProxy(context: ctx)\n\n    block(proxy1, proxy2, proxy3, proxy4, proxy5, proxy6, proxy7, proxy8, proxy9)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of ten layout items.\n///\n/// - parameter item1:      An item to layout.\n/// - parameter item2:      An item to layout.\n/// - parameter item3:      An item to layout.\n/// - parameter item4:      An item to layout.\n/// - parameter item5:      An item to layout.\n/// - parameter item6:      An item to layout.\n/// - parameter item7:      An item to layout.\n/// - parameter item8:      An item to layout.\n/// - parameter item9:      An item to layout.\n/// - parameter item10:     An item to layout.\n/// - parameter replace:    The `ConstraintGroup` whose constraints should be\n///                         replaced.\n/// - parameter block:      A block that declares the layout for `item`.\n///\n@discardableResult public func constrain<A: LayoutItem, B: LayoutItem, C: LayoutItem, D: LayoutItem, E: LayoutItem, F: LayoutItem, G: LayoutItem, H: LayoutItem, I: LayoutItem, J: LayoutItem>(_ item1: A, _ item2: B, _ item3: C, _ item4: D, _ item5: E, _ item6: F, _ item7: G, _ item8: H, _ item9: I, _ item10: J, replace group: ConstraintGroup = .init(), block: (A.ProxyType, B.ProxyType, C.ProxyType, D.ProxyType, E.ProxyType, F.ProxyType, G.ProxyType, H.ProxyType, I.ProxyType, J.ProxyType) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy1 = item1.asProxy(context: ctx)\n    let proxy2 = item2.asProxy(context: ctx)\n    let proxy3 = item3.asProxy(context: ctx)\n    let proxy4 = item4.asProxy(context: ctx)\n    let proxy5 = item5.asProxy(context: ctx)\n    let proxy6 = item6.asProxy(context: ctx)\n    let proxy7 = item7.asProxy(context: ctx)\n    let proxy8 = item8.asProxy(context: ctx)\n    let proxy9 = item9.asProxy(context: ctx)\n    let proxy10 = item10.asProxy(context: ctx)\n\n    block(proxy1, proxy2, proxy3, proxy4, proxy5, proxy6, proxy7, proxy8, proxy9, proxy10)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of an array of layout items.\n///\n/// - parameter items:   The items to layout.\n/// - parameter replace: The `ConstraintGroup` whose constraints should be\n///                      replaced.\n/// - parameter block:   A block that declares the layout for `items`.\n///\n@discardableResult public func constrain<T: LayoutItem>(_ items: [T], replace group: ConstraintGroup = .init(), block: ([T.ProxyType]) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy = items.map { $0.asProxy(context: ctx) }\n    block(proxy)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n\n/// Updates the constraints of a dictionary of layout items.\n///\n/// - parameter items:   The items to layout.\n/// - parameter replace: The `ConstraintGroup` whose constraints should be\n///                      replaced.\n/// - parameter block:   A block that declares the layout for `items`.\n///\n@discardableResult public func constrain<T, U: LayoutItem>(_ items: [T: U], replace group: ConstraintGroup = .init(), block: ([T: U.ProxyType]) -> Void) -> ConstraintGroup {\n    let ctx = Context()\n\n    let proxy: [T: U.ProxyType] = items.mapValues { $0.asProxy(context: ctx) }\n    block(proxy)\n\n    group.replaceConstraints(ctx.constraints)\n\n    return group\n}\n"
  },
  {
    "path": "Cartography/Constraint.swift",
    "content": "//\n//  Constraint.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 06/10/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\ninternal class Constraint {\n    let layoutConstraint: NSLayoutConstraint\n\n    func install() {\n        layoutConstraint.isActive = true\n    }\n\n    func uninstall() {\n        layoutConstraint.isActive = false\n    }\n\n    init(_ layoutConstraint: NSLayoutConstraint) {\n        self.layoutConstraint = layoutConstraint\n    }\n}\n"
  },
  {
    "path": "Cartography/ConstraintGroup.swift",
    "content": "//\n//  ConstraintGroup.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 22/01/15.\n//  Copyright (c) 2015 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n\npublic class ConstraintGroup {\n    private var constraints: [Constraint] = []\n\n    @available(OSX, introduced: 10.10)\n    @available(iOS, introduced: 8.0)\n    public var active: Bool {\n        get {\n            return constraints\n                .map { $0.layoutConstraint.isActive }\n                .reduce(true) { $0 && $1 }\n        }\n        set {\n            for constraint in constraints {\n                constraint.layoutConstraint.isActive = newValue\n            }\n        }\n    }\n\n    public init() {\n\n    }\n\n    internal func replaceConstraints(_ constraints: [Constraint]) {\n        for constraint in self.constraints {\n            constraint.uninstall()\n        }\n\n        self.constraints = constraints\n\n        for constraint in self.constraints {\n            constraint.install()\n        }\n    }\n}\n"
  },
  {
    "path": "Cartography/Context.swift",
    "content": "//\n//  Context.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 06/10/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n\npublic typealias LayoutRelation = NSLayoutConstraint.Relation\n#else\nimport AppKit\n\npublic typealias LayoutRelation = NSLayoutConstraint.Relation\n#endif\n\npublic class Context {\n    internal var constraints: [Constraint] = []\n    \n    internal func addConstraint(_ from: Property, to: Property? = nil, coefficients: Coefficients = Coefficients(), relation: LayoutRelation = .equal) -> NSLayoutConstraint {\n        if let fromItem = from.item as? View {\n            fromItem.translatesAutoresizingMaskIntoConstraints = false\n        }\n\n        let layoutConstraint = NSLayoutConstraint(item: from.item,\n                                                  attribute: from.attribute,\n                                                  relatedBy: relation,\n                                                  toItem: to?.item,\n                                                  attribute: to?.attribute ?? .notAnAttribute,\n                                                  multiplier: CGFloat(coefficients.multiplier),\n                                                  constant: CGFloat(coefficients.constant))\n\n        constraints.append(Constraint(layoutConstraint))\n\n        return layoutConstraint\n    }\n\n    internal func addConstraint(_ from: Compound, coefficients: [Coefficients]? = nil, to: Compound? = nil, relation: LayoutRelation = .equal) -> [NSLayoutConstraint] {\n        var results: [NSLayoutConstraint] = []\n\n        for i in 0..<from.properties.count {\n            let n: Coefficients = coefficients?[i] ?? Coefficients()\n\n            results.append(addConstraint(from.properties[i], to: to?.properties[i], coefficients: n, relation: relation))\n        }\n\n        return results\n    }\n}\n"
  },
  {
    "path": "Cartography/Dimension.swift",
    "content": "//\n//  Dimension.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\npublic struct Dimension : Property, NumericalEquality, RelativeEquality, NumericalInequality, RelativeInequality, Addition, Multiplication {\n    public let attribute: LayoutAttribute\n    public let context: Context\n    public let item: AnyObject\n\n    internal init(_ context: Context, _ item: AnyObject, _ attribute: LayoutAttribute) {\n        self.attribute = attribute\n        self.context = context\n        self.item = item\n    }\n}\n"
  },
  {
    "path": "Cartography/Distribute.swift",
    "content": "//\n//  Distribute.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/02/15.\n//  Copyright (c) 2015 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n    import UIKit\n    #else\n    import AppKit\n#endif\n\n@discardableResult private func reduce<T: LayoutProxy>(_ items: [T], combine: (T, T) -> NSLayoutConstraint) -> [NSLayoutConstraint] {\n    if let last = items.last as? AutoresizingMaskLayoutProxy {\n        last.translatesAutoresizingMaskIntoConstraints = false\n    }\n\n    if let first = items.first {\n        let rest = items.dropFirst()\n        \n        return rest.reduce(([], first)) { (acc, current) -> ([NSLayoutConstraint], T) in\n            let (constraints, previous) = acc\n            \n            return (constraints + [ combine(previous, current) ], current)\n        }.0\n    } else {\n        return []\n    }\n}\n\n/// Distributes multiple items horizontally.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter amount: The distance between the items.\n/// - parameter items:  An array of items to distribute.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n\n@discardableResult public func distribute(by amount: CGFloat = 0.0, horizontally items: [SupportsLeadingLayoutProxy & SupportsTrailingLayoutProxy]) -> [NSLayoutConstraint] {\n    return reduce(items.map(AnyHorizontalDistributionLayoutProxy.init)) {\n        return $0.trailing == $1.leading - amount\n    }\n}\n\n/// Distributes multiple items horizontally.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter amount: The distance between the items.\n/// - parameter items:  The items to distribute.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func distribute(by amount: CGFloat = 0.0, horizontally first: SupportsLeadingLayoutProxy & SupportsTrailingLayoutProxy, _ rest: (SupportsLeadingLayoutProxy & SupportsTrailingLayoutProxy)...) -> [NSLayoutConstraint] {\n    return distribute(by: amount, horizontally: [first] + rest)\n}\n\n/// Distributes multiple items horizontally from left to right.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter amount: The distance between the items.\n/// - parameter items:  An array of items to distribute.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func distribute(by amount: CGFloat = 0.0, leftToRight items: [SupportsLeftLayoutProxy & SupportsRightLayoutProxy]) -> [NSLayoutConstraint] {\n    return reduce(items.map(AnyLeftToRightDistributionLayoutProxy.init)) {\n        return $0.right == $1.left - amount\n    }\n}\n\n/// Distributes multiple items horizontally from left to right.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter amount: The distance between the items.\n/// - parameter items:  The items to distribute.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func distribute(by amount: CGFloat = 0.0, leftToRight first: SupportsLeftLayoutProxy & SupportsRightLayoutProxy, _ rest: (SupportsLeftLayoutProxy & SupportsRightLayoutProxy)...) -> [NSLayoutConstraint] {\n    return distribute(by: amount, leftToRight: [first] + rest)\n}\n\n/// Distributes multiple items vertically.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter amount: The distance between the items.\n/// - parameter items:  An array of items to distribute.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func distribute(by amount: CGFloat = 0.0, vertically items: [SupportsTopLayoutProxy & SupportsBottomLayoutProxy]) -> [NSLayoutConstraint] {\n    return reduce(items.map(AnyVerticalDistributionLayoutProxy.init)) {\n        return $0.bottom == $1.top - amount\n    }\n}\n\n/// Distributes multiple items vertically.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - parameter amount: The distance between the items.\n/// - parameter items:  The items to distribute.\n///\n/// - returns: An array of `NSLayoutConstraint` instances.\n///\n@discardableResult public func distribute(by amount: CGFloat = 0.0, vertically first: SupportsTopLayoutProxy & SupportsBottomLayoutProxy, _ rest: (SupportsTopLayoutProxy & SupportsBottomLayoutProxy)...) -> [NSLayoutConstraint] {\n    return distribute(by: amount, vertically: [first] + rest)\n}\n\n/// Distributes width for all the items.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - Parameter items: The items to distribute\n///\n/// - Returns: An array of `NSLayoutConstraint` instances\n///\n@discardableResult public func distribute(equalWidth items: [SupportsWidthLayoutProxy]) -> [NSLayoutConstraint] {\n    return reduce(items.map(AnyWidthLayoutProxy.init)) { $0.width == $1.width }\n}\n\n/// Distributes width for all the items.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - Parameter items: The items to distribute\n///\n/// - Returns: An array of `NSLayoutConstraint` instances\n///\n@discardableResult public func distribute(equalWidth first: SupportsWidthLayoutProxy, _ rest: (SupportsWidthLayoutProxy)...) -> [NSLayoutConstraint] {\n    return distribute(equalWidth: [first] + rest)\n}\n\n/// Distributes height for all the items.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - Parameter items: The items to distribute\n///\n/// - Returns: An array of `NSLayoutConstraint` instances\n///\n@discardableResult public func distribute(equalHeight items: [SupportsHeightLayoutProxy]) -> [NSLayoutConstraint] {\n    return reduce(items.map(AnyHeightLayoutProxy.init)) { $0.height == $1.height }\n}\n\n/// Distributes height for all the items.\n///\n/// All items passed to this function will have\n/// their `translatesAutoresizingMaskIntoConstraints` properties set to `false`.\n///\n/// - Parameter items: The items to distribute\n///\n/// - Returns: An array of `NSLayoutConstraint` instances\n///\n@discardableResult public func distribute(equalHeight first: SupportsHeightLayoutProxy, _ rest: (SupportsHeightLayoutProxy)...) -> [NSLayoutConstraint] {\n    return distribute(equalHeight: [first] + rest)\n}\n"
  },
  {
    "path": "Cartography/Edge.swift",
    "content": "//\n//  Edge.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\npublic struct Edge : Property, RelativeEquality, RelativeInequality, Addition, Multiplication {\n    public let attribute: LayoutAttribute\n    public let context: Context\n    public let item: AnyObject\n\n    internal init(_ context: Context, _ item: AnyObject, _ attribute: LayoutAttribute) {\n        self.attribute = attribute\n        self.context = context\n        self.item = item\n    }\n}\n"
  },
  {
    "path": "Cartography/Edges.swift",
    "content": "//\n//  Edges.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 19/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\npublic struct Edges: Compound, RelativeCompoundEquality, RelativeCompoundInequality {\n    public let context: Context\n    public let properties: [Property]\n\n    internal init(_ context: Context, _ properties: [Property]) {\n        guard properties.count == 4 else {\n            fatalError(\"No valid edges were used\")\n        }\n\n        self.context = context\n        self.properties = properties\n    }\n\n    /// Insets all edges individually.\n    ///\n    /// - parameter top:      The amount by which to inset the top edge, in points.\n    /// - parameter leading:  The amount by which to inset the leading edge, in points.\n    /// - parameter bottom:   The amount by which to inset the bottom edge, in points.\n    /// - parameter trailing: The amount by which to inset the trailing edge, in points.\n    ///\n    /// - returns: A new expression with the inseted edges.\n    ///\n    public func inseted(top: CGFloat, leading: CGFloat, bottom: CGFloat, trailing: CGFloat) -> Expression<Edges> {\n        return Expression(\n            self,\n            [\n                Coefficients(1, top),\n                Coefficients(1, leading),\n                Coefficients(1, -bottom),\n                Coefficients(1, -trailing)\n            ]\n        )\n    }\n\n    /// Insets all horizontal and vertical edges.\n    ///\n    /// - parameter horizontally:   The amount by which to inset the leading and trailing edges, in points.\n    /// - parameter vertically:     The amount by which to inset the top and bottom edges, in points.\n    ///\n    /// - returns: A new expression with the inseted edges.\n    ///\n    public func inseted(horizontally: CGFloat, vertically: CGFloat) -> Expression<Edges> {\n        return self.inseted(\n            top: vertically,\n            leading: horizontally,\n            bottom: vertically,\n            trailing: horizontally\n        )\n    }\n\n    /// Insets all horizontal edges.\n    ///\n    /// - parameter horizontally:   The amount by which to inset the leading and trailing edges, in points.\n    ///\n    /// - returns: A new expression with the inseted edges.\n    ///\n    public func inseted(horizontally: CGFloat) -> Expression<Edges> {\n        return self.inseted(\n            horizontally: horizontally,\n            vertically: 0\n        )\n    }\n\n    /// Insets all vertical edges.\n    ///\n    /// - parameter vertically: The amount by which to inset the top and bottom edges, in points.\n    ///\n    /// - returns: A new expression with the inseted edges.\n    ///\n    public func inseted(vertically: CGFloat) -> Expression<Edges> {\n        return self.inseted(\n            horizontally: 0,\n            vertically: vertically\n        )\n    }\n\n    /// Insets all edges by a single value.\n    ///\n    /// - parameter by: The amount by which to inset the top and bottom edges, in points.\n    ///\n    /// - returns: A new expression with the inseted edges.\n    ///\n    public func inseted(by value: CGFloat) -> Expression<Edges> {\n        return self.inseted(\n            horizontally: value,\n            vertically: value\n        )\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// Insets all edges individually using an existing UIEdgeInsets.\n    ///\n    /// - parameter by: The UIEdgeInsets to use as a base value.\n    ///\n    /// - returns: A new expression with the inseted edges.\n    ///\n    public func inseted(by insets: UIEdgeInsets) -> Expression<Edges> {\n        return self.inseted(\n            top: insets.top,\n            leading: insets.left,\n            bottom: insets.bottom,\n            trailing: insets.right\n        )\n    }\n    #endif\n}\n\n/// Insets all edges.\n///\n/// - parameter edges: The edges to inset.\n/// - parameter all:   The amount by which to inset all edges, in points.\n///\n/// - returns: A new expression with the inset edges.\n///\npublic func inset(_ edges: Edges, _ all: CGFloat) -> Expression<Edges> {\n    return edges.inseted(by: all)\n}\n\n/// Insets the horizontal and vertical edges.\n///\n/// - parameter edges:      The edges to inset.\n/// - parameter horizontal: The amount by which to inset the horizontal edges, in\n///                    points.\n/// - parameter vertical:   The amount by which to inset the vertical edges, in\n///                    points.\n///\n/// - returns: A new expression with the inset edges.\n///\npublic func inset(_ edges: Edges, _ horizontal: CGFloat, _ vertical: CGFloat) -> Expression<Edges> {\n    return edges.inseted(horizontally: horizontal, vertically: vertical)\n}\n\n/// Insets the horizontal edges.\n///\n/// - parameter edges:      The edges to inset.\n/// - parameter horizontally: The amount by which to inset the horizontal edges, in\n///                    points.\n///\n/// - returns: A new expression with the inset edges.\n///\npublic func inset(_ edges: Edges, horizontally horizontal: CGFloat) -> Expression<Edges> {\n    return edges.inseted(horizontally: horizontal)\n}\n\n/// Insets the vertical edges.\n///\n/// - parameter edges:      The edges to inset.\n/// - parameter vertically: The amount by which to inset the vertical edges, in\n///                    points.\n///\n/// - returns: A new expression with the inset edges.\n///\npublic func inset(_ edges: Edges, vertically vertical: CGFloat) -> Expression<Edges> {\n    return edges.inseted(vertically: vertical)\n}\n\n/// Insets edges individually.\n///\n/// - parameter edges:    The edges to inset.\n/// - parameter top:      The amount by which to inset the top edge, in points.\n/// - parameter leading:  The amount by which to inset the leading edge, in points.\n/// - parameter bottom:   The amount by which to inset the bottom edge, in points.\n/// - parameter trailing: The amount by which to inset the trailing edge, in points.\n///\n/// - returns: A new expression with the inset edges.\n///\npublic func inset(_ edges: Edges, _ top: CGFloat, _ leading: CGFloat, _ bottom: CGFloat, _ trailing: CGFloat) -> Expression<Edges> {\n    return edges.inseted(top: top, leading: leading, bottom: bottom, trailing: trailing)\n}\n\n#if os(iOS) || os(tvOS)\n/// Insets edges individually with UIEdgeInset.\n///\n/// - parameter edges:    The edges to inset.\n/// - parameter insets:   The amounts by which to inset all edges, in points via UIEdgeInsets.\n///\n/// - returns: A new expression with the inset edges.\n///\npublic func inset(_ edges: Edges, _ insets: UIEdgeInsets) -> Expression<Edges> {\n    return edges.inseted(by: insets)\n}\n#endif\n"
  },
  {
    "path": "Cartography/Expression.swift",
    "content": "//\n//  Expression.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n\npublic struct Expression<T> {\n    let value: T\n    var coefficients: [Coefficients]\n\n    init(_ value: T, _ coefficients: [Coefficients]) {\n        assert(coefficients.count > 0)\n\n        self.value = value\n        self.coefficients = coefficients\n    }\n}\n"
  },
  {
    "path": "Cartography/Extensions.swift",
    "content": "//\n//  Extensions.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 22/01/15.\n//  Copyright (c) 2015 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\ninternal extension Dictionary {\n    init(_ pairs: [Element]) {\n        self.init()\n\n        for (key, value) in pairs {\n            self[key] = value\n        }\n    }\n}\n"
  },
  {
    "path": "Cartography/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>${CURRENT_PROJECT_VERSION}</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Cartography/LayoutGuide.swift",
    "content": "//\n//  LayoutGuide.swift\n//  Cartography\n//\n//  Created by Vitor Travain on 11/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n\n@available(iOS, introduced: 9.0)\n@available(tvOS, introduced: 9.0)\npublic typealias LayoutGuide = UILayoutGuide\n\n@available(iOS, introduced: 9.0)\n@available(tvOS, introduced: 9.0)\nextension UILayoutGuide: LayoutItem {\n\n    @available(iOS, introduced: 9.0)\n    @available(tvOS, introduced: 9.0)\n    public func asProxy(context: Context) -> LayoutGuideProxy {\n        return LayoutGuideProxy(context: context, item: self)\n    }\n}\n#elseif os(OSX)\nimport AppKit\n\n@available(OSX, introduced: 10.11)\npublic typealias LayoutGuide = NSLayoutGuide\n\n@available(OSX, introduced: 10.11)\nextension NSLayoutGuide: LayoutItem {\n\n    @available(OSX, introduced: 10.11)\n    public func asProxy(context: Context) -> LayoutGuideProxy {\n        return LayoutGuideProxy(context: context, item: self)\n    }\n}\n#endif\n"
  },
  {
    "path": "Cartography/LayoutGuideProxy.swift",
    "content": "//\n//  LayoutGuideProxy.swift\n//  Cartography\n//\n//  Created by Vitor Travain on 11/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\n@available(iOS, introduced: 9.0)\n@available(tvOS, introduced: 9.0)\n@available(OSX, introduced: 10.11)\npublic final class LayoutGuideProxy: SupportsPositioningLayoutProxy {\n    public let context: Context\n\n    private let layoutGuide: LayoutGuide\n    public var item: AnyObject {\n        return layoutGuide\n    }\n\n    public init(context: Context, item: LayoutGuide) {\n        self.context = context\n        self.layoutGuide = item\n    }\n\n    public var owningView: ViewProxy? {\n        return layoutGuide.owningView?.asProxy(context: context)\n    }\n}\n"
  },
  {
    "path": "Cartography/LayoutItem.swift",
    "content": "//\n//  LayoutItem.swift\n//  Cartography-iOS\n//\n//  Created by Vitor Travain on 10/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\npublic protocol LayoutItem: AnyObject {\n    associatedtype ProxyType: LayoutProxy\n\n    func asProxy(context: Context) -> ProxyType\n}\n\nextension LayoutItem {\n    public func asProxy() -> ProxyType {\n        return asProxy(context: Context())\n    }\n}\n"
  },
  {
    "path": "Cartography/LayoutProxy+TypeErasure.swift",
    "content": "//\n//  LayoutProxy+TypeErasure.swift\n//  Cartography-iOS\n//\n//  Created by Vitor Travain on 17/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n\nfinal class AnyTopLayoutProxy: SupportsTopLayoutProxy {\n    let proxy: SupportsTopLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsTopLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyBottomLayoutProxy: SupportsBottomLayoutProxy {\n    let proxy: SupportsBottomLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsBottomLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyLeftLayoutProxy: SupportsLeftLayoutProxy {\n    let proxy: SupportsLeftLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsLeftLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyRightLayoutProxy: SupportsRightLayoutProxy {\n    let proxy: SupportsRightLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsRightLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyLeadingLayoutProxy: SupportsLeadingLayoutProxy {\n    let proxy: SupportsLeadingLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsLeadingLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyTrailingLayoutProxy: SupportsTrailingLayoutProxy {\n    let proxy: SupportsTrailingLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsTrailingLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyCenterXLayoutProxy: SupportsCenterXLayoutProxy {\n    let proxy: SupportsCenterXLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsCenterXLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyCenterYLayoutProxy: SupportsCenterYLayoutProxy {\n    let proxy: SupportsCenterYLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsCenterYLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyBaselineLayoutProxy: SupportsBaselineLayoutProxy {\n    let proxy: SupportsBaselineLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsBaselineLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyHorizontalDistributionLayoutProxy: SupportsLeadingLayoutProxy, SupportsTrailingLayoutProxy {\n    let proxy: SupportsLeadingLayoutProxy & SupportsTrailingLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsLeadingLayoutProxy & SupportsTrailingLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyLeftToRightDistributionLayoutProxy: SupportsLeftLayoutProxy, SupportsRightLayoutProxy {\n    let proxy: SupportsLeftLayoutProxy & SupportsRightLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsLeftLayoutProxy & SupportsRightLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyVerticalDistributionLayoutProxy: SupportsTopLayoutProxy, SupportsBottomLayoutProxy {\n    let proxy: SupportsTopLayoutProxy & SupportsBottomLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsTopLayoutProxy & SupportsBottomLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyWidthLayoutProxy: SupportsWidthLayoutProxy {\n    let proxy: SupportsWidthLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsWidthLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n\nfinal class AnyHeightLayoutProxy: SupportsHeightLayoutProxy {\n    let proxy: SupportsHeightLayoutProxy\n\n    var context: Context {\n        return proxy.context\n    }\n\n    var item: AnyObject {\n        return proxy.item\n    }\n\n    init(_ proxy: SupportsHeightLayoutProxy) {\n        self.proxy = proxy\n    }\n}\n"
  },
  {
    "path": "Cartography/LayoutProxy.swift",
    "content": "//\n//  LayoutProxy.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#elseif os(OSX)\nimport AppKit\n#endif\n\npublic protocol LayoutProxy: AnyObject {\n    var context: Context { get }\n    var item: AnyObject { get } //type-erased Layoutitem\n}\n\nextension LayoutProxy {\n    #if os(iOS) || os(tvOS)\n    internal func dimension(with attribute: NSLayoutConstraint.Attribute) -> Dimension {\n        return Dimension(context, item, attribute)\n    }\n\n    internal func edge(with attribute: NSLayoutConstraint.Attribute) -> Edge {\n        return Edge(context, item, attribute)\n    }\n    #elseif os(OSX)\n    internal func dimension(with attribute: NSLayoutConstraint.Attribute) -> Dimension {\n        return Dimension(context, item, attribute)\n    }\n\n    internal func edge(with attribute: NSLayoutConstraint.Attribute) -> Edge {\n        return Edge(context, item, attribute)\n    }\n    #endif\n\n    internal func point(for attr1: Edge, _ attr2: Edge) -> Point {\n        return Point(context, [attr1, attr2])\n    }\n\n    internal func size(for attr1: Dimension, _ attr2: Dimension) -> Size {\n        return Size(context, [attr1, attr2])\n    }\n\n    internal func edges(for attr1: Edge, _ attr2: Edge, _ attr3: Edge, _ attr4: Edge) -> Edges {\n        return Edges(context, [attr1, attr2, attr3, attr4])\n    }\n}\n\npublic protocol SupportsTopLayoutProxy: LayoutProxy {}\nextension SupportsTopLayoutProxy {\n    /// The top edge of the item.\n    public var top: Edge {\n        return edge(with: .top)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The top margin of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var topMargin: Edge {\n        return edge(with: .topMargin)\n    }\n    #endif\n}\n\npublic protocol SupportsBottomLayoutProxy: LayoutProxy {}\nextension SupportsBottomLayoutProxy {\n    /// The bottom edge of the item.\n    public var bottom: Edge {\n        return edge(with: .bottom)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The bottom margin of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var bottomMargin: Edge {\n        return edge(with: .bottomMargin)\n    }\n    #endif\n}\n\npublic protocol SupportsRightLayoutProxy: LayoutProxy {}\nextension SupportsRightLayoutProxy {\n    /// The right edge of the item.\n    public var right: Edge {\n        return edge(with: .right)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The right margin of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var rightMargin: Edge {\n        return edge(with: .rightMargin)\n    }\n    #endif\n}\n\npublic protocol SupportsLeftLayoutProxy: LayoutProxy {}\nextension SupportsLeftLayoutProxy {\n    /// The left edge of the item.\n    public var left: Edge {\n        return edge(with: .left)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The left margin of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var leftMargin: Edge {\n        return edge(with: .leftMargin)\n    }\n    #endif\n}\n\npublic protocol SupportsLeadingLayoutProxy: LayoutProxy {}\nextension SupportsLeadingLayoutProxy {\n    /// The leading edge of the item.\n    public var leading: Edge {\n        return edge(with: .leading)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The leading margin of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var leadingMargin: Edge {\n        return edge(with: .leadingMargin)\n    }\n    #endif\n}\n\npublic protocol SupportsTrailingLayoutProxy: LayoutProxy {}\nextension SupportsTrailingLayoutProxy {\n    /// The trailing edge of the item.\n    public var trailing: Edge {\n        return edge(with: .trailing)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The trailing margin of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var trailingMargin: Edge {\n        return edge(with: .trailingMargin)\n    }\n    #endif\n}\n\npublic protocol SupportsEdgesLayoutProxy: SupportsTopLayoutProxy, SupportsBottomLayoutProxy, SupportsLeadingLayoutProxy, SupportsTrailingLayoutProxy, SupportsLeftLayoutProxy, SupportsRightLayoutProxy {}\nextension SupportsEdgesLayoutProxy {\n    /// All edges of the item. This property affects `top`, `bottom`, `leading`\n    /// and `trailing`.\n    public var edges: Edges {\n        return edges(for: top, leading, bottom, trailing)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// All edges of the item with their respective margins. This property\n    /// affects `topMargin`, `bottomMargin`, `leadingMargin` and\n    /// `trailingMargin`.\n    @available(iOS, introduced: 8.0)\n    public var edgesWithinMargins: Edges {\n        return edges(for: topMargin, leadingMargin, bottomMargin, trailingMargin)\n    }\n    #endif\n}\n\npublic protocol SupportsCenterXLayoutProxy: LayoutProxy {}\nextension SupportsCenterXLayoutProxy {\n    /// The horizontal center of the item.\n    public var centerX: Edge {\n        return edge(with: .centerX)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The horizontal center within the margins of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var centerXWithinMargins: Edge {\n        return edge(with: .centerXWithinMargins)\n    }\n    #endif\n}\n\npublic protocol SupportsCenterYLayoutProxy: LayoutProxy {}\nextension SupportsCenterYLayoutProxy {\n    /// The vertical center of the item.\n    public var centerY: Edge {\n        return edge(with: .centerY)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The vertical center within the margins of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var centerYWithinMargins: Edge {\n        return edge(with: .centerYWithinMargins)\n    }\n    #endif\n}\n\npublic protocol SupportsCenteringLayoutProxy: SupportsCenterXLayoutProxy, SupportsCenterYLayoutProxy {}\nextension SupportsCenteringLayoutProxy {\n    /// The center point of the item. This property affects `centerX` and\n    /// `centerY`.\n    public var center: Point {\n        return point(for: centerX, centerY)\n    }\n\n    #if os(iOS) || os(tvOS)\n    /// The center point within the margins of the item. This property affects\n    /// `centerXWithinMargins` and `centerYWithinMargins`. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    public var centerWithinMargins: Point {\n        return point(for: centerXWithinMargins, centerYWithinMargins)\n    }\n    #endif\n}\n\npublic protocol SupportsWidthLayoutProxy: LayoutProxy {}\nextension SupportsWidthLayoutProxy {\n    /// The width of the item.\n    public var width: Dimension {\n        return dimension(with: .width)\n    }\n}\n\npublic protocol SupportsHeightLayoutProxy: LayoutProxy {}\nextension SupportsHeightLayoutProxy {\n    /// The height of the item.\n    public var height: Dimension {\n        return dimension(with: .height)\n    }\n}\n\npublic protocol SupportsSizeLayoutProxy: SupportsWidthLayoutProxy, SupportsHeightLayoutProxy {}\nextension SupportsSizeLayoutProxy {\n    /// The size of the item. This property affects both `width` and `height`.\n    public var size: Size {\n        return size(for: width, height)\n    }\n}\n\npublic protocol SupportsBaselineLayoutProxy: LayoutProxy {}\nextension SupportsBaselineLayoutProxy {\n    /// The last baseline of the item.\n    public var lastBaseline: Edge {\n        return edge(with: .lastBaseline)\n    }\n\n    /// The baseline of the item.\n    public var baseline: Edge {\n        return edge(with: .lastBaseline)\n    }\n\n    /// The first baseline of the item. iOS exclusive.\n    @available(iOS, introduced: 8.0)\n    @available(OSX, introduced: 10.11)\n    public var firstBaseline: Edge {\n        return edge(with: .firstBaseline)\n    }\n}\n\npublic protocol SupportsPositioningLayoutProxy: SupportsEdgesLayoutProxy, SupportsSizeLayoutProxy, SupportsCenteringLayoutProxy {}\n"
  },
  {
    "path": "Cartography/LayoutSupport.swift",
    "content": "//\n//  LayoutSupport.swift\n//  Cartography\n//\n//  Created by Timothy Chilvers on 30/03/2016.\n//  Copyright © 2016 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS) || os(tvOS)\n    import UIKit\n\n    public final class LayoutSupport: LayoutItem {\n        let layoutGuide : UILayoutSupport\n\n        init(layoutGuide: UILayoutSupport) {\n            self.layoutGuide = layoutGuide\n        }\n\n        public func asProxy(context: Context) -> LayoutSupportProxy {\n            return LayoutSupportProxy(context: context, item: self)\n        }\n    }\n\n    public extension UIViewController {\n        var car_topLayoutGuide : LayoutSupport {\n            get {\n                return LayoutSupport(layoutGuide: self.topLayoutGuide)\n            }\n        }\n        \n        var car_bottomLayoutGuide : LayoutSupport {\n            get {\n                return LayoutSupport(layoutGuide: self.bottomLayoutGuide)\n            }\n        }\n    }\n\n#endif\n"
  },
  {
    "path": "Cartography/LayoutSupportProxy.swift",
    "content": "//\n//  LayoutSupportProxy.swift\n//  Cartography-iOS\n//\n//  Created by Vitor Travain on 11/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n\npublic final class LayoutSupportProxy: SupportsHeightLayoutProxy, SupportsTopLayoutProxy, SupportsBottomLayoutProxy {\n    public let context: Context\n\n    private let layoutGuide: UILayoutSupport\n    public var item: AnyObject {\n        return layoutGuide\n    }\n\n    public init(context: Context, item: LayoutSupport) {\n        self.context = context\n        self.layoutGuide = item.layoutGuide\n    }\n}\n#endif\n"
  },
  {
    "path": "Cartography/Point.swift",
    "content": "//\n//  Point.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 18/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\npublic struct Point: Compound, RelativeCompoundEquality, RelativeCompoundInequality {\n    public let context: Context\n    public let properties: [Property]\n\n    internal init(_ context: Context, _ properties: [Property]) {\n        self.context = context\n        self.properties = properties\n    }\n}\n"
  },
  {
    "path": "Cartography/Priority.swift",
    "content": "//\n//  Priority.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 18/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n\npublic typealias LayoutPriority = UILayoutPriority\n#else\nimport AppKit\n\npublic typealias LayoutPriority = NSLayoutConstraint.Priority\n#endif\n\nprecedencegroup CarthographyPriorityPrecedence {\n    lowerThan: ComparisonPrecedence\n    higherThan: AssignmentPrecedence\n}\n\ninfix operator  ~: CarthographyPriorityPrecedence\n\n/// Sets the priority for a constraint.\n///\n/// - parameter lhs: The constraint to update.\n/// - parameter rhs: The new priority.\n///\n/// - returns: The same constraint with its priority updated.\n///\n@discardableResult public func ~ (lhs: NSLayoutConstraint, rhs: LayoutPriority) -> NSLayoutConstraint {\n    lhs.priority = rhs\n\n    return lhs\n}\n\n/// Sets the priority for a constraint.\n///\n/// - parameter lhs: The constraint to update.\n/// - parameter rhs: The new priority.\n///\n/// - returns: The same constraint with its priority updated.\n///\n@discardableResult public func ~ (lhs: NSLayoutConstraint, rhs: Float) -> NSLayoutConstraint {\n    lhs.priority = LayoutPriority(rawValue: rhs)\n\n    return lhs\n}\n\n/// Sets the priority for multiple constraints.\n///\n/// - parameter lhs: An array of `NSLayoutConstraint` instances.\n/// - parameter rhs: The new priority.\n///\n/// - returns: The same constraints with their priorities updated.\n///\n@discardableResult public func ~ (lhs: [NSLayoutConstraint], rhs: LayoutPriority) -> [NSLayoutConstraint] {\n    return lhs.map {\n        $0 ~ rhs\n    }\n}\n\n/// Sets the priority for multiple constraints.\n///\n/// - parameter lhs: An array of `NSLayoutConstraint` instances.\n/// - parameter rhs: The new priority.\n///\n/// - returns: The same constraints with their priorities updated.\n///\n@discardableResult public func ~ (lhs: [NSLayoutConstraint], rhs: Float) -> [NSLayoutConstraint] {\n    return lhs.map {\n        $0 ~ rhs\n    }\n}\n"
  },
  {
    "path": "Cartography/Property.swift",
    "content": "//\n//  Property.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 17/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n\npublic typealias LayoutAttribute = NSLayoutConstraint.Attribute\n#else\nimport AppKit\n\npublic typealias LayoutAttribute = NSLayoutConstraint.Attribute\n#endif\n\npublic protocol Property {\n    var attribute: LayoutAttribute { get }\n    var context: Context { get }\n    var item: AnyObject { get } //type-erased Layoutitem\n}\n\n// MARK: Equality\n\n/// Properties conforming to this protocol can use the `==` operator with\n/// numerical constants.\npublic protocol NumericalEquality : Property { }\n\n/// Declares a property equal to a numerical constant.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The numerical constant.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func == (lhs: NumericalEquality, rhs: CGFloat) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, coefficients: Coefficients(1, rhs))\n}\n\n/// Properties conforming to this protocol can use the `==` operator with other\n/// properties of the same type.\npublic protocol RelativeEquality : Property { }\n\n/// Declares a property equal to a the result of an expression.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The expression.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func == <P: RelativeEquality>(lhs: P, rhs: Expression<P>) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, to: rhs.value, coefficients: rhs.coefficients[0])\n}\n\n/// Declares a property equal to another property.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n@discardableResult public func == <P: RelativeEquality>(lhs: P, rhs: P) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, to: rhs)\n}\n\n// MARK: Inequality\n\n/// Properties conforming to this protocol can use the `<=` and `>=` operators\n/// with numerical constants.\npublic protocol NumericalInequality : Property { }\n\n/// Declares a property less than or equal to a numerical constant.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The numerical constant.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func <= (lhs: NumericalInequality, rhs: CGFloat) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, coefficients: Coefficients(1, rhs), relation: .lessThanOrEqual)\n}\n\n/// Declares a property greater than or equal to a numerical constant.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The numerical constant.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func >= (lhs: NumericalInequality, rhs: CGFloat) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, coefficients: Coefficients(1, rhs), relation: .greaterThanOrEqual)\n}\n\n/// Properties conforming to this protocol can use the `<=` and `>=` operators\n/// with other properties of the same type.\npublic protocol RelativeInequality : Property { }\n\n/// Declares a property less than or equal to another property.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func <= <P: RelativeInequality>(lhs: P, rhs: P) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, to: rhs, relation: .lessThanOrEqual)\n}\n\n/// Declares a property greater than or equal to another property.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func >= <P: RelativeInequality>(lhs: P, rhs: P) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, to: rhs, relation: .greaterThanOrEqual)\n}\n\n/// Declares a property less than or equal to the result of an expression.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func <= <P: RelativeInequality>(lhs: P, rhs: Expression<P>) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, to: rhs.value, coefficients: rhs.coefficients[0], relation: .lessThanOrEqual)\n}\n\n/// Declares a property greater than or equal to the result of an expression.\n///\n/// - parameter lhs: The affected property. The associated item will have\n///             `translatesAutoresizingMaskIntoConstraints` set to `false`.\n/// - parameter rhs: The other property.\n///\n/// - returns: An `NSLayoutConstraint`.\n///\n@discardableResult public func >= <P: RelativeInequality>(lhs: P, rhs: Expression<P>) -> NSLayoutConstraint {\n    return lhs.context.addConstraint(lhs, to: rhs.value, coefficients: rhs.coefficients[0], relation: .greaterThanOrEqual)\n}\n\n// MARK: Addition\n\npublic protocol Addition : Property { }\n\npublic func + <P: Addition>(c: CGFloat, rhs: P) -> Expression<P> {\n    return Expression(rhs, [ Coefficients(1, c) ])\n}\n\npublic func + <P: Addition>(lhs: P, rhs: CGFloat) -> Expression<P> {\n    return rhs + lhs\n}\n\npublic func + <P: Addition>(c: CGFloat, rhs: Expression<P>) -> Expression<P> {\n    return Expression(rhs.value, rhs.coefficients.map { $0 + c })\n}\n\npublic func + <P: Addition>(lhs: Expression<P>, rhs: CGFloat) -> Expression<P> {\n    return rhs + lhs\n}\n\npublic func - <P: Addition>(c: CGFloat, rhs: P) -> Expression<P> {\n    return Expression(rhs, [ Coefficients(1, -c) ])\n}\n\npublic func - <P: Addition>(lhs: P, rhs: CGFloat) -> Expression<P> {\n    return rhs - lhs\n}\n\npublic func - <P: Addition>(c: CGFloat, rhs: Expression<P>) -> Expression<P> {\n    return Expression(rhs.value, rhs.coefficients.map { $0 - c})\n}\n\npublic func - <P: Addition>(lhs: Expression<P>, rhs: CGFloat) -> Expression<P> {\n    return rhs - lhs\n}\n\n#if os(iOS) || os(tvOS)\n\n    public func + (lhs: LayoutSupport, c : CGFloat) -> Expression<LayoutSupport> {\n        return Expression<LayoutSupport>(lhs, [Coefficients(1, c)])\n    }\n\n    public func - (lhs: LayoutSupport, c : CGFloat) -> Expression<LayoutSupport> {\n        return lhs + (-c)\n    }\n\n#endif\n// MARK: Multiplication\n\npublic protocol Multiplication : Property { }\n\npublic func * <P: Multiplication>(m: CGFloat, rhs: Expression<P>) -> Expression<P> {\n    return Expression(rhs.value, rhs.coefficients.map { $0 * m })\n}\n\npublic func * <P: Multiplication>(lhs: Expression<P>, rhs: CGFloat) -> Expression<P> {\n    return rhs * lhs\n}\n\npublic func * <P: Multiplication>(m: CGFloat, rhs: P) -> Expression<P> {\n    return Expression(rhs, [ Coefficients(m, 0) ])\n}\n\npublic func * <P: Multiplication>(lhs: P, rhs: CGFloat) -> Expression<P> {\n    return rhs * lhs\n}\n\npublic func / <P: Multiplication>(lhs: Expression<P>, rhs: CGFloat) -> Expression<P> {\n    return lhs * (1 / rhs)\n}\n\npublic func / <P: Multiplication>(lhs: P, rhs: CGFloat) -> Expression<P> {\n    return lhs * (1 / rhs)\n}\n"
  },
  {
    "path": "Cartography/Size.swift",
    "content": "//\n//  Size.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 18/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport UIKit\n#else\nimport AppKit\n#endif\n\npublic struct Size : Compound, RelativeCompoundEquality, RelativeCompoundInequality {\n    public let context: Context\n    public let properties: [Property]\n\n    internal init(_ context: Context, _ properties: [Property]) {\n        self.context = context\n        self.properties = properties\n    }\n}\n\n// MARK: Multiplication\n\npublic func * (m: CGFloat, rhs: Expression<Size>) -> Expression<Size> {\n    return Expression(rhs.value, rhs.coefficients.map { $0 * m })\n}\n\npublic func * (lhs: Expression<Size>, rhs: CGFloat) -> Expression<Size> {\n    return rhs * lhs\n}\n\npublic func * (m: CGFloat, rhs: Size) -> Expression<Size> {\n    return Expression(rhs, [ Coefficients(m, 0), Coefficients(m, 0) ])\n}\n\npublic func * (lhs: Size, rhs: CGFloat) -> Expression<Size> {\n    return rhs * lhs\n}\n\n// MARK: Division\n\npublic func / (lhs: Expression<Size>, rhs: CGFloat) -> Expression<Size> {\n    return lhs * (1 / rhs)\n}\n\npublic func / (lhs: Size, rhs: CGFloat) -> Expression<Size> {\n    return lhs * (1 / rhs)\n}\n"
  },
  {
    "path": "Cartography/View.swift",
    "content": "//\n//  View.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 26/06/14.\n//  Copyright (c) 2014 Robert Böhnke. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS) || os(tvOS)\n    import UIKit\n    public typealias View = UIView\n\n    extension UIView: LayoutItem {\n        public func asProxy(context: Context) -> ViewProxy {\n            return ViewProxy(context: context, view: self)\n        }\n    }\n#else\n    import AppKit\n    public typealias View = NSView\n\n    extension NSView: LayoutItem {\n        public func asProxy(context: Context) -> ViewProxy {\n            return ViewProxy(context: context, view: self)\n        }\n    }\n#endif\n"
  },
  {
    "path": "Cartography/ViewProxy.swift",
    "content": "//\n//  ViewProxy.swift\n//  Cartography-iOS\n//\n//  Created by Vitor Travain on 10/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\npublic final class ViewProxy: SupportsPositioningLayoutProxy, SupportsBaselineLayoutProxy, AutoresizingMaskLayoutProxy {\n    public var context: Context\n\n    private let view: View\n    public var item: AnyObject {\n        return self.view\n    }\n\n    public var translatesAutoresizingMaskIntoConstraints: Bool {\n        get {\n            return view.translatesAutoresizingMaskIntoConstraints\n        }\n        set(value) {\n            view.translatesAutoresizingMaskIntoConstraints = value\n        }\n    }\n\n    public init(context: Context, view: View) {\n        self.context = context\n        self.view = view\n    }\n\n    public var superview: ViewProxy? {\n        return view.superview?.asProxy(context: context)\n    }\n\n    #if os(iOS) || os(tvOS)\n    @available(iOS, introduced: 11.0)\n    @available(tvOS, introduced: 11.0)\n    public var safeAreaLayoutGuide: LayoutGuideProxy {\n        return view.safeAreaLayoutGuide.asProxy(context: context)\n    }\n\n    @available(iOS, introduced: 9.0)\n    @available(tvOS, introduced: 9.0)\n    public var layoutMarginsGuide: LayoutGuideProxy {\n        return view.layoutMarginsGuide.asProxy(context: context)\n    }\n\n    @available(iOS, introduced: 9.0)\n    @available(tvOS, introduced: 9.0)\n    public var readableContentGuide: LayoutGuideProxy {\n        return view.readableContentGuide.asProxy(context: context)\n    }\n    #endif\n}\n\n@available(iOS, introduced: 9.0)\n@available(tvOS, introduced: 9.0)\n@available(iOS, deprecated: 11.0, message: \"The safe area is available on iOS 11+ via 'safeAreaLayoutGuide'!\")\n@available(tvOS, deprecated: 11.0, message: \"The safe area is available on tvOS 11+ via 'safeAreaLayoutGuide'!\")\nextension ViewProxy {\n    #if os(iOS) || os(tvOS)\n    public var safeArea: LayoutGuideProxy {\n        if #available(iOS 11, *), #available(tvOS 11, *) {\n            return safeAreaLayoutGuide\n        } else {\n            return layoutMarginsGuide\n        }\n    }\n    #endif\n}\n"
  },
  {
    "path": "Cartography.podspec",
    "content": "Pod::Spec.new do |s|\n\n  s.name         = \"Cartography\"\n  s.version      = \"4.0.0\"\n  s.summary      = \"Declarative Auto Layout in Swift\"\n\n  s.description  = <<-DESC\n                   Set up your Auto Layout constraints declaratively and without any stringly typing!\n                   DESC\n\n  s.homepage     = \"https://github.com/robb/Cartography\"\n  s.license      = { :type => \"MIT\", :file => \"LICENSE\" }\n  s.author       = { \"Robert Böhnke\" => \"robb@robb.is\" }\n\n  s.swift_version = \"5.0\"\n\n  s.ios.deployment_target = \"8.0\"\n  s.osx.deployment_target = \"10.10\"\n  s.tvos.deployment_target = \"9.0\"\n\n  s.source = { :git => \"https://github.com/robb/Cartography.git\", :tag => s.version }\n  s.source_files = \"Cartography/*.swift\"\nend\n"
  },
  {
    "path": "Cartography.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t09F7751A581957EA262BC6A4 /* Pods_TestPods_Cartography_Mac_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 825625A8CCFA9B2B102BDDDB /* Pods_TestPods_Cartography_Mac_Tests.framework */; };\n\t\t1B319C622162740100DD91D4 /* ViewProxyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B319C612162740100DD91D4 /* ViewProxyTests.swift */; };\n\t\t40F7238205F9E56862357198 /* Pods_TestPods_Cartography_iOS_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C63D81EB2304A489BE29E6A /* Pods_TestPods_Cartography_iOS_Tests.framework */; };\n\t\t4A3756C91D67445F0036190E /* LayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF7EED1CABEABC00249E27 /* LayoutSupport.swift */; };\n\t\t54143E4E1A93991D00208182 /* Distribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5467916E1A93962000DC9BF7 /* Distribute.swift */; };\n\t\t5435B8BF1AD8612C00B805F1 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5435B8B41AD8610300B805F1 /* Nimble.framework */; };\n\t\t5435B8C01AD8612C00B805F1 /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5435B8B51AD8610300B805F1 /* Quick.framework */; };\n\t\t5435B8C11AD8613500B805F1 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5435B8B81AD8610300B805F1 /* Nimble.framework */; };\n\t\t5435B8C21AD8613500B805F1 /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5435B8B91AD8610300B805F1 /* Quick.framework */; };\n\t\t543B37FA1AC82FBF00367D8B /* Edge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E901950A76C00B16707 /* Edge.swift */; };\n\t\t545F858D195322EA00791F75 /* Edges.swift in Sources */ = {isa = PBXBuildFile; fileRef = 545F858C195322EA00791F75 /* Edges.swift */; };\n\t\t545F858F1953235F00791F75 /* EdgesSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 545F858E1953235F00791F75 /* EdgesSpec.swift */; };\n\t\t5467916F1A93962000DC9BF7 /* Distribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5467916E1A93962000DC9BF7 /* Distribute.swift */; };\n\t\t546E9E891950A29300B16707 /* LayoutProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E881950A29300B16707 /* LayoutProxy.swift */; };\n\t\t546E9E8D1950A31100B16707 /* Dimension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E8C1950A31100B16707 /* Dimension.swift */; };\n\t\t546E9E8F1950A33700B16707 /* Coefficients.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E8E1950A33700B16707 /* Coefficients.swift */; };\n\t\t546E9E911950A76C00B16707 /* Edge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E901950A76C00B16707 /* Edge.swift */; };\n\t\t546E9E951950A97F00B16707 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E941950A97F00B16707 /* Expression.swift */; };\n\t\t546E9EA21950B33D00B16707 /* DimensionSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C96A23195063CD000CDD27 /* DimensionSpec.swift */; };\n\t\t547BC85519E2DD06007BEE9E /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 547BC85419E2DD06007BEE9E /* Context.swift */; };\n\t\t547BC85719E2EB9B007BEE9E /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 547BC85619E2EB9B007BEE9E /* Constraint.swift */; };\n\t\t549B47B61A58198B002498C7 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 547BC85419E2DD06007BEE9E /* Context.swift */; };\n\t\t549B47B71A581992002498C7 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 547BC85619E2EB9B007BEE9E /* Constraint.swift */; };\n\t\t54B093951A715E52008A1102 /* ConstraintGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B093941A715E52008A1102 /* ConstraintGroup.swift */; };\n\t\t54B093971A7165F2008A1102 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B093961A7165F2008A1102 /* Extensions.swift */; };\n\t\t54B093981A716A2A008A1102 /* ConstraintGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B093941A715E52008A1102 /* ConstraintGroup.swift */; };\n\t\t54B093991A716A2E008A1102 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B093961A7165F2008A1102 /* Extensions.swift */; };\n\t\t54BF29B01A9348B30066ED10 /* Align.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54BF29AF1A9348B30066ED10 /* Align.swift */; };\n\t\t54BF29B51A9350170066ED10 /* Align.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54BF29AF1A9348B30066ED10 /* Align.swift */; };\n\t\t54C96A17195063CD000CDD27 /* Cartography.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C96A16195063CD000CDD27 /* Cartography.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t54C96A1D195063CD000CDD27 /* Cartography.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54C96A11195063CD000CDD27 /* Cartography.framework */; };\n\t\t54C96A30195064A6000CDD27 /* Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C96A2F195064A6000CDD27 /* Property.swift */; };\n\t\t54DF9F3319DAD8DA00EE3609 /* Constrain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54DF9F3219DAD8DA00EE3609 /* Constrain.swift */; };\n\t\t54DF9F3419DAD8DD00EE3609 /* Constrain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54DF9F3219DAD8DA00EE3609 /* Constrain.swift */; };\n\t\t54F6A843195C20C200313D24 /* Cartography.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54F6A838195C20C100313D24 /* Cartography.framework */; };\n\t\t54F6A851195C213A00313D24 /* Cartography.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C96A16195063CD000CDD27 /* Cartography.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t54F6A852195C213A00313D24 /* Coefficients.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E8E1950A33700B16707 /* Coefficients.swift */; };\n\t\t54F6A853195C213A00313D24 /* Compound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A3F1951A41B0094B82A /* Compound.swift */; };\n\t\t54F6A854195C213A00313D24 /* Dimension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E8C1950A31100B16707 /* Dimension.swift */; };\n\t\t54F6A856195C213A00313D24 /* Edges.swift in Sources */ = {isa = PBXBuildFile; fileRef = 545F858C195322EA00791F75 /* Edges.swift */; };\n\t\t54F6A857195C213A00313D24 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E941950A97F00B16707 /* Expression.swift */; };\n\t\t54F6A858195C213A00313D24 /* LayoutProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E881950A29300B16707 /* LayoutProxy.swift */; };\n\t\t54F6A859195C213A00313D24 /* Priority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A351950FD320094B82A /* Priority.swift */; };\n\t\t54F6A85A195C213A00313D24 /* Point.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A3B1951A2B60094B82A /* Point.swift */; };\n\t\t54F6A85B195C213A00313D24 /* Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C96A2F195064A6000CDD27 /* Property.swift */; };\n\t\t54F6A85C195C213A00313D24 /* Size.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A411951A8070094B82A /* Size.swift */; };\n\t\t54F6A864195C217800313D24 /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54F6A863195C217800313D24 /* View.swift */; };\n\t\t54F6A865195C226700313D24 /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54F6A863195C217800313D24 /* View.swift */; };\n\t\t54FA3A361950FD320094B82A /* Priority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A351950FD320094B82A /* Priority.swift */; };\n\t\t54FA3A3C1951A2B60094B82A /* Point.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A3B1951A2B60094B82A /* Point.swift */; };\n\t\t54FA3A401951A41B0094B82A /* Compound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A3F1951A41B0094B82A /* Compound.swift */; };\n\t\t54FA3A421951A8070094B82A /* Size.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A411951A8070094B82A /* Size.swift */; };\n\t\t632F09271BF1E7FC002431A3 /* Cartography.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 632F090A1BF1E7AA002431A3 /* Cartography.framework */; };\n\t\t632F09341BF1F0DD002431A3 /* Cartography.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C96A16195063CD000CDD27 /* Cartography.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t632F09351BF1F127002431A3 /* Align.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54BF29AF1A9348B30066ED10 /* Align.swift */; };\n\t\t632F09361BF1F127002431A3 /* Coefficients.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E8E1950A33700B16707 /* Coefficients.swift */; };\n\t\t632F09371BF1F127002431A3 /* Compound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A3F1951A41B0094B82A /* Compound.swift */; };\n\t\t632F09381BF1F127002431A3 /* Constrain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54DF9F3219DAD8DA00EE3609 /* Constrain.swift */; };\n\t\t632F09391BF1F127002431A3 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 547BC85619E2EB9B007BEE9E /* Constraint.swift */; };\n\t\t632F093A1BF1F127002431A3 /* ConstraintGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B093941A715E52008A1102 /* ConstraintGroup.swift */; };\n\t\t632F093B1BF1F127002431A3 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 547BC85419E2DD06007BEE9E /* Context.swift */; };\n\t\t632F093C1BF1F127002431A3 /* Dimension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E8C1950A31100B16707 /* Dimension.swift */; };\n\t\t632F093D1BF1F127002431A3 /* Distribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5467916E1A93962000DC9BF7 /* Distribute.swift */; };\n\t\t632F093E1BF1F127002431A3 /* Edge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E901950A76C00B16707 /* Edge.swift */; };\n\t\t632F093F1BF1F127002431A3 /* Edges.swift in Sources */ = {isa = PBXBuildFile; fileRef = 545F858C195322EA00791F75 /* Edges.swift */; };\n\t\t632F09401BF1F127002431A3 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E941950A97F00B16707 /* Expression.swift */; };\n\t\t632F09411BF1F127002431A3 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B093961A7165F2008A1102 /* Extensions.swift */; };\n\t\t632F09421BF1F127002431A3 /* LayoutProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546E9E881950A29300B16707 /* LayoutProxy.swift */; };\n\t\t632F09431BF1F127002431A3 /* Point.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A3B1951A2B60094B82A /* Point.swift */; };\n\t\t632F09441BF1F127002431A3 /* Priority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A351950FD320094B82A /* Priority.swift */; };\n\t\t632F09451BF1F127002431A3 /* Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C96A2F195064A6000CDD27 /* Property.swift */; };\n\t\t632F09461BF1F127002431A3 /* Size.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FA3A411951A8070094B82A /* Size.swift */; };\n\t\t632F09471BF1F127002431A3 /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54F6A863195C217800313D24 /* View.swift */; };\n\t\t632F094B1BF1F146002431A3 /* DimensionSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C96A23195063CD000CDD27 /* DimensionSpec.swift */; };\n\t\t632F094E1BF1F146002431A3 /* EdgesSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 545F858E1953235F00791F75 /* EdgesSpec.swift */; };\n\t\t66AF7EEE1CABEABC00249E27 /* LayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF7EED1CABEABC00249E27 /* LayoutSupport.swift */; };\n\t\t9722953C1F950A1E00FA4AF9 /* ViewProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E7F0A81F8D598A004857CE /* ViewProxy.swift */; };\n\t\t9722953D1F950A1F00FA4AF9 /* ViewProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E7F0A81F8D598A004857CE /* ViewProxy.swift */; };\n\t\t9722953E1F950A2E00FA4AF9 /* LayoutSupportProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C8F1F8E73F200C57CE1 /* LayoutSupportProxy.swift */; };\n\t\t9722953F1F950A3000FA4AF9 /* LayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF7EED1CABEABC00249E27 /* LayoutSupport.swift */; };\n\t\t977C36821F9FAC890057A057 /* AutoresizingMaskLayoutProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 977C36811F9FAC890057A057 /* AutoresizingMaskLayoutProxy.swift */; };\n\t\t977C36831F9FC2900057A057 /* AutoresizingMaskLayoutProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 977C36811F9FAC890057A057 /* AutoresizingMaskLayoutProxy.swift */; };\n\t\t977C36841F9FC2910057A057 /* AutoresizingMaskLayoutProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 977C36811F9FAC890057A057 /* AutoresizingMaskLayoutProxy.swift */; };\n\t\t97885B1E1FC4F7C800BB4E51 /* LayoutGuideSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 979F29C91F94DC6B00257363 /* LayoutGuideSpec.swift */; };\n\t\t979558E41F9700B40096BBEA /* LayoutGuideSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 979F29C91F94DC6B00257363 /* LayoutGuideSpec.swift */; };\n\t\t979558EC1F97015E0096BBEA /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9E1F8E774700C57CE1 /* TestView.swift */; };\n\t\t979558ED1F97015E0096BBEA /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9E1F8E774700C57CE1 /* TestView.swift */; };\n\t\t979558EE1F97015F0096BBEA /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9E1F8E774700C57CE1 /* TestView.swift */; };\n\t\t979558EF1F9701660096BBEA /* EdgeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9A1F8E774700C57CE1 /* EdgeSpec.swift */; };\n\t\t979558F01F9701670096BBEA /* EdgeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9A1F8E774700C57CE1 /* EdgeSpec.swift */; };\n\t\t979558F11F9701670096BBEA /* EdgeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9A1F8E774700C57CE1 /* EdgeSpec.swift */; };\n\t\t979558F21F97016C0096BBEA /* EdgesSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 545F858E1953235F00791F75 /* EdgesSpec.swift */; };\n\t\t979558F31F9701730096BBEA /* AlignSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9B1F8E774700C57CE1 /* AlignSpec.swift */; };\n\t\t979558F41F9701740096BBEA /* AlignSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9B1F8E774700C57CE1 /* AlignSpec.swift */; };\n\t\t979558F51F9701750096BBEA /* AlignSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9B1F8E774700C57CE1 /* AlignSpec.swift */; };\n\t\t979558F61F97017D0096BBEA /* LayoutSupportSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9C1F8E774700C57CE1 /* LayoutSupportSpec.swift */; };\n\t\t979558F71F97017F0096BBEA /* LayoutSupportSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9C1F8E774700C57CE1 /* LayoutSupportSpec.swift */; };\n\t\t979558F81F9701850096BBEA /* PrioritySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9D1F8E774700C57CE1 /* PrioritySpec.swift */; };\n\t\t979558F91F9701860096BBEA /* PrioritySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9D1F8E774700C57CE1 /* PrioritySpec.swift */; };\n\t\t979558FA1F9701870096BBEA /* PrioritySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9D1F8E774700C57CE1 /* PrioritySpec.swift */; };\n\t\t979558FB1F97018C0096BBEA /* DimensionSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C96A23195063CD000CDD27 /* DimensionSpec.swift */; };\n\t\t979558FC1F97019E0096BBEA /* Matchers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9F1F8E774700C57CE1 /* Matchers.swift */; };\n\t\t979558FD1F9701A10096BBEA /* Matchers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9F1F8E774700C57CE1 /* Matchers.swift */; };\n\t\t979558FE1F9701A70096BBEA /* Matchers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C9F1F8E774700C57CE1 /* Matchers.swift */; };\n\t\t979558FF1F9701AC0096BBEA /* DistributeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA01F8E774700C57CE1 /* DistributeSpec.swift */; };\n\t\t979559001F9701AD0096BBEA /* DistributeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA01F8E774700C57CE1 /* DistributeSpec.swift */; };\n\t\t979559011F9701AE0096BBEA /* DistributeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA01F8E774700C57CE1 /* DistributeSpec.swift */; };\n\t\t979559021F9701B10096BBEA /* PointSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA11F8E774700C57CE1 /* PointSpec.swift */; };\n\t\t979559031F9701B20096BBEA /* PointSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA11F8E774700C57CE1 /* PointSpec.swift */; };\n\t\t979559041F9701B30096BBEA /* PointSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA11F8E774700C57CE1 /* PointSpec.swift */; };\n\t\t979559051F9701BB0096BBEA /* ViewHierarchySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA31F8E774700C57CE1 /* ViewHierarchySpec.swift */; };\n\t\t979559061F9701BC0096BBEA /* ViewHierarchySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA31F8E774700C57CE1 /* ViewHierarchySpec.swift */; };\n\t\t979559071F9701BD0096BBEA /* ViewHierarchySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA31F8E774700C57CE1 /* ViewHierarchySpec.swift */; };\n\t\t979559081F9701C90096BBEA /* MemoryLeakSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA51F8E774700C57CE1 /* MemoryLeakSpec.swift */; };\n\t\t979559091F9701C90096BBEA /* MemoryLeakSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA51F8E774700C57CE1 /* MemoryLeakSpec.swift */; };\n\t\t9795590A1F9701CA0096BBEA /* MemoryLeakSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA51F8E774700C57CE1 /* MemoryLeakSpec.swift */; };\n\t\t9795590B1F9701CD0096BBEA /* ConstraintGroupSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA61F8E774700C57CE1 /* ConstraintGroupSpec.swift */; };\n\t\t9795590C1F9701CE0096BBEA /* ConstraintGroupSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA61F8E774700C57CE1 /* ConstraintGroupSpec.swift */; };\n\t\t9795590D1F9701CF0096BBEA /* ConstraintGroupSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA61F8E774700C57CE1 /* ConstraintGroupSpec.swift */; };\n\t\t9795590E1F9701D20096BBEA /* SizeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA81F8E774700C57CE1 /* SizeSpec.swift */; };\n\t\t9795590F1F9701D30096BBEA /* SizeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA81F8E774700C57CE1 /* SizeSpec.swift */; };\n\t\t979559101F9701D40096BBEA /* SizeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA81F8E774700C57CE1 /* SizeSpec.swift */; };\n\t\t979F29CB1F94DCA800257363 /* LayoutGuideSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 979F29C91F94DC6B00257363 /* LayoutGuideSpec.swift */; };\n\t\t97D17C901F8E73F200C57CE1 /* LayoutSupportProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C8F1F8E73F200C57CE1 /* LayoutSupportProxy.swift */; };\n\t\t97D17C921F8E740B00C57CE1 /* LayoutSupportProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C8F1F8E73F200C57CE1 /* LayoutSupportProxy.swift */; };\n\t\t97D17C961F8E774400C57CE1 /* LayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C951F8E774400C57CE1 /* LayoutGuide.swift */; };\n\t\t97D17C971F8E774400C57CE1 /* LayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C951F8E774400C57CE1 /* LayoutGuide.swift */; };\n\t\t97D17C981F8E774400C57CE1 /* LayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17C951F8E774400C57CE1 /* LayoutGuide.swift */; };\n\t\t97D17CAA1F8E779300C57CE1 /* LayoutGuideProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA91F8E779300C57CE1 /* LayoutGuideProxy.swift */; };\n\t\t97D17CAB1F8E779300C57CE1 /* LayoutGuideProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA91F8E779300C57CE1 /* LayoutGuideProxy.swift */; };\n\t\t97D17CAC1F8E779300C57CE1 /* LayoutGuideProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D17CA91F8E779300C57CE1 /* LayoutGuideProxy.swift */; };\n\t\t97E7F0A91F8D598A004857CE /* ViewProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E7F0A81F8D598A004857CE /* ViewProxy.swift */; };\n\t\t97F50E521F962CF300C6DCF5 /* LayoutProxy+TypeErasure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97F50E511F962CF300C6DCF5 /* LayoutProxy+TypeErasure.swift */; };\n\t\t97F50E541F9633AA00C6DCF5 /* ViewLayoutGuideSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97F50E531F9633AA00C6DCF5 /* ViewLayoutGuideSpec.swift */; };\n\t\t97F50E551F9633AA00C6DCF5 /* ViewLayoutGuideSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97F50E531F9633AA00C6DCF5 /* ViewLayoutGuideSpec.swift */; };\n\t\t97F50E561F96401200C6DCF5 /* LayoutProxy+TypeErasure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97F50E511F962CF300C6DCF5 /* LayoutProxy+TypeErasure.swift */; };\n\t\t97F50E571F96401300C6DCF5 /* LayoutProxy+TypeErasure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97F50E511F962CF300C6DCF5 /* LayoutProxy+TypeErasure.swift */; };\n\t\tA75B6143FF12C54FF3223B47 /* Pods_TestPods_Cartography_tvOS_tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0827A83361EACF1E6062607E /* Pods_TestPods_Cartography_tvOS_tests.framework */; };\n\t\tD63BD7B82089B6FA00061239 /* LayoutItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE85314F1F9363DC003EC021 /* LayoutItem.swift */; };\n\t\tEE8531501F936462003EC021 /* LayoutItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE85314F1F9363DC003EC021 /* LayoutItem.swift */; };\n\t\tEE8531531F94131B003EC021 /* LayoutItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE85314F1F9363DC003EC021 /* LayoutItem.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t54C96A1E195063CD000CDD27 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 54C96A08195063CD000CDD27 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 54C96A10195063CD000CDD27;\n\t\t\tremoteInfo = Cartography;\n\t\t};\n\t\t54C96A33195067C1000CDD27 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 54C96A08195063CD000CDD27 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 54C96A10195063CD000CDD27;\n\t\t\tremoteInfo = Cartography;\n\t\t};\n\t\t54F6A844195C20C200313D24 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 54C96A08195063CD000CDD27 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 54F6A837195C20C100313D24;\n\t\t\tremoteInfo = \"Cartography-Mac\";\n\t\t};\n\t\t632F09281BF1E7FC002431A3 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 54C96A08195063CD000CDD27 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 632F09091BF1E7AA002431A3;\n\t\t\tremoteInfo = \"Cartography-tvOS\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t5435B8C41AD8614F00B805F1 /* Copy Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tname = \"Copy Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t5435B8C71AD8616000B805F1 /* Copy Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tname = \"Copy Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t007A7C5A4CF651CD9D550547 /* Pods-TestPods-Cartography-iOS-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-TestPods-Cartography-iOS-Tests.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-TestPods-Cartography-iOS-Tests/Pods-TestPods-Cartography-iOS-Tests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t0827A83361EACF1E6062607E /* Pods_TestPods_Cartography_tvOS_tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TestPods_Cartography_tvOS_tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t0C63D81EB2304A489BE29E6A /* Pods_TestPods_Cartography_iOS_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TestPods_Cartography_iOS_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t125531F897589C40A2E6968E /* Pods-TestPods-Cartography-iOS-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-TestPods-Cartography-iOS-Tests.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-TestPods-Cartography-iOS-Tests/Pods-TestPods-Cartography-iOS-Tests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t1B319C612162740100DD91D4 /* ViewProxyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewProxyTests.swift; sourceTree = \"<group>\"; };\n\t\t3C61A3F684FD20F5E1B1F8D1 /* Pods-TestPods-Cartography-Mac-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-TestPods-Cartography-Mac-Tests.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-TestPods-Cartography-Mac-Tests/Pods-TestPods-Cartography-Mac-Tests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t45CEEFB5D80398843533851A /* Pods-TestPods-Cartography-tvOS-tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-TestPods-Cartography-tvOS-tests.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-TestPods-Cartography-tvOS-tests/Pods-TestPods-Cartography-tvOS-tests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t5435B8B41AD8610300B805F1 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Nimble.framework; sourceTree = \"<group>\"; };\n\t\t5435B8B51AD8610300B805F1 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Quick.framework; sourceTree = \"<group>\"; };\n\t\t5435B8B81AD8610300B805F1 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Nimble.framework; sourceTree = \"<group>\"; };\n\t\t5435B8B91AD8610300B805F1 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Quick.framework; sourceTree = \"<group>\"; };\n\t\t545F858C195322EA00791F75 /* Edges.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Edges.swift; sourceTree = \"<group>\"; };\n\t\t545F858E1953235F00791F75 /* EdgesSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = EdgesSpec.swift; sourceTree = \"<group>\"; };\n\t\t5467916E1A93962000DC9BF7 /* Distribute.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Distribute.swift; sourceTree = \"<group>\"; };\n\t\t546E9E881950A29300B16707 /* LayoutProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutProxy.swift; sourceTree = \"<group>\"; };\n\t\t546E9E8C1950A31100B16707 /* Dimension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Dimension.swift; sourceTree = \"<group>\"; };\n\t\t546E9E8E1950A33700B16707 /* Coefficients.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Coefficients.swift; sourceTree = \"<group>\"; };\n\t\t546E9E901950A76C00B16707 /* Edge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Edge.swift; sourceTree = \"<group>\"; };\n\t\t546E9E941950A97F00B16707 /* Expression.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Expression.swift; sourceTree = \"<group>\"; };\n\t\t547BC85419E2DD06007BEE9E /* Context.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Context.swift; sourceTree = \"<group>\"; };\n\t\t547BC85619E2EB9B007BEE9E /* Constraint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constraint.swift; sourceTree = \"<group>\"; };\n\t\t54B093941A715E52008A1102 /* ConstraintGroup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConstraintGroup.swift; sourceTree = \"<group>\"; };\n\t\t54B093961A7165F2008A1102 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = \"<group>\"; };\n\t\t54BF29AF1A9348B30066ED10 /* Align.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Align.swift; sourceTree = \"<group>\"; };\n\t\t54C96A11195063CD000CDD27 /* Cartography.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Cartography.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t54C96A15195063CD000CDD27 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t54C96A16195063CD000CDD27 /* Cartography.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Cartography.h; sourceTree = \"<group>\"; };\n\t\t54C96A1C195063CD000CDD27 /* Cartography-iOS-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"Cartography-iOS-Tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t54C96A23195063CD000CDD27 /* DimensionSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = DimensionSpec.swift; sourceTree = \"<group>\"; };\n\t\t54C96A2F195064A6000CDD27 /* Property.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Property.swift; sourceTree = \"<group>\"; };\n\t\t54DF9F3219DAD8DA00EE3609 /* Constrain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constrain.swift; sourceTree = \"<group>\"; };\n\t\t54F6A838195C20C100313D24 /* Cartography.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Cartography.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t54F6A842195C20C200313D24 /* Cartography-Mac-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"Cartography-Mac-Tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t54F6A863195C217800313D24 /* View.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = View.swift; sourceTree = \"<group>\"; };\n\t\t54FA3A351950FD320094B82A /* Priority.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Priority.swift; sourceTree = \"<group>\"; };\n\t\t54FA3A3B1951A2B60094B82A /* Point.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Point.swift; sourceTree = \"<group>\"; };\n\t\t54FA3A3F1951A41B0094B82A /* Compound.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Compound.swift; sourceTree = \"<group>\"; };\n\t\t54FA3A411951A8070094B82A /* Size.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Size.swift; sourceTree = \"<group>\"; };\n\t\t632F090A1BF1E7AA002431A3 /* Cartography.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Cartography.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t632F09221BF1E7FC002431A3 /* Cartography-tvOS-tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"Cartography-tvOS-tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t646D273E5E982865688DF028 /* Pods_Cartography_tvOS_tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Cartography_tvOS_tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t66AF7EED1CABEABC00249E27 /* LayoutSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutSupport.swift; sourceTree = \"<group>\"; };\n\t\t690415756227F5789FBF9D77 /* Pods-TestPods-Cartography-Mac-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-TestPods-Cartography-Mac-Tests.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-TestPods-Cartography-Mac-Tests/Pods-TestPods-Cartography-Mac-Tests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t7BBFE24E2FED786C571966AE /* Pods_Cartography_Mac_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Cartography_Mac_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t7D3596ED3F137EB677E57692 /* Pods-TestPods-Cartography-tvOS-tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-TestPods-Cartography-tvOS-tests.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-TestPods-Cartography-tvOS-tests/Pods-TestPods-Cartography-tvOS-tests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t825625A8CCFA9B2B102BDDDB /* Pods_TestPods_Cartography_Mac_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TestPods_Cartography_Mac_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t977C36811F9FAC890057A057 /* AutoresizingMaskLayoutProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoresizingMaskLayoutProxy.swift; sourceTree = \"<group>\"; };\n\t\t979F29C91F94DC6B00257363 /* LayoutGuideSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutGuideSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17C8F1F8E73F200C57CE1 /* LayoutSupportProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutSupportProxy.swift; sourceTree = \"<group>\"; };\n\t\t97D17C951F8E774400C57CE1 /* LayoutGuide.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutGuide.swift; sourceTree = \"<group>\"; };\n\t\t97D17C9A1F8E774700C57CE1 /* EdgeSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EdgeSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17C9B1F8E774700C57CE1 /* AlignSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlignSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17C9C1F8E774700C57CE1 /* LayoutSupportSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutSupportSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17C9D1F8E774700C57CE1 /* PrioritySpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrioritySpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17C9E1F8E774700C57CE1 /* TestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestView.swift; sourceTree = \"<group>\"; };\n\t\t97D17C9F1F8E774700C57CE1 /* Matchers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Matchers.swift; sourceTree = \"<group>\"; };\n\t\t97D17CA01F8E774700C57CE1 /* DistributeSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DistributeSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17CA11F8E774700C57CE1 /* PointSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PointSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17CA31F8E774700C57CE1 /* ViewHierarchySpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewHierarchySpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17CA41F8E774700C57CE1 /* DimensionSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DimensionSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17CA51F8E774700C57CE1 /* MemoryLeakSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoryLeakSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17CA61F8E774700C57CE1 /* ConstraintGroupSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstraintGroupSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17CA81F8E774700C57CE1 /* SizeSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SizeSpec.swift; sourceTree = \"<group>\"; };\n\t\t97D17CA91F8E779300C57CE1 /* LayoutGuideProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutGuideProxy.swift; sourceTree = \"<group>\"; };\n\t\t97E7F0A81F8D598A004857CE /* ViewProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewProxy.swift; sourceTree = \"<group>\"; };\n\t\t97F50E511F962CF300C6DCF5 /* LayoutProxy+TypeErasure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"LayoutProxy+TypeErasure.swift\"; sourceTree = \"<group>\"; };\n\t\t97F50E531F9633AA00C6DCF5 /* ViewLayoutGuideSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewLayoutGuideSpec.swift; sourceTree = \"<group>\"; };\n\t\tEE85314F1F9363DC003EC021 /* LayoutItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutItem.swift; sourceTree = \"<group>\"; };\n\t\tEEDD4098FF7503B1F9188F10 /* Pods_Cartography_iOS_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Cartography_iOS_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t54C96A0D195063CD000CDD27 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54C96A19195063CD000CDD27 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t54C96A1D195063CD000CDD27 /* Cartography.framework in Frameworks */,\n\t\t\t\t5435B8BF1AD8612C00B805F1 /* Nimble.framework in Frameworks */,\n\t\t\t\t5435B8C01AD8612C00B805F1 /* Quick.framework in Frameworks */,\n\t\t\t\t40F7238205F9E56862357198 /* Pods_TestPods_Cartography_iOS_Tests.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54F6A834195C20C100313D24 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54F6A83F195C20C200313D24 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t54F6A843195C20C200313D24 /* Cartography.framework in Frameworks */,\n\t\t\t\t5435B8C11AD8613500B805F1 /* Nimble.framework in Frameworks */,\n\t\t\t\t5435B8C21AD8613500B805F1 /* Quick.framework in Frameworks */,\n\t\t\t\t09F7751A581957EA262BC6A4 /* Pods_TestPods_Cartography_Mac_Tests.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t632F09061BF1E7AA002431A3 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t632F091F1BF1E7FC002431A3 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t632F09271BF1E7FC002431A3 /* Cartography.framework in Frameworks */,\n\t\t\t\tA75B6143FF12C54FF3223B47 /* Pods_TestPods_Cartography_tvOS_tests.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t2F12B8E5120CB9E4A9CE0B7F /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t690415756227F5789FBF9D77 /* Pods-TestPods-Cartography-Mac-Tests.release.xcconfig */,\n\t\t\t\t007A7C5A4CF651CD9D550547 /* Pods-TestPods-Cartography-iOS-Tests.debug.xcconfig */,\n\t\t\t\t125531F897589C40A2E6968E /* Pods-TestPods-Cartography-iOS-Tests.release.xcconfig */,\n\t\t\t\t45CEEFB5D80398843533851A /* Pods-TestPods-Cartography-tvOS-tests.debug.xcconfig */,\n\t\t\t\t7D3596ED3F137EB677E57692 /* Pods-TestPods-Cartography-tvOS-tests.release.xcconfig */,\n\t\t\t\t3C61A3F684FD20F5E1B1F8D1 /* Pods-TestPods-Cartography-Mac-Tests.debug.xcconfig */,\n\t\t\t);\n\t\t\tname = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t5435B8B21AD8610300B805F1 /* iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t5435B8B41AD8610300B805F1 /* Nimble.framework */,\n\t\t\t\t5435B8B51AD8610300B805F1 /* Quick.framework */,\n\t\t\t);\n\t\t\tname = iOS;\n\t\t\tpath = Carthage/Build/iOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t5435B8B61AD8610300B805F1 /* Mac */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t5435B8B81AD8610300B805F1 /* Nimble.framework */,\n\t\t\t\t5435B8B91AD8610300B805F1 /* Quick.framework */,\n\t\t\t);\n\t\t\tname = Mac;\n\t\t\tpath = Carthage/Build/Mac;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t5435B8BA1AD8610700B805F1 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t632F09041BF1E771002431A3 /* tvOS */,\n\t\t\t\t5435B8B21AD8610300B805F1 /* iOS */,\n\t\t\t\t5435B8B61AD8610300B805F1 /* Mac */,\n\t\t\t\t7BBFE24E2FED786C571966AE /* Pods_Cartography_Mac_Tests.framework */,\n\t\t\t\tEEDD4098FF7503B1F9188F10 /* Pods_Cartography_iOS_Tests.framework */,\n\t\t\t\t646D273E5E982865688DF028 /* Pods_Cartography_tvOS_tests.framework */,\n\t\t\t\t825625A8CCFA9B2B102BDDDB /* Pods_TestPods_Cartography_Mac_Tests.framework */,\n\t\t\t\t0C63D81EB2304A489BE29E6A /* Pods_TestPods_Cartography_iOS_Tests.framework */,\n\t\t\t\t0827A83361EACF1E6062607E /* Pods_TestPods_Cartography_tvOS_tests.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t54C96A07195063CD000CDD27 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t54C96A13195063CD000CDD27 /* Cartography */,\n\t\t\t\t5435B8BA1AD8610700B805F1 /* Frameworks */,\n\t\t\t\t54C96A12195063CD000CDD27 /* Products */,\n\t\t\t\t2F12B8E5120CB9E4A9CE0B7F /* Pods */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t54C96A12195063CD000CDD27 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t54C96A11195063CD000CDD27 /* Cartography.framework */,\n\t\t\t\t54C96A1C195063CD000CDD27 /* Cartography-iOS-Tests.xctest */,\n\t\t\t\t54F6A838195C20C100313D24 /* Cartography.framework */,\n\t\t\t\t54F6A842195C20C200313D24 /* Cartography-Mac-Tests.xctest */,\n\t\t\t\t632F090A1BF1E7AA002431A3 /* Cartography.framework */,\n\t\t\t\t632F09221BF1E7FC002431A3 /* Cartography-tvOS-tests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t54C96A13195063CD000CDD27 /* Cartography */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t54C96A16195063CD000CDD27 /* Cartography.h */,\n\t\t\t\t54BF29AF1A9348B30066ED10 /* Align.swift */,\n\t\t\t\t546E9E8E1950A33700B16707 /* Coefficients.swift */,\n\t\t\t\t54FA3A3F1951A41B0094B82A /* Compound.swift */,\n\t\t\t\t54DF9F3219DAD8DA00EE3609 /* Constrain.swift */,\n\t\t\t\t547BC85619E2EB9B007BEE9E /* Constraint.swift */,\n\t\t\t\t54B093941A715E52008A1102 /* ConstraintGroup.swift */,\n\t\t\t\t547BC85419E2DD06007BEE9E /* Context.swift */,\n\t\t\t\t546E9E8C1950A31100B16707 /* Dimension.swift */,\n\t\t\t\t5467916E1A93962000DC9BF7 /* Distribute.swift */,\n\t\t\t\t546E9E901950A76C00B16707 /* Edge.swift */,\n\t\t\t\t545F858C195322EA00791F75 /* Edges.swift */,\n\t\t\t\t546E9E941950A97F00B16707 /* Expression.swift */,\n\t\t\t\t54B093961A7165F2008A1102 /* Extensions.swift */,\n\t\t\t\tEE85314F1F9363DC003EC021 /* LayoutItem.swift */,\n\t\t\t\t546E9E881950A29300B16707 /* LayoutProxy.swift */,\n\t\t\t\t97F50E511F962CF300C6DCF5 /* LayoutProxy+TypeErasure.swift */,\n\t\t\t\t977C36811F9FAC890057A057 /* AutoresizingMaskLayoutProxy.swift */,\n\t\t\t\t54FA3A3B1951A2B60094B82A /* Point.swift */,\n\t\t\t\t54FA3A351950FD320094B82A /* Priority.swift */,\n\t\t\t\t54C96A2F195064A6000CDD27 /* Property.swift */,\n\t\t\t\t54FA3A411951A8070094B82A /* Size.swift */,\n\t\t\t\t54F6A863195C217800313D24 /* View.swift */,\n\t\t\t\t97E7F0A81F8D598A004857CE /* ViewProxy.swift */,\n\t\t\t\t66AF7EED1CABEABC00249E27 /* LayoutSupport.swift */,\n\t\t\t\t97D17C8F1F8E73F200C57CE1 /* LayoutSupportProxy.swift */,\n\t\t\t\t97D17C951F8E774400C57CE1 /* LayoutGuide.swift */,\n\t\t\t\t97D17CA91F8E779300C57CE1 /* LayoutGuideProxy.swift */,\n\t\t\t\t97D17C991F8E774700C57CE1 /* CartographyTests */,\n\t\t\t\t54C96A14195063CD000CDD27 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = Cartography;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t54C96A14195063CD000CDD27 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t54C96A15195063CD000CDD27 /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t632F09041BF1E771002431A3 /* tvOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = tvOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97D17C991F8E774700C57CE1 /* CartographyTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t97D17C9A1F8E774700C57CE1 /* EdgeSpec.swift */,\n\t\t\t\t545F858E1953235F00791F75 /* EdgesSpec.swift */,\n\t\t\t\t97D17C9B1F8E774700C57CE1 /* AlignSpec.swift */,\n\t\t\t\t97D17C9C1F8E774700C57CE1 /* LayoutSupportSpec.swift */,\n\t\t\t\t979F29C91F94DC6B00257363 /* LayoutGuideSpec.swift */,\n\t\t\t\t97D17C9D1F8E774700C57CE1 /* PrioritySpec.swift */,\n\t\t\t\t54C96A23195063CD000CDD27 /* DimensionSpec.swift */,\n\t\t\t\t97D17C9E1F8E774700C57CE1 /* TestView.swift */,\n\t\t\t\t97D17C9F1F8E774700C57CE1 /* Matchers.swift */,\n\t\t\t\t97D17CA01F8E774700C57CE1 /* DistributeSpec.swift */,\n\t\t\t\t97D17CA11F8E774700C57CE1 /* PointSpec.swift */,\n\t\t\t\t97D17CA31F8E774700C57CE1 /* ViewHierarchySpec.swift */,\n\t\t\t\t97D17CA41F8E774700C57CE1 /* DimensionSpec.swift */,\n\t\t\t\t97D17CA51F8E774700C57CE1 /* MemoryLeakSpec.swift */,\n\t\t\t\t97D17CA61F8E774700C57CE1 /* ConstraintGroupSpec.swift */,\n\t\t\t\t97D17CA81F8E774700C57CE1 /* SizeSpec.swift */,\n\t\t\t\t97F50E531F9633AA00C6DCF5 /* ViewLayoutGuideSpec.swift */,\n\t\t\t\t1B319C612162740100DD91D4 /* ViewProxyTests.swift */,\n\t\t\t);\n\t\t\tpath = CartographyTests;\n\t\t\tsourceTree = SOURCE_ROOT;\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t54C96A0E195063CD000CDD27 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t54C96A17195063CD000CDD27 /* Cartography.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54F6A835195C20C100313D24 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t54F6A851195C213A00313D24 /* Cartography.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t632F09071BF1E7AA002431A3 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t632F09341BF1F0DD002431A3 /* Cartography.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t54C96A10195063CD000CDD27 /* Cartography-iOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 54C96A27195063CD000CDD27 /* Build configuration list for PBXNativeTarget \"Cartography-iOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t54C96A0E195063CD000CDD27 /* Headers */,\n\t\t\t\t54C96A0C195063CD000CDD27 /* Sources */,\n\t\t\t\t54C96A0D195063CD000CDD27 /* Frameworks */,\n\t\t\t\t54C96A0F195063CD000CDD27 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Cartography-iOS\";\n\t\t\tproductName = Cartography;\n\t\t\tproductReference = 54C96A11195063CD000CDD27 /* Cartography.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t54C96A1B195063CD000CDD27 /* Cartography-iOS-Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 54C96A2A195063CD000CDD27 /* Build configuration list for PBXNativeTarget \"Cartography-iOS-Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t24028C048E277759E25AE786 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t54C96A18195063CD000CDD27 /* Sources */,\n\t\t\t\t54C96A19195063CD000CDD27 /* Frameworks */,\n\t\t\t\t54C96A1A195063CD000CDD27 /* Resources */,\n\t\t\t\t5435B8C71AD8616000B805F1 /* Copy Frameworks */,\n\t\t\t\tB6F7D337FFD9973F4083FCD3 /* [CP] Embed Pods Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t54C96A1F195063CD000CDD27 /* PBXTargetDependency */,\n\t\t\t\t54C96A34195067C1000CDD27 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"Cartography-iOS-Tests\";\n\t\t\tproductName = CartographyTests;\n\t\t\tproductReference = 54C96A1C195063CD000CDD27 /* Cartography-iOS-Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t54F6A837195C20C100313D24 /* Cartography-Mac */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 54F6A84B195C20C200313D24 /* Build configuration list for PBXNativeTarget \"Cartography-Mac\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t54F6A835195C20C100313D24 /* Headers */,\n\t\t\t\t54F6A833195C20C100313D24 /* Sources */,\n\t\t\t\t54F6A834195C20C100313D24 /* Frameworks */,\n\t\t\t\t54F6A836195C20C100313D24 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Cartography-Mac\";\n\t\t\tproductName = \"Cartography-Mac\";\n\t\t\tproductReference = 54F6A838195C20C100313D24 /* Cartography.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t54F6A841195C20C200313D24 /* Cartography-Mac-Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 54F6A84E195C20C200313D24 /* Build configuration list for PBXNativeTarget \"Cartography-Mac-Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tDA4D07B720B9F2E815A2DE6C /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t54F6A83E195C20C200313D24 /* Sources */,\n\t\t\t\t54F6A83F195C20C200313D24 /* Frameworks */,\n\t\t\t\t54F6A840195C20C200313D24 /* Resources */,\n\t\t\t\t5435B8C41AD8614F00B805F1 /* Copy Frameworks */,\n\t\t\t\t28E8257CE249F34272E74DA2 /* [CP] Embed Pods Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t54F6A845195C20C200313D24 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"Cartography-Mac-Tests\";\n\t\t\tproductName = \"Cartography-MacTests\";\n\t\t\tproductReference = 54F6A842195C20C200313D24 /* Cartography-Mac-Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t632F09091BF1E7AA002431A3 /* Cartography-tvOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 632F090F1BF1E7AA002431A3 /* Build configuration list for PBXNativeTarget \"Cartography-tvOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t632F09071BF1E7AA002431A3 /* Headers */,\n\t\t\t\t632F09051BF1E7AA002431A3 /* Sources */,\n\t\t\t\t632F09061BF1E7AA002431A3 /* Frameworks */,\n\t\t\t\t632F09081BF1E7AA002431A3 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Cartography-tvOS\";\n\t\t\tproductName = \"Cartography-tvOS\";\n\t\t\tproductReference = 632F090A1BF1E7AA002431A3 /* Cartography.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t632F09211BF1E7FC002431A3 /* Cartography-tvOS-tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 632F092A1BF1E7FC002431A3 /* Build configuration list for PBXNativeTarget \"Cartography-tvOS-tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t23F8E3613FE66A444A4C94A1 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t632F091E1BF1E7FC002431A3 /* Sources */,\n\t\t\t\t632F091F1BF1E7FC002431A3 /* Frameworks */,\n\t\t\t\t632F09201BF1E7FC002431A3 /* Resources */,\n\t\t\t\t02D0EEC2C95F444E52A8D1D4 /* [CP] Embed Pods Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t632F09291BF1E7FC002431A3 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"Cartography-tvOS-tests\";\n\t\t\tproductName = \"Cartography-tvOS-tests\";\n\t\t\tproductReference = 632F09221BF1E7FC002431A3 /* Cartography-tvOS-tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t54C96A08195063CD000CDD27 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0710;\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tORGANIZATIONNAME = \"Robert Böhnke\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t54C96A10195063CD000CDD27 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.0;\n\t\t\t\t\t\tLastSwiftMigration = 0900;\n\t\t\t\t\t};\n\t\t\t\t\t54C96A1B195063CD000CDD27 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.0;\n\t\t\t\t\t\tLastSwiftMigration = 0900;\n\t\t\t\t\t\tTestTargetID = 54C96A10195063CD000CDD27;\n\t\t\t\t\t};\n\t\t\t\t\t54F6A837195C20C100313D24 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.0;\n\t\t\t\t\t\tLastSwiftMigration = 0900;\n\t\t\t\t\t};\n\t\t\t\t\t54F6A841195C20C200313D24 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.0;\n\t\t\t\t\t\tLastSwiftMigration = 0900;\n\t\t\t\t\t\tTestTargetID = 54F6A837195C20C100313D24;\n\t\t\t\t\t};\n\t\t\t\t\t632F09091BF1E7AA002431A3 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.1;\n\t\t\t\t\t\tLastSwiftMigration = 0900;\n\t\t\t\t\t};\n\t\t\t\t\t632F09211BF1E7FC002431A3 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.1;\n\t\t\t\t\t\tLastSwiftMigration = 0900;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 54C96A0B195063CD000CDD27 /* Build configuration list for PBXProject \"Cartography\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 54C96A07195063CD000CDD27;\n\t\t\tproductRefGroup = 54C96A12195063CD000CDD27 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t54C96A10195063CD000CDD27 /* Cartography-iOS */,\n\t\t\t\t54C96A1B195063CD000CDD27 /* Cartography-iOS-Tests */,\n\t\t\t\t54F6A837195C20C100313D24 /* Cartography-Mac */,\n\t\t\t\t54F6A841195C20C200313D24 /* Cartography-Mac-Tests */,\n\t\t\t\t632F09091BF1E7AA002431A3 /* Cartography-tvOS */,\n\t\t\t\t632F09211BF1E7FC002431A3 /* Cartography-tvOS-tests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t54C96A0F195063CD000CDD27 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54C96A1A195063CD000CDD27 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54F6A836195C20C100313D24 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54F6A840195C20C200313D24 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t632F09081BF1E7AA002431A3 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t632F09201BF1E7FC002431A3 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t02D0EEC2C95F444E52A8D1D4 /* [CP] Embed Pods Frameworks */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_ROOT}/Target Support Files/Pods-TestPods-Cartography-tvOS-tests/Pods-TestPods-Cartography-tvOS-tests-frameworks.sh\",\n\t\t\t\t\"${BUILT_PRODUCTS_DIR}/Nimble-tvOS/Nimble.framework\",\n\t\t\t\t\"${BUILT_PRODUCTS_DIR}/Quick-tvOS/Quick.framework\",\n\t\t\t);\n\t\t\tname = \"[CP] Embed Pods Frameworks\";\n\t\t\toutputPaths = (\n\t\t\t\t\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework\",\n\t\t\t\t\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${PODS_ROOT}/Target Support Files/Pods-TestPods-Cartography-tvOS-tests/Pods-TestPods-Cartography-tvOS-tests-frameworks.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t23F8E3613FE66A444A4C94A1 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-TestPods-Cartography-tvOS-tests-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t24028C048E277759E25AE786 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-TestPods-Cartography-iOS-Tests-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t28E8257CE249F34272E74DA2 /* [CP] Embed Pods Frameworks */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_ROOT}/Target Support Files/Pods-TestPods-Cartography-Mac-Tests/Pods-TestPods-Cartography-Mac-Tests-frameworks.sh\",\n\t\t\t\t\"${BUILT_PRODUCTS_DIR}/Nimble-macOS/Nimble.framework\",\n\t\t\t\t\"${BUILT_PRODUCTS_DIR}/Quick-macOS/Quick.framework\",\n\t\t\t);\n\t\t\tname = \"[CP] Embed Pods Frameworks\";\n\t\t\toutputPaths = (\n\t\t\t\t\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework\",\n\t\t\t\t\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${PODS_ROOT}/Target Support Files/Pods-TestPods-Cartography-Mac-Tests/Pods-TestPods-Cartography-Mac-Tests-frameworks.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tB6F7D337FFD9973F4083FCD3 /* [CP] Embed Pods Frameworks */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_ROOT}/Target Support Files/Pods-TestPods-Cartography-iOS-Tests/Pods-TestPods-Cartography-iOS-Tests-frameworks.sh\",\n\t\t\t\t\"${BUILT_PRODUCTS_DIR}/Nimble-iOS/Nimble.framework\",\n\t\t\t\t\"${BUILT_PRODUCTS_DIR}/Quick-iOS/Quick.framework\",\n\t\t\t);\n\t\t\tname = \"[CP] Embed Pods Frameworks\";\n\t\t\toutputPaths = (\n\t\t\t\t\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework\",\n\t\t\t\t\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${PODS_ROOT}/Target Support Files/Pods-TestPods-Cartography-iOS-Tests/Pods-TestPods-Cartography-iOS-Tests-frameworks.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tDA4D07B720B9F2E815A2DE6C /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-TestPods-Cartography-Mac-Tests-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t54C96A0C195063CD000CDD27 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t54C96A30195064A6000CDD27 /* Property.swift in Sources */,\n\t\t\t\t54B093971A7165F2008A1102 /* Extensions.swift in Sources */,\n\t\t\t\t546E9E891950A29300B16707 /* LayoutProxy.swift in Sources */,\n\t\t\t\t54FA3A361950FD320094B82A /* Priority.swift in Sources */,\n\t\t\t\t97D17C961F8E774400C57CE1 /* LayoutGuide.swift in Sources */,\n\t\t\t\t547BC85719E2EB9B007BEE9E /* Constraint.swift in Sources */,\n\t\t\t\t547BC85519E2DD06007BEE9E /* Context.swift in Sources */,\n\t\t\t\t97F50E521F962CF300C6DCF5 /* LayoutProxy+TypeErasure.swift in Sources */,\n\t\t\t\tEE8531501F936462003EC021 /* LayoutItem.swift in Sources */,\n\t\t\t\t977C36821F9FAC890057A057 /* AutoresizingMaskLayoutProxy.swift in Sources */,\n\t\t\t\t545F858D195322EA00791F75 /* Edges.swift in Sources */,\n\t\t\t\t97E7F0A91F8D598A004857CE /* ViewProxy.swift in Sources */,\n\t\t\t\t546E9E8D1950A31100B16707 /* Dimension.swift in Sources */,\n\t\t\t\t54DF9F3319DAD8DA00EE3609 /* Constrain.swift in Sources */,\n\t\t\t\t5467916F1A93962000DC9BF7 /* Distribute.swift in Sources */,\n\t\t\t\t546E9E911950A76C00B16707 /* Edge.swift in Sources */,\n\t\t\t\t54FA3A421951A8070094B82A /* Size.swift in Sources */,\n\t\t\t\t54FA3A3C1951A2B60094B82A /* Point.swift in Sources */,\n\t\t\t\t97D17C901F8E73F200C57CE1 /* LayoutSupportProxy.swift in Sources */,\n\t\t\t\t54F6A864195C217800313D24 /* View.swift in Sources */,\n\t\t\t\t546E9E8F1950A33700B16707 /* Coefficients.swift in Sources */,\n\t\t\t\t54FA3A401951A41B0094B82A /* Compound.swift in Sources */,\n\t\t\t\t54B093951A715E52008A1102 /* ConstraintGroup.swift in Sources */,\n\t\t\t\t66AF7EEE1CABEABC00249E27 /* LayoutSupport.swift in Sources */,\n\t\t\t\t54BF29B01A9348B30066ED10 /* Align.swift in Sources */,\n\t\t\t\t546E9E951950A97F00B16707 /* Expression.swift in Sources */,\n\t\t\t\t97D17CAA1F8E779300C57CE1 /* LayoutGuideProxy.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54C96A18195063CD000CDD27 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t979558F61F97017D0096BBEA /* LayoutSupportSpec.swift in Sources */,\n\t\t\t\t97F50E541F9633AA00C6DCF5 /* ViewLayoutGuideSpec.swift in Sources */,\n\t\t\t\t1B319C622162740100DD91D4 /* ViewProxyTests.swift in Sources */,\n\t\t\t\t9795590B1F9701CD0096BBEA /* ConstraintGroupSpec.swift in Sources */,\n\t\t\t\t979559081F9701C90096BBEA /* MemoryLeakSpec.swift in Sources */,\n\t\t\t\t979558FC1F97019E0096BBEA /* Matchers.swift in Sources */,\n\t\t\t\t979559021F9701B10096BBEA /* PointSpec.swift in Sources */,\n\t\t\t\t979558F81F9701850096BBEA /* PrioritySpec.swift in Sources */,\n\t\t\t\t979558EC1F97015E0096BBEA /* TestView.swift in Sources */,\n\t\t\t\t979558F31F9701730096BBEA /* AlignSpec.swift in Sources */,\n\t\t\t\t979559051F9701BB0096BBEA /* ViewHierarchySpec.swift in Sources */,\n\t\t\t\t979558FF1F9701AC0096BBEA /* DistributeSpec.swift in Sources */,\n\t\t\t\t545F858F1953235F00791F75 /* EdgesSpec.swift in Sources */,\n\t\t\t\t546E9EA21950B33D00B16707 /* DimensionSpec.swift in Sources */,\n\t\t\t\t979F29CB1F94DCA800257363 /* LayoutGuideSpec.swift in Sources */,\n\t\t\t\t979558EF1F9701660096BBEA /* EdgeSpec.swift in Sources */,\n\t\t\t\t9795590E1F9701D20096BBEA /* SizeSpec.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54F6A833195C20C100313D24 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t54F6A85C195C213A00313D24 /* Size.swift in Sources */,\n\t\t\t\t9722953F1F950A3000FA4AF9 /* LayoutSupport.swift in Sources */,\n\t\t\t\t54F6A85B195C213A00313D24 /* Property.swift in Sources */,\n\t\t\t\t549B47B71A581992002498C7 /* Constraint.swift in Sources */,\n\t\t\t\t54F6A856195C213A00313D24 /* Edges.swift in Sources */,\n\t\t\t\t54F6A858195C213A00313D24 /* LayoutProxy.swift in Sources */,\n\t\t\t\t54BF29B51A9350170066ED10 /* Align.swift in Sources */,\n\t\t\t\t97F50E561F96401200C6DCF5 /* LayoutProxy+TypeErasure.swift in Sources */,\n\t\t\t\t9722953C1F950A1E00FA4AF9 /* ViewProxy.swift in Sources */,\n\t\t\t\t977C36831F9FC2900057A057 /* AutoresizingMaskLayoutProxy.swift in Sources */,\n\t\t\t\t97D17CAB1F8E779300C57CE1 /* LayoutGuideProxy.swift in Sources */,\n\t\t\t\t543B37FA1AC82FBF00367D8B /* Edge.swift in Sources */,\n\t\t\t\tEE8531531F94131B003EC021 /* LayoutItem.swift in Sources */,\n\t\t\t\t54F6A853195C213A00313D24 /* Compound.swift in Sources */,\n\t\t\t\t54B093991A716A2E008A1102 /* Extensions.swift in Sources */,\n\t\t\t\t97D17C971F8E774400C57CE1 /* LayoutGuide.swift in Sources */,\n\t\t\t\t54F6A859195C213A00313D24 /* Priority.swift in Sources */,\n\t\t\t\t54F6A852195C213A00313D24 /* Coefficients.swift in Sources */,\n\t\t\t\t54143E4E1A93991D00208182 /* Distribute.swift in Sources */,\n\t\t\t\t9722953E1F950A2E00FA4AF9 /* LayoutSupportProxy.swift in Sources */,\n\t\t\t\t54F6A85A195C213A00313D24 /* Point.swift in Sources */,\n\t\t\t\t54B093981A716A2A008A1102 /* ConstraintGroup.swift in Sources */,\n\t\t\t\t54F6A865195C226700313D24 /* View.swift in Sources */,\n\t\t\t\t54DF9F3419DAD8DD00EE3609 /* Constrain.swift in Sources */,\n\t\t\t\t549B47B61A58198B002498C7 /* Context.swift in Sources */,\n\t\t\t\t54F6A854195C213A00313D24 /* Dimension.swift in Sources */,\n\t\t\t\t54F6A857195C213A00313D24 /* Expression.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54F6A83E195C20C200313D24 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t979558FE1F9701A70096BBEA /* Matchers.swift in Sources */,\n\t\t\t\t979559001F9701AD0096BBEA /* DistributeSpec.swift in Sources */,\n\t\t\t\t9795590F1F9701D30096BBEA /* SizeSpec.swift in Sources */,\n\t\t\t\t979558F41F9701740096BBEA /* AlignSpec.swift in Sources */,\n\t\t\t\t979559031F9701B20096BBEA /* PointSpec.swift in Sources */,\n\t\t\t\t979558FB1F97018C0096BBEA /* DimensionSpec.swift in Sources */,\n\t\t\t\t9795590C1F9701CE0096BBEA /* ConstraintGroupSpec.swift in Sources */,\n\t\t\t\t979559061F9701BC0096BBEA /* ViewHierarchySpec.swift in Sources */,\n\t\t\t\t979558F91F9701860096BBEA /* PrioritySpec.swift in Sources */,\n\t\t\t\t97885B1E1FC4F7C800BB4E51 /* LayoutGuideSpec.swift in Sources */,\n\t\t\t\t979558F21F97016C0096BBEA /* EdgesSpec.swift in Sources */,\n\t\t\t\t979558ED1F97015E0096BBEA /* TestView.swift in Sources */,\n\t\t\t\t979559091F9701C90096BBEA /* MemoryLeakSpec.swift in Sources */,\n\t\t\t\t979558F01F9701670096BBEA /* EdgeSpec.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t632F09051BF1E7AA002431A3 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t977C36841F9FC2910057A057 /* AutoresizingMaskLayoutProxy.swift in Sources */,\n\t\t\t\t632F09351BF1F127002431A3 /* Align.swift in Sources */,\n\t\t\t\t9722953D1F950A1F00FA4AF9 /* ViewProxy.swift in Sources */,\n\t\t\t\t632F09361BF1F127002431A3 /* Coefficients.swift in Sources */,\n\t\t\t\t632F09371BF1F127002431A3 /* Compound.swift in Sources */,\n\t\t\t\t632F09381BF1F127002431A3 /* Constrain.swift in Sources */,\n\t\t\t\t632F09391BF1F127002431A3 /* Constraint.swift in Sources */,\n\t\t\t\t632F093A1BF1F127002431A3 /* ConstraintGroup.swift in Sources */,\n\t\t\t\t97D17C921F8E740B00C57CE1 /* LayoutSupportProxy.swift in Sources */,\n\t\t\t\t97F50E571F96401300C6DCF5 /* LayoutProxy+TypeErasure.swift in Sources */,\n\t\t\t\t97D17C981F8E774400C57CE1 /* LayoutGuide.swift in Sources */,\n\t\t\t\t632F093B1BF1F127002431A3 /* Context.swift in Sources */,\n\t\t\t\t97D17CAC1F8E779300C57CE1 /* LayoutGuideProxy.swift in Sources */,\n\t\t\t\tD63BD7B82089B6FA00061239 /* LayoutItem.swift in Sources */,\n\t\t\t\t632F093C1BF1F127002431A3 /* Dimension.swift in Sources */,\n\t\t\t\t632F093D1BF1F127002431A3 /* Distribute.swift in Sources */,\n\t\t\t\t632F093E1BF1F127002431A3 /* Edge.swift in Sources */,\n\t\t\t\t632F093F1BF1F127002431A3 /* Edges.swift in Sources */,\n\t\t\t\t632F09401BF1F127002431A3 /* Expression.swift in Sources */,\n\t\t\t\t632F09411BF1F127002431A3 /* Extensions.swift in Sources */,\n\t\t\t\t632F09421BF1F127002431A3 /* LayoutProxy.swift in Sources */,\n\t\t\t\t632F09431BF1F127002431A3 /* Point.swift in Sources */,\n\t\t\t\t632F09441BF1F127002431A3 /* Priority.swift in Sources */,\n\t\t\t\t632F09451BF1F127002431A3 /* Property.swift in Sources */,\n\t\t\t\t632F09461BF1F127002431A3 /* Size.swift in Sources */,\n\t\t\t\t4A3756C91D67445F0036190E /* LayoutSupport.swift in Sources */,\n\t\t\t\t632F09471BF1F127002431A3 /* View.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t632F091E1BF1E7FC002431A3 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t979558F71F97017F0096BBEA /* LayoutSupportSpec.swift in Sources */,\n\t\t\t\t97F50E551F9633AA00C6DCF5 /* ViewLayoutGuideSpec.swift in Sources */,\n\t\t\t\t9795590D1F9701CF0096BBEA /* ConstraintGroupSpec.swift in Sources */,\n\t\t\t\t9795590A1F9701CA0096BBEA /* MemoryLeakSpec.swift in Sources */,\n\t\t\t\t979558FD1F9701A10096BBEA /* Matchers.swift in Sources */,\n\t\t\t\t979559041F9701B30096BBEA /* PointSpec.swift in Sources */,\n\t\t\t\t979558FA1F9701870096BBEA /* PrioritySpec.swift in Sources */,\n\t\t\t\t979558EE1F97015F0096BBEA /* TestView.swift in Sources */,\n\t\t\t\t979558F51F9701750096BBEA /* AlignSpec.swift in Sources */,\n\t\t\t\t979559071F9701BD0096BBEA /* ViewHierarchySpec.swift in Sources */,\n\t\t\t\t979559011F9701AE0096BBEA /* DistributeSpec.swift in Sources */,\n\t\t\t\t632F094B1BF1F146002431A3 /* DimensionSpec.swift in Sources */,\n\t\t\t\t979558E41F9700B40096BBEA /* LayoutGuideSpec.swift in Sources */,\n\t\t\t\t632F094E1BF1F146002431A3 /* EdgesSpec.swift in Sources */,\n\t\t\t\t979558F11F9701670096BBEA /* EdgeSpec.swift in Sources */,\n\t\t\t\t979559101F9701D40096BBEA /* SizeSpec.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t54C96A1F195063CD000CDD27 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 54C96A10195063CD000CDD27 /* Cartography-iOS */;\n\t\t\ttargetProxy = 54C96A1E195063CD000CDD27 /* PBXContainerItemProxy */;\n\t\t};\n\t\t54C96A34195067C1000CDD27 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 54C96A10195063CD000CDD27 /* Cartography-iOS */;\n\t\t\ttargetProxy = 54C96A33195067C1000CDD27 /* PBXContainerItemProxy */;\n\t\t};\n\t\t54F6A845195C20C200313D24 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 54F6A837195C20C100313D24 /* Cartography-Mac */;\n\t\t\ttargetProxy = 54F6A844195C20C200313D24 /* PBXContainerItemProxy */;\n\t\t};\n\t\t632F09291BF1E7FC002431A3 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 632F09091BF1E7AA002431A3 /* Cartography-tvOS */;\n\t\t\ttargetProxy = 632F09281BF1E7FC002431A3 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t54C96A25195063CD000CDD27 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMETAL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t54C96A26195063CD000CDD27 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMETAL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t54C96A28195063CD000CDD27 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tBITCODE_GENERATION_MODE = marker;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = Cartography/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = Cartography;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t54C96A29195063CD000CDD27 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tBITCODE_GENERATION_MODE = bitcode;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = Cartography/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = Cartography;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t54C96A2B195063CD000CDD27 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 007A7C5A4CF651CD9D550547 /* Pods-TestPods-Cartography-iOS-Tests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/iOS\",\n\t\t\t\t);\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = CartographyTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMETAL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t54C96A2C195063CD000CDD27 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 125531F897589C40A2E6968E /* Pods-TestPods-Cartography-iOS-Tests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/iOS\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = CartographyTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMETAL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t54F6A84C195C20C200313D24 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Cartography/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tMETAL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = Cartography;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t54F6A84D195C20C200313D24 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tINFOPLIST_FILE = Cartography/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tMETAL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = Cartography;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t54F6A84F195C20C200313D24 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 3C61A3F684FD20F5E1B1F8D1 /* Pods-TestPods-Cartography-Mac-Tests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/Mac\",\n\t\t\t\t);\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = CartographyTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tMETAL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t54F6A850195C20C200313D24 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 690415756227F5789FBF9D77 /* Pods-TestPods-Cartography-Mac-Tests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/Mac\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = CartographyTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tMETAL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t632F09101BF1E7AA002431A3 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/Cartography/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.robertboehnke.Cartography;\n\t\t\t\tPRODUCT_NAME = Cartography;\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t632F09111BF1E7AA002431A3 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/Cartography/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.robertboehnke.Cartography;\n\t\t\t\tPRODUCT_NAME = Cartography;\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t632F092B1BF1E7FC002431A3 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 45CEEFB5D80398843533851A /* Pods-TestPods-Cartography-tvOS-tests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = CartographyTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.Cartography.Cartography-tvOS-tests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t632F092C1BF1E7FC002431A3 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 7D3596ED3F137EB677E57692 /* Pods-TestPods-Cartography-tvOS-tests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = CartographyTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.robertboehnke.Cartography.Cartography-tvOS-tests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t54C96A0B195063CD000CDD27 /* Build configuration list for PBXProject \"Cartography\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t54C96A25195063CD000CDD27 /* Debug */,\n\t\t\t\t54C96A26195063CD000CDD27 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t54C96A27195063CD000CDD27 /* Build configuration list for PBXNativeTarget \"Cartography-iOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t54C96A28195063CD000CDD27 /* Debug */,\n\t\t\t\t54C96A29195063CD000CDD27 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t54C96A2A195063CD000CDD27 /* Build configuration list for PBXNativeTarget \"Cartography-iOS-Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t54C96A2B195063CD000CDD27 /* Debug */,\n\t\t\t\t54C96A2C195063CD000CDD27 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t54F6A84B195C20C200313D24 /* Build configuration list for PBXNativeTarget \"Cartography-Mac\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t54F6A84C195C20C200313D24 /* Debug */,\n\t\t\t\t54F6A84D195C20C200313D24 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t54F6A84E195C20C200313D24 /* Build configuration list for PBXNativeTarget \"Cartography-Mac-Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t54F6A84F195C20C200313D24 /* Debug */,\n\t\t\t\t54F6A850195C20C200313D24 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t632F090F1BF1E7AA002431A3 /* Build configuration list for PBXNativeTarget \"Cartography-tvOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t632F09101BF1E7AA002431A3 /* Debug */,\n\t\t\t\t632F09111BF1E7AA002431A3 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t632F092A1BF1E7FC002431A3 /* Build configuration list for PBXNativeTarget \"Cartography-tvOS-tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t632F092B1BF1E7FC002431A3 /* Debug */,\n\t\t\t\t632F092C1BF1E7FC002431A3 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 54C96A08195063CD000CDD27 /* Project object */;\n}\n"
  },
  {
    "path": "Cartography.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:Cartography.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Cartography.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Cartography.xcodeproj/xcshareddata/xcschemes/Cartography-Mac.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"54F6A837195C20C100313D24\"\n               BuildableName = \"Cartography.framework\"\n               BlueprintName = \"Cartography-Mac\"\n               ReferencedContainer = \"container:Cartography.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"54F6A841195C20C200313D24\"\n               BuildableName = \"Cartography-Mac-Tests.xctest\"\n               BlueprintName = \"Cartography-Mac-Tests\"\n               ReferencedContainer = \"container:Cartography.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"54F6A837195C20C100313D24\"\n            BuildableName = \"Cartography.framework\"\n            BlueprintName = \"Cartography-Mac\"\n            ReferencedContainer = \"container:Cartography.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Cartography.xcodeproj/xcshareddata/xcschemes/Cartography-iOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"54C96A10195063CD000CDD27\"\n               BuildableName = \"Cartography.framework\"\n               BlueprintName = \"Cartography-iOS\"\n               ReferencedContainer = \"container:Cartography.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"54C96A1B195063CD000CDD27\"\n               BuildableName = \"Cartography-iOS-Tests.xctest\"\n               BlueprintName = \"Cartography-iOS-Tests\"\n               ReferencedContainer = \"container:Cartography.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"54C96A10195063CD000CDD27\"\n            BuildableName = \"Cartography.framework\"\n            BlueprintName = \"Cartography-iOS\"\n            ReferencedContainer = \"container:Cartography.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Cartography.xcodeproj/xcshareddata/xcschemes/Cartography-tvOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"632F09091BF1E7AA002431A3\"\n               BuildableName = \"Cartography.framework\"\n               BlueprintName = \"Cartography-tvOS\"\n               ReferencedContainer = \"container:Cartography.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"NO\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"632F09211BF1E7FC002431A3\"\n               BuildableName = \"Cartography-tvOS-tests.xctest\"\n               BlueprintName = \"Cartography-tvOS-tests\"\n               ReferencedContainer = \"container:Cartography.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"632F09211BF1E7FC002431A3\"\n               BuildableName = \"Cartography-tvOS-tests.xctest\"\n               BlueprintName = \"Cartography-tvOS-tests\"\n               ReferencedContainer = \"container:Cartography.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"632F09091BF1E7AA002431A3\"\n            BuildableName = \"Cartography.framework\"\n            BlueprintName = \"Cartography-tvOS\"\n            ReferencedContainer = \"container:Cartography.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"632F09091BF1E7AA002431A3\"\n            BuildableName = \"Cartography.framework\"\n            BlueprintName = \"Cartography-tvOS\"\n            ReferencedContainer = \"container:Cartography.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"632F09091BF1E7AA002431A3\"\n            BuildableName = \"Cartography.framework\"\n            BlueprintName = \"Cartography-tvOS\"\n            ReferencedContainer = \"container:Cartography.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Cartography.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Cartography.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Pods/Pods.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Cartography.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "CartographyTests/AlignSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass AlignSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var viewA: TestView!\n        var viewB: TestView!\n        var viewC: TestView!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n            viewA = TestView(frame: CGRect.zero)\n            window.addSubview(viewA)\n\n            viewB = TestView(frame: CGRect.zero)\n            window.addSubview(viewB)\n\n            viewC = TestView(frame: CGRect.zero)\n            window.addSubview(viewC)\n\n            constrain(viewA) { view in\n                view.height == 200\n                view.width == 200\n\n                view.top  == view.superview!.top  + 10\n                view.left == view.superview!.left + 10\n            }\n        }\n\n        describe(\"for edges\") {\n            beforeEach {\n                constrain(viewA, viewB, viewC) { viewA, viewB, viewC in\n                    align(top: viewA, viewB, viewC)\n                    align(right: viewA, viewB, viewC)\n                    align(bottom: viewA, viewB, viewC)\n                    align(left: viewA, viewB, viewC)\n                }\n            }\n\n            it(\"should align edges\") {\n                expect(viewA.frame).to(equal(viewB.frame))\n                expect(viewA.frame).to(equal(viewB.frame))\n            }\n\n            it(\"should disable translating autoresizing masks into constraints\") {\n                expect(viewA).notTo(translateAutoresizingMasksToConstraints())\n                expect(viewB).notTo(translateAutoresizingMasksToConstraints())\n                expect(viewC).notTo(translateAutoresizingMasksToConstraints())\n            }\n        }\n\n        describe(\"for horizontal and vertical centers\") {\n            beforeEach {\n                constrain(viewA, viewB, viewC) { viewA, viewB, viewC in\n                    viewA.size == viewB.size\n                    viewB.size == viewC.size\n\n                    align(centerX: viewA, viewB, viewC)\n                    align(centerY: viewA, viewB, viewC)\n                }\n            }\n\n            it(\"should align center points\") {\n                expect(viewA.frame).to(equal(viewB.frame))\n                expect(viewA.frame).to(equal(viewB.frame))\n            }\n\n            it(\"should disable translating autoresizing masks into constraints\") {\n                expect(viewA).notTo(translateAutoresizingMasksToConstraints())\n                expect(viewB).notTo(translateAutoresizingMasksToConstraints())\n                expect(viewC).notTo(translateAutoresizingMasksToConstraints())\n            }\n        }\n        \n        describe(\"no constraints\") {\n            it(\"should have no constraints for a single view alignment\") {\n                constrain(viewA) { viewA in\n                    let constraints = align(top: [viewA])\n                    \n                    expect(constraints.count).to(equal(0))\n                }\n            }\n            \n            it(\"should have no constraints for no view\") {\n                let constraints = align(top: [])\n                expect(constraints.count).to(equal(0))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/ConstraintGroupSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass ConstraintGroupSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var view1: TestView!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n            view1 = TestView(frame: CGRect.zero)\n            window.addSubview(view1)\n        }\n\n        describe(\"Activating a group\") {\n            var a: ConstraintGroup!\n            var b: ConstraintGroup!\n\n            beforeEach {\n                a = constrain(view1) { view in\n                    view.width  == 100\n                    view.height == 100\n                }\n\n                a.active = false\n\n                b = constrain(view1) { view in\n                    view.width  == 200\n                    view.height == 200\n                }\n\n                b.active = false\n            }\n\n            it(\"should update the view\") {\n                a.active = true\n\n                view1.layoutIfNeeded()\n\n                expect(view1.frame.width).to(equal(100))\n                expect(view1.frame.height).to(equal(100))\n\n                a.active = false\n                b.active = true\n\n                window.layoutIfNeeded()\n\n                expect(view1.frame.width).to(equal(200))\n                expect(view1.frame.height).to(equal(200))\n            }\n        }\n\n        describe(\"Replacing constraints\") {\n            var view2: TestView!\n\n            beforeEach {\n                view2 = TestView(frame: CGRect.zero)\n                window.addSubview(view2)\n\n                constrain(view1, view2) { view1, view2 in\n                    view1.top    == view1.superview!.top   + 10\n                    view1.left   == view1.superview!.left  + 10\n                    view1.right  == view1.superview!.right - 10\n                    view1.height == 200\n\n                    view2.centerX == view1.centerX\n                    view2.top     == view1.bottom\n                    view2.width   == view1.width\n                }\n\n                window.layoutIfNeeded()\n            }\n\n            it(\"should update the view\") {\n                let group = constrain(view2) { view2 in\n                    view2.height == 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view2.frame.height).to(equal(100))\n\n                constrain(view2, replace: group) { view2 in\n                    view2.bottom >= view2.superview!.bottom\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view2.frame.height).to(equal(190))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/DimensionSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass DimensionSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var view: TestView!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n            view = TestView(frame: CGRect.zero)\n            window.addSubview(view)\n        }\n\n        describe(\"LayoutProxy.width\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.width == view.superview!.width\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.width).to(equal(400))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.width <= view.superview!.width\n                    view.width >= view.superview!.width\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.width).to(equal(400))\n            }\n\n            it(\"should support addition\") {\n                constrain(view) { view in\n                    view.width == view.superview!.width + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.width).to(equal(500))\n            }\n\n            it(\"should support subtraction\") {\n                constrain(view) { view in\n                    view.width == view.superview!.width - 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.width).to(equal(300))\n            }\n\n            it(\"should support multiplication\") {\n                constrain(view) { view in\n                    view.width == view.superview!.width * 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.width).to(equal(800))\n            }\n\n            it(\"should support division\") {\n                constrain(view) { view in\n                    view.width == view.superview!.width / 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.width).to(equal(200))\n            }\n\n            it(\"should support complex expressions\") {\n                constrain(view) { view in\n                    view.width == view.superview!.width / 2 + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.width).to(equal(300))\n            }\n\n            it(\"should support numerical equalities\") {\n                constrain(view) { view in\n                    view.width == 200\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.width).to(equal(200))\n            }\n        }\n\n        describe(\"LayoutProxy.height\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.height == view.superview!.height\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.height).to(equal(400))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.height <= view.superview!.height\n                    view.height >= view.superview!.height\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.height).to(equal(400))\n            }\n\n            it(\"should support addition\") {\n                constrain(view) { view in\n                    view.height == view.superview!.height + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.height).to(equal(500))\n            }\n\n            it(\"should support subtraction\") {\n                constrain(view) { view in\n                    view.height == view.superview!.height - 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.height).to(equal(300))\n            }\n\n            it(\"should support multiplication\") {\n                constrain(view) { view in\n                    view.height == view.superview!.height * 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.height).to(equal(800))\n            }\n\n            it(\"should support division\") {\n                constrain(view) { view in\n                    view.height == view.superview!.height / 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.height).to(equal(200))\n            }\n\n            it(\"should support complex expressions\") {\n                constrain(view) { view in\n                    view.height == view.superview!.height / 2 + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.height).to(equal(300))\n            }\n\n            it(\"should support numerical equalities\") {\n                constrain(view) { view in\n                    view.height == 200\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.height).to(equal(200))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/DistributeSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass DistributeSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var viewA: TestView!\n        var viewB: TestView!\n        var viewC: TestView!\n\n        let constraintsGroup = ConstraintGroup()\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n            viewA = TestView(frame: CGRect.zero)\n            window.addSubview(viewA)\n\n            viewB = TestView(frame: CGRect.zero)\n            window.addSubview(viewB)\n\n            viewC = TestView(frame: CGRect.zero)\n            window.addSubview(viewC)\n\n            constrain(viewA, viewB, viewC, replace: constraintsGroup) { viewA, viewB, viewC in\n                viewA.width  == 100\n                viewA.height == 100\n\n                viewA.top  == viewA.superview!.top\n                viewA.left == viewA.superview!.left\n\n                viewA.size == viewB.size\n                viewA.size == viewC.size\n            }\n        }\n\n        describe(\"from left to right\") {\n            beforeEach {\n                constrain(viewA, viewB, viewC) { viewA, viewB, viewC in\n                    align(centerY: viewA, viewB, viewC)\n                    distribute(by: 10, leftToRight: viewA, viewB, viewC)\n                }\n\n                window.layoutIfNeeded()\n            }\n\n            it(\"should distribute the views\") {\n                expect(viewA.frame.minX).to(equal(  0))\n                expect(viewB.frame.minX).to(equal(110))\n                expect(viewC.frame.minX).to(equal(220))\n            }\n\n            it(\"should disable translating autoresizing masks into constraints\") {\n                expect(viewA).notTo(translateAutoresizingMasksToConstraints())\n                expect(viewB).notTo(translateAutoresizingMasksToConstraints())\n                expect(viewC).notTo(translateAutoresizingMasksToConstraints())\n            }\n        }\n\n        describe(\"vertically\") {\n            beforeEach {\n                constrain(viewA, viewB, viewC) { viewA, viewB, viewC in\n                    align(centerX: viewA, viewB, viewC)\n                    distribute(by: 10, vertically: viewA, viewB, viewC)\n                }\n\n                window.layoutIfNeeded()\n            }\n\n            it(\"should distribute the views\") {\n                expect(viewA.frame.minY).to(equal(  0))\n                expect(viewB.frame.minY).to(equal(110))\n                expect(viewC.frame.minY).to(equal(220))\n            }\n\n            it(\"should disable translating autoresizing masks into constraints\") {\n                expect(viewA).notTo(translateAutoresizingMasksToConstraints())\n                expect(viewB).notTo(translateAutoresizingMasksToConstraints())\n                expect(viewC).notTo(translateAutoresizingMasksToConstraints())\n            }\n        }\n        \n        describe(\"no constraints\") {\n            it(\"should have no constraints for a single view distribution\") {\n                constrain(viewA) { viewA in\n                    let constraints = distribute(horizontally: [viewA])\n                    \n                    expect(constraints.count).to(equal(0))\n                }\n            }\n            \n            it(\"should have no constraints for no view\") {\n                let constraints = distribute(horizontally: [])\n                expect(constraints.count).to(equal(0))\n            }\n        }\n\n        describe(\"When distributing width\") {\n            beforeEach {\n                constrain(viewA, viewB, viewC, replace: constraintsGroup) {\n                    viewA, viewB, viewC in\n\n                    viewA.width == 50\n\n                    distribute(equalWidth: [viewA, viewB, viewC])\n                }\n\n                window.layoutIfNeeded()\n            }\n\n            it(\"should distribute the same width through all the views\") {\n                expect(viewA.frame.width).to(equal(50))\n                expect(viewB.frame.width).to(equal(viewA.frame.width))\n                expect(viewC.frame.width).to(equal(viewB.frame.width))\n            }\n        }\n\n        describe(\"When distributing height\") {\n            beforeEach {\n                constrain(viewA, viewB, viewC, replace: constraintsGroup) {\n                    viewA, viewB, viewC in\n\n                    viewA.height == 50\n\n                    distribute(equalHeight: [viewA, viewB, viewC])\n                }\n\n                window.layoutIfNeeded()\n            }\n\n            it(\"should distribute the same height through all the views\") {\n                expect(viewA.frame.height).to(equal(50))\n                expect(viewB.frame.height).to(equal(viewA.frame.height))\n                expect(viewC.frame.height).to(equal(viewB.frame.height))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/EdgeSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass EdgeSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var view: TestView!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n            view = TestView(frame: CGRect.zero)\n            window.addSubview(view)\n\n            constrain(view) { view in\n                view.height == 200\n                view.width == 200\n            }\n        }\n\n        describe(\"LayoutProxy.top\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.top == view.superview!.top\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.minY).to(equal(0))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.top <= view.superview!.top\n                    view.top >= view.superview!.top\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.minY).to(equal(0))\n            }\n\n            it(\"should support addition\") {\n                constrain(view) { view in\n                    view.top == view.superview!.top + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.minY).to(equal(100))\n            }\n\n            it(\"should support subtraction\") {\n                constrain(view) { view in\n                    view.top == view.superview!.top - 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.minY).to(equal(-100))\n            }\n        }\n\n        describe(\"LayoutProxy.right\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.right == view.superview!.right\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.maxX).to(equal(400))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.right <= view.superview!.right\n                    view.right >= view.superview!.right\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.maxX).to(equal(400))\n            }\n\n            it(\"should support addition\") {\n                constrain(view) { view in\n                    view.right == view.superview!.right + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.maxX).to(equal(500))\n            }\n\n            it(\"should support subtraction\") {\n                constrain(view) { view in\n                    view.right == view.superview!.right - 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.maxX).to(equal(300))\n            }\n        }\n\n        describe(\"LayoutProxy.bottom\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.bottom == view.superview!.bottom\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.maxY).to(equal(400))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.bottom <= view.superview!.bottom\n                    view.bottom >= view.superview!.bottom\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.maxY).to(equal(400))\n            }\n\n            it(\"should support addition\") {\n                constrain(view) { view in\n                    view.bottom == view.superview!.bottom + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.maxY).to(equal(500))\n            }\n\n            it(\"should support subtraction\") {\n                constrain(view) { view in\n                    view.bottom == view.superview!.bottom - 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.maxY).to(equal(300))\n            }\n        }\n\n        describe(\"LayoutProxy.left\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.left == view.superview!.left\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.minX).to(equal(0))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.left <= view.superview!.left\n                    view.left >= view.superview!.left\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.minX).to(equal(0))\n            }\n\n            it(\"should support addition\") {\n                constrain(view) { view in\n                    view.left == view.superview!.left + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.minX).to(equal(100))\n            }\n\n            it(\"should support subtraction\") {\n                constrain(view) { view in\n                    view.left == view.superview!.left - 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.minX).to(equal(-100))\n            }\n        }\n\n        describe(\"LayoutProxy.centerX\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.centerX == view.superview!.centerX\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midX).to(equal(200))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.centerX <= view.superview!.centerX\n                    view.centerX >= view.superview!.centerX\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midX).to(equal(200))\n            }\n\n            it(\"should support addition\") {\n                constrain(view) { view in\n                    view.centerX == view.superview!.centerX + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midX).to(equal(300))\n            }\n\n            it(\"should support subtraction\") {\n                constrain(view) { view in\n                    view.centerX == view.superview!.centerX - 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midX).to(equal(100))\n            }\n\n            it(\"should support multiplication\") {\n                constrain(view) { view in\n                    view.centerX == view.superview!.centerX * 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midX).to(equal(400))\n            }\n\n            it(\"should support division\") {\n                constrain(view) { view in\n                    view.centerX == view.superview!.centerX / 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midX).to(equal(100))\n            }\n        }\n\n        describe(\"LayoutProxy.centerY\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.centerY == view.superview!.centerY\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midY).to(equal(200))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.centerY <= view.superview!.centerY\n                    view.centerY >= view.superview!.centerY\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midY).to(equal(200))\n            }\n\n            it(\"should support addition\") {\n                constrain(view) { view in\n                    view.centerY == view.superview!.centerY + 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midY).to(equal(300))\n            }\n\n            it(\"should support subtraction\") {\n                constrain(view) { view in\n                    view.centerY == view.superview!.centerY - 100\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midY).to(equal(100))\n            }\n\n            it(\"should support multiplication\") {\n                constrain(view) { view in\n                    view.centerY == view.superview!.centerY * 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midY).to(equal(400))\n            }\n\n            it(\"should support division\") {\n                constrain(view) { view in\n                    view.centerY == view.superview!.centerY / 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.midY).to(equal(100))\n            }\n        }\n\n        #if os(iOS) || os(tvOS)\n        describe(\"on iOS only\") {\n            beforeEach {\n                window.layoutMargins = UIEdgeInsets(top: 10, left: 20, bottom: 30, right: 40)\n            }\n\n            describe(\"LayoutProxy.topMargin\") {\n                it(\"should support relative equalities\") {\n                    constrain(view) { view in\n                        view.top == view.superview!.topMargin\n                    }\n\n                    window.layoutIfNeeded()\n\n                    expect(view.frame.minY).to(equal(10))\n                }\n            }\n\n            describe(\"LayoutProxy.rightMargin\") {\n                it(\"should support relative equalities\") {\n                    constrain(view) { view in\n                        view.right == view.superview!.rightMargin\n                    }\n\n                    window.layoutIfNeeded()\n\n                    expect(view.frame.maxX).to(equal(360))\n                }\n            }\n\n            describe(\"LayoutProxy.bottomMargin\") {\n                it(\"should support relative equalities\") {\n                    constrain(view) { view in\n                        view.bottom == view.superview!.bottomMargin\n                    }\n\n                    window.layoutIfNeeded()\n\n                    expect(view.frame.maxY).to(equal(370))\n                }\n            }\n\n            describe(\"LayoutProxy.leftMargin\") {\n                it(\"should support relative equalities\") {\n                    constrain(view) { view in\n                        view.left == view.superview!.leftMargin\n                    }\n\n                    window.layoutIfNeeded()\n\n                    expect(view.frame.minX).to(equal(20))\n                }\n            }\n        }\n        #endif\n    }\n}\n"
  },
  {
    "path": "CartographyTests/EdgesSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass EdgesSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var view: TestView!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n            view = TestView(frame: CGRect.zero)\n            window.addSubview(view)\n        }\n\n        describe(\"LayoutProxy.edges\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.edges == view.superview!.edges\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(view.superview?.frame))\n            }\n        }\n\n        describe(\"LayoutProxy.edges\") {\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.edges <= view.superview!.edges\n                    view.edges >= view.superview!.edges\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(view.superview?.frame))\n            }\n        }\n\n        describe(\"inset\") {\n            it(\"should inset all edges with the same amount\") {\n                constrain(view) { view in\n                    view.edges == inset(view.superview!.edges, 20)\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(CGRect(x: 20, y: 20, width: 360, height: 360)))\n            }\n\n            it(\"should inset the horizontal and vertical edge individually\") {\n                constrain(view) { view in\n                    view.edges == inset(view.superview!.edges, 20, 30)\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(CGRect(x: 20, y: 30, width: 360, height: 340)))\n            }\n\n            it(\"should inset the horizontal edges\") {\n                constrain(view) { view in\n                    view.edges == inset(view.superview!.edges, horizontally: 20)\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(CGRect(x: 20, y: 0, width: 360, height: 400)))\n            }\n\n            it(\"should inset the vertical edges\") {\n                constrain(view) { view in\n                    view.edges == inset(view.superview!.edges, vertically: 30)\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(CGRect(x: 0, y: 30, width: 400, height: 340)))\n            }\n\n            it(\"should inset all edges individually\") {\n                constrain(view) { view in\n                    view.edges == inset(view.superview!.edges, 10, 20, 30, 40)\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(CGRect(x: 20, y: 10, width: 340, height: 360)))\n            }\n        }\n\n        #if os(iOS) || os(tvOS)\n        describe(\"on iOS only\") {\n            beforeEach {\n                window.layoutMargins = UIEdgeInsets(top: 10, left: 20, bottom: 30, right: 40)\n            }\n\n            describe(\"LayoutProxy.edgesWithinMargins\") {\n                it(\"should support relative equalities\") {\n                    constrain(view) { view in\n                        view.edges == view.superview!.edgesWithinMargins\n                    }\n\n                    window.layoutIfNeeded()\n\n                    expect(view.frame).to(equal(CGRect(x: 20, y: 10, width: 340, height: 360)))\n                }\n            }\n        }\n        #endif\n    }\n}\n"
  },
  {
    "path": "CartographyTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "CartographyTests/LayoutGuideSpec.swift",
    "content": "//\n//  LayoutGuideSpec.swift\n//  Cartography-iOS\n//\n//  Created by Vitor Travain on 16/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\nimport Quick\nimport Nimble\n@testable import Cartography\n\n@available(iOS, introduced: 9.0)\n@available(tvOS, introduced: 9.0)\n@available(OSX, introduced: 10.11)\nfinal class LayoutGuideSpec: QuickSpec {\n    override func spec() {\n        var view: View!\n        var layoutGuide: LayoutGuide!\n\n        beforeEach {\n            view = View(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n            #if os(OSX)\n                view.autoresizingMask = .none\n            #endif\n            layoutGuide = LayoutGuide()\n\n            view.addLayoutGuide(layoutGuide)\n        }\n\n        describe(\"LayoutGuideProxy\") {\n            it(\"should support relative equalities\") {\n                constrain(layoutGuide) { layoutGuide in\n                    layoutGuide.edges == layoutGuide.owningView!.edges\n                }\n\n                #if os(iOS) || os(tvOS)\n                    view.layoutIfNeeded()\n\n                    expect(layoutGuide.layoutFrame.origin.x) == 0\n                    expect(layoutGuide.layoutFrame.origin.y) == 0\n                    expect(layoutGuide.layoutFrame.width) == 400\n                    expect(layoutGuide.layoutFrame.height) == 400\n                #elseif os(OSX)\n                    view.needsLayout = true\n                    view.layoutSubtreeIfNeeded()\n\n                    expect(layoutGuide.frame.origin.x) == 0\n                    expect(layoutGuide.frame.origin.y) == 0\n                    expect(layoutGuide.frame.width) == 400\n                    expect(layoutGuide.frame.height) == 400\n                #endif\n            }\n\n            it(\"should support inequalities\") {\n                constrain(layoutGuide) { layoutGuide in\n                    layoutGuide.top >= layoutGuide.owningView!.top\n                    layoutGuide.bottom <= layoutGuide.owningView!.bottom\n\n                    layoutGuide.left >= layoutGuide.owningView!.left\n                    layoutGuide.right <= layoutGuide.owningView!.right\n\n                    layoutGuide.center == layoutGuide.owningView!.center ~ .defaultLow\n\n                    layoutGuide.width == 200\n                    layoutGuide.height == 200\n                }\n\n                #if os(iOS) || os(tvOS)\n                    view.layoutIfNeeded()\n\n                    expect(layoutGuide.layoutFrame.midX) == 200\n                    expect(layoutGuide.layoutFrame.midY) == 200\n                    expect(layoutGuide.layoutFrame.width) == 200\n                    expect(layoutGuide.layoutFrame.height) == 200\n                #elseif os(OSX)\n                    view.needsLayout = true\n                    view.layoutSubtreeIfNeeded()\n\n                    expect(layoutGuide.frame.midX) == 200\n                    expect(layoutGuide.frame.midY) == 200\n                    expect(layoutGuide.frame.width) == 200\n                    expect(layoutGuide.frame.height) == 200\n                #endif\n            }\n\n            it(\"should support addition\") {\n                constrain(layoutGuide) { layoutGuide in\n                    layoutGuide.leading == layoutGuide.owningView!.leading + 10\n                }\n\n                #if os(iOS) || os(tvOS)\n                    view.layoutIfNeeded()\n\n                    expect(layoutGuide.layoutFrame.minX) == 10\n                #elseif os(OSX)\n                    view.needsLayout = true\n                    view.layoutSubtreeIfNeeded()\n\n                    expect(layoutGuide.frame.minX) == 10\n                #endif\n            }\n\n            it(\"should support subtraction\") {\n                constrain(layoutGuide) { layoutGuide in\n                    layoutGuide.trailing == layoutGuide.owningView!.trailing - 10\n                }\n\n                #if os(iOS) || os(tvOS)\n                    view.layoutIfNeeded()\n\n                    expect(layoutGuide.layoutFrame.maxX) == 390\n                #elseif os(OSX)\n                    view.needsLayout = true\n                    view.layoutSubtreeIfNeeded()\n\n                    expect(layoutGuide.frame.maxX) == 390\n                #endif\n            }\n\n            it(\"should support multiplication\") {\n                constrain(layoutGuide) { layoutGuide in\n                    layoutGuide.width == 0.5 * layoutGuide.owningView!.width\n                }\n\n                #if os(iOS) || os(tvOS)\n                    view.layoutIfNeeded()\n\n                    expect(layoutGuide.layoutFrame.width) == 0.5 * view.frame.width\n                #elseif os(OSX)\n                    view.needsLayout = true\n                    view.layoutSubtreeIfNeeded()\n\n                    expect(layoutGuide.frame.width) == 0.5 * view.frame.width\n                #endif\n            }\n\n            it(\"should support division\") {\n                constrain(layoutGuide) { layoutGuide in\n                    layoutGuide.width == layoutGuide.owningView!.width / 2\n                }\n\n                #if os(iOS) || os(tvOS)\n                    view.layoutIfNeeded()\n\n                    expect(layoutGuide.layoutFrame.width) == view.frame.width / 2\n                #elseif os(OSX)\n                    view.needsLayout = true\n                    view.layoutSubtreeIfNeeded()\n\n                    expect(layoutGuide.frame.width) == view.frame.width / 2\n                #endif\n            }\n\n            it(\"should support centering\") {\n                constrain(layoutGuide) { layoutGuide in\n                    layoutGuide.center == layoutGuide.owningView!.center\n                }\n\n                #if os(iOS) || os(tvOS)\n                    view.layoutIfNeeded()\n\n                    expect(layoutGuide.layoutFrame.midX) == 200\n                    expect(layoutGuide.layoutFrame.midY) == 200\n                #elseif os(OSX)\n                    view.needsLayout = true\n                    view.layoutSubtreeIfNeeded()\n\n                    expect(layoutGuide.frame.midX) == 200\n                    expect(layoutGuide.frame.midY) == 200\n                #endif\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/LayoutSupportSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\nimport UIKit\n\nclass LayoutSupportSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var view: TestView!\n        var viewController: UIViewController!\n        var navigationController: UINavigationController!\n        var tabBarController: UITabBarController!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0,y: 0, width: 400, height: 400))\n            \n            view = TestView(frame: CGRect.zero)\n            \n            viewController = UIViewController()\n            viewController.view.addSubview(view)\n            \n            constrain(view) { view in\n                view.height == 200\n                view.width == 200\n            }\n            \n            navigationController = UINavigationController(rootViewController: viewController)\n            tabBarController = UITabBarController()\n            tabBarController.viewControllers = [navigationController]\n            tabBarController.view.frame = window.bounds\n            tabBarController.view.layoutIfNeeded()\n            window.rootViewController = tabBarController\n            \n            window.setNeedsLayout()\n            window.layoutIfNeeded()\n            \n            print(viewController.topLayoutGuide)\n        }\n        \n        describe(\"LayoutSupport.top\") {\n            it(\"should support relative equalities\") {\n                \n                viewController.view.layoutIfNeeded()\n\n                constrain(view, viewController.car_topLayoutGuide) { view, topLayoutGuide in\n                    view.top == topLayoutGuide.bottom\n                }\n                viewController.view.layoutIfNeeded()\n                \n                expect(view.convert(view.bounds, to: window).minY).to(equal(viewController.topLayoutGuide.length))\n            }\n            \n            it(\"should support relative inequalities\") {\n                constrain(view, viewController.car_topLayoutGuide) { view, topLayoutGuide in\n                    view.top <= topLayoutGuide.bottom\n                    view.top >= topLayoutGuide.bottom\n                }\n                \n                viewController.view.layoutIfNeeded()\n                \n                expect(view.convert(view.bounds, to: window).minY).to(equal(viewController.topLayoutGuide.length))\n            }\n            \n            it(\"should support addition\") {\n                constrain(view, viewController.car_topLayoutGuide) { view, topGuide in\n                    view.top == topGuide.bottom + 100\n                }\n                \n                viewController.view.layoutIfNeeded()\n                \n                expect(view.convert(view.bounds, to: window).minY).to(equal(100 + viewController.topLayoutGuide.length))\n            }\n            \n            it(\"should support subtraction\") {\n                constrain(view, viewController.car_topLayoutGuide) { view, topGuide in\n                    view.top == topGuide.bottom - 100\n                }\n                \n                viewController.view.layoutIfNeeded()\n                \n                expect(view.convert(view.bounds, to: window).minY).to(equal(-100 - viewController.topLayoutGuide.length))\n            }\n        }\n        \n        describe(\"LayoutSupport.bottom\") {\n            it(\"should support relative equalities\") {\n                constrain(view, viewController.car_bottomLayoutGuide) { view, bottomGuide in\n                    view.bottom == bottomGuide.top\n                }\n                viewController.view.layoutIfNeeded()\n                \n                expect(view.convert(view.bounds, to: window).maxY).to(equal(window.bounds.maxY - viewController.bottomLayoutGuide.length))\n            }\n            \n            it(\"should support relative inequalities\") {\n                constrain(view, viewController.car_bottomLayoutGuide) { view, bottomGuide in\n                    view.bottom <= bottomGuide.top\n                    view.bottom >= bottomGuide.top\n                }\n                \n                viewController.view.layoutIfNeeded()\n                \n                expect(view.convert(view.bounds, to: window).maxY).to(equal(window.bounds.maxY - viewController.bottomLayoutGuide.length))\n            }\n            \n            it(\"should support addition\") {\n                constrain(view, viewController.car_bottomLayoutGuide) { view, bottomGuide in\n                    view.bottom == bottomGuide.top + 100\n                }\n                \n                viewController.view.layoutIfNeeded()\n                \n                expect(view.convert(view.bounds, to: window).maxY).to(equal(100 + window.bounds.maxY - viewController.bottomLayoutGuide.length))\n            }\n            \n            it(\"should support subtraction\") {\n                constrain(view, viewController.car_bottomLayoutGuide) { view, bottomGuide in\n                    view.bottom == bottomGuide.top - 100\n                }\n                \n                viewController.view.layoutIfNeeded()\n                \n                expect(view.convert(view.bounds, to: window).maxY).to(equal((window.bounds.maxY - 100) - viewController.bottomLayoutGuide.length))\n            }\n            \n        }\n\n    }\n}\n"
  },
  {
    "path": "CartographyTests/Matchers.swift",
    "content": "import Cartography\nimport Quick\nimport Nimble\n\npublic func translateAutoresizingMasksToConstraints() -> Predicate<View> {\n    return Predicate<View> { expression -> PredicateResult in\n        guard let view = try expression.evaluate() else {\n            return PredicateResult(status: .fail, message: .fail(\"expected valid view, got <nil>\"))\n        }\n\n        return PredicateResult(bool: view.translatesAutoresizingMaskIntoConstraints,\n                               message: .expectedTo(\"translate autoresizing masks to constraints\"))\n    }\n}\n"
  },
  {
    "path": "CartographyTests/MemoryLeakSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass MemoryLeakSpec: QuickSpec {\n    override func spec() {\n        describe(\"constrain\") {\n            it(\"should not leak memory\") {\n                weak var weak_superview: View? = .none\n                weak var weak_viewA: View? = .none\n                weak var weak_viewB: View? = .none\n\n                autoreleasepool {\n                    let superview = View(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n                    let viewA: TestView = TestView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))\n                    superview.addSubview(viewA)\n\n                    let viewB: TestView = TestView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))\n                    superview.addSubview(viewB)\n\n                    weak_superview = superview\n                    weak_viewA = viewA\n                    weak_viewB = viewB\n\n                    constrain(viewA, viewB) { viewA, viewB in\n                        viewA.top    == viewB.top\n                        viewB.bottom == viewA.bottom\n                    }\n                }\n\n                expect(weak_superview).to(beNil())\n                expect(weak_viewA).to(beNil())\n                expect(weak_viewB).to(beNil())\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/PointSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass PointSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var view: TestView!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n            view = TestView(frame: CGRect.zero)\n            window.addSubview(view)\n\n            constrain(view) { view in\n                view.width  == 200\n                view.height == 200\n            }\n        }\n\n        describe(\"LayoutProxy.center\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.center == view.superview!.center\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(CGRect(x: 100, y: 100, width: 200, height: 200)))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.center <= view.superview!.center\n                    view.center >= view.superview!.center\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame).to(equal(CGRect(x: 100, y: 100, width: 200, height: 200)))\n            }\n        }\n\n#if os(iOS) || os(tvOS)\n        describe(\"on iOS only\") {\n            beforeEach {\n                view.layoutMargins = UIEdgeInsets(top: 10, left: 20, bottom: 30, right: 40)\n            }\n\n            describe(\"LayoutProxy.centerWithinMargins\") {\n                it(\"should support relative equalities\") {\n                    constrain(view) { view in\n                        view.centerWithinMargins == view.superview!.center\n                    }\n\n                    window.layoutIfNeeded()\n\n                    expect(view.frame).to(equal(CGRect(x: 110, y: 110, width: 200, height: 200)))\n                }\n\n                it(\"should support relative inequalities\") {\n                    constrain(view) { view in\n                        view.centerWithinMargins <= view.superview!.center\n                        view.centerWithinMargins >= view.superview!.center\n                    }\n\n                    window.layoutIfNeeded()\n\n                    expect(view.frame).to(equal(CGRect(x: 110, y: 110, width: 200, height: 200)))\n                }\n            }\n        }\n#endif\n    }\n}\n"
  },
  {
    "path": "CartographyTests/PrioritySpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass PrioritySpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var view: TestView!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 200, height: 200))\n\n            view = TestView(frame: CGRect.zero)\n            window.addSubview(view)\n        }\n\n        it(\"should operate on a single constraint\") {\n            var constraint: NSLayoutConstraint!\n\n            constrain(view) { view in\n                constraint = view.width == 200 ~ LayoutPriority(100)\n            }\n\n            expect(constraint.priority).to(equal(LayoutPriority(100)))\n        }\n\n        it(\"should operate on an array of constraints\") {\n            var constraints: [NSLayoutConstraint]!\n\n            constrain(view) { view in\n                constraints = (view.size <= view.superview!.size ~ LayoutPriority(100))\n            }\n\n            expect(constraints[0].priority).to(equal(LayoutPriority(100)))\n            expect(constraints[1].priority).to(equal(LayoutPriority(100)))\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/SizeSpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass SizeSpec: QuickSpec {\n    override func spec() {\n        var window: TestWindow!\n        var view: TestView!\n\n        beforeEach {\n            window = TestWindow(frame: CGRect(x: 0, y: 0, width: 400, height: 400))\n\n            view = TestView(frame: CGRect.zero)\n            window.addSubview(view)\n        }\n\n        describe(\"LayoutProxy.size\") {\n            it(\"should support relative equalities\") {\n                constrain(view) { view in\n                    view.size == view.superview!.size\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.size).to(equal(CGSize(width: 400, height: 400)))\n            }\n\n            it(\"should support relative inequalities\") {\n                constrain(view) { view in\n                    view.size <= view.superview!.size\n                    view.size >= view.superview!.size\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.size).to(equal(CGSize(width: 400, height: 400)))\n            }\n\n            it(\"should support multiplication\") {\n                constrain(view) { view in\n                    view.size == view.superview!.size * 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.size).to(equal(CGSize(width: 800, height: 800)))\n            }\n\n            it(\"should support division\") {\n                constrain(view) { view in\n                    view.size == view.superview!.size / 2\n                }\n\n                window.layoutIfNeeded()\n\n                expect(view.frame.size).to(equal(CGSize(width: 200, height: 200)))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/TestView.swift",
    "content": "//\n//  TestView.swift\n//  Cartography\n//\n//  Created by Robert Böhnke on 21/03/15.\n//  Copyright (c) 2015 Robert Böhnke. All rights reserved.\n//\n\nimport Cartography\n\nclass TestView: View {\n    override init(frame: CGRect) {\n        super.init(frame: frame)\n\n        translatesAutoresizingMaskIntoConstraints = false\n    }\n\n    required init(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n\n#if os(OSX)\n    override var isFlipped: Bool {\n        return true\n    }\n\n    func layoutIfNeeded() {\n        (superview ?? self).layoutSubtreeIfNeeded()\n    }\n#endif\n}\n\n#if os(iOS) || os(tvOS)\nclass TestWindow: UIWindow {\n\n    override var safeAreaInsets: UIEdgeInsets { return .zero }\n}\n#else\nclass TestWindow: TestView {\n\n}\n#endif\n"
  },
  {
    "path": "CartographyTests/ViewHierarchySpec.swift",
    "content": "import Cartography\n\nimport Nimble\nimport Quick\n\nclass ViewHierarchySpec: QuickSpec {\n    override func spec() {\n        describe(\"Finding the common superview\") {\n            pending(\"should throw an exception if the views share no common ancestor\") {\n                let viewA = TestView()\n                let viewB = TestView()\n\n                expect({\n                    constrain(viewA, viewB) { viewA, viewB in\n                        viewA.width == viewB.width\n                    }\n                }()).to(raiseException())\n            }\n\n            it(\"should consider a view its own closest common ancestor\") {\n                let view = TestView()\n\n                constrain(view) { view in\n                    view.width  == 200\n                }\n\n                expect(view.constraints.count).to(equal(1))\n            }\n\n            it(\"should handle a direct parent-child-relationship\") {\n                let parent = TestView()\n                let child = TestView()\n\n                parent.addSubview(child)\n\n                constrain(parent, child) { parent, child in\n                    parent.width == child.width\n                }\n\n                expect(parent.constraints.count).to(equal(1))\n            }\n\n            it(\"should handle a grandparent-child-relationship\") {\n                let grandparent = TestView()\n                let parent = TestView()\n                let child = TestView()\n\n                grandparent.addSubview(parent)\n                parent.addSubview(child)\n\n                constrain(grandparent, child) { grandparent, child in\n                    grandparent.width == child.width\n                }\n\n                expect(grandparent.constraints.count).to(equal(1))\n            }\n\n            it(\"should handle views that share a parent\") {\n                let parent = TestView()\n                let childA = TestView()\n                let childB = TestView()\n\n                parent.addSubview(childA)\n                parent.addSubview(childB)\n\n                constrain(childA, childB) { childA, childB in\n                    childA.width == childB.width\n                }\n\n                expect(parent.constraints.count).to(equal(1))\n            }\n\n            it(\"should handle views that share a grandparent\") {\n                let grandparent = TestView()\n                let parentA = TestView()\n                let parentB = TestView()\n                let childA = TestView()\n                let childB = TestView()\n\n                grandparent.addSubview(parentA)\n                grandparent.addSubview(parentB)\n                parentA.addSubview(childA)\n                parentB.addSubview(childB)\n\n                constrain(childA, childB) { childA, childB in\n                    childA.width == childB.width\n                }\n\n                expect(grandparent.constraints.count).to(equal(1))\n            }\n\n            it(\"should handle asymmetric view hierachies\") {\n                let grandparent = TestView()\n                let parentA = TestView()\n                let parentB = TestView()\n                let childA = TestView()\n\n                grandparent.addSubview(parentA)\n                grandparent.addSubview(parentB)\n                parentA.addSubview(childA)\n\n                constrain(childA, parentB) { childA, parentB in\n                    childA.width == parentB.width\n                }\n\n                expect(grandparent.constraints.count).to(equal(1))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/ViewLayoutGuideSpec.swift",
    "content": "//\n//  SafeAreaLayoutGuideSpec.swift\n//  Cartography\n//\n//  Created by Vitor Travain on 17/10/17.\n//  Copyright © 2017 Robert Böhnke. All rights reserved.\n//\n\nimport UIKit\nimport Quick\nimport Nimble\n@testable import Cartography\n\n@available(iOS, introduced: 9.0)\nfinal class ViewLayoutGuideSpec: QuickSpec {\n    override func spec() {\n        describe(\"Layout margin guide\") {\n            var superview: UIView!\n            var view: UIView!\n\n            beforeEach {\n                superview = UIView(frame: UIScreen.main.bounds)\n                view = UIView(frame: .zero)\n\n                superview.addSubview(view)\n            }\n\n            it(\"Views should align to edges within margins\") {\n                constrain(view) { view in\n                    view.edges == view.superview!.layoutMarginsGuide.edges\n                }\n\n                superview.layoutIfNeeded()\n\n                expect(view.frame.minX) == superview.layoutMarginsGuide.layoutFrame.minX\n                expect(view.frame.minY) == superview.layoutMarginsGuide.layoutFrame.minY\n                expect(view.frame.width) == superview.layoutMarginsGuide.layoutFrame.width\n                expect(view.frame.height) == superview.layoutMarginsGuide.layoutFrame.height\n            }\n\n            it(\"Views should center within margins\") {\n                constrain(view) { view in\n                    view.center == view.superview!.layoutMarginsGuide.center\n\n                    view.width == 200\n                    view.height == 200\n                }\n\n                superview.layoutIfNeeded()\n\n                expect(view.frame.midX) == (superview.layoutMarginsGuide.layoutFrame.midX)\n                expect(view.frame.midY) == (superview.layoutMarginsGuide.layoutFrame.midY)\n                expect(view.frame.width) == 200\n                expect(view.frame.height) == 200\n            }\n        }\n\n        describe(\"Readable content guide\") {\n            var superview: UIView!\n            var view: UIView!\n\n            beforeEach {\n                superview = UIView(frame: UIScreen.main.bounds)\n                view = UIView(frame: .zero)\n\n                superview.addSubview(view)\n            }\n\n            it(\"Views should align to edges within readable margins\") {\n                constrain(view) { view in\n                    view.edges == view.superview!.readableContentGuide.edges\n                }\n\n                superview.layoutIfNeeded()\n\n                expect(view.frame.minX) == superview.readableContentGuide.layoutFrame.minX\n                expect(view.frame.minY) == superview.readableContentGuide.layoutFrame.minY\n                expect(view.frame.width) == superview.readableContentGuide.layoutFrame.width\n                expect(view.frame.height) == superview.readableContentGuide.layoutFrame.height\n            }\n\n            it(\"Views should center within readable margins\") {\n                constrain(view) { view in\n                    view.center == view.superview!.readableContentGuide.center\n\n                    view.width == 200\n                    view.height == 200\n                }\n\n                superview.layoutIfNeeded()\n\n                expect(view.frame.midX) == (superview.readableContentGuide.layoutFrame.midX)\n                expect(view.frame.midY) == (superview.readableContentGuide.layoutFrame.midY)\n                expect(view.frame.width) == 200\n                expect(view.frame.height) == 200\n            }\n        }\n    }\n}\n\n@available(iOS, introduced: 11.0)\n@available(tvOS, introduced: 11.0)\nfinal class SafeAreaLayoutGuideSpec: QuickSpec {\n    override func spec() {\n        describe(\"Safe area layout guide\") {\n            var superview: UIView!\n            var view: UIView!\n\n            beforeEach {\n                superview = TestView(frame: UIScreen.main.bounds)\n                view = TestView(frame: CGRect.zero)\n\n                superview.addSubview(view)\n            }\n\n            it(\"Views should align to safe area edges\") {\n                constrain(view) { view in\n                    view.edges == view.superview!.safeAreaLayoutGuide.edges\n                }\n\n                superview.layoutIfNeeded()\n\n                expect(view.frame.minX) == (superview.safeAreaLayoutGuide.layoutFrame.minX)\n                expect(view.frame.minY) == (superview.safeAreaLayoutGuide.layoutFrame.maxX)\n                expect(view.frame.width) == (superview.safeAreaLayoutGuide.layoutFrame.width)\n                expect(view.frame.height) == (superview.safeAreaLayoutGuide.layoutFrame.height)\n            }\n\n            it(\"View should center in safe area\") {\n                constrain(view) { view in\n                    view.center == view.superview!.safeAreaLayoutGuide.center\n                    view.width == 200\n                    view.height == 200\n                }\n\n                superview.layoutIfNeeded()\n\n                expect(view.frame.midX) == (superview.safeAreaLayoutGuide.layoutFrame.midX)\n                expect(view.frame.midY) == (superview.safeAreaLayoutGuide.layoutFrame.midY)\n                expect(view.frame.width) == 200\n                expect(view.frame.height) == 200\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "CartographyTests/ViewProxyTests.swift",
    "content": "//\n//  ViewProxyTests.swift\n//  Cartography-iOS-Tests\n//\n//  Created by Luís Portela on 01/10/2018.\n//  Copyright © 2018 Robert Böhnke. All rights reserved.\n//\n\nimport Nimble\nimport Quick\nimport UIKit\n\n@testable import Cartography\n\n@available(iOS, introduced: 9.0)\n@available(tvOS, introduced: 9.0)\nfinal class ViewProxyTestsSpec: QuickSpec {\n    override func spec() {\n        describe(\"ViewProxy SafeArea Layout Guide\") {\n\n            let view: UIView = UIView(frame: .zero)\n\n            constrain(view) { testingView in\n                if #available(iOS 11, *), #available(tvOS 11, *) {\n                    context(\"When running on iOS 11+ devices\") {\n                        it(\"safeArea should be SafeAreaLayoutGuide\") {\n                            expect(testingView.safeArea.item).to(beIdenticalTo(testingView.safeAreaLayoutGuide.item))\n                        }\n                    }\n                } else {\n                    context(\"When runnig prior versions of iOS 11\") {\n                        it(\"safeArea should be LayoutMarginsGuide\") {\n                            expect(testingView.safeArea.item).to(beIdenticalTo(testingView.layoutMarginsGuide.item))\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2014 Robert Böhnke <robb@robb.is>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\nThis license does not apply to the contents of the images folder.\n\n---\n\nThis project uses portions of code from FLKAutoLayout,\ncopyright (c) 2013 Florian Kugler <mail@floriankugler.de>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:4.2\nimport PackageDescription\n\nlet package = Package(\n    name: \"Cartography\",\n    // platforms: [.iOS(\"8.0\"), .macOS(\"10.10\"), tvOS(\"9.0\"), .watchOS(\"2.0\")],\n    products: [\n        .library(name: \"Cartography\", targets: [\"Cartography\"])\n    ],\n    targets: [\n        .target(\n            name: \"Cartography\",\n            path: \"Cartography\"\n        )\n    ]\n)\n"
  },
  {
    "path": "Podfile",
    "content": "use_frameworks!\n\nabstract_target \"TestPods\" do\n    pod 'Nimble', :git => 'https://github.com/Quick/Nimble.git'\n    pod 'Quick', :git => 'https://github.com/Quick/Quick.git'\n\n    target 'Cartography-iOS-Tests' do\n      platform :ios, '8.0'\n    end\n\n    target 'Cartography-Mac-Tests' do\n      platform :osx, '10.10'\n    end\n\n    target 'Cartography-tvOS-tests' do\n      platform :tvos, '9.0'\n    end\nend\n"
  },
  {
    "path": "README.md",
    "content": "# Cartography :iphone::triangular_ruler:\n\n<a href=\"https://travis-ci.org/robb/Cartography?branch=master\">\n    <img src=\"https://travis-ci.org/robb/Cartography.svg?branch=master\" hspace=\"6px\" align=\"right\" vspace=\"2px\">\n</a>\n\n<a href=\"https://github.com/Carthage/Carthage/issues/179\">\n    <img src=\"https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat\" align=\"right\" vspace=\"2px\">\n</a>\n\nUsing Cartography, you can set up your Auto Layout constraints in declarative code and without any stringly typing!\n\nIn short, it allows you to replace this:\n\n<img src=\"/images/pirates2.png\" align=\"right\" height=\"280px\" hspace=\"30px\" vspace=\"30px\">\n\n```Swift\naddConstraint(NSLayoutConstraint(\n    item: button1,\n    attribute: .Right,\n    relatedBy: .Equal,\n    toItem: button2,\n    attribute: .Left,\n    multiplier: 1.0,\n    constant: -12.0\n))\n```\n\nwith this\n\n```Swift\nconstrain(button1, button2) { button1, button2 in\n    button1.right == button2.left - 12\n}\n```\n\nIf you end up using Cartography in production, I'd love to hear from you. You can reach me through [Twitter] or [email].\n\n## Installation\n\n### CocoaPods\n\nTo integrate Cartography into your Xcode project using CocoaPods, specify it in your `Podfile`:\n\n```ruby\ntarget '<Your Target Name>' do\n  pod 'Cartography', '~> 3.0'\nend\n```\n\nThen, run the following command:\n\n```bash\n$ pod install\n```\n\n## Usage\n\nCall the `constrain`_*_ function with your `UIView` or `NSView` instances as well\nas a closure in which you declare the constraints between the different\nattributes of your views:\n\n```swift\nconstrain(view1, view2) { view1, view2 in\n    view1.width   == (view1.superview!.width - 50) * 0.5\n    view2.width   == view1.width - 50\n    view1.height  == 40\n    view2.height  == view1.height\n    view1.centerX == view1.superview!.centerX\n    view2.centerX == view1.centerX\n\n    view1.top >= view1.superview!.top + 20\n    view2.top == view1.bottom + 20\n}\n```\n\n<img src=\"/images/pirates1.png\" align=\"left\" height=\"220px\" hspace=\"20px\" vspace=\"10px\">\n\nFor every view on the left hand side of an equality or inequality operator,\nCartography will automatically set its\n`translatesAutoresizingMaskIntoConstraints` property to `false`.\n\nIf the view is\nnot controlled by you–for example _if it belongs to a Apple-provided\n`UIViewController` class_–you should take appropriate care when declaring its\nconstraints.\n\n<br><br>\n\n## Replacing constraints\n\nYou can capture multiple constraints in a group to then replace them with new\nconstraints at a later point.\n\n```swift\nconstrain(view) { view in\n    view.width  == 100\n    view.height == 100\n}\n\nlet group = ConstraintGroup()\n\n// Attach `view` to the top left corner of its superview\nconstrain(view, replace: group) { view in\n    view.top  == view.superview!.top\n    view.left == view.superview!.left\n}\n\n/* Later */\n\n// Move the view to the bottom right corner of its superview\nconstrain(view, replace: group) { view in\n    view.bottom == view.superview!.bottom\n    view.right  == view.superview!.right\n}\n\nUIView.animate(withDuration: 0.5, animations: view.layoutIfNeeded)\n```\n\nFor convenience, the `constrain` functions also returns `ConstraintGroup`\ninstances:\n\n```swift\nlet group = constrain(button) { button in\n    button.width  == 100\n    button.height == 400\n}\n```\n\n## Supported attributes\n\n\nCartography supports all built-in attributes as of iOS 8 and OS X 10.9, those are:\n\n<img src=\"/images/pirates3.png\" align=\"right\" height=\"400px\" hspace=\"20px\" vspace=\"100px\">\n\n- `width`\n- `height`\n- `top`\n- `right`\n- `bottom`\n- `left`\n- `leading`\n- `trailing`\n- `centerX`\n- `centerY`\n- `baseline`\n\nas well as the iOS specific\n\n- `firstBaseline`\n- `leftMargin`\n- `rightMargin`\n- `topMargin`\n- `bottomMargin`\n- `leadingMargin`\n- `trailingMargin`\n- `centerXWithinMargins`\n- `centerYWithinMargins`\n- `edgesWithinMargins`\n\nThese can be further refined using the following operators: `*`, `/`, `+` and\n`-`.\n\nAdditionally, it supports convenient compound attributes that allow you to\nassign multiple attributes at once:\n\n```swift\nconstrain(view) { view in\n    view.size   == view.superview!.size / 2\n    view.center == view.superview!.center\n}\n```\n\n```swift\nconstrain(view) { view in\n    view.edges == inset(view.superview!.edges, 20, 20, 40, 20)\n}\n```\n\n### Aligning multiple view\n\nIf you need to align multiple views by a common edge, you can use the `align`\nfunctions:\n\n```swift\nconstrain(view1, view2, view3) { view1, view2, view3 in\n    align(top: view1, view2, view3)\n}\n```\n\nWhich is equivalent to `view1.top == view2.top; view2.top == view3.top`. Similar\nvariants exist for `top`, `right` `bottom`, `left`, `leading`, `trailing`,\n`centerX`, `centerY` and `baseline`.\n\n### Distributing views evenly\n\nFor distributing multiple views, either horizontally or vertically, you can use\nthe `distribute` functions:\n\n```swift\nconstrain(view1, view2, view3) { view1, view2, view3 in\n    distribute(by: 10, horizontally: view1, view2, view3)\n}\n```\n\nWhich is equivalent to `view1.trailing == view2.leading - 10; view2.trailing == view3.leading - 10`.\n\n## Setting priorities\n\nYou can set the priorities of your constraints using the `~` operator:\n\n```swift\nconstrain(view) { view in\n    view.width  >= 200 ~ UILayoutPriority(100)\n    view.height >= 200 ~ .required\n}\n```\n\n## Capturing constraints\n\nSince the `==`, `>=`, `<=` and `~` emit `NSLayoutConstraint` instances, you can\ncapture their results if you need to refer to the layout constraints at a later\ntime:\n\n```swift\nvar width: NSLayoutConstraint?\n\nconstrain(view) { view in\n    width = (view.width == 200 ~ 100)\n}\n```\n\nNote that declaring compound attributes returns multiple constraints at once:\n\n```swift\nvar constraints: [NSLayoutConstraint]?\n\nconstrain(view) { view in\n    constraints = (view.size == view.superview!.size ~ .defaultLow)\n}\n```\n\n## Documentation\n\nRead the documentation [here](http://robb.github.io/Cartography/). For more information, see the [gh-pages](https://github.com/robb/Cartography/tree/gh-pages) branch.\n\n\n\\* Since Xcode 11 and swift 5.1 the keyword `constrain` conflicts with the ones used by the **CommonUISDK**... so, Calling the function with the module name is necessary to make it work properly\n\ne.g.: `Cartography.constrain`\n\nIf you're using it with Xcode 10.3 or earlier, you can still use it as it is, without the module name alongside the function.\n\n## Versioning\n\nFor *Swift 3.x*: Versions <= 1.1.0\n\nFor *Swift 4.x*: Versions >= 2.0.0\n\nFor *Swift 5.x*: Versions >= 4.0.0\n\n## Support\n\nPlease, don't hesitate to [file an\nissue](https://github.com/robb/Cartography/issues/new) if you have questions.\n\n## About Cartography\n\nCartography was built by [Robb Böhnke][me], is maintained by [Orta Therox][ot] and was inspired by the excellent\n[FLKAutoLayout] by [Florian Kugler][florian].\n\n[flkautolayout]: https://github.com/floriankugler/FLKAutoLayout\n[florian]:       https://github.com/floriankugler\n[me]:            http://robb.is\n[twitter]:       https://twitter.com/dlx\n[email]:         mailto:robb@robb.is\n[ot]:            https://github.com/orta\n"
  }
]