{"action":"created","comment":{"url":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/comments/49953421","id":49953421,"diff_hunk":"@@ -0,0 +1,955 @@\n+// This source file is part of the Swift.org open source project\n+//\n+// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors\n+// Licensed under Apache License v2.0 with Runtime Library Exception\n+//\n+// See http://swift.org/LICENSE.txt for license information\n+// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors\n+//\n+\n+import CoreFoundation\n+\n+public class NSKeyedUnarchiver : NSCoder {\n+    struct UnarchiverFlags : OptionSetType {\n+        let rawValue : UInt\n+        \n+        init(rawValue : UInt) {\n+            self.rawValue = rawValue\n+        }\n+        \n+        static let None = UnarchiverFlags(rawValue: 0)\n+        static let FinishedDecoding = UnarchiverFlags(rawValue : 1)\n+        static let RequiresSecureCoding = UnarchiverFlags(rawValue: 2)\n+    }\n+    \n+    class DecodingContext {\n+        private var dict : Dictionary<String, Any>\n+        private var genericKey : UInt = 0\n+        \n+        init(_ dict : Dictionary<String, Any>) {\n+            self.dict = dict\n+        }\n+    }\n+    \n+    private static var _classNameMap : Dictionary<String, AnyClass> = [:]\n+    private static var _classNameMapLock = NSLock()\n+    \n+    public weak var delegate: NSKeyedUnarchiverDelegate?\n+    \n+    private var _stream : AnyObject\n+    private var _flags = UnarchiverFlags(rawValue: 0)\n+    private var _containers : Array<DecodingContext>? = nil\n+    private var _objects : Array<Any> = []\n+    private var _objRefMap : Dictionary<UInt32, AnyObject> = [:]\n+    private var _replacementMap : Dictionary<NSUniqueObject, AnyObject> = [:]\n+    private var _classNameMap : Dictionary<String, AnyClass> = [:]\n+    private var _classes : Dictionary<UInt32, AnyClass> = [:]\n+    private var _cache : Array<CFKeyedArchiverUID> = []\n+    private var _allowedClasses : Array<[AnyClass]> = []\n+    private var _error : NSError? = nil\n+    \n+    internal override var error: NSError? {\n+        return _error\n+    }\n+    \n+    public class func unarchiveObjectWithData(data: NSData) -> AnyObject? {\n+        do {\n+            return try unarchiveTopLevelObjectWithData(data)\n+        } catch {\n+        }\n+        return nil\n+    }\n+    \n+    public class func unarchiveObjectWithFile(path: String) -> AnyObject? {\n+        let url = NSURL(fileURLWithPath: path)\n+        let readStream = CFReadStreamCreateWithFile(kCFAllocatorSystemDefault, url._cfObject)\n+        var root : AnyObject? = nil\n+        \n+        if !CFReadStreamOpen(readStream) {\n+            return nil\n+        }\n+        \n+        let keyedUnarchiver = NSKeyedUnarchiver(stream: readStream)\n+        do {\n+            try root = keyedUnarchiver.decodeTopLevelObjectForKey(NSKeyedArchiveRootObjectKey)\n+            keyedUnarchiver.finishDecoding()\n+        } catch {\n+        }\n+        \n+        CFReadStreamClose(readStream)\n+        \n+        return root\n+    }\n+    \n+    public convenience init(forReadingWithData data: NSData) {\n+        self.init(stream: data)\n+    }\n+    \n+    private init(stream: AnyObject) {\n+        self._stream = stream\n+        super.init()\n+        \n+        do {\n+            try _readPropertyList()\n+        } catch let error as NSError {\n+            failWithError(error)\n+        } catch {\n+        }\n+    }\n+  \n+    private func _readPropertyList() throws {\n+        var plist : Any? = nil\n+        var format = NSPropertyListFormat.BinaryFormat_v1_0\n+        \n+        // FIXME this implementation reads the entire property list into memory\n+        // which will not scale for large archives. We should support incremental\n+        // unarchiving, but that will be a considerable amount of work.\n+        \n+        if let data = self._stream as? NSData {\n+            try plist = NSPropertyListSerialization.propertyListWithData(data, options: NSPropertyListMutabilityOptions.Immutable, format: &format)\n+        } else {\n+            try plist = NSPropertyListSerialization.propertyListWithStream(unsafeBitCast(self._stream, CFReadStream.self),\n+                                                                           length: 0,\n+                                                                           options: NSPropertyListMutabilityOptions.Immutable,\n+                                                                           format: &format)\n+        }\n+        \n+        guard let unwrappedPlist = plist as? Dictionary<String, Any> else {\n+            throw _decodingError(NSCocoaError.PropertyListReadCorruptError,\n+                                 withDescription: \"Unable to read archive. The data may be corrupt.\")\n+        }\n+        \n+        let archiver = unwrappedPlist[\"$archiver\"] as? String\n+        if archiver != NSStringFromClass(NSKeyedArchiver.self) {\n+            throw _decodingError(NSCocoaError.PropertyListReadCorruptError,\n+                                 withDescription: \"Unknown archiver. The data may be corrupt.\")\n+        }\n+        \n+        let version = unwrappedPlist[\"$version\"] as? NSNumber\n+        if version?.intValue != Int32(NSKeyedArchivePlistVersion) {\n+            throw _decodingError(NSCocoaError.PropertyListReadCorruptError,\n+                                 withDescription: \"Unknown archive version. The data may be corrupt.\")\n+        }\n+        \n+        let top = unwrappedPlist[\"$top\"] as? Dictionary<String, Any>\n+        let objects = unwrappedPlist[\"$objects\"] as? Array<Any>\n+        \n+        if top == nil || objects == nil {\n+            throw _decodingError(NSCocoaError.PropertyListReadCorruptError,\n+                                 withDescription: \"Unable to read archive contents. The data may be corrupt.\")\n+        }\n+        \n+        self._objects = objects!\n+        self._containers = [DecodingContext(top!)]\n+    }\n+    \n+    private func _pushDecodingContext(decodingContext: DecodingContext) {\n+        self._containers!.append(decodingContext)\n+    }\n+    \n+    private func _popDecodingContext() {\n+        self._containers!.removeLast()\n+    }\n+    \n+    private var _currentDecodingContext : DecodingContext {\n+        return self._containers!.last!\n+    }\n+    \n+    private func _nextGenericKey() -> String {\n+        let key = \"$\" + String(_currentDecodingContext.genericKey)\n+        _currentDecodingContext.genericKey += 1\n+        return key\n+    }\n+    \n+    private func _objectInCurrentDecodingContext<T>(forKey key: String?) -> T? {\n+        var unwrappedKey = key\n+        \n+        if key != nil {\n+            unwrappedKey = escapeArchiverKey(key!)\n+        } else {\n+            unwrappedKey = _nextGenericKey()\n+        }\n+\n+        return _currentDecodingContext.dict[unwrappedKey!] as? T\n+    }\n+    \n+    /**\n+        Dereferences, but does not decode, an object reference\n+     */\n+    private func _dereferenceObjectReference(unwrappedObjectRef: CFKeyedArchiverUID) -> Any? {\n+        let uid = Int(objectRefGetValue(unwrappedObjectRef))\n+        \n+        guard uid < self._objects.count else {\n+            return nil\n+        }\n+\n+        return self._objects[uid]\n+    }\n+    \n+    public override var systemVersion: UInt32 {\n+        return NSKeyedArchiverSystemVersion\n+    }\n+    \n+    public override var allowsKeyedCoding: Bool {\n+        get {\n+            return true\n+        }\n+    }\n+    \n+    private func _validateStillDecoding() -> Bool {\n+        if self._flags.contains(UnarchiverFlags.FinishedDecoding) {\n+            fatalError(\"Decoder already finished\")\n+        }\n+        \n+        return true\n+    }\n+    \n+    private static func _supportsSecureCoding(clsv : AnyClass) -> Bool {\n+        if let secureCodable = clsv as? NSSecureCoding.Type {\n+            return secureCodable.supportsSecureCoding()\n+        }\n+        \n+        return false\n+    }\n+    \n+    // FIXME is there a better way to do this with Swift stdlib?\n+    private static func _classIsKindOfClass(assertedClass : AnyClass, _ allowedClass : AnyClass) -> Bool {\n+        var superClass : AnyClass? = assertedClass\n+        \n+        repeat {\n+            if superClass == allowedClass {\n+                return true\n+            }\n+            \n+            superClass = _getSuperclass(superClass!)\n+        } while superClass != nil\n+        \n+        return false\n+    }\n+    \n+    private func _isClassAllowed(assertedClass: AnyClass?, allowedClasses: [AnyClass]?) -> Bool {\n+        if assertedClass == nil {\n+            return false\n+        }\n+        \n+        if _flags.contains(UnarchiverFlags.RequiresSecureCoding) {\n+            if let unwrappedAllowedClasses = allowedClasses {\n+                if unwrappedAllowedClasses.contains({NSKeyedUnarchiver._classIsKindOfClass(assertedClass!, $0)}) {\n+                    return true\n+                }\n+            }\n+            \n+            fatalError(\"Value was of unexpected class \\(assertedClass!)\")\n+        } else {\n+            return true\n+        }\n+    }\n+   \n+    /**\n+        Validate a dictionary with class type information, mapping to a class if allowed\n+     */ \n+    private func _validateAndMapClassDictionary(classDict: Dictionary<String, Any>?,\n+                                                allowedClasses: [AnyClass]?,\n+                                                inout classToConstruct: AnyClass?) -> Bool {\n+        classToConstruct = nil\n+        \n+        func _classForClassName(codedName: String) -> AnyClass? {\n+            var aClass : AnyClass?\n+            \n+            aClass = classForClassName(codedName)\n+            if aClass == nil {\n+                aClass = NSKeyedUnarchiver.classForClassName(codedName)\n+            }\n+            if aClass == nil {\n+                aClass = NSClassFromString(codedName)\n+            }\n+            \n+            return aClass\n+        }\n+        \n+        guard let unwrappedClassDict = classDict else {\n+            return false\n+        }\n+        \n+        // TODO is it required to validate the superclass hierarchy?\n+        let assertedClassName = unwrappedClassDict[\"$classname\"] as? String\n+        let assertedClassHints = unwrappedClassDict[\"$classhints\"] as? [String]\n+        let assertedClasses = unwrappedClassDict[\"$classes\"] as? [String]\n+        \n+        if assertedClassName != nil {\n+            let assertedClass : AnyClass? = _classForClassName(assertedClassName!)\n+            if _isClassAllowed(assertedClass, allowedClasses: allowedClasses) {\n+                classToConstruct = assertedClass\n+                return true\n+            }\n+        }\n+        \n+        if assertedClassHints != nil {\n+            for assertedClassHint in assertedClassHints! {\n+                // FIXME check whether class hints should be subject to mapping or not","path":"Foundation/NSKeyedUnarchiver.swift","position":289,"original_position":289,"commit_id":"5d22662509d9903c2a242d577935f9ae5916162d","original_commit_id":"5d22662509d9903c2a242d577935f9ae5916162d","user":{"login":"lhoward","id":541239,"avatar_url":"https://avatars.githubusercontent.com/u/541239?v=3","gravatar_id":"","url":"https://api.github.com/users/lhoward","html_url":"https://github.com/lhoward","followers_url":"https://api.github.com/users/lhoward/followers","following_url":"https://api.github.com/users/lhoward/following{/other_user}","gists_url":"https://api.github.com/users/lhoward/gists{/gist_id}","starred_url":"https://api.github.com/users/lhoward/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lhoward/subscriptions","organizations_url":"https://api.github.com/users/lhoward/orgs","repos_url":"https://api.github.com/users/lhoward/repos","events_url":"https://api.github.com/users/lhoward/events{/privacy}","received_events_url":"https://api.github.com/users/lhoward/received_events","type":"User","site_admin":false},"body":"Please check against Foundation if you can @phausler ","created_at":"2016-01-17T22:11:53Z","updated_at":"2016-01-17T22:11:53Z","html_url":"https://github.com/apple/swift-corelibs-foundation/pull/184#discussion_r49953421","pull_request_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/184","_links":{"self":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/comments/49953421"},"html":{"href":"https://github.com/apple/swift-corelibs-foundation/pull/184#discussion_r49953421"},"pull_request":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/184"}}},"pull_request":{"url":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/184","id":54727087,"html_url":"https://github.com/apple/swift-corelibs-foundation/pull/184","diff_url":"https://github.com/apple/swift-corelibs-foundation/pull/184.diff","patch_url":"https://github.com/apple/swift-corelibs-foundation/pull/184.patch","issue_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/issues/184","number":184,"state":"open","locked":false,"title":"Implementation of NSKeyedArchiver/NSKeyedUnarchiver","user":{"login":"lhoward","id":541239,"avatar_url":"https://avatars.githubusercontent.com/u/541239?v=3","gravatar_id":"","url":"https://api.github.com/users/lhoward","html_url":"https://github.com/lhoward","followers_url":"https://api.github.com/users/lhoward/followers","following_url":"https://api.github.com/users/lhoward/following{/other_user}","gists_url":"https://api.github.com/users/lhoward/gists{/gist_id}","starred_url":"https://api.github.com/users/lhoward/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lhoward/subscriptions","organizations_url":"https://api.github.com/users/lhoward/orgs","repos_url":"https://api.github.com/users/lhoward/repos","events_url":"https://api.github.com/users/lhoward/events{/privacy}","received_events_url":"https://api.github.com/users/lhoward/received_events","type":"User","site_admin":false},"body":"Implementation of NSKeyedArchiver/NSKeyedUnarchiver.","created_at":"2015-12-29T13:38:20Z","updated_at":"2016-01-17T22:11:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c9b529ce59948561e8a0d6597c416adbd4cbba4a","assignee":{"login":"phausler","id":278470,"avatar_url":"https://avatars.githubusercontent.com/u/278470?v=3","gravatar_id":"","url":"https://api.github.com/users/phausler","html_url":"https://github.com/phausler","followers_url":"https://api.github.com/users/phausler/followers","following_url":"https://api.github.com/users/phausler/following{/other_user}","gists_url":"https://api.github.com/users/phausler/gists{/gist_id}","starred_url":"https://api.github.com/users/phausler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phausler/subscriptions","organizations_url":"https://api.github.com/users/phausler/orgs","repos_url":"https://api.github.com/users/phausler/repos","events_url":"https://api.github.com/users/phausler/events{/privacy}","received_events_url":"https://api.github.com/users/phausler/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/184/commits","review_comments_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/184/comments","review_comment_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/issues/184/comments","statuses_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/statuses/5d22662509d9903c2a242d577935f9ae5916162d","head":{"label":"lhoward:lhoward/nscoding","ref":"lhoward/nscoding","sha":"5d22662509d9903c2a242d577935f9ae5916162d","user":{"login":"lhoward","id":541239,"avatar_url":"https://avatars.githubusercontent.com/u/541239?v=3","gravatar_id":"","url":"https://api.github.com/users/lhoward","html_url":"https://github.com/lhoward","followers_url":"https://api.github.com/users/lhoward/followers","following_url":"https://api.github.com/users/lhoward/following{/other_user}","gists_url":"https://api.github.com/users/lhoward/gists{/gist_id}","starred_url":"https://api.github.com/users/lhoward/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lhoward/subscriptions","organizations_url":"https://api.github.com/users/lhoward/orgs","repos_url":"https://api.github.com/users/lhoward/repos","events_url":"https://api.github.com/users/lhoward/events{/privacy}","received_events_url":"https://api.github.com/users/lhoward/received_events","type":"User","site_admin":false},"repo":{"id":48471230,"name":"swift-corelibs-foundation","full_name":"lhoward/swift-corelibs-foundation","owner":{"login":"lhoward","id":541239,"avatar_url":"https://avatars.githubusercontent.com/u/541239?v=3","gravatar_id":"","url":"https://api.github.com/users/lhoward","html_url":"https://github.com/lhoward","followers_url":"https://api.github.com/users/lhoward/followers","following_url":"https://api.github.com/users/lhoward/following{/other_user}","gists_url":"https://api.github.com/users/lhoward/gists{/gist_id}","starred_url":"https://api.github.com/users/lhoward/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lhoward/subscriptions","organizations_url":"https://api.github.com/users/lhoward/orgs","repos_url":"https://api.github.com/users/lhoward/repos","events_url":"https://api.github.com/users/lhoward/events{/privacy}","received_events_url":"https://api.github.com/users/lhoward/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lhoward/swift-corelibs-foundation","description":"The Foundation Project, providing core utilities, internationalization, and OS independence","fork":true,"url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation","forks_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/forks","keys_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/teams","hooks_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/hooks","issue_events_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/issues/events{/number}","events_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/events","assignees_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/assignees{/user}","branches_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/branches{/branch}","tags_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/tags","blobs_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/git/refs{/sha}","trees_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/statuses/{sha}","languages_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/languages","stargazers_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/stargazers","contributors_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/contributors","subscribers_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/subscribers","subscription_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/subscription","commits_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/commits{/sha}","git_commits_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/git/commits{/sha}","comments_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/comments{/number}","issue_comment_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/issues/comments{/number}","contents_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/contents/{+path}","compare_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/merges","archive_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/downloads","issues_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/issues{/number}","pulls_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/pulls{/number}","milestones_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/milestones{/number}","notifications_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/labels{/name}","releases_url":"https://api.github.com/repos/lhoward/swift-corelibs-foundation/releases{/id}","created_at":"2015-12-23T05:39:02Z","updated_at":"2015-12-23T05:39:06Z","pushed_at":"2016-01-17T22:08:27Z","git_url":"git://github.com/lhoward/swift-corelibs-foundation.git","ssh_url":"git@github.com:lhoward/swift-corelibs-foundation.git","clone_url":"https://github.com/lhoward/swift-corelibs-foundation.git","svn_url":"https://github.com/lhoward/swift-corelibs-foundation","homepage":"swift.org","size":3571,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apple:master","ref":"master","sha":"323cabb157b669d7de91b652de9ec225fb90e23c","user":{"login":"apple","id":10639145,"avatar_url":"https://avatars.githubusercontent.com/u/10639145?v=3","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"repo":{"id":45863890,"name":"swift-corelibs-foundation","full_name":"apple/swift-corelibs-foundation","owner":{"login":"apple","id":10639145,"avatar_url":"https://avatars.githubusercontent.com/u/10639145?v=3","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apple/swift-corelibs-foundation","description":"The Foundation Project, providing core utilities, internationalization, and OS independence","fork":false,"url":"https://api.github.com/repos/apple/swift-corelibs-foundation","forks_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/forks","keys_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/teams","hooks_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/hooks","issue_events_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/issues/events{/number}","events_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/events","assignees_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/assignees{/user}","branches_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/branches{/branch}","tags_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/tags","blobs_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/git/refs{/sha}","trees_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/statuses/{sha}","languages_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/languages","stargazers_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/stargazers","contributors_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/contributors","subscribers_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/subscribers","subscription_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/subscription","commits_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/commits{/sha}","git_commits_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/git/commits{/sha}","comments_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/comments{/number}","issue_comment_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/issues/comments{/number}","contents_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/contents/{+path}","compare_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/merges","archive_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/downloads","issues_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/issues{/number}","pulls_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls{/number}","milestones_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/milestones{/number}","notifications_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/labels{/name}","releases_url":"https://api.github.com/repos/apple/swift-corelibs-foundation/releases{/id}","created_at":"2015-11-09T20:12:23Z","updated_at":"2016-01-17T21:34:11Z","pushed_at":"2016-01-17T22:08:28Z","git_url":"git://github.com/apple/swift-corelibs-foundation.git","ssh_url":"git@github.com:apple/swift-corelibs-foundation.git","clone_url":"https://github.com/apple/swift-corelibs-foundation.git","svn_url":"https://github.com/apple/swift-corelibs-foundation","homepage":"swift.org","size":4149,"stargazers_count":1574,"watchers_count":1574,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":285,"mirror_url":null,"open_issues_count":16,"forks":285,"open_issues":16,"watchers":1574,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/184"},"html":{"href":"https://github.com/apple/swift-corelibs-foundation/pull/184"},"issue":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/issues/184"},"comments":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/issues/184/comments"},"review_comments":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/184/comments"},"review_comment":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/184/commits"},"statuses":{"href":"https://api.github.com/repos/apple/swift-corelibs-foundation/statuses/5d22662509d9903c2a242d577935f9ae5916162d"}}}}