[
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n## Build generated\nbuild/\nDerivedData/\n\n## Various settings\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata/\n\n## Other\n*.moved-aside\n*.xccheckout\n*.xcscmblueprint\n\n## Obj-C/Swift specific\n*.hmap\n*.ipa\n*.dSYM.zip\n*.dSYM\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n#\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\n# Packages/\n# Package.pins\n.build/\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n#\n# Pods/\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the\n# screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://docs.fastlane.tools/best-practices/source-control/#source-control\n\nfastlane/report.xml\nfastlane/Preview.html\nfastlane/screenshots\nfastlane/test_output\n"
  },
  {
    "path": ".swift-version",
    "content": "4.2.1\n"
  },
  {
    "path": ".swiftlint.yml",
    "content": "disabled_rules: # rule identifiers to exclude from running\n  - force_cast\n  - force_try\n  - function_parameter_count\n  - line_length\n  - todo\n  - trailing_comma\n  - valid_docs\n  - variable_name\nincluded:\n  - ProcessingKit/\nexcluded: # paths to ignore during linting.\ntype_body_length:\n  - 400 # warning\n  - 500 # error\nfunction_body_length:\n  - 150 # warning\n  - 200 # error\nfile_length:\n  warning: 600 # warning\n  error: 1000 # error\ntype_name:\n  max_length:\n    warning: 60 # warning\n    error: 80 # error\nvertical_whitespace:\n      severity: error\ntrailing_newline:\n      severity: error\nvariable_name:\n  min_length: # not possible to disable this partial rule, so set it to zero\n    warning: 0\n    error: 0\n  max_length:\n    warning: 60 # warning\n    error: 80 # error\n  excluded:\n    - id\n    - e\n"
  },
  {
    "path": ".travis.yml",
    "content": "osx_image: xcode10.1\nlanguage: objective-c\nbranches:\n  only:\n    - master\nbefore_install:\n    - gem install xcpretty\nbefore_script:\n    - set -o pipefail\nscript:\n    - swiftlint\n    - xcodebuild test -project ./ProcessingKit.xcodeproj -scheme ProcessingKitTests -configuration Debug -sdk iphonesimulator -destination 'platform=iOS Simulator,OS=12.0,name=iPhone X' | xcpretty -c\n    - xcodebuild -project ./ProcessingKit.xcodeproj -scheme 'ProcessingKit OSX' -configuration Debug | xcpretty -c\nafter_success:\n    - bash <(curl -s https://codecov.io/bash)\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at natmark0918@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nWhen contributing to this repository, please first discuss the change you wish to make via issue,\nemail, or any other method with the owners of this repository before making a change. \n\nPlease note we have a code of conduct, please follow it in all your interactions with the project.\n\n## Pull Request Process\n\n1. Ensure any install or build dependencies are removed before the end of the layer when doing a \n   build.\n2. Update the README.md with details of changes to the interface, this includes new environment \n   variables, exposed ports, useful file locations and container parameters.\n3. Increase the version numbers in any examples files and the README.md to the new version that this\n   Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/).\n4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you \n   do not have permission to do that, you may request the second reviewer to merge it for you.\n\n## Code of Conduct\n\n### Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\n### Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\nadvances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n### Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n### Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n### Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at natmark0918@gmail.com . All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n### Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2017 Atsuya Sato\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\nfurnished to 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 THE\nSOFTWARE.\n"
  },
  {
    "path": "ProcessingKit/Core/Color/Color.swift",
    "content": "//\n//  Color.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/13.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic protocol ColorComponentsContract {\n    var fill: UIColor { get set }\n    var stroke: UIColor { get set }\n    var strokeWeight: CGFloat { get set }\n}\n\npublic protocol ColorModelContract {\n    func background(_ color: UIColor)\n    func background(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat)\n    func clear()\n    mutating func fill(_ color: UIColor)\n    mutating func fill(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat)\n    mutating func stroke(_ color: UIColor)\n    mutating func stroke(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat)\n    mutating func strokeWeight(_ weight: CGFloat)\n    mutating func noFill()\n    mutating func noStroke()\n}\n\npublic class ColorComponents: ColorComponentsContract {\n    public var fill: UIColor = UIColor.white\n    public var stroke: UIColor = UIColor.clear\n    public var strokeWeight: CGFloat = 1.0\n\n    public init() {}\n}\n\npublic struct ColorModel: ColorModelContract {\n    private var contextComponents: ContextComponenetsContract\n    private var colorComponents: ColorComponentsContract\n    private var frameComponents: FrameComponentsContract\n\n    public init(contextComponents: ContextComponenetsContract, colorComponents: ColorComponentsContract, frameComponents: FrameComponentsContract) {\n        self.contextComponents = contextComponents\n        self.colorComponents = colorComponents\n        self.frameComponents = frameComponents\n    }\n\n    public func background(_ color: UIColor) {\n        let context = self.contextComponents.context\n        context?.clear(self.frameComponents.bounds)\n    }\n\n    public func background(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat) {\n        self.background(UIColor(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: a / 255.0))\n    }\n\n    public func clear() {\n        let context = self.contextComponents.context\n        context?.clear(self.frameComponents.bounds)\n    }\n\n    public mutating func fill(_ color: UIColor) {\n        self.colorComponents.fill = color\n    }\n\n    public mutating func fill(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat) {\n        self.fill(UIColor(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: a / 255.0))\n    }\n\n    public mutating func stroke(_ color: UIColor) {\n        self.colorComponents.stroke = color\n    }\n\n    public mutating func stroke(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat) {\n        self.stroke(UIColor(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: a / 255.0))\n    }\n\n    public mutating func strokeWeight(_ weight: CGFloat) {\n        self.colorComponents.strokeWeight = weight\n    }\n\n    public mutating func noFill() {\n        self.colorComponents.fill = UIColor.clear\n    }\n\n    public mutating func noStroke() {\n        self.colorComponents.stroke = UIColor.clear\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Constants/Constants.swift",
    "content": "//\n//  Constants.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/13.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic protocol Constants {\n    var HALF_PI: CGFloat { get }\n    var PI: CGFloat { get }\n    var QUARTER_PI: CGFloat { get }\n    var TAU: CGFloat { get }\n    var TWO_PI: CGFloat { get }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Context/Context.swift",
    "content": "//\n//  Context.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/12/31.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\npublic typealias UIColor = NSColor\npublic typealias UIImageView = NSImageView\npublic typealias UIImage = NSImage\npublic typealias UIViewController = NSViewController\npublic typealias UITouch = NSTouch\npublic typealias UIFont = NSFont\npublic typealias UIEvent = NSEvent\npublic typealias UIView = NSView\npublic typealias UIResponder = NSResponder\npublic typealias CGRect = NSRect\npublic typealias CGPoint = NSPoint\n#endif\n\npublic protocol ContextComponenetsContract {\n    var context: CGContext? { get }\n}\n\npublic class ContextComponents: ContextComponenetsContract {\n    public init() {\n    }\n\n    public var context: CGContext? {\n        #if os(iOS)\n        return UIGraphicsGetCurrentContext()\n        #elseif os(OSX)\n        return NSGraphicsContext.current?.cgContext\n        #endif\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Environment/Frame.swift",
    "content": "//\n//  Frame.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/13.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic protocol FrameComponentsContract {\n    var bounds: CGRect { get set }\n    var frame: CGRect { get set }\n    var frameRate: CGFloat { get set }\n    var frameCount: UInt64 { get set }\n}\n\npublic protocol FrameModelContract {\n    var width: CGFloat { get }\n    var height: CGFloat { get }\n    var frameRate: CGFloat { get }\n    mutating func frameRate(_ fps: CGFloat)\n}\n\npublic class FrameComponents: FrameComponentsContract {\n    public var bounds: CGRect = CGRect.zero\n    public var frame: CGRect = CGRect.zero\n    public var frameRate: CGFloat = 60.0\n    public var frameCount: UInt64 = 0\n\n    public init() {}\n}\n\npublic struct FrameModel: FrameModelContract {\n    private var frameComponents: FrameComponentsContract\n    private var timer: Timer?\n\n    public init(frameComponents: FrameComponentsContract, timer: Timer?) {\n        self.frameComponents = frameComponents\n        self.timer = timer\n    }\n\n    public var width: CGFloat {\n        return self.frameComponents.bounds.size.width\n    }\n\n    public var height: CGFloat {\n        return self.frameComponents.bounds.size.height\n    }\n\n    public var frameRate: CGFloat {\n        return self.frameComponents.frameRate\n    }\n\n    public mutating func frameRate(_ fps: CGFloat) {\n        self.frameComponents.frameRate = fps\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Extensions/CGPoint.swift",
    "content": "//\n//  CGPoint.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/12/30.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension CGPoint: Hashable {\n    func distance(point: CGPoint) -> Float {\n        let dx = Float(x - point.x)\n        let dy = Float(y - point.y)\n        return sqrt((dx * dx) + (dy * dy))\n    }\n    public var hashValue: Int {\n        return x.hashValue << 32 ^ y.hashValue\n    }\n}\n\nfunc == (lhs: CGPoint, rhs: CGPoint) -> Bool {\n    return lhs.distance(point: rhs) < 0.000001\n}\n\nextension CGPoint {\n    func addTo(_ a: CGPoint) -> CGPoint {\n        return CGPoint(x: self.x + a.x, y: self.y + a.y)\n    }\n\n    func deltaTo(_ a: CGPoint) -> CGPoint {\n        return CGPoint(x: self.x - a.x, y: self.y - a.y)\n    }\n\n    func multiplyBy(_ value: CGFloat) -> CGPoint {\n        return CGPoint(x: self.x * value, y: self.y * value)\n    }\n\n    func length() -> CGFloat {\n        return CGFloat(sqrt(CDouble(\n            self.x*self.x + self.y*self.y\n        )))\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Extensions/NSImage.swift",
    "content": "//\n//  NSImage.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/12/31.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(OSX)\nimport Cocoa\n#endif\n\nextension NSImage {\n    var cgImage: CGImage? {\n        var imageRect = NSRect(x: 0, y: 0, width: size.width, height: size.height)\n        #if swift(>=3.0)\n            guard let image =  cgImage(forProposedRect: &imageRect, context: nil, hints: nil) else {\n                return nil\n            }\n        #else\n            guard let image = CGImageForProposedRect(&imageRect, context: nil, hints: nil) else {\n            return nil\n            }\n        #endif\n        return image\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Extensions/NSView.swift",
    "content": "//\n//  NSView.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/12/31.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\n#if os(OSX)\nimport Cocoa\n#endif\n\nextension NSView {\n    var backgroundColor: NSColor? {\n        get {\n            guard let layer = layer, let backgroundColor = layer.backgroundColor else {return nil}\n            return NSColor(cgColor: backgroundColor)\n        }\n        set {\n            wantsLayer = true\n            layer?.backgroundColor = newValue?.cgColor\n        }\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Extensions/String.swift",
    "content": "//\n//  String.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\n#if os(iOS)\nimport UIKit\n#else\nimport Cocoa\n#endif\n\nextension String {\n    func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {\n        let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)\n        let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)\n\n        return ceil(boundingBox.height)\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Extensions/UIColor.swift",
    "content": "//\n//  UIColor.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension UIColor {\n    class func hexStr (hexStr: NSString, alpha: CGFloat) -> UIColor {\n        let alpha = alpha\n        var hexStr = hexStr\n        hexStr = hexStr.replacingOccurrences(of: \"#\", with: \"\") as NSString\n        let scanner = Scanner(string: hexStr as String)\n        var color: UInt32 = 0\n        if scanner.scanHexInt32(&color) {\n            let r = CGFloat((color & 0xFF0000) >> 16) / 255.0\n            let g = CGFloat((color & 0x00FF00) >> 8) / 255.0\n            let b = CGFloat(color & 0x0000FF) / 255.0\n            return UIColor(red: r, green: g, blue: b, alpha: alpha)\n        } else {\n            print(\"invalid hex string\")\n            return UIColor.white\n        }\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Image/Image.swift",
    "content": "//\n//  Image.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic protocol ImageModelContract {\n    #if os(iOS)\n    func image(_ img: UIImage, _ x: CGFloat, _ y: CGFloat)\n    func image(_ img: UIImage, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat)\n    #elseif os(OSX)\n    func drawImage(_ img: NSImage, _ x: CGFloat, _ y: CGFloat)\n    func drawImage(_ img: NSImage, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat)\n    #endif\n}\n\npublic struct ImageModel: ImageModelContract {\n    private var contextComponents: ContextComponenetsContract\n\n    public init(contextComponents: ContextComponenetsContract) {\n        self.contextComponents = contextComponents\n    }\n\n    #if os(iOS)\n    public func image(_ img: UIImage, _ x: CGFloat, _ y: CGFloat) {\n        let context = self.contextComponents.context\n        context?.saveGState()\n        context?.translateBy(x: 0.0, y: img.size.height)\n        context?.scaleBy(x: 1.0, y: -1.0)\n        if let cgImg = img.cgImage {\n            context?.draw(cgImg, in: CGRect(x: x, y: y, width: img.size.width, height: img.size.height))\n        }\n        context?.restoreGState()\n    }\n\n    public func image(_ img: UIImage, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        let context = self.contextComponents.context\n        context?.saveGState()\n        context?.translateBy(x: 0.0, y: height)\n        context?.scaleBy(x: 1.0, y: -1.0)\n        if let cgImg = img.cgImage {\n            context?.draw(cgImg, in: CGRect(x: x, y: -y, width: width, height: height))\n        }\n        context?.restoreGState()\n    }\n    #elseif os(OSX)\n    public func drawImage(_ img: NSImage, _ x: CGFloat, _ y: CGFloat) {\n        let context = self.contextComponents.context\n        context?.saveGState()\n        context?.translateBy(x: 0.0, y: img.size.height)\n        context?.scaleBy(x: 1.0, y: -1.0)\n        if let cgImg = img.cgImage {\n            context?.draw(cgImg, in: CGRect(x: x, y: y, width: img.size.width, height: img.size.height))\n        }\n        context?.restoreGState()\n    }\n\n    public func drawImage(_ img: NSImage, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        let context = self.contextComponents.context\n        context?.saveGState()\n        context?.translateBy(x: 0.0, y: height)\n        context?.scaleBy(x: 1.0, y: -1.0)\n        if let cgImg = img.cgImage {\n            context?.draw(cgImg, in: CGRect(x: x, y: -y, width: width, height: height))\n        }\n        context?.restoreGState()\n    }\n    #endif\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Input/Date.swift",
    "content": "//\n//  Date.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/09/27.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\npublic protocol DateModelContract {\n    func millis() -> Int\n    func second() -> Int\n    func minute() -> Int\n    func hour() -> Int\n    func day() -> Int\n    func month() -> Int\n    func year() -> Int\n}\n\npublic struct DateModel: DateModelContract {\n    private var currentDate: Date?\n    private var startDate: Date\n\n    // for test\n    public init(startDate: Date, currentDate: Date) {\n        self.startDate = startDate\n        self.currentDate = currentDate\n    }\n\n    public init(startDate: Date) {\n        self.startDate = startDate\n    }\n\n    public func millis() -> Int {\n        return self.getMillis()\n    }\n\n    public func second() -> Int {\n        return self.getComponents().second ?? 0\n    }\n\n    public func minute() -> Int {\n        return self.getComponents().minute ?? 0\n    }\n\n    public func hour() -> Int {\n        return self.getComponents().hour ?? 0\n    }\n\n    public func day() -> Int {\n        return self.getComponents().day ?? 0\n    }\n\n    public func month() -> Int {\n        return self.getComponents().month ?? 0\n    }\n\n    public func year() -> Int {\n        return self.getComponents().year ?? 0\n    }\n\n    private func getMillis() -> Int {\n        let date = Date().timeIntervalSince(startDate)\n\n        let intMax = Double(Int.max)\n        if intMax <= date * 1000 {\n            return -1\n        }\n        return Int(date * 1000)\n    }\n\n    private func getComponents() -> DateComponents {\n        let calendar = Calendar.current\n        let components = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: currentDate ?? Date())\n        return components\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Input/Gesture.swift",
    "content": "//\n//  Gesture.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/10/07.\n//  Copyright © 2018 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic enum GestureEvent {\n    #if os(iOS)\n    case didTap\n    case didRelease\n    case didDrag\n    case didSwipe(direction: UISwipeGestureRecognizer.Direction)\n    case didPinch(scale: CGFloat, velocity: CGFloat)\n    case didRotate(rotation: CGFloat, velocity: CGFloat)\n    case didLongPress\n    #elseif os(OSX)\n    case didClick\n    case didRelease\n    case didDrag\n    case didMove\n    case didMagnify(magnification: CGFloat)\n    case didRotate(rotation: CGFloat, inDegrees: CGFloat)\n    case didPress\n    case didScroll(x: CGFloat, y: CGFloat)\n    #endif\n}\n\npublic protocol GestureComponentsContract {\n    var delegateEvents: [GestureEvent] { get set }\n    #if os(iOS)\n    var isPressed: Bool { get set }\n    var touchX: CGFloat { get set }\n    var touchY: CGFloat { get set }\n    var touches: Set<CGPoint> { get set }\n    #elseif os(OSX)\n    var isPressed: Bool { get set }\n    var mouseX: CGFloat { get set }\n    var mouseY: CGFloat { get set }\n    #endif\n}\n\npublic protocol GestureModelContract {\n    #if os(iOS)\n    var fingerPressed: Bool { get }\n    var touchX: CGFloat { get }\n    var touchY: CGFloat { get }\n    var touches: Set<CGPoint> { get }\n\n    mutating func didTap(recognizer: UITapGestureRecognizer)\n    mutating func didTapExit(recognizer: UITapGestureRecognizer)\n    mutating func didPan(recognizer: UIPanGestureRecognizer)\n\n    mutating func didSwipe(recognizer: UISwipeGestureRecognizer)\n    mutating func didPinch(recognizer: UIPinchGestureRecognizer)\n    mutating func didRotate(recognizer: UIRotationGestureRecognizer)\n    mutating func didLongPress(recognizer: UILongPressGestureRecognizer)\n\n    mutating func touchesBegan(_ touches: Set<CGPoint>)\n    mutating func touchesMoved(_ touches: Set<CGPoint>)\n    mutating func touchesEnded(_ touches: Set<CGPoint>)\n    #elseif os(OSX)\n    var mousePressed: Bool { get }\n    var mouseX: CGFloat { get }\n    var mouseY: CGFloat { get }\n\n    mutating func didClick(recognizer: NSClickGestureRecognizer)\n    mutating func didClickExit(recognizer: NSClickGestureRecognizer)\n    mutating func didMagnify(recognizer: NSMagnificationGestureRecognizer)\n    mutating func didPan(recognizer: NSPanGestureRecognizer)\n    mutating func didPress(recognizer: NSPressGestureRecognizer)\n    mutating func didRotate(recognizer: NSRotationGestureRecognizer)\n\n    mutating func scrollWheel(with event: NSEvent)\n    mutating func mouseMoved(with event: NSEvent)\n\n    mutating func mouseDown(_ location: NSPoint)\n    mutating func mouseDragged(_ location: NSPoint)\n    mutating func mouseUp(_ location: NSPoint)\n    mutating func mouseMoved(_ location: NSPoint)\n    #endif\n}\n\npublic class GestureComponents: GestureComponentsContract {\n    public var delegateEvents: [GestureEvent] = []\n\n    #if os(iOS)\n    public var isPressed = false\n    public var touchX: CGFloat = 0.0\n    public var touchY: CGFloat = 0.0\n    public var touches: Set<CGPoint> = []\n    #elseif os(OSX)\n    public var isPressed: Bool = false\n    public var mouseX: CGFloat = 0.0\n    public var mouseY: CGFloat = 0.0\n    #endif\n\n    public init() {}\n}\n\npublic struct GestureModel: GestureModelContract {\n    private var gestureComponents: GestureComponentsContract\n    private var frameComponents: FrameComponentsContract\n\n    public init(gestureComponents: GestureComponentsContract,\n                frameComponents: FrameComponentsContract) {\n        self.gestureComponents = gestureComponents\n        self.frameComponents = frameComponents\n    }\n\n    #if os(iOS)\n    public var fingerPressed: Bool {\n        return self.gestureComponents.isPressed\n    }\n\n    public var touchX: CGFloat {\n        return self.gestureComponents.touches.first?.x ?? 0.0\n    }\n\n    public var touchY: CGFloat {\n        return self.gestureComponents.touches.first?.y ?? 0.0\n    }\n\n    public var touches: Set<CGPoint> {\n        return self.gestureComponents.touches\n    }\n    #elseif os(OSX)\n    public var mousePressed: Bool {\n        return self.gestureComponents.isPressed\n    }\n\n    public var mouseX: CGFloat {\n        return self.gestureComponents.mouseX\n    }\n\n    public var mouseY: CGFloat {\n        return self.gestureComponents.mouseY\n    }\n    #endif\n\n    #if os(iOS)\n    public mutating func touchesBegan(_ touches: Set<CGPoint>) {\n        self.gestureComponents.touches = touches\n        self.gestureComponents.isPressed = true\n    }\n\n    public mutating func touchesMoved(_ touches: Set<CGPoint>) {\n        self.gestureComponents.touches = touches\n    }\n\n    public mutating func touchesEnded(_ touches: Set<CGPoint>) {\n        self.gestureComponents.touches.removeAll()\n        self.gestureComponents.isPressed = false\n    }\n\n    public mutating func didTap(recognizer: UITapGestureRecognizer) {\n        self.touchesBegan(self.touchesFrom(recognizer: recognizer))\n        self.gestureComponents.delegateEvents.append(.didTap)\n    }\n    public mutating func didTapExit(recognizer: UITapGestureRecognizer) {\n        self.touchesEnded(self.touchesFrom(recognizer: recognizer))\n    }\n    public mutating func didPan(recognizer: UIPanGestureRecognizer) {\n        self.handleTap(recognizer: recognizer)\n        self.gestureComponents.delegateEvents.append(.didDrag)\n    }\n    public mutating func didSwipe(recognizer: UISwipeGestureRecognizer) {\n        self.gestureComponents.delegateEvents.append(.didSwipe(direction: recognizer.direction))\n    }\n    public mutating func didPinch(recognizer: UIPinchGestureRecognizer) {\n        self.handleTap(recognizer: recognizer)\n        self.gestureComponents.delegateEvents.append(.didPinch(scale: recognizer.scale, velocity: recognizer.velocity))\n    }\n    public mutating func didRotate(recognizer: UIRotationGestureRecognizer) {\n        self.handleTap(recognizer: recognizer)\n        self.gestureComponents.delegateEvents.append(.didRotate(rotation: recognizer.rotation, velocity: recognizer.velocity))\n    }\n    public mutating func didLongPress(recognizer: UILongPressGestureRecognizer) {\n        self.handleTap(recognizer: recognizer)\n        self.gestureComponents.delegateEvents.append(.didLongPress)\n    }\n\n    private mutating func handleTap(recognizer: UIGestureRecognizer) {\n        switch recognizer.state {\n        case .possible: return\n        case .began:\n            self.touchesBegan(touchesFrom(recognizer: recognizer))\n        case .changed:\n            self.touchesMoved(touchesFrom(recognizer: recognizer))\n        case .ended:\n            self.touchesEnded(touchesFrom(recognizer: recognizer))\n        case .cancelled:\n            self.touchesEnded(touchesFrom(recognizer: recognizer))\n        case .failed:\n            self.touchesEnded(touchesFrom(recognizer: recognizer))\n        }\n    }\n\n    private func touchesFrom(recognizer: UIGestureRecognizer) -> Set<CGPoint> {\n        var touches = Set<CGPoint>()\n        for i in 0..<recognizer.numberOfTouches {\n            touches.insert(recognizer.location(ofTouch: i, in: recognizer.view))\n        }\n        return touches\n    }\n    #elseif os(OSX)\n    public mutating func mouseDown(_ location: NSPoint) {\n        self.gestureComponents.mouseX = self.convertCoordinateSystem(location: location).x\n        self.gestureComponents.mouseY = self.convertCoordinateSystem(location: location).y\n        self.gestureComponents.isPressed = true\n    }\n\n    public mutating func mouseDragged(_ location: NSPoint) {\n        self.gestureComponents.mouseX = self.convertCoordinateSystem(location: location).x\n        self.gestureComponents.mouseY = self.convertCoordinateSystem(location: location).y\n    }\n\n    public mutating func mouseUp(_ location: NSPoint) {\n        self.gestureComponents.isPressed = false\n    }\n\n    public mutating func mouseMoved(_ location: NSPoint) {\n        self.gestureComponents.mouseX = self.convertCoordinateSystem(location: location).x\n        self.gestureComponents.mouseY = self.convertCoordinateSystem(location: location).y\n    }\n\n    public mutating func scrollWheel(with event: NSEvent) {\n        self.gestureComponents.delegateEvents.append(.didScroll(x: event.deltaX, y: event.deltaY))\n    }\n    public mutating func mouseMoved(with event: NSEvent) {\n        self.gestureComponents.delegateEvents.append(.didMove)\n\n        let dummyView = NSView(frame: frameComponents.frame)\n        let location = dummyView.convert(event.locationInWindow, to: nil)\n        self.mouseMoved(location)\n    }\n\n    public mutating func didClick(recognizer: NSClickGestureRecognizer) {\n        self.mouseDown(touchesFrom(recognizer: recognizer))\n        self.gestureComponents.delegateEvents.append(.didClick)\n    }\n    public mutating func didClickExit(recognizer: NSClickGestureRecognizer) {\n        self.mouseUp(touchesFrom(recognizer: recognizer))\n    }\n    public mutating func didMagnify(recognizer: NSMagnificationGestureRecognizer) {\n        self.gestureComponents.delegateEvents.append(.didMagnify(magnification: recognizer.magnification))\n    }\n    public mutating func didPan(recognizer: NSPanGestureRecognizer) {\n        handlePress(recognizer: recognizer)\n        self.gestureComponents.delegateEvents.append(.didDrag)\n    }\n    public mutating func didPress(recognizer: NSPressGestureRecognizer) {\n        handlePress(recognizer: recognizer)\n        self.gestureComponents.delegateEvents.append(.didPress)\n    }\n    public mutating func didRotate(recognizer: NSRotationGestureRecognizer) {\n        self.gestureComponents.delegateEvents.append(.didRotate(rotation: recognizer.rotation, inDegrees: recognizer.rotationInDegrees))\n    }\n\n    private mutating func handlePress(recognizer: NSGestureRecognizer) {\n        switch recognizer.state {\n        case .possible: return\n        case .began:\n            self.mouseDown(touchesFrom(recognizer: recognizer))\n        case .changed:\n            self.mouseDragged(touchesFrom(recognizer: recognizer))\n        case .ended:\n            self.mouseUp(touchesFrom(recognizer: recognizer))\n        case .cancelled:\n            self.mouseUp(touchesFrom(recognizer: recognizer))\n        case .failed:\n            self.mouseUp(touchesFrom(recognizer: recognizer))\n        }\n    }\n\n    private func touchesFrom(recognizer: NSGestureRecognizer) -> NSPoint {\n        return recognizer.location(in: recognizer.view)\n    }\n\n    private func convertCoordinateSystem(location: NSPoint) -> NSPoint {\n        let height = frameComponents.frame.size.height\n        // MARK: Coordinate systems are different between iOS and OS X\n        return NSPoint(x: location.x, y: height - location.y)\n    }\n    #endif\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Shape/Shape.swift",
    "content": "//\n//  Graphics.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/09.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic protocol ShapeModelContract {\n    func point(_ x: CGFloat, _ y: CGFloat)\n    func line(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat)\n    func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat)\n    func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat, _ radius: CGFloat)\n    func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat, _ topLeftRadius: CGFloat, _ topRightRadius: CGFloat, _ bottomLeftRadius: CGFloat, _ bottomRightRadius: CGFloat)\n    func ellipse(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat)\n    func arc(_ x: CGFloat, _ y: CGFloat, _ radius: CGFloat, _ start: CGFloat, _ stop: CGFloat)\n    func triangle(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ x3: CGFloat, _ y3: CGFloat)\n    func quad(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ x3: CGFloat, _ y3: CGFloat, _ x4: CGFloat, _ y4: CGFloat)\n    func curve(_ cpx1: CGFloat, _ cpy1: CGFloat, _ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ cpx2: CGFloat, _ cpy2: CGFloat)\n    func bezier(_ x1: CGFloat, _ y1: CGFloat, _ cpx1: CGFloat, _ cpy1: CGFloat, _ cpx2: CGFloat, _ cpy2: CGFloat, _ x2: CGFloat, _ y2: CGFloat)\n    func radians(_ degrees: CGFloat) -> CGFloat\n}\n\npublic struct ShapeModel: ShapeModelContract {\n    private var colorComponents: ColorComponentsContract\n    private var contextComponents: ContextComponenetsContract\n\n    public init(contextComponents: ContextComponenetsContract, colorComponents: ColorComponentsContract) {\n        self.contextComponents = contextComponents\n        self.colorComponents = colorComponents\n    }\n\n    public func point(_ x: CGFloat, _ y: CGFloat) {\n        let context = self.contextComponents.context\n        context?.setFillColor(self.colorComponents.stroke.cgColor)\n\n        drawing(mode: .fill) {\n            let width = self.colorComponents.strokeWeight\n            let height = self.colorComponents.strokeWeight\n            context?.addEllipse(in: CGRect(x: x - width / 2, y: y - height / 2, width: width, height: height))\n        }\n    }\n\n    public func line(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        drawing(mode: .stroke) {\n            context?.move(to: CGPoint(x: x1, y: y1))\n            context?.addLine(to: CGPoint(x: x2, y: y2))\n        }\n    }\n\n    public func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        drawing(mode: .fillStroke) {\n            context?.addRect(CGRect(x: x, y: y, width: width, height: height))\n        }\n    }\n\n    public func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat, _ radius: CGFloat) {\n        self.rect(x, y, width, height, radius, radius, radius, radius)\n    }\n\n    public func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat, _ topLeftRadius: CGFloat, _ topRightRadius: CGFloat, _ bottomLeftRadius: CGFloat, _ bottomRightRadius: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        var topLeftRadius = topLeftRadius\n        var topRightRadius = topRightRadius\n        var bottomLeftRadius = bottomLeftRadius\n        var bottomRightRadius = bottomRightRadius\n        if topLeftRadius > min(width, height) / 2 {\n            topLeftRadius = min(width, height) / 2\n        }\n        if topRightRadius > min(width, height) / 2 {\n            topRightRadius = min(width, height) / 2\n        }\n        if bottomLeftRadius > min(width, height) / 2 {\n            bottomLeftRadius = min(width, height) / 2\n        }\n        if bottomRightRadius > min(width, height) / 2 {\n            bottomRightRadius = min(width, height) / 2\n        }\n\n        drawing(mode: .fillStroke) {\n            context?.beginPath()\n            context?.move(to: CGPoint(x: x + topLeftRadius, y: y))\n\n            context?.addLine(to: CGPoint(x: x + width - topRightRadius, y: y))\n            context?.addArc(center: CGPoint(x: x + width - topRightRadius, y: y + topRightRadius), radius: topRightRadius, startAngle: radians(-90), endAngle: radians(0), clockwise: false)\n\n            context?.addLine(to: CGPoint(x: x + width, y: y + height - bottomRightRadius))\n            context?.addArc(center: CGPoint(x: x + width - bottomRightRadius, y: y + height - bottomRightRadius), radius: bottomRightRadius, startAngle: radians(0), endAngle: radians(90), clockwise: false)\n\n            context?.addLine(to: CGPoint(x: x + bottomLeftRadius, y: y + height))\n            context?.addArc(center: CGPoint(x: x + bottomLeftRadius, y: y + height - bottomLeftRadius), radius: bottomLeftRadius, startAngle: radians(90), endAngle: radians(180), clockwise: false)\n\n            context?.addLine(to: CGPoint(x: x, y: y + topLeftRadius))\n            context?.addArc(center: CGPoint(x: x + topLeftRadius, y: y + topLeftRadius), radius: topLeftRadius, startAngle: radians(180), endAngle: radians(270), clockwise: false)\n\n            context?.closePath()\n        }\n    }\n\n    public func ellipse(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        drawing(mode: .fillStroke) {\n            context?.addEllipse(in: CGRect(x: x - width / 2, y: y - height / 2, width: width, height: height))\n        }\n    }\n\n    public func arc(_ x: CGFloat, _ y: CGFloat, _ radius: CGFloat, _ start: CGFloat, _ stop: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        drawing(mode: .fillStroke) {\n            context?.addArc(center: CGPoint(x: x, y: y), radius: radius, startAngle: start, endAngle: stop, clockwise: false)\n        }\n    }\n\n    public func triangle(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ x3: CGFloat, _ y3: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        drawing(mode: .fillStroke) {\n            context?.beginPath()\n            context?.move(to: CGPoint(x: x1, y: y1))\n            context?.addLine(to: CGPoint(x: x2, y: y2))\n            context?.addLine(to: CGPoint(x: x3, y: y3))\n            context?.closePath()\n        }\n    }\n\n    public func quad(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ x3: CGFloat, _ y3: CGFloat, _ x4: CGFloat, _ y4: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        drawing(mode: .fillStroke) {\n            context?.beginPath()\n            context?.move(to: CGPoint(x: x1, y: y1))\n            context?.addLine(to: CGPoint(x: x2, y: y2))\n            context?.addLine(to: CGPoint(x: x3, y: y3))\n            context?.addLine(to: CGPoint(x: x4, y: y4))\n            context?.closePath()\n        }\n    }\n\n    public func curve(_ cpx1: CGFloat, _ cpy1: CGFloat, _ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ cpx2: CGFloat, _ cpy2: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        let (b1, b2) = ShapeModel.convertCurvePoint(cpx1, cpy1, x1, y1, x2, y2, cpx2, cpy2)\n\n        drawing(mode: .fillStroke) {\n            context?.move(to: CGPoint(x: x1, y: y1))\n            context?.addCurve(to: CGPoint(x: x2, y: y2), control1: CGPoint(x: b1.x, y: b1.y), control2: CGPoint(x: b2.x, y: b2.y))\n        }\n    }\n\n    public func bezier(_ x1: CGFloat, _ y1: CGFloat, _ cpx1: CGFloat, _ cpy1: CGFloat, _ cpx2: CGFloat, _ cpy2: CGFloat, _ x2: CGFloat, _ y2: CGFloat) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        drawing(mode: .fillStroke) {\n            context?.move(to: CGPoint(x: x1, y: y1))\n            context?.addCurve(to: CGPoint(x: x2, y: y2), control1: CGPoint(x: cpx1, y: cpy1), control2: CGPoint(x: cpx2, y: cpy2))\n        }\n    }\n\n    public func radians(_ degrees: CGFloat) -> CGFloat {\n        let radian = (CGFloat.pi * 2) * (degrees / 360.0)\n        return radian\n    }\n\n    // For testing\n    static func convertCurvePoint(_ cpx1: CGFloat, _ cpy1: CGFloat, _ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ cpx2: CGFloat, _ cpy2: CGFloat) -> (CGPoint, CGPoint) {\n        let alpha: CGFloat = 1.0\n        let p0 = CGPoint(x: cpx1, y: cpy1)\n        let p1 = CGPoint(x: x1, y: y1)\n        let p2 = CGPoint(x: x2, y: y2)\n        let p3 = CGPoint(x: cpx2, y: cpy2)\n\n        let d1 = p1.deltaTo(p0).length()\n        let d2 = p2.deltaTo(p1).length()\n        let d3 = p3.deltaTo(p2).length()\n\n        var b1 = p2.multiplyBy(pow(d1, 2 * alpha))\n        b1 = b1.deltaTo(p0.multiplyBy(pow(d2, 2 * alpha)))\n        b1 = b1.addTo(p1.multiplyBy(2 * pow(d1, 2 * alpha) + 3 * pow(d1, alpha) * pow(d2, alpha) + pow(d2, 2 * alpha)))\n        b1 = b1.multiplyBy(1.0 / (3 * pow(d1, alpha) * (pow(d1, alpha) + pow(d2, alpha))))\n\n        var b2 = p1.multiplyBy(pow(d3, 2 * alpha))\n        b2 = b2.deltaTo(p3.multiplyBy(pow(d2, 2 * alpha)))\n        b2 = b2.addTo(p2.multiplyBy(2 * pow(d3, 2 * alpha) + 3 * pow(d3, alpha) * pow(d2, alpha) + pow(d2, 2 * alpha)))\n        b2 = b2.multiplyBy(1.0 / (3 * pow(d3, alpha) * (pow(d3, alpha) + pow(d2, alpha))))\n\n        return (b1, b2)\n    }\n\n    private func setGraphicsConfiguration(context: CGContext?) {\n        context?.setFillColor(self.colorComponents.fill.cgColor)\n        context?.setStrokeColor(self.colorComponents.stroke.cgColor)\n        context?.setLineWidth(self.colorComponents.strokeWeight)\n    }\n\n    private func drawing(mode: CGPathDrawingMode, closure:() -> Void) {\n        let context = self.contextComponents.context\n        context?.saveGState()\n        closure()\n\n        // do not execute this line when testing to protect path infomation\n        if !isTesting() {\n            context?.drawPath(using: mode)\n        }\n\n        context?.restoreGState()\n    }\n\n    private func isTesting() -> Bool {\n        return ProcessInfo.processInfo.environment[\"XCTestConfigurationFilePath\"] != nil\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Shape/Vertex.swift",
    "content": "//\n//  Vertex.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/09/27.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic enum BeginShapeKind {\n    case points\n    case lines\n    case triangles\n    case quads\n    case none\n}\n\npublic enum EndShapeMode {\n    case close\n    case none\n}\n\npublic protocol VertexComponentsContract {\n    var vertexes: [CGPoint] { get set }\n    var kind: BeginShapeKind { get set }\n}\n\npublic protocol VertexModelContract {\n    mutating func beginShape(_ kind: BeginShapeKind)\n    mutating func endShape(_ mode: EndShapeMode)\n    mutating func vertex(_ x: CGFloat, _ y: CGFloat)\n}\n\npublic class VertexComponents: VertexComponentsContract {\n    public var vertexes: [CGPoint] = []\n    public var kind: BeginShapeKind = .none\n\n    public init() {}\n}\n\npublic struct VertexModel: VertexModelContract {\n    private var contextComponents: ContextComponenetsContract\n    private var vertexComponents: VertexComponentsContract\n    private var colorComponents: ColorComponentsContract\n\n    public init(contextComponents: ContextComponenetsContract, vertexComponents: VertexComponentsContract, colorComponents: ColorComponentsContract) {\n        self.contextComponents = contextComponents\n        self.vertexComponents = vertexComponents\n        self.colorComponents = colorComponents\n    }\n\n    public mutating func beginShape(_ kind: BeginShapeKind) {\n        self.vertexComponents.kind = kind\n        self.vertexComponents.vertexes.removeAll()\n    }\n\n    public mutating func endShape(_ mode: EndShapeMode) {\n        guard self.vertexComponents.vertexes.count > 0 else {\n            return\n        }\n\n        switch self.vertexComponents.kind {\n        case .points:\n            let context = self.contextComponents.context\n            context?.setFillColor(self.colorComponents.stroke.cgColor)\n            for vertex in self.vertexComponents.vertexes {\n                context?.fill(CGRect(x: vertex.x, y: vertex.y, width: self.colorComponents.strokeWeight, height: self.colorComponents.strokeWeight))\n            }\n        case .lines:\n            while self.vertexComponents.vertexes.count >= 2 {\n                let arrSlice: ArraySlice = self.vertexComponents.vertexes.prefix(2)\n                let vertexes = arrSlice.map { $0 }\n                addLineToPoints(vertexes: vertexes, isClosed: false)\n                self.vertexComponents.vertexes.removeFirst(2)\n            }\n        case .triangles:\n            while self.vertexComponents.vertexes.count >= 3 {\n                let arrSlice: ArraySlice = self.vertexComponents.vertexes.prefix(3)\n                let vertexes = arrSlice.map { $0 }\n                addLineToPoints(vertexes: vertexes, isClosed: true)\n                self.vertexComponents.vertexes.removeFirst(3)\n            }\n        case .quads:\n            while self.vertexComponents.vertexes.count >= 4 {\n                let arrSlice: ArraySlice = self.vertexComponents.vertexes.prefix(4)\n                let vertexes = arrSlice.map { $0 }\n                addLineToPoints(vertexes: vertexes, isClosed: true)\n                self.vertexComponents.vertexes.removeFirst(4)\n            }\n        case .none:\n            self.addLineToPoints(vertexes: self.vertexComponents.vertexes, isClosed: mode == .close)\n        }\n\n        self.vertexComponents.vertexes.removeAll()\n    }\n\n    public mutating func vertex(_ x: CGFloat, _ y: CGFloat) {\n        self.vertexComponents.vertexes.append(CGPoint(x: x, y: y))\n    }\n\n    private func addLineToPoints(vertexes: [CGPoint], isClosed: Bool) {\n        let context = self.contextComponents.context\n        setGraphicsConfiguration(context: context)\n\n        for (index, vertex) in vertexes.enumerated() {\n            if index == 0 {\n                context?.move(to: vertex)\n            } else {\n                context?.addLine(to: vertex)\n            }\n        }\n        if isClosed {\n            context?.addLine(to: vertexes.first!)\n        }\n        context?.drawPath(using: .fillStroke)\n    }\n\n    private func setGraphicsConfiguration(context: CGContext?) {\n        context?.setFillColor(self.colorComponents.fill.cgColor)\n        context?.setStrokeColor(self.colorComponents.stroke.cgColor)\n        context?.setLineWidth(self.colorComponents.strokeWeight)\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Structure/Loop.swift",
    "content": "//\n//  Structure.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/13.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\npublic protocol LoopModelContract {\n    func loop()\n    func noLoop()\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Transform/Transform.swift",
    "content": "//\n//  Transform.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/09/27.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic protocol TransformModelContract {\n    func pushMatrix()\n    func popMatrix()\n    func scale(_ s: CGFloat)\n    func scale(_ x: CGFloat, _ y: CGFloat)\n    func shear(_ angleX: CGFloat, _ angleY: CGFloat)\n    func rotate(_ angle: CGFloat)\n    func translate(_ x: CGFloat, _ y: CGFloat)\n}\n\npublic struct TransformModel: TransformModelContract {\n    private var contextComponents: ContextComponenetsContract\n\n    public init(contextComponents: ContextComponenetsContract) {\n        self.contextComponents = contextComponents\n    }\n\n    public func pushMatrix() {\n        let context = self.contextComponents.context\n        context?.saveGState()\n    }\n\n    public func popMatrix() {\n        let context = self.contextComponents.context\n        context?.restoreGState()\n    }\n\n    public func scale(_ s: CGFloat) {\n        let context = self.contextComponents.context\n        context?.scaleBy(x: s, y: s)\n\n    }\n\n    public func scale(_ x: CGFloat, _ y: CGFloat) {\n        let context = self.contextComponents.context\n        context?.scaleBy(x: x, y: y)\n    }\n\n    public func shear(_ angleX: CGFloat, _ angleY: CGFloat) {\n        let context = self.contextComponents.context\n        context?.concatenate(CGAffineTransform(a: 1, b: tan(angleY), c: tan(angleX), d: 1, tx: 0, ty: 0))\n    }\n\n    public func rotate(_ angle: CGFloat) {\n        let context = self.contextComponents.context\n        context?.rotate(by: angle)\n    }\n\n    public func translate(_ x: CGFloat, _ y: CGFloat) {\n        let context = self.contextComponents.context\n        context?.translateBy(x: x, y: y)\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Core/Typography/Text.swift",
    "content": "//\n//  Text.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/13.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\npublic protocol TextComponentsContract {\n    var textSize: CGFloat { get set }\n    var textFont: UIFont { get set }\n    var textAlignX: NSTextAlignment { get set }\n}\n\npublic protocol TextModelContract {\n    func text(_ str: String, _ x: CGFloat, _ y: CGFloat)\n    func text(_ str: String, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat)\n    func textWidth(_ str: String) -> CGFloat\n    mutating func textSize(_ size: CGFloat)\n    mutating func textFont(_ font: UIFont)\n    mutating func textAlign(_ allignX: NSTextAlignment)\n}\n\npublic class TextComponents: TextComponentsContract {\n    public var textSize: CGFloat = 20.0\n    public var textFont: UIFont = UIFont.systemFont(ofSize: 20.0)\n    public var textAlignX: NSTextAlignment = .left\n\n    public init() {}\n}\n\npublic struct TextModel: TextModelContract {\n    private var contextComponents: ContextComponenetsContract\n    private var textComponents: TextComponentsContract\n    private var colorComponents: ColorComponentsContract\n    private var frameComponents: FrameComponentsContract\n\n    public init(contextComponents: ContextComponenetsContract, frameComponents: FrameComponentsContract, textComponents: TextComponentsContract, colorComponents: ColorComponentsContract) {\n        self.contextComponents = contextComponents\n        self.frameComponents = frameComponents\n        self.textComponents = textComponents\n        self.colorComponents = colorComponents\n    }\n\n    public func text(_ str: String, _ x: CGFloat, _ y: CGFloat) {\n        let width = self.textWidth(str)\n        let height = str.height(withConstrainedWidth: width, font: self.textComponents.textFont)\n        if self.textComponents.textAlignX == .center {\n            self.text(str, x - width / 2, y, width, height)\n            return\n        } else if self.textComponents.textAlignX == .right {\n            self.text(str, x - width, y, width, height)\n            return\n        }\n\n        self.text(str, x, y, width, height)\n    }\n\n    public func text(_ str: String, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        let context = self.contextComponents.context\n\n        context?.saveGState()\n\n        context?.translateBy(x: 0, y: frameComponents.bounds.size.height)\n        context?.scaleBy(x: 1.0, y: -1.0)\n        context?.textMatrix = CGAffineTransform.identity\n\n        let path: CGMutablePath = CGMutablePath()\n        let bounds: CGRect = CGRect(x: x, y: -y + frameComponents.bounds.size.height, width: width, height: height)\n        path.addRect(bounds)\n\n        let paragraph = NSMutableParagraphStyle()\n        paragraph.alignment = self.textComponents.textAlignX\n\n        let attributes: [NSAttributedString.Key: Any] = [NSAttributedString.Key.paragraphStyle: paragraph]\n\n        let attrString = NSMutableAttributedString(string: str, attributes: attributes)\n\n        // set font\n        CFAttributedStringSetAttribute(attrString, CFRangeMake(0, attrString.length), kCTFontAttributeName, self.textComponents.textFont)\n\n        CFAttributedStringSetAttribute(attrString, CFRangeMake(0, attrString.length), kCTForegroundColorAttributeName, self.colorComponents.fill.cgColor)\n\n        let framesetter: CTFramesetter = CTFramesetterCreateWithAttributedString(attrString)\n\n        let frame: CTFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, nil)\n\n        // 上記の内容を描画します。\n        CTFrameDraw(frame, context!)\n\n        context?.restoreGState()\n    }\n\n    public func textWidth(_ str: String) -> CGFloat {\n        let size = str.size(withAttributes: [NSAttributedString.Key.font: self.textComponents.textFont])\n        return size.width\n    }\n\n    public mutating func textSize(_ size: CGFloat) {\n        self.textComponents.textSize = size\n        self.textComponents.textFont = UIFont.systemFont(ofSize: size)\n    }\n\n    public mutating func textFont(_ font: UIFont) {\n        self.textComponents.textFont = font\n        self.textComponents.textSize = font.pointSize\n    }\n\n    public mutating func textAlign(_ allignX: NSTextAlignment) {\n        self.textComponents.textAlignX = allignX\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/Demo.playground/Contents.swift",
    "content": "//: Playground - noun: a place where people can play\n\nimport UIKit\nimport PlaygroundSupport\nimport ProcessingKit\n\n//: Step 1: Create custom view class for drawing\nclass SampleView: ProcessingView {\n    var i: CGFloat = 0\n    var dx: CGFloat = 0\n\n    //: The setup() function is run once, when the program starts.\n    func setup() {\n        dx = 10\n    }\n\n    //: Called directly after setup(), the draw() function continuously executes the lines of code contained inside its block until the program is stopped or noLoop() is called.\n    func draw() {\n        background(UIColor.white)\n        fill(UIColor.red)\n        ellipse(i, 100, 100, 100)\n        i+=dx\n        if i > width {\n            i = 0\n        }\n    }\n}\n\n//: Step 2: Create custom view instance\nlet sampleView = SampleView(frame: CGRect(x: 0, y: 0, width: 360, height: 480))\n\n//: Option for playground\nsampleView.isPlayground = true\n\nPlaygroundPage.current.needsIndefiniteExecution = true\nPlaygroundPage.current.liveView = sampleView\n"
  },
  {
    "path": "ProcessingKit/Demo.playground/contents.xcplayground",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='5.0' target-platform='ios' display-mode='raw'>\n    <timeline fileName='timeline.xctimeline'/>\n</playground>"
  },
  {
    "path": "ProcessingKit/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>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "ProcessingKit/ProcessingKit.h",
    "content": "//\n//  ProcessingKit.h\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/04.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n//! Project version number for ProcessingKit.\nFOUNDATION_EXPORT double ProcessingKitVersionNumber;\n\n//! Project version string for ProcessingKit.\nFOUNDATION_EXPORT const unsigned char ProcessingKitVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <ProcessingKit/PublicHeader.h>\n\n\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Color.swift",
    "content": "//\n//  ProcessingView+Color.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: ColorModelContract {\n    public func background(_ color: UIColor) {\n        self.colorModel.background(color)\n        self.backgroundColor = color\n    }\n\n    public func background(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat = 255) {\n        self.colorModel.background(r, g, b, a)\n        self.backgroundColor = UIColor(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: a / 255.0)\n\n    }\n\n    public func clear() {\n        self.colorModel.clear()\n        self.background(UIColor.white)\n    }\n\n    public func fill(_ color: UIColor) {\n        self.colorModel.fill(color)\n    }\n\n    public func fill(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat = 255) {\n        self.colorModel.fill(r, g, b, a)\n    }\n\n    public func stroke(_ color: UIColor) {\n        self.colorModel.stroke(color)\n    }\n\n    public func stroke(_ r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ a: CGFloat = 255) {\n        self.colorModel.stroke(r, g, b, a)\n    }\n\n    public func strokeWeight(_ weight: CGFloat) {\n        self.colorModel.strokeWeight(weight)\n    }\n\n    public func noFill() {\n        self.colorModel.noFill()\n    }\n\n    public func noStroke() {\n        self.colorModel.noStroke()\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Constants.swift",
    "content": "//\n//  ProcessingView+Constants.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: Constants {\n    public var HALF_PI: CGFloat {\n        return .pi / 2\n    }\n\n    public var PI: CGFloat {\n        return .pi\n    }\n\n    public var QUARTER_PI: CGFloat {\n        return .pi / 4\n    }\n\n    public var TAU: CGFloat {\n        return self.TWO_PI\n    }\n\n    public var TWO_PI: CGFloat {\n        return .pi * 2\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Date.swift",
    "content": "//\n//  ProcessingView+Date.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: DateModelContract {\n    public func millis() -> Int {\n        return self.dateModel.millis()\n    }\n\n    public func second() -> Int {\n        return self.dateModel.second()\n    }\n\n    public func minute() -> Int {\n        return self.dateModel.minute()\n    }\n\n    public func hour() -> Int {\n        return self.dateModel.hour()\n    }\n\n    public func day() -> Int {\n        return self.dateModel.day()\n    }\n\n    public func month() -> Int {\n        return self.dateModel.month()\n    }\n\n    public func year() -> Int {\n        return self.dateModel.year()\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Frame.swift",
    "content": "//\n//  ProcessingView+Frame.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: FrameModelContract {\n    public var frameRate: CGFloat {\n        return self.frameModel.frameRate\n    }\n\n    public var width: CGFloat {\n        return self.frameModel.width\n    }\n\n    public var height: CGFloat {\n        return self.frameModel.height\n    }\n\n    public func frameRate(_ fps: CGFloat) {\n        self.frameModel.frameRate(fps)\n\n        self.timer?.invalidate()\n        self.timer = nil\n        self.timer = Timer.scheduledTimer(timeInterval: TimeInterval(1.0 / fps), target: self, selector: #selector(update(timer:)), userInfo: nil, repeats: true)\n    }\n\n    public func delay(napTime: Int) {\n        let delayInSeconds = Double(napTime) / 1000.0\n        self.timer?.invalidate()\n        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayInSeconds) {\n            self.timer?.fire()\n        }\n    }\n\n    @objc private func update(timer: Timer) {\n        self.draw(self.frame)\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Gesture.swift",
    "content": "//\n//  ProcessingView+Gesture.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/10/07.\n//  Copyright © 2018 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView {\n    #if os(iOS)\n    public var fingerPressed: Bool {\n        return self.gestureModel.fingerPressed\n    }\n\n    public var touchX: CGFloat {\n        return self.gestureModel.touchX\n    }\n\n    public var touchY: CGFloat {\n        return self.gestureModel.touchY\n    }\n\n    public var touches: Set<CGPoint> {\n        return self.gestureModel.touches\n    }\n    #elseif os(OSX)\n    public var mousePressed: Bool {\n        return self.gestureModel.mousePressed\n    }\n\n    public var mouseX: CGFloat {\n        return self.gestureModel.mouseX\n    }\n\n    public var mouseY: CGFloat {\n        return self.gestureModel.mouseY\n    }\n    #endif\n\n    #if os(iOS)\n    @objc func didTap(recognizer: UITapGestureRecognizer) {\n        self.gestureModel.didTap(recognizer: recognizer)\n\n        let dispatchTime = DispatchTime.now() + Double(1.0 / self.frameRate)\n        DispatchQueue.main.asyncAfter(deadline: dispatchTime) {\n            self.didTapExit(recognizer: recognizer)\n        }\n    }\n    func didTapExit(recognizer: UITapGestureRecognizer) {\n        self.gestureModel.didTapExit(recognizer: recognizer)\n    }\n    @objc func didSwipe(recognizer: UISwipeGestureRecognizer) {\n        self.gestureModel.didSwipe(recognizer: recognizer)\n    }\n    @objc func didPinch(recognizer: UIPinchGestureRecognizer) {\n        self.gestureModel.didPinch(recognizer: recognizer)\n    }\n    @objc func didRotate(recognizer: UIRotationGestureRecognizer) {\n        self.gestureModel.didRotate(recognizer: recognizer)\n    }\n    @objc func didPan(recognizer: UIPanGestureRecognizer) {\n        self.gestureModel.didPan(recognizer: recognizer)\n    }\n    @objc func didLongPress(recognizer: UILongPressGestureRecognizer) {\n        self.gestureModel.didLongPress(recognizer: recognizer)\n    }\n    #elseif os(OSX)\n    @objc func didClick(recognizer: NSClickGestureRecognizer) {\n        self.gestureModel.didClick(recognizer: recognizer)\n\n        let dispatchTime = DispatchTime.now() + Double(1.0 / self.frameRate)\n        DispatchQueue.main.asyncAfter(deadline: dispatchTime) {\n            self.didClickExit(recognizer: recognizer)\n        }\n    }\n    @objc func didClickExit(recognizer: NSClickGestureRecognizer) {\n        self.gestureModel.didClickExit(recognizer: recognizer)\n    }\n    @objc func didMagnify(recognizer: NSMagnificationGestureRecognizer) {\n        self.gestureModel.didMagnify(recognizer: recognizer)\n    }\n    @objc func didPan(recognizer: NSPanGestureRecognizer) {\n        self.gestureModel.didPan(recognizer: recognizer)\n    }\n    @objc func didPress(recognizer: NSPressGestureRecognizer) {\n        self.gestureModel.didPress(recognizer: recognizer)\n    }\n    @objc func didRotate(recognizer: NSRotationGestureRecognizer) {\n        self.gestureModel.didRotate(recognizer: recognizer)\n    }\n    open override func scrollWheel(with event: NSEvent) {\n        self.gestureModel.scrollWheel(with: event)\n    }\n    open override func mouseMoved(with event: NSEvent) {\n        self.gestureModel.mouseMoved(with: event)\n    }\n    #endif\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Image.swift",
    "content": "//\n//  ProcessingView+Image.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: ImageModelContract {\n    #if os(iOS)\n    public func image(_ img: UIImage, _ x: CGFloat, _ y: CGFloat) {\n        self.imageModel.image(img, x, y)\n    }\n\n    public func image(_ img: UIImage, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        self.imageModel.image(img, x, y, width, height)\n    }\n    #elseif os(OSX)\n    public func drawImage(_ img: NSImage, _ x: CGFloat, _ y: CGFloat) {\n        self.imageModel.drawImage(img, x, y)\n    }\n\n    public func drawImage(_ img: NSImage, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        self.imageModel.drawImage(img, x, y, width, height)\n    }\n    #endif\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Loop.swift",
    "content": "//\n//  ProcessingView+Loop.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: LoopModelContract {\n    public func loop() {\n        self.timer?.fire()\n    }\n\n    public func noLoop() {\n        self.timer?.invalidate()\n        self.timer = nil\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Shape.swift",
    "content": "//\n//  ProcessingView+Shape.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: ShapeModelContract {\n    public func point(_ x: CGFloat, _ y: CGFloat) {\n        self.shapeModel.point(x, y)\n    }\n\n    public func line(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat) {\n        self.shapeModel.line(x1, y1, x2, y2)\n    }\n\n    public func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        self.shapeModel.rect(x, y, width, height)\n    }\n\n    public func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat, _ radius: CGFloat) {\n        self.shapeModel.rect(x, y, width, height, radius)\n    }\n\n    public func rect(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat, _ topLeftRadius: CGFloat, _ topRightRadius: CGFloat, _ bottomLeftRadius: CGFloat, _ bottomRightRadius: CGFloat) {\n        self.shapeModel.rect(x, y, width, height, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius)\n    }\n\n    public func ellipse(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        self.shapeModel.ellipse(x, y, width, height)\n    }\n\n    public func arc(_ x: CGFloat, _ y: CGFloat, _ radius: CGFloat, _ start: CGFloat, _ stop: CGFloat) {\n        self.shapeModel.arc(x, y, radius, start, stop)\n    }\n\n    public func triangle(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ x3: CGFloat, _ y3: CGFloat) {\n        self.shapeModel.triangle(x1, y1, x2, y2, x3, y3)\n    }\n\n    public func quad(_ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ x3: CGFloat, _ y3: CGFloat, _ x4: CGFloat, _ y4: CGFloat) {\n        self.shapeModel.quad(x1, y1, x2, y2, x3, y3, x4, y4)\n    }\n\n    public func curve(_ cpx1: CGFloat, _ cpy1: CGFloat, _ x1: CGFloat, _ y1: CGFloat, _ x2: CGFloat, _ y2: CGFloat, _ cpx2: CGFloat, _ cpy2: CGFloat) {\n        self.shapeModel.curve(cpx1, cpy1, x1, y1, x2, y2, cpx2, cpy2)\n    }\n\n    public func bezier(_ x1: CGFloat, _ y1: CGFloat, _ cpx1: CGFloat, _ cpy1: CGFloat, _ cpx2: CGFloat, _ cpy2: CGFloat, _ x2: CGFloat, _ y2: CGFloat) {\n        self.shapeModel.bezier(x1, y1, cpx1, cpy1, cpx2, cpy2, x2, y2)\n    }\n\n    public func radians(_ degrees: CGFloat) -> CGFloat {\n        return self.shapeModel.radians(degrees)\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Text.swift",
    "content": "//\n//  ProcessingView+Text.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: TextModelContract {\n    public func text(_ str: String, _ x: CGFloat, _ y: CGFloat) {\n        self.textModel.text(str, x, y)\n    }\n\n    public func text(_ str: String, _ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) {\n        self.textModel.text(str, x, y, width, height)\n    }\n\n    public func textWidth(_ str: String) -> CGFloat {\n        return self.textModel.textWidth(str)\n    }\n\n    public func textSize(_ size: CGFloat) {\n        self.textModel.textSize(size)\n    }\n\n    public func textFont(_ font: UIFont) {\n        self.textModel.textFont(font)\n    }\n\n    public func textAlign(_ allignX: NSTextAlignment) {\n        self.textModel.textAlign(allignX)\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Transform.swift",
    "content": "//\n//  ProcessingView+Transform.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: TransformModelContract {\n    public func pushMatrix() {\n        self.transformModel.pushMatrix()\n    }\n\n    public func popMatrix() {\n        self.transformModel.popMatrix()\n    }\n\n    public func scale(_ s: CGFloat) {\n        self.transformModel.scale(s)\n    }\n\n    public func scale(_ x: CGFloat, _ y: CGFloat) {\n        self.transformModel.scale(x, y)\n    }\n\n    public func shear(_ angleX: CGFloat, _ angleY: CGFloat) {\n        self.transformModel.shear(angleX, angleY)\n    }\n\n    public func rotate(_ angle: CGFloat) {\n        self.transformModel.rotate(angle)\n    }\n\n    public func translate(_ x: CGFloat, _ y: CGFloat) {\n        self.transformModel.translate(x, y)\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView+Core/ProcessingView+Vertex.swift",
    "content": "//\n//  ProcessingView+Vertex.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2018/09/09.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nextension ProcessingView: VertexModelContract {\n    public func beginShape(_ kind: BeginShapeKind = .none) {\n        self.vertexModel.beginShape(kind)\n    }\n\n    public func endShape(_ mode: EndShapeMode = .none) {\n        self.vertexModel.endShape(mode)\n    }\n\n    public func vertex(_ x: CGFloat, _ y: CGFloat) {\n        self.vertexModel.vertex(x, y)\n    }\n}\n"
  },
  {
    "path": "ProcessingKit/ProcessingView.swift",
    "content": "//\n//  ProcessingView.swift\n//  ProcessingKit\n//\n//  Created by AtsuyaSato on 2017/08/05.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\n@objc public protocol ProcessingViewDelegate {\n    @objc optional func setup()\n    @objc optional func draw()\n}\n\n@objc public protocol ProcessingViewGestureDelegate {\n    #if os(iOS)\n    @objc optional func didTap()\n    @objc optional func didRelease()\n    @objc optional func didDrag() //Pan\n    @objc optional func didSwipe(direction: UISwipeGestureRecognizer.Direction)\n    @objc optional func didPinch(scale: CGFloat, velocity: CGFloat)\n    @objc optional func didRotate(rotation: CGFloat, velocity: CGFloat)\n    @objc optional func didLongPress()\n    #elseif os(OSX)\n    @objc optional func didClick()\n    @objc optional func didRelease()\n    @objc optional func didDrag()\n    @objc optional func didMove()\n    @objc optional func didMagnify(magnification: CGFloat)\n    @objc optional func didRotate(rotation: CGFloat, inDegrees: CGFloat)\n    @objc optional func didPress()\n    @objc optional func didScroll(x: CGFloat, y: CGFloat)\n    #endif\n}\n\nopen class ProcessingView: UIImageView {\n    public weak var delegate: ProcessingViewDelegate?\n    public weak var gesture: ProcessingViewGestureDelegate?\n\n    public var autoRelease = true\n    public var isPlayground = false\n\n    // MARK: Internal properties\n    lazy var frameModel: FrameModelContract = {\n        return FrameModel(\n            frameComponents: self.frameComponents,\n            timer: self.timer\n        )\n    }()\n    lazy var shapeModel: ShapeModelContract = {\n        return ShapeModel(\n            contextComponents: self.contextComponents,\n            colorComponents: self.colorComponents\n        )\n    }()\n    lazy var vertexModel: VertexModelContract = {\n        return VertexModel(\n            contextComponents: self.contextComponents,\n            vertexComponents: self.vertexComponents,\n            colorComponents: self.colorComponents\n        )\n    }()\n    lazy var gestureModel: GestureModelContract = {\n        return GestureModel(\n            gestureComponents: self.gestureComponents,\n            frameComponents: self.frameComponents\n        )\n    }()\n    lazy var dateModel: DateModelContract = {\n        return DateModel(startDate: Date())\n    }()\n    lazy var colorModel: ColorModelContract = {\n        return ColorModel(\n            contextComponents: self.contextComponents,\n            colorComponents: self.colorComponents,\n            frameComponents: self.frameComponents\n        )\n    }()\n    lazy var textModel: TextModelContract = {\n        return TextModel(\n            contextComponents: self.contextComponents,\n            frameComponents: self.frameComponents,\n            textComponents: self.textComponents,\n            colorComponents: self.colorComponents\n        )\n    }()\n    lazy var imageModel: ImageModelContract = {\n        return ImageModel(contextComponents: self.contextComponents)\n    }()\n    lazy var transformModel: TransformModelContract = {\n        return TransformModel(contextComponents: self.contextComponents)\n    }()\n\n    var timer: Timer?\n\n    // MARK: Gesture Recognizers\n    #if os(iOS)\n    lazy var tapGestureWithSingleTouch: UITapGestureRecognizer = {\n        let recognizer = UITapGestureRecognizer(target: self, action: #selector(didTap(recognizer:)))\n        recognizer.numberOfTouchesRequired = 1\n        return recognizer\n    }()\n    lazy var tapGestureWithDoubleTouch: UITapGestureRecognizer = {\n        let recognizer = UITapGestureRecognizer(target: self, action: #selector(didTap(recognizer:)))\n        recognizer.numberOfTouchesRequired = 2\n        return recognizer\n    }()\n    lazy var tapGestureWithTripleTouch: UITapGestureRecognizer = {\n        let recognizer = UITapGestureRecognizer(target: self, action: #selector(didTap(recognizer:)))\n        recognizer.numberOfTouchesRequired = 3\n        return recognizer\n    }()\n    lazy var tapGestureWithQuadTouch: UITapGestureRecognizer = {\n        let recognizer = UITapGestureRecognizer(target: self, action: #selector(didTap(recognizer:)))\n        recognizer.numberOfTouchesRequired = 4\n        return recognizer\n    }()\n    lazy var tapGestureWithQuintTouch: UITapGestureRecognizer = {\n        let recognizer = UITapGestureRecognizer(target: self, action: #selector(didTap(recognizer:)))\n        recognizer.numberOfTouchesRequired = 5\n        return recognizer\n    }()\n    lazy var swipeUpGesture: UISwipeGestureRecognizer = {\n        let recognizer = UISwipeGestureRecognizer(target: self, action: #selector(didSwipe(recognizer:)))\n        recognizer.direction = .up\n        return recognizer\n    }()\n    lazy var swipeDownGesture: UISwipeGestureRecognizer = {\n        let recognizer = UISwipeGestureRecognizer(target: self, action: #selector(didSwipe(recognizer:)))\n        recognizer.direction = .down\n        return recognizer\n    }()\n    lazy var swipeLeftGesture: UISwipeGestureRecognizer = {\n        let recognizer = UISwipeGestureRecognizer(target: self, action: #selector(didSwipe(recognizer:)))\n        recognizer.direction = .left\n        return recognizer\n    }()\n    lazy var swipeRightGesture: UISwipeGestureRecognizer = {\n        let recognizer = UISwipeGestureRecognizer(target: self, action: #selector(didSwipe(recognizer:)))\n        recognizer.direction = .right\n        return recognizer\n    }()\n    lazy var pinchGesture: UIPinchGestureRecognizer = {\n        let pinch =  UIPinchGestureRecognizer(target: self, action: #selector(didPinch(recognizer:)))\n        return pinch\n    }()\n    lazy var panGesture: UIPanGestureRecognizer = {\n        return UIPanGestureRecognizer(target: self, action: #selector(didPan(recognizer:)))\n    }()\n    lazy var rotationGesture: UIRotationGestureRecognizer = {\n        let rotate =  UIRotationGestureRecognizer(target: self, action: #selector(didRotate(recognizer:)))\n        return rotate\n    }()\n    lazy var longPressGesture: UILongPressGestureRecognizer = {\n        return UILongPressGestureRecognizer(target: self, action: #selector(didLongPress(recognizer:)))\n    }()\n    #elseif os(OSX)\n    lazy var clickGesture: NSClickGestureRecognizer = {\n        return NSClickGestureRecognizer(target: self, action: #selector(didClick(recognizer:)))\n    }()\n    lazy var magnificationGesture: NSMagnificationGestureRecognizer = {\n        return NSMagnificationGestureRecognizer(target: self, action: #selector(didMagnify(recognizer:)))\n    }()\n    lazy var panGesture: NSPanGestureRecognizer = {\n        return NSPanGestureRecognizer(target: self, action: #selector(didPan(recognizer:)))\n    }()\n    lazy var pressGesture: NSPressGestureRecognizer = {\n        return NSPressGestureRecognizer(target: self, action: #selector(didPress(recognizer:)))\n    }()\n    lazy var rotationGesture: NSRotationGestureRecognizer = {\n        return NSRotationGestureRecognizer(target: self, action: #selector(didRotate(recognizer:)))\n    }()\n    #endif\n\n    // MARK: Private properties\n    private var contextComponents = ContextComponents()\n    private var colorComponents = ColorComponents()\n    private var gestureComponents = GestureComponents()\n    private var vertexComponents = VertexComponents()\n    private var textComponents = TextComponents()\n    private var frameComponents = FrameComponents()\n\n    // Flag for setup function (setup function execute only once)\n    private var firstcall = true\n\n    // Store trackingArea for calling mouseMove\n    #if os(OSX)\n    private var trackingArea: NSTrackingArea?\n    #endif\n\n    // MARK: - Initializer\n    public init() {\n        super.init(frame: CGRect.zero)\n        self.commonInit()\n    }\n\n    public required init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        self.commonInit()\n    }\n\n    public override init(frame: CGRect) {\n        super.init(frame: frame)\n        self.commonInit()\n    }\n\n    private func commonInit() {\n        self.configuration()\n        self.run()\n        self.addGestureRecognizers()\n    }\n\n    private func configuration() {\n        #if os(iOS)\n        self.isUserInteractionEnabled = true\n        #elseif os(OSX)\n        if let window = self.window {\n            self.bounds = CGRect(x: 0, y: 0, width: window.frame.size.width, height: window.frame.size.height)\n        } else {\n            self.bounds = CGRect.zero\n        }\n        #endif\n        self.delegate = self\n        self.gesture = self\n    }\n\n    func addGestureRecognizers() {\n        #if os(iOS)\n        tapGestureWithSingleTouch.delegate = self\n        tapGestureWithDoubleTouch.delegate = self\n        tapGestureWithTripleTouch.delegate = self\n        tapGestureWithQuadTouch.delegate = self\n        tapGestureWithQuintTouch.delegate = self\n        panGesture.delegate = self\n        swipeUpGesture.delegate = self\n        swipeDownGesture.delegate = self\n        swipeLeftGesture.delegate = self\n        swipeRightGesture.delegate = self\n        pinchGesture.delegate = self\n        rotationGesture.delegate = self\n        longPressGesture.delegate = self\n\n        self.addGestureRecognizer(tapGestureWithSingleTouch)\n        self.addGestureRecognizer(tapGestureWithDoubleTouch)\n        self.addGestureRecognizer(tapGestureWithTripleTouch)\n        self.addGestureRecognizer(tapGestureWithQuadTouch)\n        self.addGestureRecognizer(tapGestureWithQuintTouch)\n        self.addGestureRecognizer(panGesture)\n        self.addGestureRecognizer(swipeUpGesture)\n        self.addGestureRecognizer(swipeDownGesture)\n        self.addGestureRecognizer(swipeLeftGesture)\n        self.addGestureRecognizer(swipeRightGesture)\n        self.addGestureRecognizer(pinchGesture)\n        self.addGestureRecognizer(rotationGesture)\n        self.addGestureRecognizer(longPressGesture)\n        #elseif os(OSX)\n        self.addGestureRecognizer(clickGesture)\n        self.addGestureRecognizer(magnificationGesture)\n        self.addGestureRecognizer(panGesture)\n        self.addGestureRecognizer(pressGesture)\n        self.addGestureRecognizer(rotationGesture)\n        #endif\n    }\n\n    private func run() {\n        self.frameRate(60.0)\n    }\n\n    private func parentViewController() -> UIViewController? {\n        var parentResponder: UIResponder? = self\n        while true {\n            #if os(iOS)\n            guard let nextResponder = parentResponder?.next else { return nil }\n            #else\n            guard let nextResponder = parentResponder?.nextResponder else { return nil }\n            #endif\n            if let viewController = nextResponder as? UIViewController {\n                return viewController\n            }\n            parentResponder = nextResponder\n        }\n    }\n\n    // MARK: - Notifications\n    @objc private func suspend(notification: NSNotification) {\n        self.noLoop()\n    }\n\n    @objc private func resume(notification: NSNotification) {\n        self.loop()\n    }\n\n    // MARK: - Override Methods\n    open override func draw(_ rect: CGRect) {\n        #if os(iOS)\n        UIGraphicsBeginImageContext(rect.size)\n        self.image?.draw(at: CGPoint.zero)\n        #elseif os(OSX)\n        self.image?.draw(at: NSPoint.zero, from: NSRect.zero, operation: .copy, fraction: 1.0)\n\n        // MARK: Coordinate systems are different between iOS and OS X\n        let context = contextComponents.context\n        context?.saveGState()\n        context?.translateBy(x: 0.0, y: height)\n        context?.scaleBy(x: 1.0, y: -1.0)\n        #endif\n\n        // Setup\n        if firstcall {\n            self.firstcall = false\n            self.delegate?.setup?()\n        }\n\n        // Gesture events\n        self.callDelegatesIfNeeded()\n\n        // Draw\n        self.frameComponents.frameCount += 1\n        self.delegate?.draw?()\n\n        #if os(iOS)\n        let drawnImage = UIGraphicsGetImageFromCurrentImageContext()\n        self.image = drawnImage\n        UIGraphicsEndImageContext()\n        #elseif os(OSX)\n            if let cgImage = NSGraphicsContext.current?.cgContext.makeImage() {\n            DispatchQueue.main.async {\n                self.image = NSImage(cgImage: cgImage, size: self.frame.size)\n                self.setNeedsDisplay()\n            }\n        }\n        context?.restoreGState()\n        #endif\n\n        // Only setup\n        if self.delegate?.draw == nil {\n            self.noLoop()\n            return\n        }\n\n        // Deallocate timer\n        if self.parentViewController() == nil {\n            if autoRelease == true && isPlayground == false {\n                self.noLoop()\n            }\n        }\n    }\n\n    // MARK: - Update view bounds\n    open override var frame: CGRect {\n        didSet {\n            frameComponents.frame = self.frame\n            frameComponents.bounds = self.bounds\n        }\n    }\n    open override var bounds: CGRect {\n        didSet {\n            if frameComponents.frame != self.frame {\n                frameComponents.frame = CGRect(x: frameComponents.frame.origin.x, y: frameComponents.frame.origin.y, width: self.frame.width, height: self.frame.height)\n                frameComponents.bounds = self.bounds\n            }\n        }\n    }\n\n    private func callDelegatesIfNeeded() {\n        for event in self.gestureComponents.delegateEvents {\n            sendDelegate(event: event)\n        }\n\n        self.gestureComponents.delegateEvents.removeAll()\n    }\n\n    #if os(iOS)\n    private func sendDelegate(event: GestureEvent) {\n        switch event {\n        case .didTap:\n            self.gesture?.didTap?()\n        case .didRelease:\n            self.gesture?.didRelease?()\n        case .didDrag:\n            self.gesture?.didDrag?()\n        case .didSwipe(let direction):\n            self.gesture?.didSwipe?(direction: direction)\n        case .didPinch(let scale, let velocity):\n            self.gesture?.didPinch?(scale: scale, velocity: velocity)\n        case .didRotate(let rotation, let velocity):\n            self.gesture?.didRotate?(rotation: rotation, velocity: velocity)\n        case .didLongPress:\n            self.gesture?.didLongPress?()\n        }\n    }\n    #elseif os(OSX)\n    private func sendDelegate(event: GestureEvent) {\n        switch event {\n        case .didClick:\n            self.gesture?.didClick?()\n        case .didRelease:\n            self.gesture?.didRelease?()\n        case .didDrag:\n            self.gesture?.didDrag?()\n        case .didMove:\n            self.gesture?.didMove?()\n        case .didMagnify(let magnification):\n            self.gesture?.didMagnify?(magnification: magnification)\n        case .didRotate(let rotation, let inDegrees):\n            self.gesture?.didRotate?(rotation: rotation, inDegrees: inDegrees)\n        case .didPress:\n            self.gesture?.didPress?()\n        case .didScroll(let x, let y):\n            self.gesture?.didScroll?(x: x, y: y)\n        }\n    }\n    #endif\n\n    // MARK: - deinit\n    deinit {\n        self.timer?.invalidate()\n        self.timer = nil\n    }\n}\n\nextension ProcessingView: ProcessingViewGestureDelegate {}\nextension ProcessingView: ProcessingViewDelegate {}\n\n#if os(iOS)\nextension ProcessingView: UIGestureRecognizerDelegate {\n    public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {\n        return true\n    }\n}\n#endif\n\n#if os(OSX)\nextension ProcessingView {\n    override open func updateTrackingAreas() {\n        if trackingArea != nil {\n            self.removeTrackingArea(trackingArea!)\n        }\n        let options: NSTrackingArea.Options =\n            [.mouseEnteredAndExited, .mouseMoved, .activeInKeyWindow]\n        trackingArea = NSTrackingArea(rect: self.bounds, options: options,\n                                      owner: self, userInfo: nil)\n        self.addTrackingArea(trackingArea!)\n    }\n}\n#endif\n"
  },
  {
    "path": "ProcessingKit.podspec",
    "content": "Pod::Spec.new do |s|\n  s.name         = \"ProcessingKit\"\n  s.version      = \"1.5.0\"\n  s.summary      = \"Visual Designing library for iOS.\"\n  s.description  = <<-DESC\n  ProcessingKit is a Visual Designing library for iOS.\n  ProcessingKit written in Swift🐧  and you can write like processing.\n                   DESC\n  s.homepage     = \"https://github.com/natmark/ProcessingKit\"\n  s.screenshots  = \"https://github.com/natmark/ProcessingKit/raw/master/Resources/ProcessingKit-Header.png?raw=true\"\n  s.license      = { :type => \"MIT\", :file => \"LICENSE\" }\n  s.author             = { \"Atsuya Sato\" => \"natmark0918@gmail.com\" }\n  s.osx.deployment_target = \"10.11\"\n  s.ios.deployment_target = \"10.0\"\n  s.source       = { :git => \"https://github.com/natmark/ProcessingKit.git\", :tag => \"#{s.version}\" }\n  s.source_files  = \"ProcessingKit/**/*.swift\"\n  s.exclude_files = \"ProcessingKit/Demo.playground/*\"\n  s.ios.exclude_files = \"ProcessingKit/Core/Extensions/NSImage.swift\", \"ProcessingKit/Core/Extensions/NSView.swift\"\n  s.requires_arc = true\n\n  s.subspec \"Core\" do |subspec|\n    subspec.source_files = \"ProcessingKit/Core/**/*.swift\"\n    subspec.ios.exclude_files = \"ProcessingKit/Core/Extensions/NSImage.swift\", \"ProcessingKit/Core/Extensions/NSView.swift\"\n  end\nend\n"
  },
  {
    "path": "ProcessingKit.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\tE7054AD41F34CCB200EA0C0F /* ProcessingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7054AD31F34CCB200EA0C0F /* ProcessingView.swift */; };\n\t\tE71388DD1F7A1F5500A45FA6 /* ProcessingViewDelegateSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = E71388DC1F7A1F5500A45FA6 /* ProcessingViewDelegateSpy.swift */; };\n\t\tE7212F4A1F34B5A600173CD8 /* ProcessingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7212F401F34B5A600173CD8 /* ProcessingKit.framework */; };\n\t\tE7212F4F1F34B5A600173CD8 /* ProcessingViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7212F4E1F34B5A600173CD8 /* ProcessingViewTests.swift */; };\n\t\tE7212F511F34B5A600173CD8 /* ProcessingKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E7212F431F34B5A600173CD8 /* ProcessingKit.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tE768201C1F7B38BC009E8FD2 /* DateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E768201B1F7B38BC009E8FD2 /* DateTests.swift */; };\n\t\tE777BB8E220312DC0086AC53 /* CGPath+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E777BB8D220312DC0086AC53 /* CGPath+Extension.swift */; };\n\t\tE7B2F66221454010003B642A /* Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7054ADF1F3A0A7E00EA0C0F /* Shape.swift */; };\n\t\tE7B2F66321454010003B642A /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = E747DDA81F44656E006BAC6A /* Image.swift */; };\n\t\tE7B2F66421454010003B642A /* Frame.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB68F1F40937100E0372D /* Frame.swift */; };\n\t\tE7B2F66521454010003B642A /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77E231FF7E30C00CE691A /* Context.swift */; };\n\t\tE7B2F66721454010003B642A /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7387A481F44828F00C3B35C /* String.swift */; };\n\t\tE7B2F66821454010003B642A /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB68B1F40902A00E0372D /* Color.swift */; };\n\t\tE7B2F66921454010003B642A /* Loop.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76046B71F4088FB00921B1A /* Loop.swift */; };\n\t\tE7B2F66A21454010003B642A /* Vertex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820201F7B6446009E8FD2 /* Vertex.swift */; };\n\t\tE7B2F66B21454010003B642A /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E713695F1F44945900267715 /* UIColor.swift */; };\n\t\tE7B2F66D21454010003B642A /* Transform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820231F7B647A009E8FD2 /* Transform.swift */; };\n\t\tE7B2F66E21454010003B642A /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB6881F408FAB00E0372D /* Text.swift */; };\n\t\tE7B2F66F21454010003B642A /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820181F7B32B8009E8FD2 /* Date.swift */; };\n\t\tE7B2F67021454010003B642A /* CGPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77DCC1FF7D30500CE691A /* CGPoint.swift */; };\n\t\tE7B2F67121454010003B642A /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76046C01F408B2E00921B1A /* Constants.swift */; };\n\t\tE7B2F6852145447B003B642A /* ProcessingView+Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F6842145447B003B642A /* ProcessingView+Color.swift */; };\n\t\tE7B2F687214544A8003B642A /* ProcessingView+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F686214544A8003B642A /* ProcessingView+Constants.swift */; };\n\t\tE7B2F689214544C7003B642A /* ProcessingView+Frame.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F688214544C6003B642A /* ProcessingView+Frame.swift */; };\n\t\tE7B2F68B214544EB003B642A /* ProcessingView+Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F68A214544EB003B642A /* ProcessingView+Image.swift */; };\n\t\tE7B2F68D2145450A003B642A /* ProcessingView+Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F68C2145450A003B642A /* ProcessingView+Date.swift */; };\n\t\tE7B2F6912145453B003B642A /* ProcessingView+Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F6902145453B003B642A /* ProcessingView+Shape.swift */; };\n\t\tE7B2F69321454547003B642A /* ProcessingView+Vertex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F69221454547003B642A /* ProcessingView+Vertex.swift */; };\n\t\tE7B2F69521454577003B642A /* ProcessingView+Loop.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F69421454577003B642A /* ProcessingView+Loop.swift */; };\n\t\tE7B2F69721454591003B642A /* ProcessingView+Transform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F69621454591003B642A /* ProcessingView+Transform.swift */; };\n\t\tE7B2F699214545B4003B642A /* ProcessingView+Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F698214545B4003B642A /* ProcessingView+Text.swift */; };\n\t\tE7B2F69F21454F80003B642A /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77E231FF7E30C00CE691A /* Context.swift */; };\n\t\tE7B2F6A021454F83003B642A /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB68B1F40902A00E0372D /* Color.swift */; };\n\t\tE7B2F6A121454F86003B642A /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76046C01F408B2E00921B1A /* Constants.swift */; };\n\t\tE7B2F6A221454F8B003B642A /* Frame.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB68F1F40937100E0372D /* Frame.swift */; };\n\t\tE7B2F6A321454F8E003B642A /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7387A481F44828F00C3B35C /* String.swift */; };\n\t\tE7B2F6A421454F93003B642A /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E713695F1F44945900267715 /* UIColor.swift */; };\n\t\tE7B2F6A521454F95003B642A /* CGPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77DCC1FF7D30500CE691A /* CGPoint.swift */; };\n\t\tE7B2F6A621454F99003B642A /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = E747DDA81F44656E006BAC6A /* Image.swift */; };\n\t\tE7B2F6A721454F9C003B642A /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820181F7B32B8009E8FD2 /* Date.swift */; };\n\t\tE7B2F6A921454FA1003B642A /* Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7054ADF1F3A0A7E00EA0C0F /* Shape.swift */; };\n\t\tE7B2F6AA21454FA3003B642A /* Vertex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820201F7B6446009E8FD2 /* Vertex.swift */; };\n\t\tE7B2F6AB21454FA6003B642A /* Loop.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76046B71F4088FB00921B1A /* Loop.swift */; };\n\t\tE7B2F6AC21454FA8003B642A /* Transform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820231F7B647A009E8FD2 /* Transform.swift */; };\n\t\tE7B2F6AD21454FAB003B642A /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB6881F408FAB00E0372D /* Text.swift */; };\n\t\tE7B2F6B221454FC9003B642A /* NSImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77E291FF7EBFF00CE691A /* NSImage.swift */; };\n\t\tE7B2F6B321454FC9003B642A /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77E2C1FF7F19700CE691A /* NSView.swift */; };\n\t\tE7B2F6B421454FDE003B642A /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77E231FF7E30C00CE691A /* Context.swift */; };\n\t\tE7B2F6B521454FE0003B642A /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB68B1F40902A00E0372D /* Color.swift */; };\n\t\tE7B2F6B621454FE3003B642A /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76046C01F408B2E00921B1A /* Constants.swift */; };\n\t\tE7B2F6B721454FE5003B642A /* Frame.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB68F1F40937100E0372D /* Frame.swift */; };\n\t\tE7B2F6B821454FE9003B642A /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7387A481F44828F00C3B35C /* String.swift */; };\n\t\tE7B2F6B921454FE9003B642A /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E713695F1F44945900267715 /* UIColor.swift */; };\n\t\tE7B2F6BA21454FE9003B642A /* CGPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77DCC1FF7D30500CE691A /* CGPoint.swift */; };\n\t\tE7B2F6BB21454FF9003B642A /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = E747DDA81F44656E006BAC6A /* Image.swift */; };\n\t\tE7B2F6BC21454FF9003B642A /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820181F7B32B8009E8FD2 /* Date.swift */; };\n\t\tE7B2F6BE21454FF9003B642A /* Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7054ADF1F3A0A7E00EA0C0F /* Shape.swift */; };\n\t\tE7B2F6BF21454FF9003B642A /* Vertex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820201F7B6446009E8FD2 /* Vertex.swift */; };\n\t\tE7B2F6C021454FF9003B642A /* Loop.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76046B71F4088FB00921B1A /* Loop.swift */; };\n\t\tE7B2F6C121454FF9003B642A /* Transform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820231F7B647A009E8FD2 /* Transform.swift */; };\n\t\tE7B2F6C221454FF9003B642A /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB6881F408FAB00E0372D /* Text.swift */; };\n\t\tE7B2F6C321455079003B642A /* ProcessingView+Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F6842145447B003B642A /* ProcessingView+Color.swift */; };\n\t\tE7B2F6C421455079003B642A /* ProcessingView+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F686214544A8003B642A /* ProcessingView+Constants.swift */; };\n\t\tE7B2F6C521455079003B642A /* ProcessingView+Frame.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F688214544C6003B642A /* ProcessingView+Frame.swift */; };\n\t\tE7B2F6C621455079003B642A /* ProcessingView+Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F68A214544EB003B642A /* ProcessingView+Image.swift */; };\n\t\tE7B2F6C721455079003B642A /* ProcessingView+Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F68C2145450A003B642A /* ProcessingView+Date.swift */; };\n\t\tE7B2F6C921455079003B642A /* ProcessingView+Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F6902145453B003B642A /* ProcessingView+Shape.swift */; };\n\t\tE7B2F6CA21455079003B642A /* ProcessingView+Vertex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F69221454547003B642A /* ProcessingView+Vertex.swift */; };\n\t\tE7B2F6CB21455079003B642A /* ProcessingView+Loop.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F69421454577003B642A /* ProcessingView+Loop.swift */; };\n\t\tE7B2F6CC21455079003B642A /* ProcessingView+Transform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F69621454591003B642A /* ProcessingView+Transform.swift */; };\n\t\tE7B2F6CD21455079003B642A /* ProcessingView+Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B2F698214545B4003B642A /* ProcessingView+Text.swift */; };\n\t\tE7B2F7122145542F003B642A /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77E231FF7E30C00CE691A /* Context.swift */; };\n\t\tE7B2F71321455437003B642A /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB68B1F40902A00E0372D /* Color.swift */; };\n\t\tE7B2F71421455437003B642A /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76046C01F408B2E00921B1A /* Constants.swift */; };\n\t\tE7B2F71521455437003B642A /* Frame.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB68F1F40937100E0372D /* Frame.swift */; };\n\t\tE7B2F71621455437003B642A /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7387A481F44828F00C3B35C /* String.swift */; };\n\t\tE7B2F71721455437003B642A /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E713695F1F44945900267715 /* UIColor.swift */; };\n\t\tE7B2F71821455437003B642A /* CGPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77DCC1FF7D30500CE691A /* CGPoint.swift */; };\n\t\tE7B2F71921455442003B642A /* NSImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77E291FF7EBFF00CE691A /* NSImage.swift */; };\n\t\tE7B2F71A21455442003B642A /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77E2C1FF7F19700CE691A /* NSView.swift */; };\n\t\tE7B2F71B21455448003B642A /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = E747DDA81F44656E006BAC6A /* Image.swift */; };\n\t\tE7B2F71C21455448003B642A /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820181F7B32B8009E8FD2 /* Date.swift */; };\n\t\tE7B2F71E21455448003B642A /* Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7054ADF1F3A0A7E00EA0C0F /* Shape.swift */; };\n\t\tE7B2F71F21455448003B642A /* Vertex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820201F7B6446009E8FD2 /* Vertex.swift */; };\n\t\tE7B2F72021455448003B642A /* Loop.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76046B71F4088FB00921B1A /* Loop.swift */; };\n\t\tE7B2F72121455448003B642A /* Transform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820231F7B647A009E8FD2 /* Transform.swift */; };\n\t\tE7B2F72221455448003B642A /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70BB6881F408FAB00E0372D /* Text.swift */; };\n\t\tE7B77E221FF7E1B300CE691A /* ProcessingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7054AD31F34CCB200EA0C0F /* ProcessingView.swift */; };\n\t\tE7D14AFB20ED138400906F04 /* GestureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D14AFA20ED138400906F04 /* GestureTests.swift */; };\n\t\tE7D14B4C2169F35A001E152C /* ProcessingView+Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D14B4B2169F35A001E152C /* ProcessingView+Gesture.swift */; };\n\t\tE7D14B50216A0AEC001E152C /* Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D14B4F216A0AEC001E152C /* Gesture.swift */; };\n\t\tE7D14B5E216A5A87001E152C /* Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D14B4F216A0AEC001E152C /* Gesture.swift */; };\n\t\tE7D14B5F216A5A88001E152C /* Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D14B4F216A0AEC001E152C /* Gesture.swift */; };\n\t\tE7D14B60216A5A89001E152C /* Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D14B4F216A0AEC001E152C /* Gesture.swift */; };\n\t\tE7D14B61216A5BD6001E152C /* ProcessingView+Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D14B4B2169F35A001E152C /* ProcessingView+Gesture.swift */; };\n\t\tE7E1830D200A7D0D009C32ED /* TransformTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7E1830C200A7D0D009C32ED /* TransformTests.swift */; };\n\t\tE7F57866201E26ED0042C30F /* ShapeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F57865201E26ED0042C30F /* ShapeTests.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tE7212F4B1F34B5A600173CD8 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E7212F371F34B5A600173CD8 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = E7212F3F1F34B5A600173CD8;\n\t\t\tremoteInfo = ProcessingKit;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\tE7054AD31F34CCB200EA0C0F /* ProcessingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ProcessingView.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tE7054ADF1F3A0A7E00EA0C0F /* Shape.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = Shape.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tE70BB6881F408FAB00E0372D /* Text.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = Text.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tE70BB68B1F40902A00E0372D /* Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = Color.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tE70BB68F1F40937100E0372D /* Frame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = Frame.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tE713695F1F44945900267715 /* UIColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = \"<group>\"; };\n\t\tE71388DC1F7A1F5500A45FA6 /* ProcessingViewDelegateSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessingViewDelegateSpy.swift; sourceTree = \"<group>\"; };\n\t\tE7212F401F34B5A600173CD8 /* ProcessingKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProcessingKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE7212F431F34B5A600173CD8 /* ProcessingKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProcessingKit.h; sourceTree = \"<group>\"; };\n\t\tE7212F441F34B5A600173CD8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tE7212F491F34B5A600173CD8 /* ProcessingKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ProcessingKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE7212F4E1F34B5A600173CD8 /* ProcessingViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessingViewTests.swift; sourceTree = \"<group>\"; };\n\t\tE7212F501F34B5A600173CD8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tE7387A481F44828F00C3B35C /* String.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = \"<group>\"; };\n\t\tE747DDA81F44656E006BAC6A /* Image.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = Image.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tE76046B71F4088FB00921B1A /* Loop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = Loop.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tE76046C01F408B2E00921B1A /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = \"<group>\"; };\n\t\tE76820181F7B32B8009E8FD2 /* Date.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Date.swift; sourceTree = \"<group>\"; };\n\t\tE768201B1F7B38BC009E8FD2 /* DateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateTests.swift; sourceTree = \"<group>\"; };\n\t\tE76820201F7B6446009E8FD2 /* Vertex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Vertex.swift; sourceTree = \"<group>\"; };\n\t\tE76820231F7B647A009E8FD2 /* Transform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Transform.swift; sourceTree = \"<group>\"; };\n\t\tE76820351F7E49B1009E8FD2 /* Demo.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; name = Demo.playground; path = ProcessingKit/Demo.playground; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tE777BB8D220312DC0086AC53 /* CGPath+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"CGPath+Extension.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F67A21454010003B642A /* ProcessingKitCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProcessingKitCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE7B2F6842145447B003B642A /* ProcessingView+Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Color.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F686214544A8003B642A /* ProcessingView+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Constants.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F688214544C6003B642A /* ProcessingView+Frame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Frame.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F68A214544EB003B642A /* ProcessingView+Image.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Image.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F68C2145450A003B642A /* ProcessingView+Date.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Date.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F6902145453B003B642A /* ProcessingView+Shape.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Shape.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F69221454547003B642A /* ProcessingView+Vertex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Vertex.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F69421454577003B642A /* ProcessingView+Loop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Loop.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F69621454591003B642A /* ProcessingView+Transform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Transform.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F698214545B4003B642A /* ProcessingView+Text.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Text.swift\"; sourceTree = \"<group>\"; };\n\t\tE7B2F70F214553BF003B642A /* ProcessingKitCoreOSX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProcessingKitCoreOSX.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE7B77DCC1FF7D30500CE691A /* CGPoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGPoint.swift; sourceTree = \"<group>\"; };\n\t\tE7B77DD31FF7E02900CE691A /* ProcessingKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProcessingKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE7B77E231FF7E30C00CE691A /* Context.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Context.swift; sourceTree = \"<group>\"; };\n\t\tE7B77E291FF7EBFF00CE691A /* NSImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSImage.swift; sourceTree = \"<group>\"; };\n\t\tE7B77E2C1FF7F19700CE691A /* NSView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSView.swift; sourceTree = \"<group>\"; };\n\t\tE7D14AFA20ED138400906F04 /* GestureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GestureTests.swift; sourceTree = \"<group>\"; };\n\t\tE7D14B4B2169F35A001E152C /* ProcessingView+Gesture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ProcessingView+Gesture.swift\"; sourceTree = \"<group>\"; };\n\t\tE7D14B4F216A0AEC001E152C /* Gesture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Gesture.swift; sourceTree = \"<group>\"; };\n\t\tE7E1830C200A7D0D009C32ED /* TransformTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransformTests.swift; sourceTree = \"<group>\"; };\n\t\tE7F57865201E26ED0042C30F /* ShapeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShapeTests.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tE7212F3C1F34B5A600173CD8 /* 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\tE7212F461F34B5A600173CD8 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE7212F4A1F34B5A600173CD8 /* ProcessingKit.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE7B2F67221454010003B642A /* 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\tE7B2F708214553BF003B642A /* 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\tE7B77DCF1FF7E02900CE691A /* 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/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tE70BB6871F408F9900E0372D /* Typography */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE70BB6881F408FAB00E0372D /* Text.swift */,\n\t\t\t);\n\t\t\tpath = Typography;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7212F361F34B5A600173CD8 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE76820351F7E49B1009E8FD2 /* Demo.playground */,\n\t\t\t\tE7212F421F34B5A600173CD8 /* ProcessingKit */,\n\t\t\t\tE7212F4D1F34B5A600173CD8 /* ProcessingKitTests */,\n\t\t\t\tE7212F411F34B5A600173CD8 /* Products */,\n\t\t\t\tE7B2F680214543FB003B642A /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7212F411F34B5A600173CD8 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7212F401F34B5A600173CD8 /* ProcessingKit.framework */,\n\t\t\t\tE7212F491F34B5A600173CD8 /* ProcessingKitTests.xctest */,\n\t\t\t\tE7B77DD31FF7E02900CE691A /* ProcessingKit.framework */,\n\t\t\t\tE7B2F67A21454010003B642A /* ProcessingKitCore.framework */,\n\t\t\t\tE7B2F70F214553BF003B642A /* ProcessingKitCoreOSX.framework */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7212F421F34B5A600173CD8 /* ProcessingKit */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7B2F68221454437003B642A /* Core */,\n\t\t\t\tE7212F441F34B5A600173CD8 /* Info.plist */,\n\t\t\t\tE7212F431F34B5A600173CD8 /* ProcessingKit.h */,\n\t\t\t\tE7054AD31F34CCB200EA0C0F /* ProcessingView.swift */,\n\t\t\t\tE7B2F68321454450003B642A /* ProcessingView+Core */,\n\t\t\t);\n\t\t\tpath = ProcessingKit;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7212F4D1F34B5A600173CD8 /* ProcessingKitTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE777BB8C220312BB0086AC53 /* CGPath+Extension */,\n\t\t\t\tE768201A1F7B38A3009E8FD2 /* Input */,\n\t\t\t\tE7212F501F34B5A600173CD8 /* Info.plist */,\n\t\t\t\tE71388DC1F7A1F5500A45FA6 /* ProcessingViewDelegateSpy.swift */,\n\t\t\t\tE7212F4E1F34B5A600173CD8 /* ProcessingViewTests.swift */,\n\t\t\t\tE7F57865201E26ED0042C30F /* ShapeTests.swift */,\n\t\t\t\tE7E1830C200A7D0D009C32ED /* TransformTests.swift */,\n\t\t\t\tE7D14AFA20ED138400906F04 /* GestureTests.swift */,\n\t\t\t);\n\t\t\tpath = ProcessingKitTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7387A4A1F44829C00C3B35C /* Extensions */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7387A481F44828F00C3B35C /* String.swift */,\n\t\t\t\tE713695F1F44945900267715 /* UIColor.swift */,\n\t\t\t\tE7B77DCC1FF7D30500CE691A /* CGPoint.swift */,\n\t\t\t\tE7B77E291FF7EBFF00CE691A /* NSImage.swift */,\n\t\t\t\tE7B77E2C1FF7F19700CE691A /* NSView.swift */,\n\t\t\t);\n\t\t\tpath = Extensions;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE76046B91F40894700921B1A /* Structure */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE76046B71F4088FB00921B1A /* Loop.swift */,\n\t\t\t);\n\t\t\tpath = Structure;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE76046BA1F40895100921B1A /* Environment */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE70BB68F1F40937100E0372D /* Frame.swift */,\n\t\t\t);\n\t\t\tpath = Environment;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE76046BB1F4089AF00921B1A /* Shape */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7054ADF1F3A0A7E00EA0C0F /* Shape.swift */,\n\t\t\t\tE76820201F7B6446009E8FD2 /* Vertex.swift */,\n\t\t\t);\n\t\t\tpath = Shape;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE76046BC1F4089CF00921B1A /* Input */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE76820181F7B32B8009E8FD2 /* Date.swift */,\n\t\t\t\tE7D14B4F216A0AEC001E152C /* Gesture.swift */,\n\t\t\t);\n\t\t\tpath = Input;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE76046BD1F408A0E00921B1A /* Color */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE70BB68B1F40902A00E0372D /* Color.swift */,\n\t\t\t);\n\t\t\tpath = Color;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE76046BE1F408A1200921B1A /* Image */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE747DDA81F44656E006BAC6A /* Image.swift */,\n\t\t\t);\n\t\t\tpath = Image;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE76046BF1F408A3E00921B1A /* Constants */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE76046C01F408B2E00921B1A /* Constants.swift */,\n\t\t\t);\n\t\t\tpath = Constants;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE768201A1F7B38A3009E8FD2 /* Input */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE768201B1F7B38BC009E8FD2 /* DateTests.swift */,\n\t\t\t);\n\t\t\tpath = Input;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE76820221F7B6465009E8FD2 /* Transform */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE76820231F7B647A009E8FD2 /* Transform.swift */,\n\t\t\t);\n\t\t\tpath = Transform;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE777BB8C220312BB0086AC53 /* CGPath+Extension */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE777BB8D220312DC0086AC53 /* CGPath+Extension.swift */,\n\t\t\t);\n\t\t\tpath = \"CGPath+Extension\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7B2F65E21453F65003B642A /* Context */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7B77E231FF7E30C00CE691A /* Context.swift */,\n\t\t\t);\n\t\t\tpath = Context;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7B2F680214543FB003B642A /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7B2F68221454437003B642A /* Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7B2F65E21453F65003B642A /* Context */,\n\t\t\t\tE76046BD1F408A0E00921B1A /* Color */,\n\t\t\t\tE76046BF1F408A3E00921B1A /* Constants */,\n\t\t\t\tE76046BA1F40895100921B1A /* Environment */,\n\t\t\t\tE7387A4A1F44829C00C3B35C /* Extensions */,\n\t\t\t\tE76046BE1F408A1200921B1A /* Image */,\n\t\t\t\tE76046BC1F4089CF00921B1A /* Input */,\n\t\t\t\tE76046BB1F4089AF00921B1A /* Shape */,\n\t\t\t\tE76046B91F40894700921B1A /* Structure */,\n\t\t\t\tE76820221F7B6465009E8FD2 /* Transform */,\n\t\t\t\tE70BB6871F408F9900E0372D /* Typography */,\n\t\t\t);\n\t\t\tpath = Core;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7B2F68321454450003B642A /* ProcessingView+Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7B2F6842145447B003B642A /* ProcessingView+Color.swift */,\n\t\t\t\tE7B2F686214544A8003B642A /* ProcessingView+Constants.swift */,\n\t\t\t\tE7B2F688214544C6003B642A /* ProcessingView+Frame.swift */,\n\t\t\t\tE7B2F68A214544EB003B642A /* ProcessingView+Image.swift */,\n\t\t\t\tE7B2F68C2145450A003B642A /* ProcessingView+Date.swift */,\n\t\t\t\tE7D14B4B2169F35A001E152C /* ProcessingView+Gesture.swift */,\n\t\t\t\tE7B2F6902145453B003B642A /* ProcessingView+Shape.swift */,\n\t\t\t\tE7B2F69221454547003B642A /* ProcessingView+Vertex.swift */,\n\t\t\t\tE7B2F69421454577003B642A /* ProcessingView+Loop.swift */,\n\t\t\t\tE7B2F69621454591003B642A /* ProcessingView+Transform.swift */,\n\t\t\t\tE7B2F698214545B4003B642A /* ProcessingView+Text.swift */,\n\t\t\t);\n\t\t\tpath = \"ProcessingView+Core\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\tE7212F3D1F34B5A600173CD8 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE7212F511F34B5A600173CD8 /* ProcessingKit.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE7B2F67321454010003B642A /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE7B2F70A214553BF003B642A /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE7B77DD01FF7E02900CE691A /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\tE7212F3F1F34B5A600173CD8 /* ProcessingKit */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = E7212F541F34B5A600173CD8 /* Build configuration list for PBXNativeTarget \"ProcessingKit\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE7212F3B1F34B5A600173CD8 /* Sources */,\n\t\t\t\tE7212F3C1F34B5A600173CD8 /* Frameworks */,\n\t\t\t\tE7212F3D1F34B5A600173CD8 /* Headers */,\n\t\t\t\tE7212F3E1F34B5A600173CD8 /* Resources */,\n\t\t\t\tE708FB7E1F64403500692D98 /* Swiftlint */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = ProcessingKit;\n\t\t\tproductName = ProcessingKit;\n\t\t\tproductReference = E7212F401F34B5A600173CD8 /* ProcessingKit.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tE7212F481F34B5A600173CD8 /* ProcessingKitTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = E7212F571F34B5A600173CD8 /* Build configuration list for PBXNativeTarget \"ProcessingKitTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE7212F451F34B5A600173CD8 /* Sources */,\n\t\t\t\tE7212F461F34B5A600173CD8 /* Frameworks */,\n\t\t\t\tE7212F471F34B5A600173CD8 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tE7212F4C1F34B5A600173CD8 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = ProcessingKitTests;\n\t\t\tproductName = ProcessingKitTests;\n\t\t\tproductReference = E7212F491F34B5A600173CD8 /* ProcessingKitTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tE7B2F66021454010003B642A /* ProcessingKitCore */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = E7B2F67721454010003B642A /* Build configuration list for PBXNativeTarget \"ProcessingKitCore\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE7B2F66121454010003B642A /* Sources */,\n\t\t\t\tE7B2F67221454010003B642A /* Frameworks */,\n\t\t\t\tE7B2F67321454010003B642A /* Headers */,\n\t\t\t\tE7B2F67521454010003B642A /* 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 = ProcessingKitCore;\n\t\t\tproductName = ProcessingKit;\n\t\t\tproductReference = E7B2F67A21454010003B642A /* ProcessingKitCore.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tE7B2F6E9214553BF003B642A /* ProcessingKitCoreOSX */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = E7B2F70C214553BF003B642A /* Build configuration list for PBXNativeTarget \"ProcessingKitCoreOSX\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE7B2F6EA214553BF003B642A /* Sources */,\n\t\t\t\tE7B2F708214553BF003B642A /* Frameworks */,\n\t\t\t\tE7B2F70A214553BF003B642A /* Headers */,\n\t\t\t\tE7B2F70B214553BF003B642A /* 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 = ProcessingKitCoreOSX;\n\t\t\tproductName = \"ProcessingKit OSX\";\n\t\t\tproductReference = E7B2F70F214553BF003B642A /* ProcessingKitCoreOSX.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tE7B77DD21FF7E02900CE691A /* ProcessingKit OSX */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = E7B77DE81FF7E02A00CE691A /* Build configuration list for PBXNativeTarget \"ProcessingKit OSX\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE7B77DCE1FF7E02900CE691A /* Sources */,\n\t\t\t\tE7B77DCF1FF7E02900CE691A /* Frameworks */,\n\t\t\t\tE7B77DD01FF7E02900CE691A /* Headers */,\n\t\t\t\tE7B77DD11FF7E02900CE691A /* 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 = \"ProcessingKit OSX\";\n\t\t\tproductName = \"ProcessingKit OSX\";\n\t\t\tproductReference = E7B77DD31FF7E02900CE691A /* ProcessingKit.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tE7212F371F34B5A600173CD8 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0910;\n\t\t\t\tLastUpgradeCheck = 0940;\n\t\t\t\tORGANIZATIONNAME = \"Atsuya Sato\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tE7212F3F1F34B5A600173CD8 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.3.3;\n\t\t\t\t\t\tLastSwiftMigration = 0910;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tE7212F481F34B5A600173CD8 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.3.3;\n\t\t\t\t\t\tLastSwiftMigration = 0910;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tE7B2F66021454010003B642A = {\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tE7B2F6E9214553BF003B642A = {\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tE7B77DD21FF7E02900CE691A = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 9.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = E7212F3A1F34B5A600173CD8 /* Build configuration list for PBXProject \"ProcessingKit\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = E7212F361F34B5A600173CD8;\n\t\t\tproductRefGroup = E7212F411F34B5A600173CD8 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tE7212F3F1F34B5A600173CD8 /* ProcessingKit */,\n\t\t\t\tE7212F481F34B5A600173CD8 /* ProcessingKitTests */,\n\t\t\t\tE7B77DD21FF7E02900CE691A /* ProcessingKit OSX */,\n\t\t\t\tE7B2F66021454010003B642A /* ProcessingKitCore */,\n\t\t\t\tE7B2F6E9214553BF003B642A /* ProcessingKitCoreOSX */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tE7212F3E1F34B5A600173CD8 /* 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\tE7212F471F34B5A600173CD8 /* 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\tE7B2F67521454010003B642A /* 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\tE7B2F70B214553BF003B642A /* 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\tE7B77DD11FF7E02900CE691A /* 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\tE708FB7E1F64403500692D98 /* Swiftlint */ = {\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);\n\t\t\tname = Swiftlint;\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"if which swiftlint >/dev/null; then\\n    swiftlint\\nelse\\n    echo \\\"SwiftLint does not exist, download from https://github.com/realm/SwiftLint\\\"\\nfi\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tE7212F3B1F34B5A600173CD8 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE7B2F68B214544EB003B642A /* ProcessingView+Image.swift in Sources */,\n\t\t\t\tE7B2F6A221454F8B003B642A /* Frame.swift in Sources */,\n\t\t\t\tE7B2F6912145453B003B642A /* ProcessingView+Shape.swift in Sources */,\n\t\t\t\tE7D14B4C2169F35A001E152C /* ProcessingView+Gesture.swift in Sources */,\n\t\t\t\tE7B2F6AC21454FA8003B642A /* Transform.swift in Sources */,\n\t\t\t\tE7B2F6A921454FA1003B642A /* Shape.swift in Sources */,\n\t\t\t\tE7B2F6AA21454FA3003B642A /* Vertex.swift in Sources */,\n\t\t\t\tE7B2F69F21454F80003B642A /* Context.swift in Sources */,\n\t\t\t\tE7B2F687214544A8003B642A /* ProcessingView+Constants.swift in Sources */,\n\t\t\t\tE7B2F6A121454F86003B642A /* Constants.swift in Sources */,\n\t\t\t\tE7B2F6A521454F95003B642A /* CGPoint.swift in Sources */,\n\t\t\t\tE7D14B50216A0AEC001E152C /* Gesture.swift in Sources */,\n\t\t\t\tE7B2F699214545B4003B642A /* ProcessingView+Text.swift in Sources */,\n\t\t\t\tE7B2F6A621454F99003B642A /* Image.swift in Sources */,\n\t\t\t\tE7054AD41F34CCB200EA0C0F /* ProcessingView.swift in Sources */,\n\t\t\t\tE7B2F68D2145450A003B642A /* ProcessingView+Date.swift in Sources */,\n\t\t\t\tE7B2F6852145447B003B642A /* ProcessingView+Color.swift in Sources */,\n\t\t\t\tE7B2F6A021454F83003B642A /* Color.swift in Sources */,\n\t\t\t\tE7B2F69521454577003B642A /* ProcessingView+Loop.swift in Sources */,\n\t\t\t\tE7B2F6A421454F93003B642A /* UIColor.swift in Sources */,\n\t\t\t\tE7B2F6A721454F9C003B642A /* Date.swift in Sources */,\n\t\t\t\tE7B2F6AB21454FA6003B642A /* Loop.swift in Sources */,\n\t\t\t\tE7B2F6AD21454FAB003B642A /* Text.swift in Sources */,\n\t\t\t\tE7B2F69321454547003B642A /* ProcessingView+Vertex.swift in Sources */,\n\t\t\t\tE7B2F6A321454F8E003B642A /* String.swift in Sources */,\n\t\t\t\tE7B2F689214544C7003B642A /* ProcessingView+Frame.swift in Sources */,\n\t\t\t\tE7B2F69721454591003B642A /* ProcessingView+Transform.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE7212F451F34B5A600173CD8 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE7212F4F1F34B5A600173CD8 /* ProcessingViewTests.swift in Sources */,\n\t\t\t\tE768201C1F7B38BC009E8FD2 /* DateTests.swift in Sources */,\n\t\t\t\tE71388DD1F7A1F5500A45FA6 /* ProcessingViewDelegateSpy.swift in Sources */,\n\t\t\t\tE7F57866201E26ED0042C30F /* ShapeTests.swift in Sources */,\n\t\t\t\tE7D14AFB20ED138400906F04 /* GestureTests.swift in Sources */,\n\t\t\t\tE777BB8E220312DC0086AC53 /* CGPath+Extension.swift in Sources */,\n\t\t\t\tE7E1830D200A7D0D009C32ED /* TransformTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE7B2F66121454010003B642A /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE7B2F66221454010003B642A /* Shape.swift in Sources */,\n\t\t\t\tE7B2F66321454010003B642A /* Image.swift in Sources */,\n\t\t\t\tE7B2F66421454010003B642A /* Frame.swift in Sources */,\n\t\t\t\tE7B2F66521454010003B642A /* Context.swift in Sources */,\n\t\t\t\tE7B2F66721454010003B642A /* String.swift in Sources */,\n\t\t\t\tE7B2F66821454010003B642A /* Color.swift in Sources */,\n\t\t\t\tE7D14B5F216A5A88001E152C /* Gesture.swift in Sources */,\n\t\t\t\tE7B2F66921454010003B642A /* Loop.swift in Sources */,\n\t\t\t\tE7B2F66A21454010003B642A /* Vertex.swift in Sources */,\n\t\t\t\tE7B2F66B21454010003B642A /* UIColor.swift in Sources */,\n\t\t\t\tE7B2F66D21454010003B642A /* Transform.swift in Sources */,\n\t\t\t\tE7B2F66E21454010003B642A /* Text.swift in Sources */,\n\t\t\t\tE7B2F66F21454010003B642A /* Date.swift in Sources */,\n\t\t\t\tE7B2F67021454010003B642A /* CGPoint.swift in Sources */,\n\t\t\t\tE7B2F67121454010003B642A /* Constants.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE7B2F6EA214553BF003B642A /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE7B2F71A21455442003B642A /* NSView.swift in Sources */,\n\t\t\t\tE7B2F71921455442003B642A /* NSImage.swift in Sources */,\n\t\t\t\tE7B2F72021455448003B642A /* Loop.swift in Sources */,\n\t\t\t\tE7D14B60216A5A89001E152C /* Gesture.swift in Sources */,\n\t\t\t\tE7B2F7122145542F003B642A /* Context.swift in Sources */,\n\t\t\t\tE7B2F71721455437003B642A /* UIColor.swift in Sources */,\n\t\t\t\tE7B2F71521455437003B642A /* Frame.swift in Sources */,\n\t\t\t\tE7B2F71821455437003B642A /* CGPoint.swift in Sources */,\n\t\t\t\tE7B2F72121455448003B642A /* Transform.swift in Sources */,\n\t\t\t\tE7B2F71F21455448003B642A /* Vertex.swift in Sources */,\n\t\t\t\tE7B2F71E21455448003B642A /* Shape.swift in Sources */,\n\t\t\t\tE7B2F71621455437003B642A /* String.swift in Sources */,\n\t\t\t\tE7B2F72221455448003B642A /* Text.swift in Sources */,\n\t\t\t\tE7B2F71321455437003B642A /* Color.swift in Sources */,\n\t\t\t\tE7B2F71C21455448003B642A /* Date.swift in Sources */,\n\t\t\t\tE7B2F71421455437003B642A /* Constants.swift in Sources */,\n\t\t\t\tE7B2F71B21455448003B642A /* Image.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE7B77DCE1FF7E02900CE691A /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE7B2F6CC21455079003B642A /* ProcessingView+Transform.swift in Sources */,\n\t\t\t\tE7B2F6C321455079003B642A /* ProcessingView+Color.swift in Sources */,\n\t\t\t\tE7B2F6C421455079003B642A /* ProcessingView+Constants.swift in Sources */,\n\t\t\t\tE7D14B61216A5BD6001E152C /* ProcessingView+Gesture.swift in Sources */,\n\t\t\t\tE7B2F6B221454FC9003B642A /* NSImage.swift in Sources */,\n\t\t\t\tE7B2F6B421454FDE003B642A /* Context.swift in Sources */,\n\t\t\t\tE7B2F6CB21455079003B642A /* ProcessingView+Loop.swift in Sources */,\n\t\t\t\tE7B2F6B321454FC9003B642A /* NSView.swift in Sources */,\n\t\t\t\tE7B2F6C721455079003B642A /* ProcessingView+Date.swift in Sources */,\n\t\t\t\tE7B2F6BE21454FF9003B642A /* Shape.swift in Sources */,\n\t\t\t\tE7B2F6C221454FF9003B642A /* Text.swift in Sources */,\n\t\t\t\tE7B2F6B521454FE0003B642A /* Color.swift in Sources */,\n\t\t\t\tE7B2F6B921454FE9003B642A /* UIColor.swift in Sources */,\n\t\t\t\tE7B2F6CD21455079003B642A /* ProcessingView+Text.swift in Sources */,\n\t\t\t\tE7B2F6CA21455079003B642A /* ProcessingView+Vertex.swift in Sources */,\n\t\t\t\tE7B2F6C621455079003B642A /* ProcessingView+Image.swift in Sources */,\n\t\t\t\tE7B2F6C121454FF9003B642A /* Transform.swift in Sources */,\n\t\t\t\tE7B2F6B721454FE5003B642A /* Frame.swift in Sources */,\n\t\t\t\tE7B77E221FF7E1B300CE691A /* ProcessingView.swift in Sources */,\n\t\t\t\tE7B2F6BF21454FF9003B642A /* Vertex.swift in Sources */,\n\t\t\t\tE7B2F6BC21454FF9003B642A /* Date.swift in Sources */,\n\t\t\t\tE7B2F6B821454FE9003B642A /* String.swift in Sources */,\n\t\t\t\tE7B2F6C521455079003B642A /* ProcessingView+Frame.swift in Sources */,\n\t\t\t\tE7B2F6BA21454FE9003B642A /* CGPoint.swift in Sources */,\n\t\t\t\tE7B2F6BB21454FF9003B642A /* Image.swift in Sources */,\n\t\t\t\tE7B2F6B621454FE3003B642A /* Constants.swift in Sources */,\n\t\t\t\tE7D14B5E216A5A87001E152C /* Gesture.swift in Sources */,\n\t\t\t\tE7B2F6C921455079003B642A /* ProcessingView+Shape.swift in Sources */,\n\t\t\t\tE7B2F6C021454FF9003B642A /* Loop.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\tE7212F4C1F34B5A600173CD8 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = E7212F3F1F34B5A600173CD8 /* ProcessingKit */;\n\t\t\ttargetProxy = E7212F4B1F34B5A600173CD8 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\tE7212F521F34B5A600173CD8 /* 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_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\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_DOCUMENTATION_COMMENTS = YES;\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\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\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_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 = 10.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.11;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\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\tE7212F531F34B5A600173CD8 /* 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_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\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_DOCUMENTATION_COMMENTS = YES;\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\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\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 = 10.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.11;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\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\tE7212F551F34B5A600173CD8 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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 = \"$(SRCROOT)/ProcessingKit/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 10.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKit;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE7212F561F34B5A600173CD8 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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 = \"$(SRCROOT)/ProcessingKit/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 10.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKit;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tE7212F581F34B5A600173CD8 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = ProcessingKitTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE7212F591F34B5A600173CD8 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = ProcessingKitTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tE7B2F67821454010003B642A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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 = ProcessingKit/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 10.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitCore;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE7B2F67921454010003B642A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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 = ProcessingKit/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 10.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitCore;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tE7B2F70D214553BF003B642A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tINFOPLIST_FILE = ProcessingKit/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.11;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.github.natmark.ProcessingKitCore-OSX\";\n\t\t\t\tPRODUCT_MODULE_NAME = ProcessingKitCoreOSX;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE7B2F70E214553BF003B642A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tINFOPLIST_FILE = ProcessingKit/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.11;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.github.natmark.ProcessingKitCore-OSX\";\n\t\t\t\tPRODUCT_MODULE_NAME = ProcessingKitCoreOSX;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tE7B77DE41FF7E02A00CE691A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tINFOPLIST_FILE = ProcessingKit/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.11;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.github.natmark.ProcessingKit-OSX\";\n\t\t\t\tPRODUCT_NAME = ProcessingKit;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE7B77DE51FF7E02A00CE691A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\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_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tINFOPLIST_FILE = ProcessingKit/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.11;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.github.natmark.ProcessingKit-OSX\";\n\t\t\t\tPRODUCT_NAME = ProcessingKit;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tE7212F3A1F34B5A600173CD8 /* Build configuration list for PBXProject \"ProcessingKit\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE7212F521F34B5A600173CD8 /* Debug */,\n\t\t\t\tE7212F531F34B5A600173CD8 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tE7212F541F34B5A600173CD8 /* Build configuration list for PBXNativeTarget \"ProcessingKit\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE7212F551F34B5A600173CD8 /* Debug */,\n\t\t\t\tE7212F561F34B5A600173CD8 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tE7212F571F34B5A600173CD8 /* Build configuration list for PBXNativeTarget \"ProcessingKitTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE7212F581F34B5A600173CD8 /* Debug */,\n\t\t\t\tE7212F591F34B5A600173CD8 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tE7B2F67721454010003B642A /* Build configuration list for PBXNativeTarget \"ProcessingKitCore\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE7B2F67821454010003B642A /* Debug */,\n\t\t\t\tE7B2F67921454010003B642A /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tE7B2F70C214553BF003B642A /* Build configuration list for PBXNativeTarget \"ProcessingKitCoreOSX\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE7B2F70D214553BF003B642A /* Debug */,\n\t\t\t\tE7B2F70E214553BF003B642A /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tE7B77DE81FF7E02A00CE691A /* Build configuration list for PBXNativeTarget \"ProcessingKit OSX\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE7B77DE41FF7E02A00CE691A /* Debug */,\n\t\t\t\tE7B77DE51FF7E02A00CE691A /* 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 = E7212F371F34B5A600173CD8 /* Project object */;\n}\n"
  },
  {
    "path": "ProcessingKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/AtsuyaSato/Desktop/ProcessingKit/ProcessingKit.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "ProcessingKit.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": "ProcessingKit.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "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</plist>\n"
  },
  {
    "path": "ProcessingKit.xcodeproj/xcshareddata/xcschemes/ProcessingKit OSX.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\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 = \"E7B77DD21FF7E02900CE691A\"\n               BuildableName = \"ProcessingKit.framework\"\n               BlueprintName = \"ProcessingKit OSX\"\n               ReferencedContainer = \"container:ProcessingKit.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 = \"E7B77DDA1FF7E02900CE691A\"\n               BuildableName = \"ProcessingKit OSXTests.xctest\"\n               BlueprintName = \"ProcessingKit OSXTests\"\n               ReferencedContainer = \"container:ProcessingKit.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"E7B77DD21FF7E02900CE691A\"\n            BuildableName = \"ProcessingKit.framework\"\n            BlueprintName = \"ProcessingKit OSX\"\n            ReferencedContainer = \"container:ProcessingKit.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 = \"E7B77DD21FF7E02900CE691A\"\n            BuildableName = \"ProcessingKit.framework\"\n            BlueprintName = \"ProcessingKit OSX\"\n            ReferencedContainer = \"container:ProcessingKit.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 = \"E7B77DD21FF7E02900CE691A\"\n            BuildableName = \"ProcessingKit.framework\"\n            BlueprintName = \"ProcessingKit OSX\"\n            ReferencedContainer = \"container:ProcessingKit.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": "ProcessingKit.xcodeproj/xcshareddata/xcschemes/ProcessingKit.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\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 = \"E7212F3F1F34B5A600173CD8\"\n               BuildableName = \"ProcessingKit.framework\"\n               BlueprintName = \"ProcessingKit\"\n               ReferencedContainer = \"container:ProcessingKit.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 = \"E7212F481F34B5A600173CD8\"\n               BuildableName = \"ProcessingKitTests.xctest\"\n               BlueprintName = \"ProcessingKitTests\"\n               ReferencedContainer = \"container:ProcessingKit.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"E7212F3F1F34B5A600173CD8\"\n            BuildableName = \"ProcessingKit.framework\"\n            BlueprintName = \"ProcessingKit\"\n            ReferencedContainer = \"container:ProcessingKit.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 = \"E7212F3F1F34B5A600173CD8\"\n            BuildableName = \"ProcessingKit.framework\"\n            BlueprintName = \"ProcessingKit\"\n            ReferencedContainer = \"container:ProcessingKit.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 = \"E7212F3F1F34B5A600173CD8\"\n            BuildableName = \"ProcessingKit.framework\"\n            BlueprintName = \"ProcessingKit\"\n            ReferencedContainer = \"container:ProcessingKit.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": "ProcessingKit.xcodeproj/xcshareddata/xcschemes/ProcessingKitTests.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      codeCoverageEnabled = \"YES\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"E7212F481F34B5A600173CD8\"\n               BuildableName = \"ProcessingKitTests.xctest\"\n               BlueprintName = \"ProcessingKitTests\"\n               ReferencedContainer = \"container:ProcessingKit.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      <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": "ProcessingKit.xctemplate/TemplateInfo.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>DefaultCompletionName</key>\n\t<string>SketchView</string>\n\t<key>Description</key>\n\t<string>A ProcessingKit sketch view class, with implementation and header files.</string>\n\t<key>Kind</key>\n\t<string>Xcode.IDEKit.TextSubstitutionFileTemplateKind</string>\n\t<key>MainTemplateFile</key>\n\t<string>___FILEBASENAME___.swift</string>\n\t<key>Options</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>Description</key>\n\t\t\t<string>The name of the class to create</string>\n\t\t\t<key>Identifier</key>\n\t\t\t<string>productName</string>\n\t\t\t<key>Default</key>\n\t\t\t<string>SketchView</string>\n\t\t\t<key>Name</key>\n\t\t\t<string>ProcessingKit sketch view class</string>\n\t\t\t<key>NotPersisted</key>\n\t\t\t<true/>\n\t\t\t<key>Required</key>\n\t\t\t<true/>\n\t\t\t<key>Type</key>\n\t\t\t<string>text</string>\n\t\t</dict>\n\t</array>\n\t<key>Platforms</key>\n\t<array>\n\t\t<string>com.apple.platform.iphoneos</string>\n\t\t<string>com.apple.platform.macosx</string>\n\t</array>\n\t<key>Summary</key>\n\t<string>A ProcessingKit sketch view</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "ProcessingKit.xctemplate/___FILEBASENAME___.swift",
    "content": "//\n//  ___FILENAME___\n//  ___PROJECTNAME___\n//\n//  Created by ___FULLUSERNAME___ on ___DATE___.\n//___COPYRIGHT___\n//\n\n#if os(iOS)\nimport UIKit\n#elseif os(OSX)\nimport Cocoa\n#endif\n\nimport ProcessingKit\n\nclass ___FILEBASENAMEASIDENTIFIER___: ProcessingView {\n    func setup() {\n\n    }\n\n    func draw() {\n\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/05.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n    var window: UIWindow?\n\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        // Override point for customization after application launch.\n        return true\n    }\n\n    func applicationWillResignActive(_ application: UIApplication) {\n        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.\n        // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.\n    }\n\n    func applicationDidEnterBackground(_ application: UIApplication) {\n        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.\n        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.\n    }\n\n    func applicationWillEnterForeground(_ application: UIApplication) {\n        // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.\n    }\n\n    func applicationDidBecomeActive(_ application: UIApplication) {\n        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.\n    }\n\n    func applicationWillTerminate(_ application: UIApplication) {\n        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n    }\n\n\n}\n\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-20@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-20@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-29@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-40@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-60@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-60@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-29.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-29@2x-1.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-40.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-40@2x-1.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-76.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-76@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"83.5x83.5\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-83.5@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"1024x1024\",\n      \"idiom\" : \"ios-marketing\",\n      \"filename\" : \"icon.png\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/Assets.xcassets/ProcessingKit-Logo.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"ProcessingKit-Header.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"12121\" systemVersion=\"16E195\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12089\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Llm-lL-Icb\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"xb3-aO-Qok\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"0SD-Ly-jKB\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--ProcessingKitExample-->\n        <scene sceneID=\"FB1-1B-ATh\">\n            <objects>\n                <tableViewController id=\"sBZ-UO-4O8\" customClass=\"MainTableViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <tableView key=\"view\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" bounces=\"NO\" dataMode=\"static\" style=\"plain\" rowHeight=\"50\" sectionHeaderHeight=\"28\" sectionFooterHeight=\"28\" id=\"XLD-5I-aax\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"0.11517300456762314\" green=\"0.24900862574577332\" blue=\"0.35709041357040405\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <color key=\"separatorColor\" red=\"0.11466110497713089\" green=\"0.25688260793685913\" blue=\"0.36498722434043884\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <inset key=\"separatorInset\" minX=\"9\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                        <sections>\n                            <tableViewSection headerTitle=\"Basic Functions\" id=\"DIO-3P-Q06\">\n                                <cells>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"Gnv-jX-DKP\" style=\"IBUITableViewCellStyleDefault\" id=\"ZE3-Hd-3AV\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"28\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"ZE3-Hd-3AV\" id=\"im9-2B-5B8\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Text\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"Gnv-jX-DKP\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"9cI-Re-8dY\" style=\"IBUITableViewCellStyleDefault\" id=\"Efh-Dw-tcB\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"78\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"Efh-Dw-tcB\" id=\"DzU-77-MEe\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Rect\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"9cI-Re-8dY\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"vNp-c6-N9P\" rowHeight=\"50\" style=\"IBUITableViewCellStyleDefault\" id=\"ufK-IT-Zri\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"128\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"ufK-IT-Zri\" id=\"wy1-R7-qb8\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Ellipse\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"vNp-c6-N9P\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"QnI-2m-i9C\" rowHeight=\"50\" style=\"IBUITableViewCellStyleDefault\" id=\"sGz-PJ-aMa\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"178\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"sGz-PJ-aMa\" id=\"pgb-At-z5g\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Arc\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"QnI-2m-i9C\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"bld-pQ-eRT\" rowHeight=\"50\" style=\"IBUITableViewCellStyleDefault\" id=\"A4f-9G-fJ7\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"228\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"A4f-9G-fJ7\" id=\"Pik-RC-VUa\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Triangle\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"bld-pQ-eRT\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"81G-5r-7LB\" rowHeight=\"50\" style=\"IBUITableViewCellStyleDefault\" id=\"B2p-F6-t6I\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"278\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"B2p-F6-t6I\" id=\"11M-Qg-6KB\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Quad\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"81G-5r-7LB\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"dxw-yx-kXv\" rowHeight=\"50\" style=\"IBUITableViewCellStyleDefault\" id=\"Rkz-Ni-eHM\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"328\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"Rkz-Ni-eHM\" id=\"ydK-HP-IY0\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Curve\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"dxw-yx-kXv\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"JDc-c7-do4\" rowHeight=\"50\" style=\"IBUITableViewCellStyleDefault\" id=\"cdI-v0-5k5\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"378\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"cdI-v0-5k5\" id=\"5bE-us-dav\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Image\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"JDc-c7-do4\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                </cells>\n                            </tableViewSection>\n                            <tableViewSection headerTitle=\"Touch Sample\" id=\"uQk-DZ-nea\">\n                                <cells>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"C17-mK-cWm\" style=\"IBUITableViewCellStyleDefault\" id=\"LcU-ab-x93\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"456\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"LcU-ab-x93\" id=\"rrb-EJ-M45\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Simple Tap\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"C17-mK-cWm\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                </cells>\n                            </tableViewSection>\n                            <tableViewSection headerTitle=\"Others\" id=\"QLf-yf-hTI\">\n                                <cells>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"vcK-cF-nR2\" rowHeight=\"50\" style=\"IBUITableViewCellStyleDefault\" id=\"96l-IC-BV7\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"534\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"96l-IC-BV7\" id=\"7M0-Ro-EEe\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Particles\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"vcK-cF-nR2\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"B9g-Ri-cqW\" style=\"IBUITableViewCellStyleDefault\" id=\"5d6-oV-V35\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"584\" width=\"375\" height=\"50\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"5d6-oV-V35\" id=\"cHA-0G-ffC\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"341\" height=\"49.666666666666664\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Clock Sample\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"B9g-Ri-cqW\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"325\" height=\"49.666666666666664\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" red=\"0.033964965489999999\" green=\"0.1318033636\" blue=\"0.21074387429999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <inset key=\"separatorInset\" minX=\"1\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                    </tableViewCell>\n                                </cells>\n                            </tableViewSection>\n                        </sections>\n                        <connections>\n                            <outlet property=\"dataSource\" destination=\"sBZ-UO-4O8\" id=\"Zho-5z-moJ\"/>\n                            <outlet property=\"delegate\" destination=\"sBZ-UO-4O8\" id=\"J3U-El-Abx\"/>\n                        </connections>\n                    </tableView>\n                    <navigationItem key=\"navigationItem\" title=\"ProcessingKitExample\" id=\"dnf-Ap-hAX\"/>\n                </tableViewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"mwx-Bn-0bA\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1400.8\" y=\"213.64317841079463\"/>\n        </scene>\n        <!--Navigation Controller-->\n        <scene sceneID=\"c9d-Df-dMj\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"0SD-Ly-jKB\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" id=\"gxd-zB-iPF\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"44\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <color key=\"barTintColor\" red=\"0.033964965492486954\" green=\"0.13180336356163025\" blue=\"0.21074387431144714\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <textAttributes key=\"titleTextAttributes\">\n                            <color key=\"textColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        </textAttributes>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"sBZ-UO-4O8\" kind=\"relationship\" relationship=\"rootViewController\" id=\"elw-2L-6hz\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"2n0-cN-DoA\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"461.60000000000002\" y=\"213.64317841079463\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/ArcSampleView.swift",
    "content": "//\n//  ArcSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/09/26.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass ArcSampleView : ProcessingView {\n    func setup() {\n        background(UIColor.white)\n        fill(UIColor.red)\n        strokeWeight(5.0)\n        stroke(UIColor.blue)\n        arc(200, 200, 100, radians(0), radians(90.0))\n    }\n}\n\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/ArcSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"yj7-P4-J4b\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Arc Sample View Controller-->\n        <scene sceneID=\"2Es-HL-fRo\">\n            <objects>\n                <viewController id=\"yj7-P4-J4b\" customClass=\"ArcSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"00R-8s-p6X\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"TPO-DB-VmN\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"hyl-ch-zdM\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fhs-Zk-UQb\" customClass=\"ArcSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"fhs-Zk-UQb\" secondAttribute=\"trailing\" id=\"4h0-7S-fuB\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"fhs-Zk-UQb\" secondAttribute=\"bottom\" id=\"Ife-Oo-VER\"/>\n                            <constraint firstItem=\"fhs-Zk-UQb\" firstAttribute=\"top\" secondItem=\"00R-8s-p6X\" secondAttribute=\"bottom\" id=\"dYq-1C-80Y\"/>\n                            <constraint firstItem=\"fhs-Zk-UQb\" firstAttribute=\"leading\" secondItem=\"hyl-ch-zdM\" secondAttribute=\"leading\" id=\"rs0-8n-Kzk\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"arcSampleView\" destination=\"fhs-Zk-UQb\" id=\"7So-zD-eok\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"f7s-d1-sTg\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-384.80000000000001\" y=\"135.22167487684729\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/ArcSampleViewController.swift",
    "content": "//\n//  ArcSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/09/26.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass ArcSampleViewController: UIViewController {\n\n    @IBOutlet weak var arcSampleView: ArcSampleView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/CurveSampleView.swift",
    "content": "//\n//  CurveSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/12/30.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass CurveSampleView : ProcessingView {\n    func setup() {\n        background(UIColor.white)\n        stroke(UIColor.black)\n        curve(40, 40, 80, 60, 100, 100, 60, 120)\n        noStroke()\n        fill(255, 0, 0)\n        ellipse(40, 40, 3, 3)\n        fill(0, 0, 255, 192)\n        ellipse(100, 100, 3, 3)\n        ellipse(80, 60, 3, 3)\n        fill(255, 0, 0)\n        ellipse(60, 120, 3, 3)\n    }\n}\n\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/CurveSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"old-A0-rem\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Curve Sample View Controller-->\n        <scene sceneID=\"V8L-FU-rnp\">\n            <objects>\n                <viewController id=\"old-A0-rem\" customClass=\"CurveSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"RYb-Ly-Hqw\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"tof-b7-13H\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"PDE-at-GWQ\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"CmO-NO-xfB\" customClass=\"CurveSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"CmO-NO-xfB\" secondAttribute=\"trailing\" id=\"1Vx-q6-MXV\"/>\n                            <constraint firstItem=\"CmO-NO-xfB\" firstAttribute=\"top\" secondItem=\"RYb-Ly-Hqw\" secondAttribute=\"bottom\" id=\"7a9-sI-D5F\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"CmO-NO-xfB\" secondAttribute=\"bottom\" id=\"QZR-Vw-Uyy\"/>\n                            <constraint firstItem=\"CmO-NO-xfB\" firstAttribute=\"leading\" secondItem=\"PDE-at-GWQ\" secondAttribute=\"leading\" id=\"uop-Ms-44u\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"curveSampleView\" destination=\"CmO-NO-xfB\" id=\"IaQ-Kg-G9p\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"Nof-py-bH3\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"93.599999999999994\" y=\"82.019704433497537\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/CurveSampleViewController.swift",
    "content": "//\n//  CurveSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/12/30.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass CurveSampleViewController: UIViewController {\n\n    @IBOutlet weak var curveSampleView: CurveSampleView!\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n    \n\n    /*\n    // MARK: - Navigation\n\n    // In a storyboard-based application, you will often want to do a little preparation before navigation\n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        // Get the new view controller using segue.destinationViewController.\n        // Pass the selected object to the new view controller.\n    }\n    */\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/EllipseSampleView.swift",
    "content": "//\n//  EllipseSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass EllipseSampleView : ProcessingView {\n    func setup() {\n        background(UIColor.white)\n        fill(UIColor.red)\n        ellipse(200, 100, 100, 100)\n        fill(UIColor.blue)\n        ellipse(250, 150, 100, 100)\n        noFill()\n        stroke(UIColor.black)\n        ellipse(150, 200, 100, 100)\n    }\n}\n\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/EllipseSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"SEC-GA-SGT\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Ellipse Sample View Controller-->\n        <scene sceneID=\"9l1-T5-Kvo\">\n            <objects>\n                <viewController id=\"SEC-GA-SGT\" customClass=\"EllipseSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"uIX-TG-Jlw\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"o6k-F3-Ob3\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"zaR-1p-pjV\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9wl-YS-knL\" customClass=\"EllipseSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"9wl-YS-knL\" secondAttribute=\"trailing\" id=\"AaH-LK-9dY\"/>\n                            <constraint firstItem=\"9wl-YS-knL\" firstAttribute=\"top\" secondItem=\"uIX-TG-Jlw\" secondAttribute=\"bottom\" id=\"HvF-Uq-JXw\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"9wl-YS-knL\" secondAttribute=\"bottom\" id=\"UiF-Sz-jcd\"/>\n                            <constraint firstItem=\"9wl-YS-knL\" firstAttribute=\"leading\" secondItem=\"zaR-1p-pjV\" secondAttribute=\"leading\" id=\"t57-vo-OtG\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"ellipseSampleView\" destination=\"9wl-YS-knL\" id=\"Rng-OZ-IdO\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"lRX-j2-Vvs\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-384.80000000000001\" y=\"135.22167487684729\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/EllipseSampleViewController.swift",
    "content": "//\n//  EllipseSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass EllipseSampleViewController: UIViewController {\n\n    @IBOutlet weak var ellipseSampleView: EllipseSampleView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/ImageSampleView.swift",
    "content": "//\n//  ImageSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/09/27.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass ImageSampleView : ProcessingView {\n    func setup() {\n        image(UIImage(named: \"ProcessingKit-Logo\")!, 0, 100, width, 100)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/ImageSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"yj7-P4-J4b\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Image Sample View Controller-->\n        <scene sceneID=\"2Es-HL-fRo\">\n            <objects>\n                <viewController id=\"yj7-P4-J4b\" customClass=\"ImageSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"00R-8s-p6X\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"TPO-DB-VmN\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"hyl-ch-zdM\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"DSf-JZ-b8j\" customClass=\"ImageSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"DSf-JZ-b8j\" secondAttribute=\"trailing\" id=\"a20-md-J8H\"/>\n                            <constraint firstItem=\"DSf-JZ-b8j\" firstAttribute=\"top\" secondItem=\"00R-8s-p6X\" secondAttribute=\"bottom\" id=\"nZF-DZ-pC2\"/>\n                            <constraint firstItem=\"DSf-JZ-b8j\" firstAttribute=\"leading\" secondItem=\"hyl-ch-zdM\" secondAttribute=\"leading\" id=\"rkm-Jt-n4U\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"DSf-JZ-b8j\" secondAttribute=\"bottom\" id=\"sty-6C-xQE\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"imageSampleView\" destination=\"DSf-JZ-b8j\" id=\"3yc-HY-DW2\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"f7s-d1-sTg\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-384.80000000000001\" y=\"135.22167487684729\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/ImageSampleViewController.swift",
    "content": "//\n//  ImageSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/09/27.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass ImageSampleViewController: UIViewController {\n\n    @IBOutlet var imageSampleView: ImageSampleView!\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/QuadSampleView.swift",
    "content": "//\n//  QuadSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/12/29.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass QuadSampleView : ProcessingView {\n    func setup() {\n        background(UIColor.white)\n        fill(UIColor.red)\n        strokeWeight(5.0)\n        stroke(UIColor.blue)\n        quad(30, 30, 20, 150, 200, 200, 400, 100)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/QuadSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"y0G-fi-nRt\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Quad Sample View Controller-->\n        <scene sceneID=\"667-Tc-Ym8\">\n            <objects>\n                <viewController id=\"y0G-fi-nRt\" customClass=\"QuadSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Og6-iC-a7H\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"73D-5F-paT\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"mF1-nT-Ar2\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"adh-Eu-SIM\" customClass=\"QuadSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"adh-Eu-SIM\" secondAttribute=\"trailing\" id=\"Fag-EX-otf\"/>\n                            <constraint firstItem=\"adh-Eu-SIM\" firstAttribute=\"top\" secondItem=\"Og6-iC-a7H\" secondAttribute=\"bottom\" id=\"PAT-dw-wu6\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"adh-Eu-SIM\" secondAttribute=\"bottom\" id=\"Sp0-Ww-ga7\"/>\n                            <constraint firstItem=\"adh-Eu-SIM\" firstAttribute=\"leading\" secondItem=\"mF1-nT-Ar2\" secondAttribute=\"leading\" id=\"USF-jb-cJk\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"quadSampleView\" destination=\"adh-Eu-SIM\" id=\"AKW-tY-Aci\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"BgX-cf-cI2\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"92\" y=\"173.64532019704436\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/QuadSampleViewController.swift",
    "content": "//\n//  QuadSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/12/29.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass QuadSampleViewController: UIViewController {\n\n    @IBOutlet weak var quadSampleView: QuadSampleView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n    \n\n    /*\n    // MARK: - Navigation\n\n    // In a storyboard-based application, you will often want to do a little preparation before navigation\n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        // Get the new view controller using segue.destinationViewController.\n        // Pass the selected object to the new view controller.\n    }\n    */\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/RectSampleView.swift",
    "content": "//\n//  RectSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass RectSampleView : ProcessingView {\n    func setup() {\n        background(UIColor.white)\n        fill(UIColor.red)\n        rect(200, 100, 100, 100)\n        fill(UIColor.blue)\n        rect(250, 150, 100, 100)\n        noFill()\n        stroke(UIColor.black)\n        rect(150, 200, 100, 100)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/RectSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"yj7-P4-J4b\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Rect Sample View Controller-->\n        <scene sceneID=\"2Es-HL-fRo\">\n            <objects>\n                <viewController id=\"yj7-P4-J4b\" customClass=\"RectSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"00R-8s-p6X\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"TPO-DB-VmN\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"hyl-ch-zdM\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"SnH-qC-IIy\" customClass=\"RectSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"SnH-qC-IIy\" secondAttribute=\"bottom\" id=\"BSp-AE-E42\"/>\n                            <constraint firstItem=\"SnH-qC-IIy\" firstAttribute=\"leading\" secondItem=\"hyl-ch-zdM\" secondAttribute=\"leading\" id=\"gFr-os-yTe\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"SnH-qC-IIy\" secondAttribute=\"trailing\" id=\"gNc-nw-wIW\"/>\n                            <constraint firstItem=\"SnH-qC-IIy\" firstAttribute=\"top\" secondItem=\"00R-8s-p6X\" secondAttribute=\"bottom\" id=\"iyt-tx-08n\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"rectSampleView\" destination=\"SnH-qC-IIy\" id=\"mIH-4r-aea\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"f7s-d1-sTg\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-384.80000000000001\" y=\"135.22167487684729\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/RectSampleViewController.swift",
    "content": "//\n//  RectSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass RectSampleViewController: UIViewController {\n\n    @IBOutlet weak var rectSampleView: RectSampleView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/TextSampleView.swift",
    "content": "//\n//  LineSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass TextSampleView : ProcessingView {\n    func setup() {\n        background(UIColor.white)\n        fill(UIColor.black)\n        textSize(64.0)\n        textAlign(.center)\n        text(\"Hello World\", self.frame.size.width / 2, self.frame.size.height / 2)\n\n        textFont(UIFont(name: \"AmericanTypewriter\", size: 40.0)!)\n        fill(UIColor(red: 4 / 255.0, green: 39 / 255.0, blue: 69 / 255.0, alpha: 255.0 / 255.0))\n        text(\"Processing Kit\", self.frame.size.width / 2, self.frame.size.height / 2 + 50)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/TextSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"SgQ-81-Nb7\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Text Sample View Controller-->\n        <scene sceneID=\"MTk-MP-GR9\">\n            <objects>\n                <viewController id=\"SgQ-81-Nb7\" customClass=\"TextSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"XWI-A3-CRW\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"cVF-tL-IHJ\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Kne-Wc-68S\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fY8-ZN-1PQ\" customClass=\"TextSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"fY8-ZN-1PQ\" secondAttribute=\"bottom\" id=\"Drv-ve-U9A\"/>\n                            <constraint firstItem=\"fY8-ZN-1PQ\" firstAttribute=\"leading\" secondItem=\"Kne-Wc-68S\" secondAttribute=\"leading\" id=\"WN9-Ss-wAJ\"/>\n                            <constraint firstItem=\"fY8-ZN-1PQ\" firstAttribute=\"top\" secondItem=\"XWI-A3-CRW\" secondAttribute=\"bottom\" id=\"pbW-ud-eS0\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"fY8-ZN-1PQ\" secondAttribute=\"trailing\" id=\"qAl-m2-HeR\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"textSampleView\" destination=\"fY8-ZN-1PQ\" id=\"1cO-NP-Ayc\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"np3-EY-zcv\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-384.80000000000001\" y=\"135.22167487684729\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/TextSampleViewController.swift",
    "content": "//\n//  LineSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass TextSampleViewController: UIViewController {\n\n    @IBOutlet weak var textSampleView: TextSampleView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/TriangleSampleView.swift",
    "content": "//\n//  TriangleSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/12/29.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass TriangleSampleView : ProcessingView {\n    func setup() {\n        background(UIColor.white)\n        fill(UIColor.red)\n        strokeWeight(5.0)\n        stroke(UIColor.blue)\n        triangle(width/2, 100, 0, height/2, width, height/2)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/TriangleSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"UuL-Vl-Els\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Triangle Sample View Controller-->\n        <scene sceneID=\"85a-xl-EFn\">\n            <objects>\n                <viewController id=\"UuL-Vl-Els\" customClass=\"TriangleSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"g46-br-WDa\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"rhK-gZ-lbx\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"zDH-qY-Fir\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"nGD-aY-xFM\" customClass=\"TriangleSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        <constraints>\n                            <constraint firstItem=\"nGD-aY-xFM\" firstAttribute=\"top\" secondItem=\"g46-br-WDa\" secondAttribute=\"bottom\" id=\"YRk-UN-8Z7\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"nGD-aY-xFM\" secondAttribute=\"trailing\" id=\"cB1-aC-6B3\"/>\n                            <constraint firstItem=\"nGD-aY-xFM\" firstAttribute=\"leading\" secondItem=\"zDH-qY-Fir\" secondAttribute=\"leading\" id=\"fqV-UX-7eQ\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"nGD-aY-xFM\" secondAttribute=\"bottom\" id=\"yax-YZ-BQE\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"triangleSampleView\" destination=\"nGD-aY-xFM\" id=\"FcO-D2-o00\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"MzR-vc-7I6\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-100\" y=\"13.300492610837439\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/BasicFunctions/TriangleSampleViewController.swift",
    "content": "//\n//  TriangleSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/12/29.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass TriangleSampleViewController: UIViewController {\n\n    @IBOutlet weak var triangleSampleView: TriangleSampleView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n    \n\n    /*\n    // MARK: - Navigation\n\n    // In a storyboard-based application, you will often want to do a little preparation before navigation\n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        // Get the new view controller using segue.destinationViewController.\n        // Pass the selected object to the new view controller.\n    }\n    */\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/Extensions/ViewController.swift",
    "content": "//\n//  ViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\npublic extension UIViewController {\n\n    static func create() -> Self {\n        let name: String = \"\\(type(of: self))\".components(separatedBy: \".\").first!\n        return instantiate(storyboardName: name)\n    }\n\n    private static func instantiate<T>(storyboardName: String) -> T {\n        let storyboard: UIStoryboard = UIStoryboard(name: storyboardName, bundle: nil)\n        let vc: UIViewController? = storyboard.instantiateInitialViewController()\n        return vc as! T\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/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>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/MainTableViewController.swift",
    "content": "//\n//  MainTableViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass MainTableViewController: UITableViewController {\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {\n        tableView.deselectRow(at: indexPath, animated: true)\n        switch indexPath {\n        case IndexPath(row: 0, section: 0): //Text\n            transition(viewController: TextSampleViewController.create())\n            return\n        case IndexPath(row: 1, section: 0): //Rect\n            transition(viewController: RectSampleViewController.create())\n            return\n        case IndexPath(row: 2, section: 0): //Ellipse\n            transition(viewController: EllipseSampleViewController.create())\n            return\n        case IndexPath(row: 3, section: 0): //Arc\n            transition(viewController: ArcSampleViewController.create())\n            return\n        case IndexPath(row: 4, section: 0): //Triangle\n            transition(viewController: TriangleSampleViewController.create())\n            return\n        case IndexPath(row: 5, section: 0): //Quad\n            transition(viewController: QuadSampleViewController.create())\n            return\n        case IndexPath(row: 6, section: 0): //Curve\n            transition(viewController: CurveSampleViewController.create())\n            return\n        case IndexPath(row: 7, section: 0): //Image\n            transition(viewController: ImageSampleViewController.create())\n            return\n        case IndexPath(row: 0, section: 1): //Simple Tap\n            transition(viewController: TouchSampleViewController.create())\n        case IndexPath(row: 0, section: 2): //Particles\n            transition(viewController: ParticlesSampleViewController.create())\n        case IndexPath(row: 1, section: 2): //Clock Sample\n            transition(viewController: ClockSampleViewController.create())\n            return\n        default:\n            return\n        }\n    }\n    func transition(viewController: UIViewController){\n        self.navigationController?.pushViewController(viewController, animated: true)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/OthersSample/ClockSampleView.swift",
    "content": "//\n//  ClockSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/09/30.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass ClockSampleView : ProcessingView {\n    func setup() {\n        stroke(UIColor.black)\n    }\n\n    func draw() {\n        background(UIColor.white)\n        let s = second()\n        let m = minute()\n        let h = hour() % 12\n        translate(width/2, width/2)\n\n        noFill()\n        stroke(UIColor.black)\n\n        // 秒針\n        pushMatrix()\n        rotate(radians(CGFloat(s)*(360/60)))\n        strokeWeight(1)\n        line(0, 0, 0, -width/2)\n        popMatrix()\n\n        // 分針\n        pushMatrix()\n        rotate(radians(CGFloat(m)*(360/60)))\n        strokeWeight(2)\n        line(0, 0, 0, -width/2)\n        popMatrix()\n\n        // 時針\n        pushMatrix()\n        rotate(radians(CGFloat(h)*(360/12)))\n        strokeWeight(4)\n        line(0, 0, 0, -width/3)\n        popMatrix()\n\n        strokeWeight(2);\n        beginShape(.points);\n        stride(from: 0, to: 360, by: 6).forEach {\n            let angle = radians(CGFloat($0))\n            let x = cos(angle) * width / 2\n            let y = sin(angle) * width / 2\n            vertex(x, y)\n        }\n        endShape()\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/OthersSample/ClockSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"fEC-Gr-1CT\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Clock Sample View Controller-->\n        <scene sceneID=\"X4G-Of-7vX\">\n            <objects>\n                <viewController id=\"fEC-Gr-1CT\" customClass=\"ClockSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"fHb-96-gOm\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3Qb-4D-XyL\" customClass=\"ClockSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"3Qb-4D-XyL\" firstAttribute=\"leading\" secondItem=\"Bph-4y-WWV\" secondAttribute=\"leading\" id=\"7cK-rh-DQU\"/>\n                            <constraint firstItem=\"3Qb-4D-XyL\" firstAttribute=\"top\" secondItem=\"Bph-4y-WWV\" secondAttribute=\"top\" id=\"RMS-oT-6nq\"/>\n                            <constraint firstItem=\"3Qb-4D-XyL\" firstAttribute=\"trailing\" secondItem=\"Bph-4y-WWV\" secondAttribute=\"trailing\" id=\"ZVh-Mr-CrY\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"3Qb-4D-XyL\" secondAttribute=\"bottom\" id=\"meB-fI-byL\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"Bph-4y-WWV\"/>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"clockSampleView\" destination=\"3Qb-4D-XyL\" id=\"HEe-bL-jyP\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"2Y3-sR-pCG\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"101.59999999999999\" y=\"64.285714285714292\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/OthersSample/ClockSampleViewController.swift",
    "content": "//\n//  ClockSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/09/30.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass ClockSampleViewController: UIViewController {\n    @IBOutlet weak var clockSampleView: ClockSampleView!\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/OthersSample/ParticlesSampleView.swift",
    "content": "//\n//  ParticlesSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/17.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass ParticlesSampleView : ProcessingView {\n    let totalDots = 50\n    var dots: [Dot] = []\n    let diameter: CGFloat = 12.0\n\n    func setup() {\n        // initial fill colour\n        fill(UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0))\n        noStroke();\n        // array of dots\n        for _ in 0..<totalDots {\n            let d = Dot(width: width, height: height)\n            d.x = CGFloat(arc4random() % UInt32(width))\n            d.y = CGFloat(arc4random() % UInt32(height))\n            d.vx = CGFloat(getRandomNumber(Min: 0.0, Max: 2.0) - Float(1.0))\n            d.vy = CGFloat(getRandomNumber(Min: 0.0, Max: 2.0) - Float(1.0))\n            dots.append(d)\n        }\n\n        background(UIColor.black)\n    }\n    func draw() {\n        fill(UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 25 / 255.0))\n        rect(0, 0, width, height)\n\n        var r: CGFloat = 255\n        var g: CGFloat = 255\n        let b: CGFloat = 255\n\n        for dot in dots {\n            r = (dot.x / width) * 255\n            g = (dot.y / height) * 255\n            fill(UIColor(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: 1.0))\n            dot.update()\n            ellipse(dot.x, dot.y, diameter, diameter)\n        }\n    }\n    private func getRandomNumber(Min _Min : Float, Max _Max : Float)->Float {\n        return ( Float(arc4random_uniform(UINT32_MAX)) / Float(UINT32_MAX) ) * (_Max - _Min) + _Min\n    }\n}\n\nclass Dot {\n    var x: CGFloat = 0.0\n    var y: CGFloat = 0.0\n    var vx: CGFloat = 0.0\n    var vy: CGFloat = 0.0\n    var width: CGFloat = 0.0\n    var height: CGFloat = 0.0\n\n    init(width: CGFloat, height: CGFloat){\n        self.width = width\n        self.height = height\n    }\n    func update(){\n        // update the velocity\n        self.vx = self.vx + CGFloat(getRandomNumber(Min: 0.0, Max: 2.0) - 1.0)\n        self.vx = self.vx * 0.96\n        self.vy = self.vy + CGFloat(getRandomNumber(Min: 0.0, Max: 2.0) - 1.0)\n        self.vy = self.vy * 0.96\n        // update the position\n        self.x = self.x + self.vx\n        self.y = self.y + self.vy\n        // handle boundary collision\n        if (self.x > self.width) { self.x = self.width; self.vx = self.vx * -1.0 }\n        if (self.x < 0) { self.x = 0; self.vx = self.vx * -1.0 }\n        if (self.y > self.height) { self.y = self.height; self.vy = self.vy * -1.0 }\n        if (self.y < 0) { self.y = 0; self.vy = self.vy * -1.0 }\n    }\n    private func getRandomNumber(Min _Min : Float, Max _Max : Float)->Float {\n        return ( Float(arc4random_uniform(UINT32_MAX)) / Float(UINT32_MAX) ) * (_Max - _Min) + _Min\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/OthersSample/ParticlesSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"GxD-4p-WOg\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Particles Sample View Controller-->\n        <scene sceneID=\"wkA-qV-d1M\">\n            <objects>\n                <viewController id=\"GxD-4p-WOg\" customClass=\"ParticlesSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"0DA-Vk-Wmc\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"84J-1X-JwN\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"6B4-UR-mgf\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"iRI-dW-hvV\" customClass=\"ParticlesSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"iRI-dW-hvV\" secondAttribute=\"trailing\" id=\"RDV-7F-0QI\"/>\n                            <constraint firstItem=\"iRI-dW-hvV\" firstAttribute=\"leading\" secondItem=\"6B4-UR-mgf\" secondAttribute=\"leading\" id=\"fSn-0n-Qcl\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"iRI-dW-hvV\" secondAttribute=\"bottom\" id=\"qCW-eS-v6c\"/>\n                            <constraint firstItem=\"iRI-dW-hvV\" firstAttribute=\"top\" secondItem=\"0DA-Vk-Wmc\" secondAttribute=\"bottom\" id=\"vbg-OV-Hp9\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"particlesSampleView\" destination=\"iRI-dW-hvV\" id=\"eeg-1r-3wN\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"DOI-Vd-Myv\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-384.80000000000001\" y=\"135.22167487684729\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/OthersSample/ParticlesSampleViewController.swift",
    "content": "//\n//  ParticlesSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/17.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass ParticlesSampleViewController: UIViewController {\n\n    @IBOutlet weak var particlesSampleView: ParticlesSampleView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/TouchSample/TouchSampleView.swift",
    "content": "//\n//  TouchSampleView.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/05.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\nimport ProcessingKit\n\nclass TouchSampleView : ProcessingView {\n    func setup() {\n        background(UIColor.white)\n        textAlign(.center)\n        textSize(20.0)\n        stroke(UIColor.black)\n        fill(UIColor.black)\n        text(\"Touch me!\", self.frame.size.width / 2, self.frame.size.height / 2)\n\n        noStroke()\n        fill(UIColor.red)\n    }\n    func draw() {\n        if fingerPressed {\n            ellipse(touchX, touchY, 30, 30)\n        }\n    }\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/TouchSample/TouchSampleViewController.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"0df-qt-alm\">\n    <device id=\"retina5_9\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14460.20\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Touch Sample View Controller-->\n        <scene sceneID=\"Mzp-Pr-DrP\">\n            <objects>\n                <viewController storyboardIdentifier=\"TouchSampleViewController\" id=\"0df-qt-alm\" customClass=\"TouchSampleViewController\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"heC-P1-Jaq\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"Grp-Ba-seN\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"jV5-0x-VtQ\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cTS-k3-45k\" customClass=\"TouchSampleView\" customModule=\"ProcessingKitExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"88\" width=\"375\" height=\"724\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"cTS-k3-45k\" secondAttribute=\"trailing\" id=\"VFr-E5-tsY\"/>\n                            <constraint firstItem=\"cTS-k3-45k\" firstAttribute=\"leading\" secondItem=\"jV5-0x-VtQ\" secondAttribute=\"leading\" id=\"a3f-dW-bm5\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"cTS-k3-45k\" secondAttribute=\"bottom\" id=\"lcc-WE-vj4\"/>\n                            <constraint firstItem=\"cTS-k3-45k\" firstAttribute=\"top\" secondItem=\"heC-P1-Jaq\" secondAttribute=\"bottom\" id=\"wzP-Ec-5pV\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"touchSampleView\" destination=\"cTS-k3-45k\" id=\"lZ7-Vc-eb2\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"3Vf-xP-yzO\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"117.59999999999999\" y=\"169.21182266009853\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample/TouchSample/TouchSampleViewController.swift",
    "content": "//\n//  TouchSampleViewController.swift\n//  ProcessingKitExample\n//\n//  Created by AtsuyaSato on 2017/08/16.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport UIKit\n\nclass TouchSampleViewController: UIViewController {\n\n    @IBOutlet weak var touchSampleView: TouchSampleView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample.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\tE7054AD71F34D36200EA0C0F /* TouchSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7054AD61F34D36200EA0C0F /* TouchSampleView.swift */; };\n\t\tE70595211F44899E005C8856 /* EllipseSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70595201F44899E005C8856 /* EllipseSampleView.swift */; };\n\t\tE70595231F4489AA005C8856 /* TextSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70595221F4489AA005C8856 /* TextSampleView.swift */; };\n\t\tE70595251F4489B8005C8856 /* RectSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E70595241F4489B8005C8856 /* RectSampleView.swift */; };\n\t\tE71388D61F79568F00A45FA6 /* ArcSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E71388D51F79568F00A45FA6 /* ArcSampleViewController.swift */; };\n\t\tE71388D91F79569900A45FA6 /* ArcSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E71388D81F79569900A45FA6 /* ArcSampleViewController.storyboard */; };\n\t\tE71388DB1F7956B700A45FA6 /* ArcSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E71388DA1F7956B700A45FA6 /* ArcSampleView.swift */; };\n\t\tE71779F81F4C60A2004243F2 /* ParticlesSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E71779F71F4C60A2004243F2 /* ParticlesSampleViewController.storyboard */; };\n\t\tE71779FB1F4C6169004243F2 /* RectSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E71779FA1F4C6169004243F2 /* RectSampleViewController.storyboard */; };\n\t\tE71779FD1F4C617E004243F2 /* TextSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E71779FC1F4C617E004243F2 /* TextSampleViewController.storyboard */; };\n\t\tE71779FF1F4C6195004243F2 /* EllipseSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E71779FE1F4C6195004243F2 /* EllipseSampleViewController.storyboard */; };\n\t\tE72A2AB21F7F95F50044F879 /* ClockSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E72A2AB11F7F95F50044F879 /* ClockSampleViewController.storyboard */; };\n\t\tE72A2AB51F7F96020044F879 /* ClockSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E72A2AB41F7F96020044F879 /* ClockSampleView.swift */; };\n\t\tE72A2AB71F7F961A0044F879 /* ClockSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E72A2AB61F7F961A0044F879 /* ClockSampleViewController.swift */; };\n\t\tE743310B1F34C6AB00D20482 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E743310A1F34C6AB00D20482 /* AppDelegate.swift */; };\n\t\tE74331101F34C6AB00D20482 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E743310E1F34C6AB00D20482 /* Main.storyboard */; };\n\t\tE74331121F34C6AB00D20482 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E74331111F34C6AB00D20482 /* Assets.xcassets */; };\n\t\tE74331151F34C6AB00D20482 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E74331131F34C6AB00D20482 /* LaunchScreen.storyboard */; };\n\t\tE747DD961F432F14006BAC6A /* ProcessingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E747DD8E1F432E9C006BAC6A /* ProcessingKit.framework */; };\n\t\tE747DD971F432F14006BAC6A /* ProcessingKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E747DD8E1F432E9C006BAC6A /* ProcessingKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\tE747DDB21F446A81006BAC6A /* MainTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E747DDB11F446A81006BAC6A /* MainTableViewController.swift */; };\n\t\tE747DDB51F447322006BAC6A /* TouchSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E747DDB41F447322006BAC6A /* TouchSampleViewController.storyboard */; };\n\t\tE747DDB71F447335006BAC6A /* TouchSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E747DDB61F447335006BAC6A /* TouchSampleViewController.swift */; };\n\t\tE747DDB91F4473E8006BAC6A /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E747DDB81F4473E8006BAC6A /* ViewController.swift */; };\n\t\tE76820071F7AAEB4009E8FD2 /* ImageSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820061F7AAEB4009E8FD2 /* ImageSampleView.swift */; };\n\t\tE76820091F7AAEE1009E8FD2 /* ImageSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76820081F7AAEE1009E8FD2 /* ImageSampleViewController.swift */; };\n\t\tE768200B1F7AAF87009E8FD2 /* ImageSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E768200A1F7AAF0D009E8FD2 /* ImageSampleViewController.storyboard */; };\n\t\tE77AEFDE1FF684C600B97406 /* TriangleSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E77AEFDD1FF684C600B97406 /* TriangleSampleViewController.storyboard */; };\n\t\tE77AEFE11FF684E900B97406 /* TriangleSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E77AEFE01FF684E900B97406 /* TriangleSampleViewController.swift */; };\n\t\tE77AEFE31FF684F600B97406 /* TriangleSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E77AEFE21FF684F600B97406 /* TriangleSampleView.swift */; };\n\t\tE77AEFE91FF68ACB00B97406 /* QuadSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E77AEFE81FF68ACB00B97406 /* QuadSampleViewController.swift */; };\n\t\tE77AEFEE1FF68AF300B97406 /* QuadSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E77AEFED1FF68AF300B97406 /* QuadSampleViewController.storyboard */; };\n\t\tE77AEFF01FF68B0200B97406 /* QuadSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E77AEFEF1FF68B0200B97406 /* QuadSampleView.swift */; };\n\t\tE7B77DC51FF7B74100CE691A /* CurveSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77DC41FF7B74100CE691A /* CurveSampleViewController.swift */; };\n\t\tE7B77DC81FF7B75500CE691A /* CurveSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B77DC71FF7B75500CE691A /* CurveSampleView.swift */; };\n\t\tE7B77DCA1FF7B76300CE691A /* CurveSampleViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E7B77DC91FF7B76300CE691A /* CurveSampleViewController.storyboard */; };\n\t\tE7D399121F44A4D1006AF039 /* ParticlesSampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D399111F44A4D1006AF039 /* ParticlesSampleView.swift */; };\n\t\tE7D399141F44A505006AF039 /* ParticlesSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D399131F44A505006AF039 /* ParticlesSampleViewController.swift */; };\n\t\tE7F3BA7D1F44880200EFB169 /* TextSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F3BA7C1F44880200EFB169 /* TextSampleViewController.swift */; };\n\t\tE7F3BA7F1F44880F00EFB169 /* RectSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F3BA7E1F44880F00EFB169 /* RectSampleViewController.swift */; };\n\t\tE7F3BA811F44881A00EFB169 /* EllipseSampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F3BA801F44881A00EFB169 /* EllipseSampleViewController.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tE747DD8D1F432E9C006BAC6A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7212F401F34B5A600173CD8;\n\t\t\tremoteInfo = ProcessingKit;\n\t\t};\n\t\tE747DD8F1F432E9C006BAC6A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7212F491F34B5A600173CD8;\n\t\t\tremoteInfo = ProcessingKitTests;\n\t\t};\n\t\tE747DD981F432F14006BAC6A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = E7212F3F1F34B5A600173CD8;\n\t\t\tremoteInfo = ProcessingKit;\n\t\t};\n\t\tE7B2F728214555F2003B642A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7B2F67A21454010003B642A;\n\t\t\tremoteInfo = ProcessingKitCore;\n\t\t};\n\t\tE7B2F72A214555F2003B642A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7B2F70F214553BF003B642A;\n\t\t\tremoteInfo = ProcessingKitCoreOSX;\n\t\t};\n\t\tE7E79BD92008674B003CDAC5 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7B77DD31FF7E02900CE691A;\n\t\t\tremoteInfo = \"ProcessingKit OSX\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\tE747DD9A1F432F14006BAC6A /* Embed 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\tE747DD971F432F14006BAC6A /* ProcessingKit.framework in Embed Frameworks */,\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\tE7054ACF1F34CA9D00EA0C0F /* SpriteKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SpriteKit.framework; path = System/Library/Frameworks/SpriteKit.framework; sourceTree = SDKROOT; };\n\t\tE7054AD61F34D36200EA0C0F /* TouchSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TouchSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE70595201F44899E005C8856 /* EllipseSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EllipseSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE70595221F4489AA005C8856 /* TextSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE70595241F4489B8005C8856 /* RectSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RectSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE71388D51F79568F00A45FA6 /* ArcSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArcSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE71388D81F79569900A45FA6 /* ArcSampleViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ArcSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE71388DA1F7956B700A45FA6 /* ArcSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArcSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE71779F71F4C60A2004243F2 /* ParticlesSampleViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ParticlesSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE71779FA1F4C6169004243F2 /* RectSampleViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = RectSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE71779FC1F4C617E004243F2 /* TextSampleViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = TextSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE71779FE1F4C6195004243F2 /* EllipseSampleViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = EllipseSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE72A2AB11F7F95F50044F879 /* ClockSampleViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ClockSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE72A2AB41F7F96020044F879 /* ClockSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClockSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE72A2AB61F7F961A0044F879 /* ClockSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClockSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE74331071F34C6AB00D20482 /* ProcessingKitExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ProcessingKitExample.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE743310A1F34C6AB00D20482 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tE743310F1F34C6AB00D20482 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\tE74331111F34C6AB00D20482 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\tE74331141F34C6AB00D20482 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\tE74331161F34C6AB00D20482 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tE747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = ProcessingKit.xcodeproj; path = ../ProcessingKit.xcodeproj; sourceTree = \"<group>\"; };\n\t\tE747DDB11F446A81006BAC6A /* MainTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainTableViewController.swift; sourceTree = \"<group>\"; };\n\t\tE747DDB41F447322006BAC6A /* TouchSampleViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = TouchSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE747DDB61F447335006BAC6A /* TouchSampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TouchSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE747DDB81F4473E8006BAC6A /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = \"<group>\"; };\n\t\tE76820061F7AAEB4009E8FD2 /* ImageSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE76820081F7AAEE1009E8FD2 /* ImageSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE768200A1F7AAF0D009E8FD2 /* ImageSampleViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ImageSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE77AEFDD1FF684C600B97406 /* TriangleSampleViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = TriangleSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE77AEFE01FF684E900B97406 /* TriangleSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TriangleSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE77AEFE21FF684F600B97406 /* TriangleSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TriangleSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE77AEFE81FF68ACB00B97406 /* QuadSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuadSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE77AEFED1FF68AF300B97406 /* QuadSampleViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = QuadSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE77AEFEF1FF68B0200B97406 /* QuadSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuadSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE7B77DC41FF7B74100CE691A /* CurveSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurveSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE7B77DC71FF7B75500CE691A /* CurveSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurveSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE7B77DC91FF7B76300CE691A /* CurveSampleViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CurveSampleViewController.storyboard; sourceTree = \"<group>\"; };\n\t\tE7D399111F44A4D1006AF039 /* ParticlesSampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticlesSampleView.swift; sourceTree = \"<group>\"; };\n\t\tE7D399131F44A505006AF039 /* ParticlesSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticlesSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE7F3BA7C1F44880200EFB169 /* TextSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE7F3BA7E1F44880F00EFB169 /* RectSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RectSampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tE7F3BA801F44881A00EFB169 /* EllipseSampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EllipseSampleViewController.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tE74331041F34C6AB00D20482 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE747DD961F432F14006BAC6A /* ProcessingKit.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\tE7054ACD1F34CA9D00EA0C0F /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7054ACF1F34CA9D00EA0C0F /* SpriteKit.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE74330FE1F34C6AB00D20482 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7054ACD1F34CA9D00EA0C0F /* Frameworks */,\n\t\t\t\tE74331091F34C6AB00D20482 /* ProcessingKitExample */,\n\t\t\t\tE74331081F34C6AB00D20482 /* Products */,\n\t\t\t\tE747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE74331081F34C6AB00D20482 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE74331071F34C6AB00D20482 /* ProcessingKitExample.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE74331091F34C6AB00D20482 /* ProcessingKitExample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7F3BA7A1F4487A500EFB169 /* BasicFunctions */,\n\t\t\t\tE747DDBA1F447D68006BAC6A /* Extensions */,\n\t\t\t\tE7D3990D1F44A480006AF039 /* OthersSample */,\n\t\t\t\tE747DDB31F44730D006BAC6A /* TouchSample */,\n\t\t\t\tE743310A1F34C6AB00D20482 /* AppDelegate.swift */,\n\t\t\t\tE74331111F34C6AB00D20482 /* Assets.xcassets */,\n\t\t\t\tE74331161F34C6AB00D20482 /* Info.plist */,\n\t\t\t\tE74331131F34C6AB00D20482 /* LaunchScreen.storyboard */,\n\t\t\t\tE743310E1F34C6AB00D20482 /* Main.storyboard */,\n\t\t\t\tE747DDB11F446A81006BAC6A /* MainTableViewController.swift */,\n\t\t\t);\n\t\t\tpath = ProcessingKitExample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE747DD891F432E9B006BAC6A /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE747DD8E1F432E9C006BAC6A /* ProcessingKit.framework */,\n\t\t\t\tE747DD901F432E9C006BAC6A /* ProcessingKitTests.xctest */,\n\t\t\t\tE7E79BDA2008674B003CDAC5 /* ProcessingKit.framework */,\n\t\t\t\tE7B2F729214555F2003B642A /* ProcessingKitCore.framework */,\n\t\t\t\tE7B2F72B214555F2003B642A /* ProcessingKitCoreOSX.framework */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE747DDB31F44730D006BAC6A /* TouchSample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE7054AD61F34D36200EA0C0F /* TouchSampleView.swift */,\n\t\t\t\tE747DDB41F447322006BAC6A /* TouchSampleViewController.storyboard */,\n\t\t\t\tE747DDB61F447335006BAC6A /* TouchSampleViewController.swift */,\n\t\t\t);\n\t\t\tpath = TouchSample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE747DDBA1F447D68006BAC6A /* Extensions */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE747DDB81F4473E8006BAC6A /* ViewController.swift */,\n\t\t\t);\n\t\t\tpath = Extensions;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7D3990D1F44A480006AF039 /* OthersSample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE72A2AB41F7F96020044F879 /* ClockSampleView.swift */,\n\t\t\t\tE72A2AB11F7F95F50044F879 /* ClockSampleViewController.storyboard */,\n\t\t\t\tE72A2AB61F7F961A0044F879 /* ClockSampleViewController.swift */,\n\t\t\t\tE7D399111F44A4D1006AF039 /* ParticlesSampleView.swift */,\n\t\t\t\tE71779F71F4C60A2004243F2 /* ParticlesSampleViewController.storyboard */,\n\t\t\t\tE7D399131F44A505006AF039 /* ParticlesSampleViewController.swift */,\n\t\t\t);\n\t\t\tpath = OthersSample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7F3BA7A1F4487A500EFB169 /* BasicFunctions */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE71388DA1F7956B700A45FA6 /* ArcSampleView.swift */,\n\t\t\t\tE71388D81F79569900A45FA6 /* ArcSampleViewController.storyboard */,\n\t\t\t\tE71388D51F79568F00A45FA6 /* ArcSampleViewController.swift */,\n\t\t\t\tE70595201F44899E005C8856 /* EllipseSampleView.swift */,\n\t\t\t\tE71779FE1F4C6195004243F2 /* EllipseSampleViewController.storyboard */,\n\t\t\t\tE7F3BA801F44881A00EFB169 /* EllipseSampleViewController.swift */,\n\t\t\t\tE76820061F7AAEB4009E8FD2 /* ImageSampleView.swift */,\n\t\t\t\tE768200A1F7AAF0D009E8FD2 /* ImageSampleViewController.storyboard */,\n\t\t\t\tE76820081F7AAEE1009E8FD2 /* ImageSampleViewController.swift */,\n\t\t\t\tE70595241F4489B8005C8856 /* RectSampleView.swift */,\n\t\t\t\tE71779FA1F4C6169004243F2 /* RectSampleViewController.storyboard */,\n\t\t\t\tE7F3BA7E1F44880F00EFB169 /* RectSampleViewController.swift */,\n\t\t\t\tE70595221F4489AA005C8856 /* TextSampleView.swift */,\n\t\t\t\tE71779FC1F4C617E004243F2 /* TextSampleViewController.storyboard */,\n\t\t\t\tE7F3BA7C1F44880200EFB169 /* TextSampleViewController.swift */,\n\t\t\t\tE77AEFE21FF684F600B97406 /* TriangleSampleView.swift */,\n\t\t\t\tE77AEFDD1FF684C600B97406 /* TriangleSampleViewController.storyboard */,\n\t\t\t\tE77AEFE01FF684E900B97406 /* TriangleSampleViewController.swift */,\n\t\t\t\tE77AEFEF1FF68B0200B97406 /* QuadSampleView.swift */,\n\t\t\t\tE77AEFED1FF68AF300B97406 /* QuadSampleViewController.storyboard */,\n\t\t\t\tE77AEFE81FF68ACB00B97406 /* QuadSampleViewController.swift */,\n\t\t\t\tE7B77DC71FF7B75500CE691A /* CurveSampleView.swift */,\n\t\t\t\tE7B77DC91FF7B76300CE691A /* CurveSampleViewController.storyboard */,\n\t\t\t\tE7B77DC41FF7B74100CE691A /* CurveSampleViewController.swift */,\n\t\t\t);\n\t\t\tpath = BasicFunctions;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tE74331061F34C6AB00D20482 /* ProcessingKitExample */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = E74331191F34C6AB00D20482 /* Build configuration list for PBXNativeTarget \"ProcessingKitExample\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE74331031F34C6AB00D20482 /* Sources */,\n\t\t\t\tE74331041F34C6AB00D20482 /* Frameworks */,\n\t\t\t\tE74331051F34C6AB00D20482 /* Resources */,\n\t\t\t\tE747DD9A1F432F14006BAC6A /* Embed Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tE747DD991F432F14006BAC6A /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = ProcessingKitExample;\n\t\t\tproductName = ProcessingKitExample;\n\t\t\tproductReference = E74331071F34C6AB00D20482 /* ProcessingKitExample.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tE74330FF1F34C6AB00D20482 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0830;\n\t\t\t\tLastUpgradeCheck = 0940;\n\t\t\t\tORGANIZATIONNAME = \"Atsuya Sato\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tE74331061F34C6AB00D20482 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.3.3;\n\t\t\t\t\t\tDevelopmentTeam = DEQGLB9PU4;\n\t\t\t\t\t\tLastSwiftMigration = 1010;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = E74331021F34C6AB00D20482 /* Build configuration list for PBXProject \"ProcessingKitExample\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\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 = E74330FE1F34C6AB00D20482;\n\t\t\tproductRefGroup = E74331081F34C6AB00D20482 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectReferences = (\n\t\t\t\t{\n\t\t\t\t\tProductGroup = E747DD891F432E9B006BAC6A /* Products */;\n\t\t\t\t\tProjectRef = E747DD881F432E9B006BAC6A /* ProcessingKit.xcodeproj */;\n\t\t\t\t},\n\t\t\t);\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tE74331061F34C6AB00D20482 /* ProcessingKitExample */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXReferenceProxy section */\n\t\tE747DD8E1F432E9C006BAC6A /* ProcessingKit.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = ProcessingKit.framework;\n\t\t\tremoteRef = E747DD8D1F432E9C006BAC6A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tE747DD901F432E9C006BAC6A /* ProcessingKitTests.xctest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = ProcessingKitTests.xctest;\n\t\t\tremoteRef = E747DD8F1F432E9C006BAC6A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tE7B2F729214555F2003B642A /* ProcessingKitCore.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = ProcessingKitCore.framework;\n\t\t\tremoteRef = E7B2F728214555F2003B642A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tE7B2F72B214555F2003B642A /* ProcessingKitCoreOSX.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = ProcessingKitCoreOSX.framework;\n\t\t\tremoteRef = E7B2F72A214555F2003B642A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tE7E79BDA2008674B003CDAC5 /* ProcessingKit.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = ProcessingKit.framework;\n\t\t\tremoteRef = E7E79BD92008674B003CDAC5 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n/* End PBXReferenceProxy section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tE74331051F34C6AB00D20482 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE71779FD1F4C617E004243F2 /* TextSampleViewController.storyboard in Resources */,\n\t\t\t\tE77AEFEE1FF68AF300B97406 /* QuadSampleViewController.storyboard in Resources */,\n\t\t\t\tE71388D91F79569900A45FA6 /* ArcSampleViewController.storyboard in Resources */,\n\t\t\t\tE7B77DCA1FF7B76300CE691A /* CurveSampleViewController.storyboard in Resources */,\n\t\t\t\tE74331151F34C6AB00D20482 /* LaunchScreen.storyboard in Resources */,\n\t\t\t\tE71779FB1F4C6169004243F2 /* RectSampleViewController.storyboard in Resources */,\n\t\t\t\tE74331121F34C6AB00D20482 /* Assets.xcassets in Resources */,\n\t\t\t\tE77AEFDE1FF684C600B97406 /* TriangleSampleViewController.storyboard in Resources */,\n\t\t\t\tE71779FF1F4C6195004243F2 /* EllipseSampleViewController.storyboard in Resources */,\n\t\t\t\tE768200B1F7AAF87009E8FD2 /* ImageSampleViewController.storyboard in Resources */,\n\t\t\t\tE74331101F34C6AB00D20482 /* Main.storyboard in Resources */,\n\t\t\t\tE747DDB51F447322006BAC6A /* TouchSampleViewController.storyboard in Resources */,\n\t\t\t\tE71779F81F4C60A2004243F2 /* ParticlesSampleViewController.storyboard in Resources */,\n\t\t\t\tE72A2AB21F7F95F50044F879 /* ClockSampleViewController.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tE74331031F34C6AB00D20482 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE7B77DC81FF7B75500CE691A /* CurveSampleView.swift in Sources */,\n\t\t\t\tE747DDB21F446A81006BAC6A /* MainTableViewController.swift in Sources */,\n\t\t\t\tE72A2AB51F7F96020044F879 /* ClockSampleView.swift in Sources */,\n\t\t\t\tE71388DB1F7956B700A45FA6 /* ArcSampleView.swift in Sources */,\n\t\t\t\tE7F3BA811F44881A00EFB169 /* EllipseSampleViewController.swift in Sources */,\n\t\t\t\tE76820071F7AAEB4009E8FD2 /* ImageSampleView.swift in Sources */,\n\t\t\t\tE7054AD71F34D36200EA0C0F /* TouchSampleView.swift in Sources */,\n\t\t\t\tE7D399141F44A505006AF039 /* ParticlesSampleViewController.swift in Sources */,\n\t\t\t\tE70595211F44899E005C8856 /* EllipseSampleView.swift in Sources */,\n\t\t\t\tE7B77DC51FF7B74100CE691A /* CurveSampleViewController.swift in Sources */,\n\t\t\t\tE77AEFE11FF684E900B97406 /* TriangleSampleViewController.swift in Sources */,\n\t\t\t\tE70595231F4489AA005C8856 /* TextSampleView.swift in Sources */,\n\t\t\t\tE77AEFF01FF68B0200B97406 /* QuadSampleView.swift in Sources */,\n\t\t\t\tE76820091F7AAEE1009E8FD2 /* ImageSampleViewController.swift in Sources */,\n\t\t\t\tE77AEFE91FF68ACB00B97406 /* QuadSampleViewController.swift in Sources */,\n\t\t\t\tE747DDB91F4473E8006BAC6A /* ViewController.swift in Sources */,\n\t\t\t\tE77AEFE31FF684F600B97406 /* TriangleSampleView.swift in Sources */,\n\t\t\t\tE7D399121F44A4D1006AF039 /* ParticlesSampleView.swift in Sources */,\n\t\t\t\tE7F3BA7F1F44880F00EFB169 /* RectSampleViewController.swift in Sources */,\n\t\t\t\tE72A2AB71F7F961A0044F879 /* ClockSampleViewController.swift in Sources */,\n\t\t\t\tE747DDB71F447335006BAC6A /* TouchSampleViewController.swift in Sources */,\n\t\t\t\tE7F3BA7D1F44880200EFB169 /* TextSampleViewController.swift in Sources */,\n\t\t\t\tE71388D61F79568F00A45FA6 /* ArcSampleViewController.swift in Sources */,\n\t\t\t\tE70595251F4489B8005C8856 /* RectSampleView.swift in Sources */,\n\t\t\t\tE743310B1F34C6AB00D20482 /* AppDelegate.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\tE747DD991F432F14006BAC6A /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = ProcessingKit;\n\t\t\ttargetProxy = E747DD981F432F14006BAC6A /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\tE743310E1F34C6AB00D20482 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tE743310F1F34C6AB00D20482 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tpath = .;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE74331131F34C6AB00D20482 /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tE74331141F34C6AB00D20482 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tpath = .;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tE74331171F34C6AB00D20482 /* 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_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\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_DOCUMENTATION_COMMENTS = YES;\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\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\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_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 = 10.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE74331181F34C6AB00D20482 /* 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_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\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_DOCUMENTATION_COMMENTS = YES;\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\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\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 = 10.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tE743311A1F34C6AB00D20482 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tDEVELOPMENT_TEAM = DEQGLB9PU4;\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/ProcessingKitExample/Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 10.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitExample;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE743311B1F34C6AB00D20482 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tDEVELOPMENT_TEAM = DEQGLB9PU4;\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/ProcessingKitExample/Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 10.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitExample;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tE74331021F34C6AB00D20482 /* Build configuration list for PBXProject \"ProcessingKitExample\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE74331171F34C6AB00D20482 /* Debug */,\n\t\t\t\tE74331181F34C6AB00D20482 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tE74331191F34C6AB00D20482 /* Build configuration list for PBXNativeTarget \"ProcessingKitExample\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE743311A1F34C6AB00D20482 /* Debug */,\n\t\t\t\tE743311B1F34C6AB00D20482 /* 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 = E74330FF1F34C6AB00D20482 /* Project object */;\n}\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/AtsuyaSato/Desktop/ProcessingKit/ProcessingKitExample/ProcessingKitExample.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "ProcessingKitExample/ProcessingKitExample.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": "ProcessingKitOSXExample/ProcessingKitOSXExample/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  ProcessingKitOSXExample\n//\n//  Created by AtsuyaSato on 2017/12/31.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Cocoa\n\n@NSApplicationMain\nclass AppDelegate: NSObject, NSApplicationDelegate {\n\n\n\n    func applicationDidFinishLaunching(_ aNotification: Notification) {\n        // Insert code here to initialize your application\n    }\n\n    func applicationWillTerminate(_ aNotification: Notification) {\n        // Insert code here to tear down your application\n    }\n\n\n}\n\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"16x16\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"16x16\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"32x32\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"32x32\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"128x128\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"128x128\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"256x256\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"256x256\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"512x512\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"512x512\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"13529\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" initialViewController=\"B8D-0N-5wS\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"13529\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Application-->\n        <scene sceneID=\"JPo-4y-FX3\">\n            <objects>\n                <application id=\"hnw-xV-0zn\" sceneMemberID=\"viewController\">\n                    <menu key=\"mainMenu\" title=\"Main Menu\" systemMenu=\"main\" id=\"AYu-sK-qS6\">\n                        <items>\n                            <menuItem title=\"ProcessingKitOSXExample\" id=\"1Xt-HY-uBw\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <menu key=\"submenu\" title=\"ProcessingKitOSXExample\" systemMenu=\"apple\" id=\"uQy-DD-JDr\">\n                                    <items>\n                                        <menuItem title=\"About ProcessingKitOSXExample\" id=\"5kV-Vb-QxS\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <connections>\n                                                <action selector=\"orderFrontStandardAboutPanel:\" target=\"Ady-hI-5gd\" id=\"Exp-CZ-Vem\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"VOq-y0-SEH\"/>\n                                        <menuItem title=\"Preferences…\" keyEquivalent=\",\" id=\"BOF-NM-1cW\"/>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"wFC-TO-SCJ\"/>\n                                        <menuItem title=\"Services\" id=\"NMo-om-nkz\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Services\" systemMenu=\"services\" id=\"hz9-B4-Xy5\"/>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"4je-JR-u6R\"/>\n                                        <menuItem title=\"Hide ProcessingKitOSXExample\" keyEquivalent=\"h\" id=\"Olw-nP-bQN\">\n                                            <connections>\n                                                <action selector=\"hide:\" target=\"Ady-hI-5gd\" id=\"PnN-Uc-m68\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Hide Others\" keyEquivalent=\"h\" id=\"Vdr-fp-XzO\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                            <connections>\n                                                <action selector=\"hideOtherApplications:\" target=\"Ady-hI-5gd\" id=\"VT4-aY-XCT\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Show All\" id=\"Kd2-mp-pUS\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <connections>\n                                                <action selector=\"unhideAllApplications:\" target=\"Ady-hI-5gd\" id=\"Dhg-Le-xox\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"kCx-OE-vgT\"/>\n                                        <menuItem title=\"Quit ProcessingKitOSXExample\" keyEquivalent=\"q\" id=\"4sb-4s-VLi\">\n                                            <connections>\n                                                <action selector=\"terminate:\" target=\"Ady-hI-5gd\" id=\"Te7-pn-YzF\"/>\n                                            </connections>\n                                        </menuItem>\n                                    </items>\n                                </menu>\n                            </menuItem>\n                            <menuItem title=\"File\" id=\"dMs-cI-mzQ\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <menu key=\"submenu\" title=\"File\" id=\"bib-Uj-vzu\">\n                                    <items>\n                                        <menuItem title=\"New\" keyEquivalent=\"n\" id=\"Was-JA-tGl\">\n                                            <connections>\n                                                <action selector=\"newDocument:\" target=\"Ady-hI-5gd\" id=\"4Si-XN-c54\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Open…\" keyEquivalent=\"o\" id=\"IAo-SY-fd9\">\n                                            <connections>\n                                                <action selector=\"openDocument:\" target=\"Ady-hI-5gd\" id=\"bVn-NM-KNZ\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Open Recent\" id=\"tXI-mr-wws\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Open Recent\" systemMenu=\"recentDocuments\" id=\"oas-Oc-fiZ\">\n                                                <items>\n                                                    <menuItem title=\"Clear Menu\" id=\"vNY-rz-j42\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"clearRecentDocuments:\" target=\"Ady-hI-5gd\" id=\"Daa-9d-B3U\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                </items>\n                                            </menu>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"m54-Is-iLE\"/>\n                                        <menuItem title=\"Close\" keyEquivalent=\"w\" id=\"DVo-aG-piG\">\n                                            <connections>\n                                                <action selector=\"performClose:\" target=\"Ady-hI-5gd\" id=\"HmO-Ls-i7Q\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Save…\" keyEquivalent=\"s\" id=\"pxx-59-PXV\">\n                                            <connections>\n                                                <action selector=\"saveDocument:\" target=\"Ady-hI-5gd\" id=\"teZ-XB-qJY\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Save As…\" keyEquivalent=\"S\" id=\"Bw7-FT-i3A\">\n                                            <connections>\n                                                <action selector=\"saveDocumentAs:\" target=\"Ady-hI-5gd\" id=\"mDf-zr-I0C\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Revert to Saved\" keyEquivalent=\"r\" id=\"KaW-ft-85H\">\n                                            <connections>\n                                                <action selector=\"revertDocumentToSaved:\" target=\"Ady-hI-5gd\" id=\"iJ3-Pv-kwq\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"aJh-i4-bef\"/>\n                                        <menuItem title=\"Page Setup…\" keyEquivalent=\"P\" id=\"qIS-W8-SiK\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" command=\"YES\"/>\n                                            <connections>\n                                                <action selector=\"runPageLayout:\" target=\"Ady-hI-5gd\" id=\"Din-rz-gC5\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Print…\" keyEquivalent=\"p\" id=\"aTl-1u-JFS\">\n                                            <connections>\n                                                <action selector=\"print:\" target=\"Ady-hI-5gd\" id=\"qaZ-4w-aoO\"/>\n                                            </connections>\n                                        </menuItem>\n                                    </items>\n                                </menu>\n                            </menuItem>\n                            <menuItem title=\"Edit\" id=\"5QF-Oa-p0T\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <menu key=\"submenu\" title=\"Edit\" id=\"W48-6f-4Dl\">\n                                    <items>\n                                        <menuItem title=\"Undo\" keyEquivalent=\"z\" id=\"dRJ-4n-Yzg\">\n                                            <connections>\n                                                <action selector=\"undo:\" target=\"Ady-hI-5gd\" id=\"M6e-cu-g7V\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Redo\" keyEquivalent=\"Z\" id=\"6dh-zS-Vam\">\n                                            <connections>\n                                                <action selector=\"redo:\" target=\"Ady-hI-5gd\" id=\"oIA-Rs-6OD\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"WRV-NI-Exz\"/>\n                                        <menuItem title=\"Cut\" keyEquivalent=\"x\" id=\"uRl-iY-unG\">\n                                            <connections>\n                                                <action selector=\"cut:\" target=\"Ady-hI-5gd\" id=\"YJe-68-I9s\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Copy\" keyEquivalent=\"c\" id=\"x3v-GG-iWU\">\n                                            <connections>\n                                                <action selector=\"copy:\" target=\"Ady-hI-5gd\" id=\"G1f-GL-Joy\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Paste\" keyEquivalent=\"v\" id=\"gVA-U4-sdL\">\n                                            <connections>\n                                                <action selector=\"paste:\" target=\"Ady-hI-5gd\" id=\"UvS-8e-Qdg\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Paste and Match Style\" keyEquivalent=\"V\" id=\"WeT-3V-zwk\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                            <connections>\n                                                <action selector=\"pasteAsPlainText:\" target=\"Ady-hI-5gd\" id=\"cEh-KX-wJQ\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Delete\" id=\"pa3-QI-u2k\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <connections>\n                                                <action selector=\"delete:\" target=\"Ady-hI-5gd\" id=\"0Mk-Ml-PaM\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Select All\" keyEquivalent=\"a\" id=\"Ruw-6m-B2m\">\n                                            <connections>\n                                                <action selector=\"selectAll:\" target=\"Ady-hI-5gd\" id=\"VNm-Mi-diN\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"uyl-h8-XO2\"/>\n                                        <menuItem title=\"Find\" id=\"4EN-yA-p0u\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Find\" id=\"1b7-l0-nxx\">\n                                                <items>\n                                                    <menuItem title=\"Find…\" tag=\"1\" keyEquivalent=\"f\" id=\"Xz5-n4-O0W\">\n                                                        <connections>\n                                                            <action selector=\"performFindPanelAction:\" target=\"Ady-hI-5gd\" id=\"cD7-Qs-BN4\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Find and Replace…\" tag=\"12\" keyEquivalent=\"f\" id=\"YEy-JH-Tfz\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                                        <connections>\n                                                            <action selector=\"performFindPanelAction:\" target=\"Ady-hI-5gd\" id=\"WD3-Gg-5AJ\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Find Next\" tag=\"2\" keyEquivalent=\"g\" id=\"q09-fT-Sye\">\n                                                        <connections>\n                                                            <action selector=\"performFindPanelAction:\" target=\"Ady-hI-5gd\" id=\"NDo-RZ-v9R\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Find Previous\" tag=\"3\" keyEquivalent=\"G\" id=\"OwM-mh-QMV\">\n                                                        <connections>\n                                                            <action selector=\"performFindPanelAction:\" target=\"Ady-hI-5gd\" id=\"HOh-sY-3ay\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Use Selection for Find\" tag=\"7\" keyEquivalent=\"e\" id=\"buJ-ug-pKt\">\n                                                        <connections>\n                                                            <action selector=\"performFindPanelAction:\" target=\"Ady-hI-5gd\" id=\"U76-nv-p5D\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Jump to Selection\" keyEquivalent=\"j\" id=\"S0p-oC-mLd\">\n                                                        <connections>\n                                                            <action selector=\"centerSelectionInVisibleArea:\" target=\"Ady-hI-5gd\" id=\"IOG-6D-g5B\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                </items>\n                                            </menu>\n                                        </menuItem>\n                                        <menuItem title=\"Spelling and Grammar\" id=\"Dv1-io-Yv7\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Spelling\" id=\"3IN-sU-3Bg\">\n                                                <items>\n                                                    <menuItem title=\"Show Spelling and Grammar\" keyEquivalent=\":\" id=\"HFo-cy-zxI\">\n                                                        <connections>\n                                                            <action selector=\"showGuessPanel:\" target=\"Ady-hI-5gd\" id=\"vFj-Ks-hy3\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Check Document Now\" keyEquivalent=\";\" id=\"hz2-CU-CR7\">\n                                                        <connections>\n                                                            <action selector=\"checkSpelling:\" target=\"Ady-hI-5gd\" id=\"fz7-VC-reM\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem isSeparatorItem=\"YES\" id=\"bNw-od-mp5\"/>\n                                                    <menuItem title=\"Check Spelling While Typing\" id=\"rbD-Rh-wIN\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleContinuousSpellChecking:\" target=\"Ady-hI-5gd\" id=\"7w6-Qz-0kB\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Check Grammar With Spelling\" id=\"mK6-2p-4JG\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleGrammarChecking:\" target=\"Ady-hI-5gd\" id=\"muD-Qn-j4w\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Correct Spelling Automatically\" id=\"78Y-hA-62v\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleAutomaticSpellingCorrection:\" target=\"Ady-hI-5gd\" id=\"2lM-Qi-WAP\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                </items>\n                                            </menu>\n                                        </menuItem>\n                                        <menuItem title=\"Substitutions\" id=\"9ic-FL-obx\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Substitutions\" id=\"FeM-D8-WVr\">\n                                                <items>\n                                                    <menuItem title=\"Show Substitutions\" id=\"z6F-FW-3nz\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"orderFrontSubstitutionsPanel:\" target=\"Ady-hI-5gd\" id=\"oku-mr-iSq\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem isSeparatorItem=\"YES\" id=\"gPx-C9-uUO\"/>\n                                                    <menuItem title=\"Smart Copy/Paste\" id=\"9yt-4B-nSM\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleSmartInsertDelete:\" target=\"Ady-hI-5gd\" id=\"3IJ-Se-DZD\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Smart Quotes\" id=\"hQb-2v-fYv\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleAutomaticQuoteSubstitution:\" target=\"Ady-hI-5gd\" id=\"ptq-xd-QOA\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Smart Dashes\" id=\"rgM-f4-ycn\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleAutomaticDashSubstitution:\" target=\"Ady-hI-5gd\" id=\"oCt-pO-9gS\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Smart Links\" id=\"cwL-P1-jid\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleAutomaticLinkDetection:\" target=\"Ady-hI-5gd\" id=\"Gip-E3-Fov\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Data Detectors\" id=\"tRr-pd-1PS\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleAutomaticDataDetection:\" target=\"Ady-hI-5gd\" id=\"R1I-Nq-Kbl\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Text Replacement\" id=\"HFQ-gK-NFA\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleAutomaticTextReplacement:\" target=\"Ady-hI-5gd\" id=\"DvP-Fe-Py6\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                </items>\n                                            </menu>\n                                        </menuItem>\n                                        <menuItem title=\"Transformations\" id=\"2oI-Rn-ZJC\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Transformations\" id=\"c8a-y6-VQd\">\n                                                <items>\n                                                    <menuItem title=\"Make Upper Case\" id=\"vmV-6d-7jI\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"uppercaseWord:\" target=\"Ady-hI-5gd\" id=\"sPh-Tk-edu\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Make Lower Case\" id=\"d9M-CD-aMd\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"lowercaseWord:\" target=\"Ady-hI-5gd\" id=\"iUZ-b5-hil\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Capitalize\" id=\"UEZ-Bs-lqG\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"capitalizeWord:\" target=\"Ady-hI-5gd\" id=\"26H-TL-nsh\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                </items>\n                                            </menu>\n                                        </menuItem>\n                                        <menuItem title=\"Speech\" id=\"xrE-MZ-jX0\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Speech\" id=\"3rS-ZA-NoH\">\n                                                <items>\n                                                    <menuItem title=\"Start Speaking\" id=\"Ynk-f8-cLZ\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"startSpeaking:\" target=\"Ady-hI-5gd\" id=\"654-Ng-kyl\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Stop Speaking\" id=\"Oyz-dy-DGm\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"stopSpeaking:\" target=\"Ady-hI-5gd\" id=\"dX8-6p-jy9\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                </items>\n                                            </menu>\n                                        </menuItem>\n                                    </items>\n                                </menu>\n                            </menuItem>\n                            <menuItem title=\"Format\" id=\"jxT-CU-nIS\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <menu key=\"submenu\" title=\"Format\" id=\"GEO-Iw-cKr\">\n                                    <items>\n                                        <menuItem title=\"Font\" id=\"Gi5-1S-RQB\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Font\" systemMenu=\"font\" id=\"aXa-aM-Jaq\">\n                                                <items>\n                                                    <menuItem title=\"Show Fonts\" keyEquivalent=\"t\" id=\"Q5e-8K-NDq\">\n                                                        <connections>\n                                                            <action selector=\"orderFrontFontPanel:\" target=\"YLy-65-1bz\" id=\"WHr-nq-2xA\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Bold\" tag=\"2\" keyEquivalent=\"b\" id=\"GB9-OM-e27\">\n                                                        <connections>\n                                                            <action selector=\"addFontTrait:\" target=\"YLy-65-1bz\" id=\"hqk-hr-sYV\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Italic\" tag=\"1\" keyEquivalent=\"i\" id=\"Vjx-xi-njq\">\n                                                        <connections>\n                                                            <action selector=\"addFontTrait:\" target=\"YLy-65-1bz\" id=\"IHV-OB-c03\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Underline\" keyEquivalent=\"u\" id=\"WRG-CD-K1S\">\n                                                        <connections>\n                                                            <action selector=\"underline:\" target=\"Ady-hI-5gd\" id=\"FYS-2b-JAY\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem isSeparatorItem=\"YES\" id=\"5gT-KC-WSO\"/>\n                                                    <menuItem title=\"Bigger\" tag=\"3\" keyEquivalent=\"+\" id=\"Ptp-SP-VEL\">\n                                                        <connections>\n                                                            <action selector=\"modifyFont:\" target=\"YLy-65-1bz\" id=\"Uc7-di-UnL\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Smaller\" tag=\"4\" keyEquivalent=\"-\" id=\"i1d-Er-qST\">\n                                                        <connections>\n                                                            <action selector=\"modifyFont:\" target=\"YLy-65-1bz\" id=\"HcX-Lf-eNd\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem isSeparatorItem=\"YES\" id=\"kx3-Dk-x3B\"/>\n                                                    <menuItem title=\"Kern\" id=\"jBQ-r6-VK2\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <menu key=\"submenu\" title=\"Kern\" id=\"tlD-Oa-oAM\">\n                                                            <items>\n                                                                <menuItem title=\"Use Default\" id=\"GUa-eO-cwY\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"useStandardKerning:\" target=\"Ady-hI-5gd\" id=\"6dk-9l-Ckg\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Use None\" id=\"cDB-IK-hbR\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"turnOffKerning:\" target=\"Ady-hI-5gd\" id=\"U8a-gz-Maa\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Tighten\" id=\"46P-cB-AYj\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"tightenKerning:\" target=\"Ady-hI-5gd\" id=\"hr7-Nz-8ro\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Loosen\" id=\"ogc-rX-tC1\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"loosenKerning:\" target=\"Ady-hI-5gd\" id=\"8i4-f9-FKE\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                            </items>\n                                                        </menu>\n                                                    </menuItem>\n                                                    <menuItem title=\"Ligatures\" id=\"o6e-r0-MWq\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <menu key=\"submenu\" title=\"Ligatures\" id=\"w0m-vy-SC9\">\n                                                            <items>\n                                                                <menuItem title=\"Use Default\" id=\"agt-UL-0e3\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"useStandardLigatures:\" target=\"Ady-hI-5gd\" id=\"7uR-wd-Dx6\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Use None\" id=\"J7y-lM-qPV\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"turnOffLigatures:\" target=\"Ady-hI-5gd\" id=\"iX2-gA-Ilz\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Use All\" id=\"xQD-1f-W4t\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"useAllLigatures:\" target=\"Ady-hI-5gd\" id=\"KcB-kA-TuK\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                            </items>\n                                                        </menu>\n                                                    </menuItem>\n                                                    <menuItem title=\"Baseline\" id=\"OaQ-X3-Vso\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <menu key=\"submenu\" title=\"Baseline\" id=\"ijk-EB-dga\">\n                                                            <items>\n                                                                <menuItem title=\"Use Default\" id=\"3Om-Ey-2VK\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"unscript:\" target=\"Ady-hI-5gd\" id=\"0vZ-95-Ywn\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Superscript\" id=\"Rqc-34-cIF\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"superscript:\" target=\"Ady-hI-5gd\" id=\"3qV-fo-wpU\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Subscript\" id=\"I0S-gh-46l\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"subscript:\" target=\"Ady-hI-5gd\" id=\"Q6W-4W-IGz\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Raise\" id=\"2h7-ER-AoG\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"raiseBaseline:\" target=\"Ady-hI-5gd\" id=\"4sk-31-7Q9\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem title=\"Lower\" id=\"1tx-W0-xDw\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"lowerBaseline:\" target=\"Ady-hI-5gd\" id=\"OF1-bc-KW4\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                            </items>\n                                                        </menu>\n                                                    </menuItem>\n                                                    <menuItem isSeparatorItem=\"YES\" id=\"Ndw-q3-faq\"/>\n                                                    <menuItem title=\"Show Colors\" keyEquivalent=\"C\" id=\"bgn-CT-cEk\">\n                                                        <connections>\n                                                            <action selector=\"orderFrontColorPanel:\" target=\"Ady-hI-5gd\" id=\"mSX-Xz-DV3\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem isSeparatorItem=\"YES\" id=\"iMs-zA-UFJ\"/>\n                                                    <menuItem title=\"Copy Style\" keyEquivalent=\"c\" id=\"5Vv-lz-BsD\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                                        <connections>\n                                                            <action selector=\"copyFont:\" target=\"Ady-hI-5gd\" id=\"GJO-xA-L4q\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Paste Style\" keyEquivalent=\"v\" id=\"vKC-jM-MkH\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                                        <connections>\n                                                            <action selector=\"pasteFont:\" target=\"Ady-hI-5gd\" id=\"JfD-CL-leO\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                </items>\n                                            </menu>\n                                        </menuItem>\n                                        <menuItem title=\"Text\" id=\"Fal-I4-PZk\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <menu key=\"submenu\" title=\"Text\" id=\"d9c-me-L2H\">\n                                                <items>\n                                                    <menuItem title=\"Align Left\" keyEquivalent=\"{\" id=\"ZM1-6Q-yy1\">\n                                                        <connections>\n                                                            <action selector=\"alignLeft:\" target=\"Ady-hI-5gd\" id=\"zUv-R1-uAa\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Center\" keyEquivalent=\"|\" id=\"VIY-Ag-zcb\">\n                                                        <connections>\n                                                            <action selector=\"alignCenter:\" target=\"Ady-hI-5gd\" id=\"spX-mk-kcS\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Justify\" id=\"J5U-5w-g23\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"alignJustified:\" target=\"Ady-hI-5gd\" id=\"ljL-7U-jND\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Align Right\" keyEquivalent=\"}\" id=\"wb2-vD-lq4\">\n                                                        <connections>\n                                                            <action selector=\"alignRight:\" target=\"Ady-hI-5gd\" id=\"r48-bG-YeY\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem isSeparatorItem=\"YES\" id=\"4s2-GY-VfK\"/>\n                                                    <menuItem title=\"Writing Direction\" id=\"H1b-Si-o9J\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <menu key=\"submenu\" title=\"Writing Direction\" id=\"8mr-sm-Yjd\">\n                                                            <items>\n                                                                <menuItem title=\"Paragraph\" enabled=\"NO\" id=\"ZvO-Gk-QUH\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                </menuItem>\n                                                                <menuItem id=\"YGs-j5-SAR\">\n                                                                    <string key=\"title\">\tDefault</string>\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"makeBaseWritingDirectionNatural:\" target=\"Ady-hI-5gd\" id=\"qtV-5e-UBP\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem id=\"Lbh-J2-qVU\">\n                                                                    <string key=\"title\">\tLeft to Right</string>\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"makeBaseWritingDirectionLeftToRight:\" target=\"Ady-hI-5gd\" id=\"S0X-9S-QSf\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem id=\"jFq-tB-4Kx\">\n                                                                    <string key=\"title\">\tRight to Left</string>\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"makeBaseWritingDirectionRightToLeft:\" target=\"Ady-hI-5gd\" id=\"5fk-qB-AqJ\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem isSeparatorItem=\"YES\" id=\"swp-gr-a21\"/>\n                                                                <menuItem title=\"Selection\" enabled=\"NO\" id=\"cqv-fj-IhA\">\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                </menuItem>\n                                                                <menuItem id=\"Nop-cj-93Q\">\n                                                                    <string key=\"title\">\tDefault</string>\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"makeTextWritingDirectionNatural:\" target=\"Ady-hI-5gd\" id=\"lPI-Se-ZHp\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem id=\"BgM-ve-c93\">\n                                                                    <string key=\"title\">\tLeft to Right</string>\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"makeTextWritingDirectionLeftToRight:\" target=\"Ady-hI-5gd\" id=\"caW-Bv-w94\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                                <menuItem id=\"RB4-Sm-HuC\">\n                                                                    <string key=\"title\">\tRight to Left</string>\n                                                                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                                    <connections>\n                                                                        <action selector=\"makeTextWritingDirectionRightToLeft:\" target=\"Ady-hI-5gd\" id=\"EXD-6r-ZUu\"/>\n                                                                    </connections>\n                                                                </menuItem>\n                                                            </items>\n                                                        </menu>\n                                                    </menuItem>\n                                                    <menuItem isSeparatorItem=\"YES\" id=\"fKy-g9-1gm\"/>\n                                                    <menuItem title=\"Show Ruler\" id=\"vLm-3I-IUL\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                                        <connections>\n                                                            <action selector=\"toggleRuler:\" target=\"Ady-hI-5gd\" id=\"FOx-HJ-KwY\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Copy Ruler\" keyEquivalent=\"c\" id=\"MkV-Pr-PK5\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\" control=\"YES\" command=\"YES\"/>\n                                                        <connections>\n                                                            <action selector=\"copyRuler:\" target=\"Ady-hI-5gd\" id=\"71i-fW-3W2\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                    <menuItem title=\"Paste Ruler\" keyEquivalent=\"v\" id=\"LVM-kO-fVI\">\n                                                        <modifierMask key=\"keyEquivalentModifierMask\" control=\"YES\" command=\"YES\"/>\n                                                        <connections>\n                                                            <action selector=\"pasteRuler:\" target=\"Ady-hI-5gd\" id=\"cSh-wd-qM2\"/>\n                                                        </connections>\n                                                    </menuItem>\n                                                </items>\n                                            </menu>\n                                        </menuItem>\n                                    </items>\n                                </menu>\n                            </menuItem>\n                            <menuItem title=\"View\" id=\"H8h-7b-M4v\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <menu key=\"submenu\" title=\"View\" id=\"HyV-fh-RgO\">\n                                    <items>\n                                        <menuItem title=\"Show Toolbar\" keyEquivalent=\"t\" id=\"snW-S8-Cw5\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                            <connections>\n                                                <action selector=\"toggleToolbarShown:\" target=\"Ady-hI-5gd\" id=\"BXY-wc-z0C\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Customize Toolbar…\" id=\"1UK-8n-QPP\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <connections>\n                                                <action selector=\"runToolbarCustomizationPalette:\" target=\"Ady-hI-5gd\" id=\"pQI-g3-MTW\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"hB3-LF-h0Y\"/>\n                                        <menuItem title=\"Show Sidebar\" keyEquivalent=\"s\" id=\"kIP-vf-haE\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\" control=\"YES\" command=\"YES\"/>\n                                            <connections>\n                                                <action selector=\"toggleSourceList:\" target=\"Ady-hI-5gd\" id=\"iwa-gc-5KM\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Enter Full Screen\" keyEquivalent=\"f\" id=\"4J7-dP-txa\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\" control=\"YES\" command=\"YES\"/>\n                                            <connections>\n                                                <action selector=\"toggleFullScreen:\" target=\"Ady-hI-5gd\" id=\"dU3-MA-1Rq\"/>\n                                            </connections>\n                                        </menuItem>\n                                    </items>\n                                </menu>\n                            </menuItem>\n                            <menuItem title=\"Window\" id=\"aUF-d1-5bR\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <menu key=\"submenu\" title=\"Window\" systemMenu=\"window\" id=\"Td7-aD-5lo\">\n                                    <items>\n                                        <menuItem title=\"Minimize\" keyEquivalent=\"m\" id=\"OY7-WF-poV\">\n                                            <connections>\n                                                <action selector=\"performMiniaturize:\" target=\"Ady-hI-5gd\" id=\"VwT-WD-YPe\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem title=\"Zoom\" id=\"R4o-n2-Eq4\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <connections>\n                                                <action selector=\"performZoom:\" target=\"Ady-hI-5gd\" id=\"DIl-cC-cCs\"/>\n                                            </connections>\n                                        </menuItem>\n                                        <menuItem isSeparatorItem=\"YES\" id=\"eu3-7i-yIM\"/>\n                                        <menuItem title=\"Bring All to Front\" id=\"LE2-aR-0XJ\">\n                                            <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                            <connections>\n                                                <action selector=\"arrangeInFront:\" target=\"Ady-hI-5gd\" id=\"DRN-fu-gQh\"/>\n                                            </connections>\n                                        </menuItem>\n                                    </items>\n                                </menu>\n                            </menuItem>\n                            <menuItem title=\"Help\" id=\"wpr-3q-Mcd\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <menu key=\"submenu\" title=\"Help\" systemMenu=\"help\" id=\"F2S-fz-NVQ\">\n                                    <items>\n                                        <menuItem title=\"ProcessingKitOSXExample Help\" keyEquivalent=\"?\" id=\"FKE-Sm-Kum\">\n                                            <connections>\n                                                <action selector=\"showHelp:\" target=\"Ady-hI-5gd\" id=\"y7X-2Q-9no\"/>\n                                            </connections>\n                                        </menuItem>\n                                    </items>\n                                </menu>\n                            </menuItem>\n                        </items>\n                    </menu>\n                    <connections>\n                        <outlet property=\"delegate\" destination=\"Voe-Tx-rLC\" id=\"PrD-fu-P6m\"/>\n                    </connections>\n                </application>\n                <customObject id=\"Voe-Tx-rLC\" customClass=\"AppDelegate\" customModule=\"ProcessingKitOSXExample\" customModuleProvider=\"target\"/>\n                <customObject id=\"YLy-65-1bz\" customClass=\"NSFontManager\"/>\n                <customObject id=\"Ady-hI-5gd\" userLabel=\"First Responder\" customClass=\"NSResponder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"75\" y=\"0.0\"/>\n        </scene>\n        <!--Window Controller-->\n        <scene sceneID=\"R2V-B0-nI4\">\n            <objects>\n                <windowController id=\"B8D-0N-5wS\" sceneMemberID=\"viewController\">\n                    <window key=\"window\" title=\"Window\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" oneShot=\"NO\" releasedWhenClosed=\"NO\" showsToolbarButton=\"NO\" visibleAtLaunch=\"NO\" animationBehavior=\"default\" id=\"IQv-IB-iLA\">\n                        <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\" miniaturizable=\"YES\" resizable=\"YES\"/>\n                        <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n                        <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"480\" height=\"270\"/>\n                        <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"1680\" height=\"1027\"/>\n                        <connections>\n                            <outlet property=\"delegate\" destination=\"B8D-0N-5wS\" id=\"98r-iN-zZc\"/>\n                        </connections>\n                    </window>\n                    <connections>\n                        <segue destination=\"XfG-lQ-9wD\" kind=\"relationship\" relationship=\"window.shadowedContentViewController\" id=\"cq2-FE-JQM\"/>\n                    </connections>\n                </windowController>\n                <customObject id=\"Oky-zY-oP4\" userLabel=\"First Responder\" customClass=\"NSResponder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"75\" y=\"250\"/>\n        </scene>\n        <!--View Controller-->\n        <scene sceneID=\"hIz-AP-VOD\">\n            <objects>\n                <viewController id=\"XfG-lQ-9wD\" customClass=\"ViewController\" customModule=\"ProcessingKitOSXExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" wantsLayer=\"YES\" id=\"m2S-Jp-Qdl\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"270\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <subviews>\n                            <imageView horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"aaj-i8-hkp\" customClass=\"CustomView\" customModule=\"ProcessingKitOSXExample\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"270\"/>\n                                <imageCell key=\"cell\" refusesFirstResponder=\"YES\" alignment=\"left\" imageScaling=\"proportionallyDown\" id=\"O5m-up-WzZ\"/>\n                            </imageView>\n                        </subviews>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"aaj-i8-hkp\" secondAttribute=\"trailing\" id=\"R1n-xG-cHZ\"/>\n                            <constraint firstItem=\"aaj-i8-hkp\" firstAttribute=\"top\" secondItem=\"m2S-Jp-Qdl\" secondAttribute=\"top\" id=\"YXB-XY-8Ah\"/>\n                            <constraint firstItem=\"aaj-i8-hkp\" firstAttribute=\"leading\" secondItem=\"m2S-Jp-Qdl\" secondAttribute=\"leading\" id=\"du0-OX-MLc\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"aaj-i8-hkp\" secondAttribute=\"bottom\" id=\"wj3-9M-M64\"/>\n                        </constraints>\n                    </view>\n                    <connections>\n                        <outlet property=\"customView\" destination=\"aaj-i8-hkp\" id=\"qKY-tK-iA7\"/>\n                    </connections>\n                </viewController>\n                <customObject id=\"rPt-NT-nkU\" userLabel=\"First Responder\" customClass=\"NSResponder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"75\" y=\"655\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample/CustomView.swift",
    "content": "//\n//  CustomView.swift\n//  ProcessingKitOSXExample\n//\n//  Created by AtsuyaSato on 2017/12/31.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Foundation\nimport ProcessingKit\nimport Cocoa\n\nclass CustomView: ProcessingView {\n    func draw() {\n        background(NSColor.white)\n        fill(NSColor.blue)\n        ellipse(mouseX, mouseY, 100, 100)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample/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>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIconFile</key>\n\t<string></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>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSMinimumSystemVersion</key>\n\t<string>$(MACOSX_DEPLOYMENT_TARGET)</string>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017年 Atsuya Sato. All rights reserved.</string>\n\t<key>NSMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample/ProcessingKitOSXExample.entitlements",
    "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    <key>com.apple.security.app-sandbox</key>\n    <true/>\n    <key>com.apple.security.files.user-selected.read-only</key>\n    <true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample/ViewController.swift",
    "content": "//\n//  ViewController.swift\n//  ProcessingKitOSXExample\n//\n//  Created by AtsuyaSato on 2017/12/31.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport Cocoa\n\nclass ViewController: NSViewController {\n\n    @IBOutlet weak var customView: CustomView!\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n\n    override var representedObject: Any? {\n        didSet {\n        // Update the view, if already loaded.\n        }\n    }\n\n\n}\n\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 48;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tE72410561FF89A2200FBF78D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E72410551FF89A2200FBF78D /* AppDelegate.swift */; };\n\t\tE72410581FF89A2200FBF78D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E72410571FF89A2200FBF78D /* ViewController.swift */; };\n\t\tE724105A1FF89A2200FBF78D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E72410591FF89A2200FBF78D /* Assets.xcassets */; };\n\t\tE724105D1FF89A2200FBF78D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E724105B1FF89A2200FBF78D /* Main.storyboard */; };\n\t\tE72410691FF89A2200FBF78D /* ProcessingKitOSXExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E72410681FF89A2200FBF78D /* ProcessingKitOSXExampleTests.swift */; };\n\t\tE72410801FF89A5000FBF78D /* ProcessingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E724107E1FF89A3400FBF78D /* ProcessingKit.framework */; };\n\t\tE72410811FF89A5000FBF78D /* ProcessingKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E724107E1FF89A3400FBF78D /* ProcessingKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\tE72410861FF89AD100FBF78D /* CustomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E72410851FF89AD100FBF78D /* CustomView.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tE72410651FF89A2200FBF78D /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E724104A1FF89A2200FBF78D /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = E72410511FF89A2200FBF78D;\n\t\t\tremoteInfo = ProcessingKitOSXExample;\n\t\t};\n\t\tE72410791FF89A3400FBF78D /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7212F401F34B5A600173CD8;\n\t\t\tremoteInfo = ProcessingKit;\n\t\t};\n\t\tE724107B1FF89A3400FBF78D /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7212F491F34B5A600173CD8;\n\t\t\tremoteInfo = ProcessingKitTests;\n\t\t};\n\t\tE724107D1FF89A3400FBF78D /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7B77DD31FF7E02900CE691A;\n\t\t\tremoteInfo = \"ProcessingKit OSX\";\n\t\t};\n\t\tE72410821FF89A5000FBF78D /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = E7B77DD21FF7E02900CE691A;\n\t\t\tremoteInfo = \"ProcessingKit OSX\";\n\t\t};\n\t\tE7B2F7322145586C003B642A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7B2F67A21454010003B642A;\n\t\t\tremoteInfo = ProcessingKitCore;\n\t\t};\n\t\tE7B2F7342145586C003B642A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = E72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = E7B2F70F214553BF003B642A;\n\t\t\tremoteInfo = ProcessingKitCoreOSX;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\tE72410841FF89A5000FBF78D /* Embed 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\tE72410811FF89A5000FBF78D /* ProcessingKit.framework in Embed Frameworks */,\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\tE72410521FF89A2200FBF78D /* ProcessingKitOSXExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ProcessingKitOSXExample.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE72410551FF89A2200FBF78D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tE72410571FF89A2200FBF78D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = \"<group>\"; };\n\t\tE72410591FF89A2200FBF78D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\tE724105C1FF89A2200FBF78D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\tE724105E1FF89A2200FBF78D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tE724105F1FF89A2200FBF78D /* ProcessingKitOSXExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ProcessingKitOSXExample.entitlements; sourceTree = \"<group>\"; };\n\t\tE72410641FF89A2200FBF78D /* ProcessingKitOSXExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ProcessingKitOSXExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE72410681FF89A2200FBF78D /* ProcessingKitOSXExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessingKitOSXExampleTests.swift; sourceTree = \"<group>\"; };\n\t\tE724106A1FF89A2200FBF78D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tE72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = ProcessingKit.xcodeproj; path = ../ProcessingKit.xcodeproj; sourceTree = \"<group>\"; };\n\t\tE72410851FF89AD100FBF78D /* CustomView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomView.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tE724104F1FF89A2200FBF78D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE72410801FF89A5000FBF78D /* ProcessingKit.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE72410611FF89A2200FBF78D /* 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/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tE72410491FF89A2200FBF78D = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE72410541FF89A2200FBF78D /* ProcessingKitOSXExample */,\n\t\t\t\tE72410671FF89A2200FBF78D /* ProcessingKitOSXExampleTests */,\n\t\t\t\tE72410531FF89A2200FBF78D /* Products */,\n\t\t\t\tE72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE72410531FF89A2200FBF78D /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE72410521FF89A2200FBF78D /* ProcessingKitOSXExample.app */,\n\t\t\t\tE72410641FF89A2200FBF78D /* ProcessingKitOSXExampleTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE72410541FF89A2200FBF78D /* ProcessingKitOSXExample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE72410551FF89A2200FBF78D /* AppDelegate.swift */,\n\t\t\t\tE72410571FF89A2200FBF78D /* ViewController.swift */,\n\t\t\t\tE72410851FF89AD100FBF78D /* CustomView.swift */,\n\t\t\t\tE72410591FF89A2200FBF78D /* Assets.xcassets */,\n\t\t\t\tE724105B1FF89A2200FBF78D /* Main.storyboard */,\n\t\t\t\tE724105E1FF89A2200FBF78D /* Info.plist */,\n\t\t\t\tE724105F1FF89A2200FBF78D /* ProcessingKitOSXExample.entitlements */,\n\t\t\t);\n\t\t\tpath = ProcessingKitOSXExample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE72410671FF89A2200FBF78D /* ProcessingKitOSXExampleTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE72410681FF89A2200FBF78D /* ProcessingKitOSXExampleTests.swift */,\n\t\t\t\tE724106A1FF89A2200FBF78D /* Info.plist */,\n\t\t\t);\n\t\t\tpath = ProcessingKitOSXExampleTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE72410741FF89A3300FBF78D /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE724107A1FF89A3400FBF78D /* ProcessingKit.framework */,\n\t\t\t\tE724107C1FF89A3400FBF78D /* ProcessingKitTests.xctest */,\n\t\t\t\tE724107E1FF89A3400FBF78D /* ProcessingKit.framework */,\n\t\t\t\tE7B2F7332145586C003B642A /* ProcessingKitCore.framework */,\n\t\t\t\tE7B2F7352145586C003B642A /* ProcessingKitCoreOSX.framework */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tE72410511FF89A2200FBF78D /* ProcessingKitOSXExample */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = E724106D1FF89A2200FBF78D /* Build configuration list for PBXNativeTarget \"ProcessingKitOSXExample\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE724104E1FF89A2200FBF78D /* Sources */,\n\t\t\t\tE724104F1FF89A2200FBF78D /* Frameworks */,\n\t\t\t\tE72410501FF89A2200FBF78D /* Resources */,\n\t\t\t\tE72410841FF89A5000FBF78D /* Embed Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tE72410831FF89A5000FBF78D /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = ProcessingKitOSXExample;\n\t\t\tproductName = ProcessingKitOSXExample;\n\t\t\tproductReference = E72410521FF89A2200FBF78D /* ProcessingKitOSXExample.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\tE72410631FF89A2200FBF78D /* ProcessingKitOSXExampleTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = E72410701FF89A2200FBF78D /* Build configuration list for PBXNativeTarget \"ProcessingKitOSXExampleTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE72410601FF89A2200FBF78D /* Sources */,\n\t\t\t\tE72410611FF89A2200FBF78D /* Frameworks */,\n\t\t\t\tE72410621FF89A2200FBF78D /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tE72410661FF89A2200FBF78D /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = ProcessingKitOSXExampleTests;\n\t\t\tproductName = ProcessingKitOSXExampleTests;\n\t\t\tproductReference = E72410641FF89A2200FBF78D /* ProcessingKitOSXExampleTests.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\tE724104A1FF89A2200FBF78D /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0910;\n\t\t\t\tLastUpgradeCheck = 0940;\n\t\t\t\tORGANIZATIONNAME = \"Atsuya Sato\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tE72410511FF89A2200FBF78D = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 9.1;\n\t\t\t\t\t\tLastSwiftMigration = 1010;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tE72410631FF89A2200FBF78D = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 9.1;\n\t\t\t\t\t\tLastSwiftMigration = 1010;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tTestTargetID = E72410511FF89A2200FBF78D;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = E724104D1FF89A2200FBF78D /* Build configuration list for PBXProject \"ProcessingKitOSXExample\" */;\n\t\t\tcompatibilityVersion = \"Xcode 8.0\";\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 = E72410491FF89A2200FBF78D;\n\t\t\tproductRefGroup = E72410531FF89A2200FBF78D /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectReferences = (\n\t\t\t\t{\n\t\t\t\t\tProductGroup = E72410741FF89A3300FBF78D /* Products */;\n\t\t\t\t\tProjectRef = E72410731FF89A3300FBF78D /* ProcessingKit.xcodeproj */;\n\t\t\t\t},\n\t\t\t);\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tE72410511FF89A2200FBF78D /* ProcessingKitOSXExample */,\n\t\t\t\tE72410631FF89A2200FBF78D /* ProcessingKitOSXExampleTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXReferenceProxy section */\n\t\tE724107A1FF89A3400FBF78D /* ProcessingKit.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = ProcessingKit.framework;\n\t\t\tremoteRef = E72410791FF89A3400FBF78D /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tE724107C1FF89A3400FBF78D /* ProcessingKitTests.xctest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = ProcessingKitTests.xctest;\n\t\t\tremoteRef = E724107B1FF89A3400FBF78D /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tE724107E1FF89A3400FBF78D /* ProcessingKit.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = ProcessingKit.framework;\n\t\t\tremoteRef = E724107D1FF89A3400FBF78D /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tE7B2F7332145586C003B642A /* ProcessingKitCore.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = ProcessingKitCore.framework;\n\t\t\tremoteRef = E7B2F7322145586C003B642A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tE7B2F7352145586C003B642A /* ProcessingKitCoreOSX.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = ProcessingKitCoreOSX.framework;\n\t\t\tremoteRef = E7B2F7342145586C003B642A /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n/* End PBXReferenceProxy section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tE72410501FF89A2200FBF78D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE724105A1FF89A2200FBF78D /* Assets.xcassets in Resources */,\n\t\t\t\tE724105D1FF89A2200FBF78D /* Main.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE72410621FF89A2200FBF78D /* 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 PBXSourcesBuildPhase section */\n\t\tE724104E1FF89A2200FBF78D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE72410861FF89AD100FBF78D /* CustomView.swift in Sources */,\n\t\t\t\tE72410581FF89A2200FBF78D /* ViewController.swift in Sources */,\n\t\t\t\tE72410561FF89A2200FBF78D /* AppDelegate.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE72410601FF89A2200FBF78D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tE72410691FF89A2200FBF78D /* ProcessingKitOSXExampleTests.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\tE72410661FF89A2200FBF78D /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = E72410511FF89A2200FBF78D /* ProcessingKitOSXExample */;\n\t\t\ttargetProxy = E72410651FF89A2200FBF78D /* PBXContainerItemProxy */;\n\t\t};\n\t\tE72410831FF89A5000FBF78D /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = \"ProcessingKit OSX\";\n\t\t\ttargetProxy = E72410821FF89A5000FBF78D /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\tE724105B1FF89A2200FBF78D /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tE724105C1FF89A2200FBF78D /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tE724106B1FF89A2200FBF78D /* 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_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\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_DOCUMENTATION_COMMENTS = YES;\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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\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_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\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE724106C1FF89A2200FBF78D /* 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_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\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_DOCUMENTATION_COMMENTS = YES;\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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\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 = gnu11;\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\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tE724106E1FF89A2200FBF78D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = ProcessingKitOSXExample/ProcessingKitOSXExample.entitlements;\n\t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEVELOPMENT_TEAM = DEQGLB9PU4;\n\t\t\t\tINFOPLIST_FILE = ProcessingKitOSXExample/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitOSXExample;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE724106F1FF89A2200FBF78D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = ProcessingKitOSXExample/ProcessingKitOSXExample.entitlements;\n\t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEVELOPMENT_TEAM = DEQGLB9PU4;\n\t\t\t\tINFOPLIST_FILE = ProcessingKitOSXExample/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitOSXExample;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tE72410711FF89A2200FBF78D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEVELOPMENT_TEAM = DEQGLB9PU4;\n\t\t\t\tINFOPLIST_FILE = ProcessingKitOSXExampleTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitOSXExampleTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/ProcessingKitOSXExample.app/Contents/MacOS/ProcessingKitOSXExample\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE72410721FF89A2200FBF78D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEVELOPMENT_TEAM = DEQGLB9PU4;\n\t\t\t\tINFOPLIST_FILE = ProcessingKitOSXExampleTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.github.natmark.ProcessingKitOSXExampleTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/ProcessingKitOSXExample.app/Contents/MacOS/ProcessingKitOSXExample\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tE724104D1FF89A2200FBF78D /* Build configuration list for PBXProject \"ProcessingKitOSXExample\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE724106B1FF89A2200FBF78D /* Debug */,\n\t\t\t\tE724106C1FF89A2200FBF78D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tE724106D1FF89A2200FBF78D /* Build configuration list for PBXNativeTarget \"ProcessingKitOSXExample\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE724106E1FF89A2200FBF78D /* Debug */,\n\t\t\t\tE724106F1FF89A2200FBF78D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tE72410701FF89A2200FBF78D /* Build configuration list for PBXNativeTarget \"ProcessingKitOSXExampleTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE72410711FF89A2200FBF78D /* Debug */,\n\t\t\t\tE72410721FF89A2200FBF78D /* 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 = E724104A1FF89A2200FBF78D /* Project object */;\n}\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:ProcessingKitOSXExample.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExample.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": "ProcessingKitOSXExample/ProcessingKitOSXExampleTests/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>$(DEVELOPMENT_LANGUAGE)</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>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "ProcessingKitOSXExample/ProcessingKitOSXExampleTests/ProcessingKitOSXExampleTests.swift",
    "content": "//\n//  ProcessingKitOSXExampleTests.swift\n//  ProcessingKitOSXExampleTests\n//\n//  Created by AtsuyaSato on 2017/12/31.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport XCTest\n@testable import ProcessingKitOSXExample\n\nclass ProcessingKitOSXExampleTests: XCTestCase {\n    \n    override func setUp() {\n        super.setUp()\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n    }\n    \n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n        super.tearDown()\n    }\n    \n    func testExample() {\n        // This is an example of a functional test case.\n        // Use XCTAssert and related functions to verify your tests produce the correct results.\n    }\n    \n    func testPerformanceExample() {\n        // This is an example of a performance test case.\n        self.measure {\n            // Put the code you want to measure the time of here.\n        }\n    }\n    \n}\n"
  },
  {
    "path": "ProcessingKitTests/CGPath+Extension/CGPath+Extension.swift",
    "content": "//\n//  CGPath+Extension.swift\n//  ProcessingKitTests\n//\n//  Created by AtsuyaSato on 2019/01/31.\n//  Copyright © 2019 Atsuya Sato. All rights reserved.\n//\nimport CoreGraphics\n\nextension CGPath: Equatable {\n    public static func ==(lhs: CGPath, rhs: CGPath) -> Bool {\n        if lhs.getPathElementsPoints().count != rhs.getPathElementsPoints().count {\n            return false\n        }\n        if lhs.firstPoint != rhs.firstPoint {\n            return false\n        }\n        if lhs.currentPoint != rhs.currentPoint {\n            return false\n        }\n\n        for i in 0..<lhs.getPathElementsPoints().count {\n            let lhsElm = lhs.getPathElementsPointsAndTypes().0[i]\n            let lhsElmType = lhs.getPathElementsPointsAndTypes().1[i]\n            let rhsElm = rhs.getPathElementsPointsAndTypes().0[i]\n            let rhsElmType = rhs.getPathElementsPointsAndTypes().1[i]\n\n            if lhsElmType != rhsElmType {\n                return false\n            }\n            if Int(lhsElm.x * 100000000000) != Int(rhsElm.x * 100000000000) {\n                return false\n            }\n            if Int(lhsElm.y * 100000000000) != Int(rhsElm.y * 100000000000) {\n                return false\n            }\n        }\n        return true\n    }\n}\n\nextension CGPath {\n    var firstPoint: CGPoint? {\n        var firstPoint: CGPoint? = nil\n\n        self.forEach { element in\n            // Just want the first one, but we have to look at everything\n            guard firstPoint == nil else { return }\n            assert(element.type == .moveToPoint, \"Expected the first point to be a move\")\n            firstPoint = element.points.pointee\n        }\n        return firstPoint\n    }\n\n    func forEach( body: @escaping @convention(block) (CGPathElement) -> Void) {\n        typealias Body = @convention(block) (CGPathElement) -> Void\n        let callback: @convention(c) (UnsafeMutableRawPointer, UnsafePointer<CGPathElement>) -> Void = { (info, element) in\n            let body = unsafeBitCast(info, to: Body.self)\n            body(element.pointee)\n        }\n        //print(MemoryLayout.size(ofValue: body))\n        let unsafeBody = unsafeBitCast(body, to: UnsafeMutableRawPointer.self)\n        self.apply(info: unsafeBody, function: unsafeBitCast(callback, to: CGPathApplierFunction.self))\n    }\n    func getPathElementsPoints() -> [CGPoint] {\n        var arrayPoints : [CGPoint]! = [CGPoint]()\n        self.forEach { element in\n            switch (element.type) {\n            case CGPathElementType.moveToPoint:\n                arrayPoints.append(element.points[0])\n            case .addLineToPoint:\n                arrayPoints.append(element.points[0])\n            case .addQuadCurveToPoint:\n                arrayPoints.append(element.points[0])\n                arrayPoints.append(element.points[1])\n            case .addCurveToPoint:\n                arrayPoints.append(element.points[0])\n                arrayPoints.append(element.points[1])\n                arrayPoints.append(element.points[2])\n            default: break\n            }\n        }\n        return arrayPoints\n    }\n    func getPathElementsPointsAndTypes() -> ([CGPoint],[CGPathElementType]) {\n        var arrayPoints : [CGPoint]! = [CGPoint]()\n        var arrayTypes : [CGPathElementType]! = [CGPathElementType]()\n        self.forEach { element in\n            switch (element.type) {\n            case CGPathElementType.moveToPoint:\n                arrayPoints.append(element.points[0])\n                arrayTypes.append(element.type)\n            case .addLineToPoint:\n                arrayPoints.append(element.points[0])\n                arrayTypes.append(element.type)\n            case .addQuadCurveToPoint:\n                arrayPoints.append(element.points[0])\n                arrayPoints.append(element.points[1])\n                arrayTypes.append(element.type)\n                arrayTypes.append(element.type)\n            case .addCurveToPoint:\n                arrayPoints.append(element.points[0])\n                arrayPoints.append(element.points[1])\n                arrayPoints.append(element.points[2])\n                arrayTypes.append(element.type)\n                arrayTypes.append(element.type)\n                arrayTypes.append(element.type)\n            default: break\n            }\n        }\n        return (arrayPoints,arrayTypes)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitTests/GestureTests.swift",
    "content": "//\n//  EventTests.swift\n//  ProcessingKitTests\n//\n//  Created by AtsuyaSato on 2018/07/04.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport XCTest\n@testable import ProcessingKit\n\nclass GestureTests: XCTestCase {\n    func testFingerPressed() {\n        let view = ProcessingView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))\n        XCTAssertEqual(view.fingerPressed, false)\n\n        view.didTap(recognizer: view.tapGestureWithSingleTouch)\n        XCTAssertEqual(view.fingerPressed, true)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitTests/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>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "ProcessingKitTests/Input/DateTests.swift",
    "content": "//\n//  DateTests.swift\n//  ProcessingKitTests\n//\n//  Created by AtsuyaSato on 2017/09/27.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport XCTest\n@testable import ProcessingKit\n\nclass DateTests: XCTestCase {\n\n    override func setUp() {\n        super.setUp()\n    }\n    \n    override func tearDown() {\n        super.tearDown()\n    }\n    \n    func testDateValue() {\n        var components = DateComponents()\n        components.year = 2017\n        components.month = 5\n        components.day = 20\n        components.hour = 22\n        components.minute = 50\n        components.second = 10\n\n        let calendar = Calendar(identifier: .gregorian)\n        let date = calendar.date(from: components)\n\n        guard let currentDate = date else {\n            XCTFail()\n            return\n        }\n\n        let dateModel = DateModel(startDate: Date(), currentDate: currentDate)\n\n        XCTAssertEqual(dateModel.year(), 2017)\n        XCTAssertEqual(dateModel.month(), 5)\n        XCTAssertEqual(dateModel.day(), 20)\n        XCTAssertEqual(dateModel.hour(), 22)\n        XCTAssertEqual(dateModel.minute(), 50)\n        XCTAssertEqual(dateModel.second(), 10)\n    }\n}\n"
  },
  {
    "path": "ProcessingKitTests/ProcessingViewDelegateSpy.swift",
    "content": "//\n//  ProcessingViewDelegateSpy.swift\n//  ProcessingKitTests\n//\n//  Created by AtsuyaSato on 2017/09/26.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport XCTest\n@testable import ProcessingKit\n\nclass ProcessingViewDelegateSetupSpy: ProcessingViewDelegate {\n    private let exception: XCTestExpectation\n    private(set) var spyHistory: [Any] = []\n\n    init(exception: XCTestExpectation) {\n        self.exception = exception\n    }\n\n    func setup() {\n        self.record(())\n        exception.fulfill()\n    }\n\n    private func record(_ args: Void) {\n        self.spyHistory += [args]\n    }\n}\n\nclass ProcessingViewDelegateDrawSpy: ProcessingViewDelegate {\n    private let exception: XCTestExpectation\n    private(set) var spyHistory: [Any] = []\n\n    init(exception: XCTestExpectation) {\n        self.exception = exception\n    }\n\n    func setup() {\n        self.record(())\n    }\n\n    func draw() {\n        self.record(())\n        exception.fulfill()\n    }\n    private func record(_ args: Void) {\n        self.spyHistory += [args]\n    }\n}\n"
  },
  {
    "path": "ProcessingKitTests/ProcessingViewTests.swift",
    "content": "//\n//  ProcessingViewTests.swift\n//  ProcessingViewTests\n//\n//  Created by AtsuyaSato on 2017/08/04.\n//  Copyright © 2017年 Atsuya Sato. All rights reserved.\n//\n\nimport XCTest\n@testable import ProcessingKit\n\nclass ProcessingViewTests: XCTestCase {\n\n    override func setUp() {\n        super.setUp()\n    }\n\n    override func tearDown() {\n        super.tearDown()\n    }\n\n    func testCallSetup() {\n        let view = ProcessingView(frame: CGRect.zero)\n\n        let processingViewDelegateSpy = ProcessingViewDelegateSetupSpy(exception:\n            expectation(description: \"Setup\")\n        )\n        view.delegate = processingViewDelegateSpy\n        waitForExpectations(timeout: 100)\n        XCTAssertEqual(processingViewDelegateSpy.spyHistory.count, 1)\n    }\n\n    func testCallDraw() {\n        let view = ProcessingView(frame: CGRect.zero)\n\n        let processingViewDelegateSpy = ProcessingViewDelegateDrawSpy(exception:\n            expectation(description: \"Draw\")\n        )\n        view.delegate = processingViewDelegateSpy\n        waitForExpectations(timeout: 100)\n        print(processingViewDelegateSpy.spyHistory.count)\n        XCTAssertEqual(processingViewDelegateSpy.spyHistory.count, 2)\n    }\n\n}\n"
  },
  {
    "path": "ProcessingKitTests/ShapeTests.swift",
    "content": "//\n//  ShapeTests.swift\n//  ProcessingKitTests\n//\n//  Created by AtsuyaSato on 2018/01/29.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport XCTest\n@testable import ProcessingKit\n\nstruct TestCase {\n    let description: String\n    let shape: Shape\n    let expect: CGPath?\n}\n\nenum Shape {\n    case point(x: CGFloat, y: CGFloat)\n    case line(x1: CGFloat, y1: CGFloat, x2: CGFloat, y2: CGFloat)\n    case rect(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)\n    case roundedRect(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat, topLeftRadius: CGFloat, topRightRadius: CGFloat, bottomLeftRadius: CGFloat, bottomRightRadius: CGFloat)\n    case ellipse(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)\n    case arc(x: CGFloat, y: CGFloat, radius: CGFloat, start: CGFloat, stop: CGFloat)\n    case triangle(x1: CGFloat, y1: CGFloat, x2: CGFloat, y2: CGFloat, x3: CGFloat, y3: CGFloat)\n    case quad(x1: CGFloat, y1: CGFloat, x2: CGFloat, y2: CGFloat, x3: CGFloat, y3: CGFloat, x4: CGFloat, y4: CGFloat)\n    case curve(cpx1: CGFloat, cpy1: CGFloat, x1: CGFloat, y1: CGFloat, x2: CGFloat, y2: CGFloat, cpx2: CGFloat, cpy2: CGFloat)\n    case bezier(x1: CGFloat, y1: CGFloat, cpx1: CGFloat, cpy1: CGFloat, cpx2: CGFloat, cpy2: CGFloat, x2: CGFloat, y2: CGFloat)\n}\n\nclass ProcessingViewDelegateShapeSpy: ProcessingViewDelegate {\n    private let exception: XCTestExpectation\n    private let view: ProcessingView\n    private let shape: Shape\n    private(set) var context: CGContext?\n\n    init(exception: XCTestExpectation, view: ProcessingView, shape: Shape) {\n        self.exception = exception\n        self.view = view\n        self.shape = shape\n    }\n\n    func setup() {\n        switch shape {\n        case .point(let x, let y):\n            self.view.point(x, y)\n        case .line(let x1, let y1, let x2, let y2):\n            self.view.line(x1, y1, x2, y2)\n        case .rect(let x, let y, let width, let height):\n            self.view.rect(x, y, width, height)\n        case .roundedRect(let x, let y, let width, let height, let topLeftRadius, let topRightRadius, let bottomLeftRadius, let bottomRightRadius):\n            self.view.rect(x, y, width, height, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius)\n        case .ellipse(let x, let y, let width, let height):\n            self.view.ellipse(x, y, width, height)\n        case .arc(let x, let y, let radius, let start, let stop):\n            self.view.arc(x, y, radius, start, stop)\n        case .triangle(let x1, let y1, let x2, let y2, let x3, let y3):\n            self.view.triangle(x1, y1, x2, y2, x3, y3)\n        case .quad(let x1, let y1, let x2, let y2, let x3, let y3, let x4, let y4):\n            self.view.quad(x1, y1, x2, y2, x3, y3, x4, y4)\n        case .curve(let cpx1, let cpy1, let x1, let y1, let x2, let y2, let cpx2, let cpy2):\n            self.view.curve(cpx1, cpy1, x1, y1, x2, y2, cpx2, cpy2)\n        case .bezier(let x1, let y1, let cpx1, let cpy1, let cpx2, let cpy2, let x2, let y2):\n            self.view.bezier(x1, y1, cpx1, cpy1, cpx2, cpy2, x2, y2)\n        }\n        self.record(UIGraphicsGetCurrentContext())\n        exception.fulfill()\n    }\n\n    private func record(_ arg: CGContext?) {\n        self.context = arg\n    }\n}\n\nclass ShapeTests: XCTestCase {\n    override func setUp() {\n        super.setUp()\n    }\n    \n    override func tearDown() {\n        super.tearDown()\n    }\n\n    func testPoint() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw point(50, 50)\",\n                shape: .point(x: 50, y: 50),\n                expect: UIBezierPath(ovalIn: CGRect(x: 49.5, y: 49.5, width: 1, height: 1)).cgPath\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func testLine() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw line(0, 0, 100, 100)\",\n                shape: .line(x1: 0, y1: 0, x2: 100, y2: 100),\n                expect: UIBezierPath()\n                    .moveTo(CGPoint(x: 0, y: 0))\n                    .addLineTo(CGPoint(x: 100, y: 100))\n                    .cgPath\n            ),\n            #line: TestCase(\n                description: \"draw line(50, 50, -50, -50)\",\n                shape: .line(x1: 50, y1: 50, x2: -50, y2: -50),\n                expect: UIBezierPath()\n                        .moveTo(CGPoint(x: 50, y: 50))\n                        .addLineTo(CGPoint(x: -50, y: -50))\n                        .cgPath\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func testRect() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw rect(0, 0, 50, 50)\",\n                shape: .rect(x: 0, y: 0, width: 50, height: 50),\n                expect: UIBezierPath(rect: CGRect(x: 0, y: 0, width: 50, height: 50)).cgPath\n            ),\n            #line: TestCase(\n                description: \"draw rect(20, 20, 30, 50)\",\n                shape: .rect(x: 20, y: 20, width: 30, height: 50),\n                expect: UIBezierPath(rect: CGRect(x: 20, y: 20, width: 30, height: 50)).cgPath\n            ),\n            #line: TestCase(\n                description: \"draw rounded rect(10, 10, 50, 50, 10, 0, 0, 0)\",\n                shape: .roundedRect(x: 10, y: 10, width: 50, height: 50, topLeftRadius: 5, topRightRadius: 0, bottomLeftRadius: 0, bottomRightRadius: 0),\n                expect: roundedRectPathBuilder(x: 10, y: 10, width: 50, height: 50, topLeftRadius: 5, topRightRadius: 0, bottomLeftRadius: 0, bottomRightRadius: 0)\n            ),\n            #line: TestCase(\n                description: \"draw rounded rect(10, 10, 50, 50, 50, 10, 10, 10)\",\n                shape: .roundedRect(x: 10, y: 10, width: 50, height: 50, topLeftRadius: 50, topRightRadius: 10, bottomLeftRadius: 10, bottomRightRadius: 10),\n                expect: roundedRectPathBuilder(x: 10, y: 10, width: 50, height: 50, topLeftRadius: 25, topRightRadius: 10, bottomLeftRadius: 10, bottomRightRadius: 10)\n            ),\n        ]\n        check(testCases: testCases)\n    }\n\n    func testElipse() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw ellipse(100, 100, 100, 100)\",\n                shape: .ellipse(x: 100, y: 100, width: 100, height: 100),\n                expect: UIBezierPath(ovalIn: CGRect(x: 50, y: 50, width: 100, height: 100)).cgPath\n            ),\n            #line: TestCase(\n                description: \"draw ellipse(0, 0, 100, 100)\",\n                shape: .ellipse(x: 0, y: 0, width: 100, height: 100),\n                expect: UIBezierPath(ovalIn: CGRect(x: -50, y: -50, width: 100, height: 100)).cgPath\n            ),\n        ]\n        check(testCases: testCases)\n    }\n\n    func testArc() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw arc(50, 50, 50, 0°, 90°)\",\n                shape: .arc(x: 50, y: 50, radius: 50, start: radians(0), stop: radians(90.0)),\n                expect: arcPathBuilder(x: 50, y: 50, radius: 50, start: radians(0), stop: radians(90.0), clockwise: false)\n            ),\n            #line: TestCase(\n                description: \"draw arc(50, 50, 30, 30°, 120°)\",\n                shape: .arc(x: 50, y: 50, radius: 30, start: radians(30.0), stop: radians(120.0)),\n                expect: arcPathBuilder(x: 50, y: 50, radius: 30, start: radians(30.0), stop: radians(120.0), clockwise: false)\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func testTriangle() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw triangle(50, 0, 0, 100, 100, 100)\",\n                shape: .triangle(x1: 50, y1: 0, x2: 0, y2: 100, x3: 100, y3: 100),\n                expect: UIBezierPath()\n                        .moveTo(CGPoint(x: 50, y: 0))\n                        .addLineTo(CGPoint(x: 0, y: 100))\n                        .addLineTo(CGPoint(x: 100, y: 100))\n                        .closePath()\n                        .cgPath\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func testQuad() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw triangle(0, 0, 30, 0, 100, 100, 40, 50)\",\n                shape: .quad(x1: 0, y1: 0, x2: 30, y2: 0, x3: 100, y3: 100, x4: 40, y4: 50),\n                expect: UIBezierPath()\n                        .moveTo(CGPoint(x: 0, y: 0))\n                        .addLineTo(CGPoint(x: 30, y: 0))\n                        .addLineTo(CGPoint(x: 100, y: 100))\n                        .addLineTo(CGPoint(x: 40, y: 50))\n                        .closePath()\n                        .cgPath\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func testCurve() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw curve(40, 40, 80, 60, 100, 100, 60, 120)\",\n                shape: .curve(cpx1: 40, cpy1: 40, x1: 80, y1: 60, x2: 100, y2: 100, cpx2: 60, cpy2: 120),\n                expect: curvePathBuilder(cpx1: 40, cpy1: 40, x1: 80, y1: 60, x2: 100, y2: 100, cpx2: 60, cpy2: 120)\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func testBezier() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"draw bezier(40, 40, 80, 60, 100, 100, 60, 120)\",\n                shape: .bezier(x1: 40, y1: 40, cpx1: 80, cpy1: 60, cpx2: 100, cpy2: 100, x2: 60, y2: 120),\n                expect: bezierPathBuilder(x1: 40, y1: 40, cpx1: 80, cpy1: 60, cpx2: 100, cpy2: 100, x2: 60, y2: 120)\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func check(testCases: [UInt: TestCase]) {\n        _ = testCases.map { (line, testCase) in\n            let view = ProcessingView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))\n\n            let transformDelegateSpy = ProcessingViewDelegateShapeSpy(\n                exception: expectation(description: testCase.description),\n                view: view,\n                shape: testCase.shape\n            )\n\n            view.delegate = transformDelegateSpy\n            waitForExpectations(timeout: 100)\n\n            let actual = transformDelegateSpy.context?.path\n            let expected = testCase.expect\n\n            XCTAssertEqual(actual, expected, String(line))\n\n        }\n    }\n\n    private func radians(_ degrees: CGFloat) -> CGFloat {\n        let radian = (CGFloat.pi * 2) * (degrees / 360.0)\n        return radian\n    }\n\n    private func roundedRectPathBuilder(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat, topLeftRadius: CGFloat, topRightRadius: CGFloat, bottomLeftRadius: CGFloat, bottomRightRadius: CGFloat) -> CGPath? {\n        let context = CGContext(data: nil, width: 100, height: 100, bitsPerComponent: 8, bytesPerRow: 1664, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: 8194)!\n\n        context.beginPath()\n        context.move(to: CGPoint(x: x + topLeftRadius, y: y))\n\n        context.addLine(to: CGPoint(x: x + width - topRightRadius, y: y))\n        context.addArc(center: CGPoint(x: x + width - topRightRadius, y: y + topRightRadius), radius: topRightRadius, startAngle: radians(-90.0), endAngle: radians(0.0), clockwise: false)\n\n        context.addLine(to: CGPoint(x: x + width, y: y + height - bottomRightRadius))\n        context.addArc(center: CGPoint(x: x + width - bottomRightRadius, y: y + height - bottomRightRadius), radius: bottomRightRadius, startAngle: radians(0.0), endAngle: radians(90.0), clockwise: false)\n\n        context.addLine(to: CGPoint(x: x + bottomLeftRadius, y: y + height))\n        context.addArc(center: CGPoint(x: x + bottomLeftRadius, y: y + height - bottomLeftRadius), radius: bottomLeftRadius, startAngle: radians(90.0), endAngle: radians(180.0), clockwise: false)\n\n        context.addLine(to: CGPoint(x: x, y: y + topLeftRadius))\n        context.addArc(center: CGPoint(x: x + topLeftRadius, y: y + topLeftRadius), radius: topLeftRadius, startAngle: radians(180.0), endAngle: radians(270.0), clockwise: false)\n        context.closePath()\n        return context.path\n    }\n\n    private func arcPathBuilder(x: CGFloat, y: CGFloat, radius: CGFloat, start: CGFloat, stop: CGFloat, clockwise: Bool) -> CGPath? {\n        let context = CGContext(data: nil, width: 100, height: 100, bitsPerComponent: 8, bytesPerRow: 1664, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: 8194)!\n        context.addArc(center: CGPoint(x: x, y: y), radius: radius, startAngle: start, endAngle: stop, clockwise: clockwise)\n        return context.path\n    }\n\n    private func curvePathBuilder(cpx1: CGFloat, cpy1: CGFloat, x1: CGFloat, y1: CGFloat, x2: CGFloat, y2: CGFloat, cpx2: CGFloat, cpy2: CGFloat) -> CGPath? {\n        let context = CGContext(data: nil, width: 100, height: 100, bitsPerComponent: 8, bytesPerRow: 1664, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: 8194)!\n\n        let (b1, b2) = ShapeModel.convertCurvePoint(cpx1, cpy1, x1, y1, x2, y2, cpx2, cpy2)\n        context.move(to: CGPoint(x: x1, y: y1))\n        context.addCurve(to: CGPoint(x: x2, y: y2), control1: CGPoint(x: b1.x, y: b1.y), control2: CGPoint(x: b2.x, y: b2.y))\n        return context.path\n    }\n\n    private func bezierPathBuilder(x1: CGFloat, y1: CGFloat, cpx1: CGFloat, cpy1: CGFloat, cpx2: CGFloat, cpy2: CGFloat, x2: CGFloat, y2: CGFloat) -> CGPath? {\n        let context = CGContext(data: nil, width: 100, height: 100, bitsPerComponent: 8, bytesPerRow: 1664, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: 8194)!\n\n        context.move(to: CGPoint(x: x1, y: y1))\n        context.addCurve(to: CGPoint(x: x2, y: y2), control1: CGPoint(x: cpx1, y: cpy1), control2: CGPoint(x: cpx2, y: cpy2))\n        return context.path\n    }\n}\n\nextension UIBezierPath {\n    open func moveTo(_ point: CGPoint) -> UIBezierPath {\n        self.move(to: point)\n        return self\n    }\n\n    open func addLineTo(_ point: CGPoint) -> UIBezierPath {\n        self.addLine(to: point)\n        return self\n    }\n\n    open func addArcTo(_ center: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool) -> UIBezierPath {\n        self.addArc(withCenter: center, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: clockwise)\n        return self\n    }\n\n    open func addCurveTo(_ points: (to: CGPoint, controlPoint1: CGPoint, controlPoint2: CGPoint)) -> UIBezierPath {\n        self.addCurve(to: points.to, controlPoint1: points.controlPoint1, controlPoint2: points.controlPoint2)\n        return self\n    }\n\n    open func closePath() -> UIBezierPath {\n        self.close()\n        return self\n    }\n}\n"
  },
  {
    "path": "ProcessingKitTests/TransformTests.swift",
    "content": "//\n//  TransformTests.swift\n//  ProcessingKitTests\n//\n//  Created by AtsuyaSato on 2018/01/14.\n//  Copyright © 2018年 Atsuya Sato. All rights reserved.\n//\n\nimport XCTest\n@testable import ProcessingKit\n\n/* Quartz 2D\n https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_affine/dq_affine.html\n\n                       | a  b  0 |\n [x' y' 1] = [x y 1] × | c  d  0 |\n                       | tx ty 1 |\n\n y\n ^\n |\n |\n 0ーーーー> x\n */\n\nenum Transform {\n    case translate(x: CGFloat, y: CGFloat)\n    case rotate(angle: CGFloat)\n    case shear(angleX: CGFloat, angleY: CGFloat)\n    case scale(x: CGFloat, y: CGFloat)\n}\n\nclass ProcessingViewDelegateTransformSpy: ProcessingViewDelegate {\n    private let exception: XCTestExpectation\n    private let view: ProcessingView\n    private let transform: Transform\n    private(set) var context: CGContext?\n\n    init(exception: XCTestExpectation, view: ProcessingView, transform: Transform) {\n        self.exception = exception\n        self.view = view\n        self.transform = transform\n    }\n\n    func setup() {\n        switch transform {\n        case .translate(let x, let y):\n            self.view.translate(x, y)\n        case .rotate(let angle):\n            self.view.rotate(angle)\n        case .shear(let x, let y):\n            self.view.shear(x, y)\n        case .scale(let x, let y):\n            self.view.scale(x, y)\n        }\n        self.record(UIGraphicsGetCurrentContext())\n        exception.fulfill()\n    }\n\n    private func record(_ arg: CGContext?) {\n        self.context = arg\n    }\n}\n\nclass TransformTests: XCTestCase {\n    let radians = { (angle: CGFloat) -> CGFloat in\n        return .pi * angle / 360\n    }\n\n    override func setUp() {\n        super.setUp()\n    }\n    \n    override func tearDown() {\n        super.tearDown()\n    }\n\n    func testTranslate() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"Move 100pt to the right\",\n                transform: .translate(x: 100.0, y: 0.0),\n                expect: CGAffineTransform(a: 1.0, b: 0.0, c: 0.0, d: 1.0, tx: 100.0, ty: 0.0)\n            ),\n            #line: TestCase(\n                description: \"Move 50pt to the bottom\",\n                transform: .translate(x: 0.0, y: 50.0),\n                expect: CGAffineTransform(a: 1.0, b: 0.0, c: 0.0, d: 1.0, tx: 0.0, ty: -50.0)\n            ),\n            #line: TestCase(\n                description: \"Move 40pt to the left, 20pt to the top\",\n                transform: .translate(x: -40.0, y: -20.0),\n                expect: CGAffineTransform(a: 1.0, b: 0.0, c: 0.0, d: 1.0, tx: -40.0, ty: 20.0)\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func testRotate() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"Rotate by 90 degrees\",\n                transform: .rotate(angle: radians(90)),\n                expect: CGAffineTransform(a: cos(radians(90)), b: -sin(radians(90)), c: sin(radians(90)), d: cos(radians(90)), tx: 0.0, ty: 0.0)\n            ),\n            #line: TestCase(\n                description: \"Rotate by 360 degrees\",\n                transform: .rotate(angle: radians(360)),\n                expect: CGAffineTransform(a: cos(radians(360)), b: -sin(radians(360)), c: sin(radians(360)), d: cos(radians(360)), tx: 0.0, ty: 0.0)\n            ),\n            #line: TestCase(\n                description: \"Rotate by -90 degrees\",\n                transform: .rotate(angle: radians(-90)),\n                expect: CGAffineTransform(a: cos(radians(-90)), b: -sin(radians(-90)), c: sin(radians(-90)), d: cos(radians(-90)), tx: 0.0, ty: 0.0)\n            ),\n        ]\n\n        check(testCases: testCases)\n    }\n\n    func testShear() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"x-shear angle to 30°\",\n                transform: .shear(angleX: radians(30), angleY: radians(0)),\n                expect: CGAffineTransform(a: 1.0, b: tan(radians(-0)), c: tan(radians(-30)), d: 1.0, tx: 0.0, ty: 0.0)\n            ),\n            #line: TestCase(\n                description: \"y-shear angle to 60°\",\n                transform: .shear(angleX: radians(0), angleY: radians(60)),\n                expect: CGAffineTransform(a: 1.0, b: tan(radians(-60)), c: tan(radians(-0)), d: 1.0, tx: 0.0, ty: 0.0)\n            ),\n            #line: TestCase(\n                description: \"x-shear angle to 45° & y-shear angle to 45°\",\n                transform: .shear(angleX: radians(45), angleY: radians(45)),\n                expect: CGAffineTransform(a: 1.0, b: tan(radians(-45)), c: tan(radians(-45)), d: 1.0, tx: 0.0, ty: 0.0)\n            ),\n        ]\n        check(testCases: testCases)\n    }\n\n    func testScale() {\n        let testCases: [UInt: TestCase] = [\n            #line: TestCase(\n                description: \"Scale width by 2.0 times\",\n                transform: .scale(x: 2.0, y: 1.0),\n                expect: CGAffineTransform(a: 2.0, b: 0.0, c: 0.0, d: 1.0, tx: 0.0, ty: 0.0)\n            ),\n            #line: TestCase(\n                description: \"Scale width by 0.5 times, height by 2.0 times\",\n                transform: .scale(x: 0.5, y: 2.0),\n                expect: CGAffineTransform(a: 0.5, b: 0.0, c: 0.0, d: 2.0, tx: 0.0, ty: 0.0)\n            ),\n            #line: TestCase(\n                description: \"Scale width by -2.0 times\",\n                transform: .scale(x: -2.0, y: 1.0),\n                expect: CGAffineTransform(a: -2.0, b: 0.0, c: 0.0, d: 1.0, tx: 0.0, ty: 0.0)\n            ),\n        ]\n        check(testCases: testCases)\n    }\n\n    func check(testCases: [UInt: TestCase]) {\n        _ = testCases.map { (line, testCase) in\n            let view = ProcessingView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))\n\n            let transformDelegateSpy = ProcessingViewDelegateTransformSpy(\n                exception: expectation(description: testCase.description),\n                view: view,\n                transform: testCase.transform\n            )\n\n            view.delegate = transformDelegateSpy\n            waitForExpectations(timeout: 100)\n\n            let actual = transformDelegateSpy.context?.ctm\n            // Multiply scale(1.0, -1.0), translate(0.0, 100.0) and expect together for coordinate system\n            let expected = CGAffineTransform(a: 1.0, b: 0.0, c: -0.0, d: -1.0, tx: 0.0, ty: 0.0).concatenating(testCase.expect.concatenating(CGAffineTransform(a: 1.0, b: 0.0, c: 0.0, d: 1.0, tx: 0.0, ty: 100.0)))\n\n            XCTAssertEqual(actual, expected, String(line))\n        }\n    }\n\n    struct TestCase {\n        let description: String\n        let transform: Transform\n        let expect: CGAffineTransform\n    }\n}\n"
  },
  {
    "path": "README.md",
    "content": "![Header](https://github.com/natmark/ProcessingKit/blob/master/Resources/ProcessingKit-Header.png?raw=true)\n\n<p align=\"center\">\n    <a href=\"https://travis-ci.org/natmark/ProcessingKit\">\n        <img src=\"https://travis-ci.org/natmark/ProcessingKit.svg?branch=master\"\n             alt=\"Build Status\">\n    </a>\n    <a href=\"https://cocoapods.org/pods/ProcessingKit\">\n        <img src=\"https://img.shields.io/cocoapods/v/ProcessingKit.svg?style=flat\"\n             alt=\"Pods Version\">\n    </a>\n    <a href=\"https://github.com/natmark/ProcessingKit/\">\n        <img src=\"https://img.shields.io/cocoapods/p/ProcessingKit.svg?style=flat\"\n             alt=\"Platforms\">\n    </a>\n    <a href=\"https://github.com/apple/swift\">\n        <img alt=\"Swift\" src=\"https://img.shields.io/badge/swift-4.0-orange.svg\">\n    </a>\n    <a href=\"https://github.com/Carthage/Carthage\">\n        <img src=\"https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat\"\n             alt=\"Carthage Compatible\">\n    </a>\n    <a href=\"https://codecov.io/gh/natmark/ProcessingKit\">\n        <img alt=\"codecov\" src=\"https://codecov.io/gh/natmark/ProcessingKit/branch/master/graph/badge.svg\">\n    </a>\n</p>\n\n----------------\n\n# ProcessingKit\nProcessingKit is a Visual designing library for iOS & OSX.\nProcessingKit written in Swift🐧 and you can write like [processing](https://github.com/processing/processing).\n\n## Demo\n![Demo](https://github.com/natmark/ProcessingKit/blob/master/Resources/demo.gif?raw=true)\n\n### Demo Apps\n- [iOS Official Demo](https://github.com/natmark/ProcessingKit/tree/master/ProcessingKitExample)\n- [OSX Official Demo](https://github.com/natmark/ProcessingKit/tree/master/ProcessingKitOSXExample)\n\n\n#### [iPad Demo App (Developed for Open Source Conference)](https://github.com/natmark/OSCProcessingKitDemo)\n\n|Sketch Runner|Code Comparison (between Processing and ProcessingKit)|\n|:------------:|:----------------------------------------------------:|\n|![](https://raw.githubusercontent.com/natmark/OSCProcessingKitDemo/master/Resources/screenshot1.png)|![](https://raw.githubusercontent.com/natmark/OSCProcessingKitDemo/master/Resources/screenshot2.png)|\n\n## Example\n|OS|gif|code|\n|:---:|:------:|:------:|\n|iOS| <img src=\"https://raw.githubusercontent.com/natmark/ProcessingKit/master/Resources/iOS_Example.gif\" alt=\"gif\"  height=\"50%\"> | ![code](https://raw.githubusercontent.com/natmark/ProcessingKit/master/Resources/iOS_ExampleCode.png)|\n|OSX| ![gif](https://raw.githubusercontent.com/natmark/ProcessingKit/master/Resources/OSX_Example.gif) | ![code](https://raw.githubusercontent.com/natmark/ProcessingKit/master/Resources/OSX_ExampleCode.png)|\n\n## Requirements\n- Swift 3.0 or later\n- iOS 10.0 or later\n- OSX 10.11 or later\n\nIf you use Swift 3.x, try [ProcessingKit 0.6.0](https://github.com/natmark/ProcessingKit/releases/tag/0.6.0).\n\n## Usage\n1. Create custom class that inherits from ProcessingView\n\n```Swift\nimport ProcessingKit\n\nclass SampleView: ProcessingView {\n    func setup() {\n        // The setup() function is run once, when the view instantiated.\n    }\n    func draw() {\n        // Called directly after setup(), the draw() function continuously executes the lines of code contained inside its block until the program is stopped or noLoop() is called.\n    }\n}\n```\n\n2. Create a SampleView instance\n### Create programmatically\n```Swift\n    lazy var sampleView: SampleView = {\n        let sampleView = SampleView(frame: frame)\n        sampleView.isUserInteractionEnabled = true // If you want to use touch events (default true)\n        return sampleView\n    }()\n```\n\n### Use InterfaceBuilder\n\n1. Add UIView to ViewController\n2. Select UIView & Open Identity inspector\n3. Set SampleView to Custom class field\n4. Add outlet connection\n\n```Swift\n @IBOutlet weak var sampleView: SampleView!\n\n override func viewDidLoad() {\n     super.viewDidLoad()\n     sampleView.isUserInteractionEnabled = true // If you want to use touch events (default true)\n }\n```\n\n## Installation\n\n### [CocoaPods](http://cocoadocs.org/docsets/ProcessingKit/)\nAdd the following to your `Podfile`:\n```\n  pod \"ProcessingKit\"\n```\n\n- (Example project here: [PKPodsExample](https://github.com/natmark/PKPodsExample))\n\n### [Carthage](https://github.com/Carthage/Carthage)\nAdd the following to your `Cartfile`:\n```\n  github \"natmark/ProcessingKit\"\n```\n\n- (Example project here: [PKExample](https://github.com/natmark/PKExample))\n\n## Xcode File Template\n- `ProcessingKit.xctemplate` is available.\n- Use [Donut](https://github.com/natmark/Donut)(Xcode file template manager) to install.\n\n`$ donut install https://github.com/natmark/ProcessingKit`\n\n## Documentation\n- [ProcessingKit/wiki](https://github.com/natmark/ProcessingKit/wiki)\n\n## License\nProcessingKit is available under the MIT license. See the LICENSE file for more info.\n"
  }
]