{"action":"created","comment":{"url":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/comments/46036251","id":46036251,"diff_hunk":"@@ -0,0 +1,308 @@\n+/*\n+ * This file is part of Adblock Plus <https://adblockplus.org/>,\n+ * Copyright (C) 2006-2015 Eyeo GmbH\n+ *\n+ * Adblock Plus is free software: you can redistribute it and/or modify\n+ * it under the terms of the GNU General Public License version 3 as\n+ * published by the Free Software Foundation.\n+ *\n+ * Adblock Plus is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ * GNU General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU General Public License\n+ * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/&gt.\n+ */\n+\n+#import \"AdblockPlus+Parsing.h\"\n+\n+// yajl is sax-like json parser. Content blocker extension has limited amount of memory,\n+// so that it is not possible to load whole filter list at once.\n+#include <yajl/yajl_parse.h>\n+#include <yajl/yajl_gen.h>\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+\n+typedef struct\n+{\n+  NSUInteger array_level;\n+  yajl_gen g;\n+\n+} adblock_plus_context;\n+\n+static int reformat_null(void *ctx)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  return yajl_gen_status_ok == yajl_gen_null(context->g);\n+}\n+\n+static int reformat_boolean(void *ctx, int boolean)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  return yajl_gen_status_ok == yajl_gen_bool(context->g, boolean);\n+}\n+\n+static int reformat_number(void *ctx, const char *s, size_t l)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  return yajl_gen_status_ok == yajl_gen_number(context->g, s, l);\n+}\n+\n+static int reformat_string(void *ctx, const unsigned char * stringVal, size_t stringLen)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  return yajl_gen_status_ok == yajl_gen_string(context->g, stringVal, stringLen);\n+}\n+\n+static int reformat_map_key(void *ctx, const unsigned char * stringVal, size_t stringLen)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  return yajl_gen_status_ok == yajl_gen_string(context->g, stringVal, stringLen);\n+}\n+\n+static int reformat_start_map(void *ctx)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  return yajl_gen_status_ok == yajl_gen_map_open(context->g);\n+}\n+\n+static int reformat_end_map(void *ctx)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  return yajl_gen_status_ok == yajl_gen_map_close(context->g);\n+}\n+\n+static int reformat_start_array(void *ctx)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  context->array_level += 1;\n+  return yajl_gen_status_ok == yajl_gen_array_open(context->g);\n+}\n+\n+static int reformat_end_array(void *ctx)\n+{\n+  adblock_plus_context *context = (adblock_plus_context *)ctx;\n+  context->array_level -= 1;\n+  if (context->array_level == 0) {\n+    return YES;\n+  } else {\n+    return yajl_gen_status_ok == yajl_gen_array_close(context->g);\n+  }\n+}\n+\n+static yajl_callbacks callbacks = {\n+  reformat_null,\n+  reformat_boolean,\n+  NULL,\n+  NULL,\n+  reformat_number,\n+  reformat_string,\n+  reformat_start_map,\n+  reformat_map_key,\n+  reformat_end_map,\n+  reformat_start_array,\n+  reformat_end_array\n+};\n+\n+static BOOL writeDictionary(NSDictionary<NSString *, id> *__nonnull dictionary, yajl_gen g);\n+\n+static BOOL writeString(NSString *__nonnull string, yajl_gen g)\n+{\n+  const char *str = [string cStringUsingEncoding:NSUTF8StringEncoding];\n+  return yajl_gen_status_ok == yajl_gen_string(g, str, strlen(str));\n+}\n+\n+static BOOL writeArray(NSArray<id> *array, yajl_gen g)\n+{\n+  if (yajl_gen_status_ok != yajl_gen_array_open(g)) {\n+    return NO;\n+  }\n+\n+  for (id value in array) {\n+\n+    BOOL result;\n+    if ([value isKindOfClass:[NSDictionary class]]) {\n+      result = writeDictionary(value, g);\n+    } else if ([value isKindOfClass:[NSString class]]) {\n+      result = writeString(value, g);\n+    } else if ([value isKindOfClass:[NSArray class]]) {\n+      result = writeArray(value, g);\n+    } else {\n+      result = yajl_gen_status_ok == yajl_gen_null(g);\n+    }\n+\n+    if (!result) {\n+      return NO;\n+    }\n+  }\n+\n+  return yajl_gen_status_ok == yajl_gen_array_close(g);\n+}\n+\n+static BOOL writeDictionary(NSDictionary<NSString *, id> *__nonnull dictionary, yajl_gen g)\n+{\n+  if (yajl_gen_status_ok != yajl_gen_map_open(g)) {\n+    return NO;\n+  }\n+\n+  for (NSString *key in dictionary) {\n+    id value = dictionary[key];\n+\n+    if (!writeString(key, g)) {\n+      return NO;\n+    }\n+\n+    BOOL result;\n+    if ([value isKindOfClass:[NSDictionary class]]) {\n+      result = writeDictionary(value, g);\n+    } else if ([value isKindOfClass:[NSString class]]) {\n+      result = writeString(value, g);\n+    } else if ([value isKindOfClass:[NSArray class]]) {\n+      result = writeArray(value, g);\n+    } else {\n+      result = yajl_gen_status_ok == yajl_gen_null(g);\n+    }\n+\n+    if (!result) {\n+      return NO;\n+    }\n+  }\n+\n+  return yajl_gen_status_ok == yajl_gen_map_close(g);\n+}\n+\n+\n+\n+@implementation AdblockPlus (Parsing)\n+\n++ (NSString *)escapeHostname:(NSString *)hostname\n+{\n+  NSRegularExpression *regexp =\n+  [NSRegularExpression regularExpressionWithPattern:@\"[\\\\\\\\|(){^$*+?.<>\\\\[\\\\]]\" options:0 error:nil];\n+\n+  NSMutableString *h = [hostname mutableCopy];\n+  [regexp replaceMatchesInString:h\n+                         options:0\n+                           range:NSMakeRange(0, h.length)\n+                    withTemplate:@\"\\\\\\\\$0\"];\n+  return h;\n+}\n+\n++ (BOOL)mergeFilterListsFromURL:(NSURL *__nonnull)input\n+        withWhitelistedWebsites:(NSArray<NSString *> *__nonnull)whitelistedWebsites\n+                          toURL:(NSURL *__nonnull)output\n+                          error:(NSError *__nullable *__nonnull)error\n+{\n+\n+  NSInputStream *inputStream = [NSInputStream inputStreamWithURL:input];\n+  NSOutputStream *outputStream = [NSOutputStream outputStreamWithURL:output append:NO];\n+  yajl_gen g = NULL;\n+  yajl_handle hand = NULL;\n+  adblock_plus_context context = { 0, NULL };\n+\n+  @try {\n+    [inputStream open];\n+    [outputStream open];\n+    g = yajl_gen_alloc(NULL);\n+    yajl_gen_config(g, yajl_gen_beautify, 0);\n+    yajl_gen_config(g, yajl_gen_validate_utf8, 0);\n+    hand = yajl_alloc(&callbacks, NULL, (void *)&context);\n+    yajl_config(hand, yajl_allow_comments, 0);\n+    yajl_config(hand, yajl_dont_validate_strings, 1);\n+    context.g = g;\n+\n+    // Write buffer to output stream\n+    BOOL(^writeBuffer)(yajl_gen g) = ^BOOL(yajl_gen g) {\n+      NSUInteger outputBufferLength;\n+      const uint8_t *outputBuffer;\n+      yajl_gen_get_buf(g, &outputBuffer, &outputBufferLength);\n+      if (outputBufferLength > 0) {\n+        NSInteger written = [outputStream write:outputBuffer maxLength:outputBufferLength];\n+        if (written == -1) {\n+          *error = outputStream.streamError;\n+          return NO;\n+        }\n+      }\n+      yajl_gen_clear(g);\n+      return true;\n+    };\n+\n+    // Get parser error\n+    NSError *(^getParseError)(yajl_handle hand) = ^NSError *(yajl_handle hand) {\n+      NSUInteger errorBufferLength = 256;\n+      uint8_t errorBuffer[errorBufferLength];\n+      unsigned char *error_string = yajl_get_error(hand, 1, errorBuffer, errorBufferLength);\n+      NSString *errorString = [[NSString alloc] initWithCString:error_string encoding:NSASCIIStringEncoding];\n+      return [NSError errorWithDomain:AdblockPlusErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];\n+    };\n+\n+    // Read json file\n+    const NSUInteger inputBufferLength = 256;\n+    uint8_t inputBuffer[inputBufferLength];\n+    NSInteger read;\n+\n+    while ((read = [inputStream read:inputBuffer maxLength:inputBufferLength]) != 0) {\n+","path":"AdblockPlusSafariExtension/AdblockPlus+Parsing.m","position":248,"original_position":248,"commit_id":"5ddaf38f0c5e8fead1f851e91ae79e8c43e754fa","original_commit_id":"5ddaf38f0c5e8fead1f851e91ae79e8c43e754fa","user":{"login":"fhd","id":383120,"avatar_url":"https://avatars.githubusercontent.com/u/383120?v=3","gravatar_id":"","url":"https://api.github.com/users/fhd","html_url":"https://github.com/fhd","followers_url":"https://api.github.com/users/fhd/followers","following_url":"https://api.github.com/users/fhd/following{/other_user}","gists_url":"https://api.github.com/users/fhd/gists{/gist_id}","starred_url":"https://api.github.com/users/fhd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fhd/subscriptions","organizations_url":"https://api.github.com/users/fhd/orgs","repos_url":"https://api.github.com/users/fhd/repos","events_url":"https://api.github.com/users/fhd/events{/privacy}","received_events_url":"https://api.github.com/users/fhd/received_events","type":"User","site_admin":false},"body":"Nit: Superfluous white space?","created_at":"2015-11-27T10:52:43Z","updated_at":"2015-11-27T10:52:43Z","html_url":"https://github.com/adblockplus/adblockplussafariios/pull/11#discussion_r46036251","pull_request_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/11","_links":{"self":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/comments/46036251"},"html":{"href":"https://github.com/adblockplus/adblockplussafariios/pull/11#discussion_r46036251"},"pull_request":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/11"}}},"pull_request":{"url":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/11","id":50405202,"html_url":"https://github.com/adblockplus/adblockplussafariios/pull/11","diff_url":"https://github.com/adblockplus/adblockplussafariios/pull/11.diff","patch_url":"https://github.com/adblockplus/adblockplussafariios/pull/11.patch","issue_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/issues/11","number":11,"state":"open","locked":false,"title":"Issue 3165 - The configureable whitelist","user":{"login":"dedecej","id":5538395,"avatar_url":"https://avatars.githubusercontent.com/u/5538395?v=3","gravatar_id":"","url":"https://api.github.com/users/dedecej","html_url":"https://github.com/dedecej","followers_url":"https://api.github.com/users/dedecej/followers","following_url":"https://api.github.com/users/dedecej/following{/other_user}","gists_url":"https://api.github.com/users/dedecej/gists{/gist_id}","starred_url":"https://api.github.com/users/dedecej/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dedecej/subscriptions","organizations_url":"https://api.github.com/users/dedecej/orgs","repos_url":"https://api.github.com/users/dedecej/repos","events_url":"https://api.github.com/users/dedecej/events{/privacy}","received_events_url":"https://api.github.com/users/dedecej/received_events","type":"User","site_admin":false},"body":"Related to [issue 3165](https://issues.adblockplus.org/ticket/3165).","created_at":"2015-11-11T16:41:03Z","updated_at":"2015-11-27T10:52:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8042f971e3482781d0f81842c0503239d0320448","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/11/commits","review_comments_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/11/comments","review_comment_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/comments{/number}","comments_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/issues/11/comments","statuses_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/statuses/5ddaf38f0c5e8fead1f851e91ae79e8c43e754fa","head":{"label":"kitt-browser:issue-3165","ref":"issue-3165","sha":"5ddaf38f0c5e8fead1f851e91ae79e8c43e754fa","user":{"login":"kitt-browser","id":7115560,"avatar_url":"https://avatars.githubusercontent.com/u/7115560?v=3","gravatar_id":"","url":"https://api.github.com/users/kitt-browser","html_url":"https://github.com/kitt-browser","followers_url":"https://api.github.com/users/kitt-browser/followers","following_url":"https://api.github.com/users/kitt-browser/following{/other_user}","gists_url":"https://api.github.com/users/kitt-browser/gists{/gist_id}","starred_url":"https://api.github.com/users/kitt-browser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kitt-browser/subscriptions","organizations_url":"https://api.github.com/users/kitt-browser/orgs","repos_url":"https://api.github.com/users/kitt-browser/repos","events_url":"https://api.github.com/users/kitt-browser/events{/privacy}","received_events_url":"https://api.github.com/users/kitt-browser/received_events","type":"Organization","site_admin":false},"repo":{"id":41856207,"name":"adblockplussafariios","full_name":"kitt-browser/adblockplussafariios","owner":{"login":"kitt-browser","id":7115560,"avatar_url":"https://avatars.githubusercontent.com/u/7115560?v=3","gravatar_id":"","url":"https://api.github.com/users/kitt-browser","html_url":"https://github.com/kitt-browser","followers_url":"https://api.github.com/users/kitt-browser/followers","following_url":"https://api.github.com/users/kitt-browser/following{/other_user}","gists_url":"https://api.github.com/users/kitt-browser/gists{/gist_id}","starred_url":"https://api.github.com/users/kitt-browser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kitt-browser/subscriptions","organizations_url":"https://api.github.com/users/kitt-browser/orgs","repos_url":"https://api.github.com/users/kitt-browser/repos","events_url":"https://api.github.com/users/kitt-browser/events{/privacy}","received_events_url":"https://api.github.com/users/kitt-browser/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kitt-browser/adblockplussafariios","description":"Adblock Plus Safari iOS source code","fork":true,"url":"https://api.github.com/repos/kitt-browser/adblockplussafariios","forks_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/forks","keys_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/teams","hooks_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/hooks","issue_events_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/issues/events{/number}","events_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/events","assignees_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/assignees{/user}","branches_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/branches{/branch}","tags_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/tags","blobs_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/git/refs{/sha}","trees_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/statuses/{sha}","languages_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/languages","stargazers_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/stargazers","contributors_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/contributors","subscribers_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/subscribers","subscription_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/subscription","commits_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/commits{/sha}","git_commits_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/git/commits{/sha}","comments_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/comments{/number}","issue_comment_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/issues/comments{/number}","contents_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/contents/{+path}","compare_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/merges","archive_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/downloads","issues_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/issues{/number}","pulls_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/pulls{/number}","milestones_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/milestones{/number}","notifications_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/labels{/name}","releases_url":"https://api.github.com/repos/kitt-browser/adblockplussafariios/releases{/id}","created_at":"2015-09-03T11:25:50Z","updated_at":"2015-09-17T13:16:07Z","pushed_at":"2015-11-24T09:29:27Z","git_url":"git://github.com/kitt-browser/adblockplussafariios.git","ssh_url":"git@github.com:kitt-browser/adblockplussafariios.git","clone_url":"https://github.com/kitt-browser/adblockplussafariios.git","svn_url":"https://github.com/kitt-browser/adblockplussafariios","homepage":null,"size":17391,"stargazers_count":0,"watchers_count":0,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":4,"forks":0,"open_issues":4,"watchers":0,"default_branch":"master"}},"base":{"label":"adblockplus:master","ref":"master","sha":"bb7c6c97c11948c585de521154fe510c6f3e9503","user":{"login":"adblockplus","id":610601,"avatar_url":"https://avatars.githubusercontent.com/u/610601?v=3","gravatar_id":"","url":"https://api.github.com/users/adblockplus","html_url":"https://github.com/adblockplus","followers_url":"https://api.github.com/users/adblockplus/followers","following_url":"https://api.github.com/users/adblockplus/following{/other_user}","gists_url":"https://api.github.com/users/adblockplus/gists{/gist_id}","starred_url":"https://api.github.com/users/adblockplus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adblockplus/subscriptions","organizations_url":"https://api.github.com/users/adblockplus/orgs","repos_url":"https://api.github.com/users/adblockplus/repos","events_url":"https://api.github.com/users/adblockplus/events{/privacy}","received_events_url":"https://api.github.com/users/adblockplus/received_events","type":"Organization","site_admin":false},"repo":{"id":41252967,"name":"adblockplussafariios","full_name":"adblockplus/adblockplussafariios","owner":{"login":"adblockplus","id":610601,"avatar_url":"https://avatars.githubusercontent.com/u/610601?v=3","gravatar_id":"","url":"https://api.github.com/users/adblockplus","html_url":"https://github.com/adblockplus","followers_url":"https://api.github.com/users/adblockplus/followers","following_url":"https://api.github.com/users/adblockplus/following{/other_user}","gists_url":"https://api.github.com/users/adblockplus/gists{/gist_id}","starred_url":"https://api.github.com/users/adblockplus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adblockplus/subscriptions","organizations_url":"https://api.github.com/users/adblockplus/orgs","repos_url":"https://api.github.com/users/adblockplus/repos","events_url":"https://api.github.com/users/adblockplus/events{/privacy}","received_events_url":"https://api.github.com/users/adblockplus/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/adblockplus/adblockplussafariios","description":"Adblock Plus Safari iOS source code","fork":false,"url":"https://api.github.com/repos/adblockplus/adblockplussafariios","forks_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/forks","keys_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/teams","hooks_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/hooks","issue_events_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/issues/events{/number}","events_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/events","assignees_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/assignees{/user}","branches_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/branches{/branch}","tags_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/tags","blobs_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/git/refs{/sha}","trees_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/statuses/{sha}","languages_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/languages","stargazers_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/stargazers","contributors_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/contributors","subscribers_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/subscribers","subscription_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/subscription","commits_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/commits{/sha}","git_commits_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/git/commits{/sha}","comments_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/comments{/number}","issue_comment_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/issues/comments{/number}","contents_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/contents/{+path}","compare_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/merges","archive_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/downloads","issues_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/issues{/number}","pulls_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls{/number}","milestones_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/milestones{/number}","notifications_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/labels{/name}","releases_url":"https://api.github.com/repos/adblockplus/adblockplussafariios/releases{/id}","created_at":"2015-08-23T14:31:21Z","updated_at":"2015-11-13T14:06:29Z","pushed_at":"2015-11-24T09:29:28Z","git_url":"git://github.com/adblockplus/adblockplussafariios.git","ssh_url":"git@github.com:adblockplus/adblockplussafariios.git","clone_url":"https://github.com/adblockplus/adblockplussafariios.git","svn_url":"https://github.com/adblockplus/adblockplussafariios","homepage":null,"size":17576,"stargazers_count":34,"watchers_count":34,"language":"Objective-C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":1,"forks":7,"open_issues":1,"watchers":34,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/11"},"html":{"href":"https://github.com/adblockplus/adblockplussafariios/pull/11"},"issue":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/issues/11"},"comments":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/issues/11/comments"},"review_comments":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/11/comments"},"review_comment":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/pulls/11/commits"},"statuses":{"href":"https://api.github.com/repos/adblockplus/adblockplussafariios/statuses/5ddaf38f0c5e8fead1f851e91ae79e8c43e754fa"}}}}