{"action":"created","comment":{"url":"https://api.github.com/repos/overture-stack/arranger/pulls/comments/176529010","pull_request_review_id":106237165,"id":176529010,"diff_hunk":"@@ -0,0 +1,295 @@\n+import React from 'react';\n+import Moment from 'moment';\n+import { DayPickerRangeController } from 'react-dates';\n+import 'react-dates/initialize';\n+import 'react-dates/lib/css/_datepicker.css';\n+import { maxBy, minBy, sumBy } from 'lodash';\n+import { css } from 'emotion';\n+import Component from 'react-component-component';\n+import {\n+  inCurrentSQON,\n+  replaceSQON,\n+  toggleSQON,\n+  removeSQON,\n+} from '../SQONView/utils';\n+import './AggregationCard.css';\n+import AggsWrapper from './AggsWrapper';\n+import './DatesAgg.css';\n+\n+const START_DATE_INPUT = 'startDate';\n+const END_DATE_INPUT = 'endDate';\n+const BUCKET_DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss.SSSSSS';\n+const INPUT_DATE_FORMAT = 'YY/MM/DD';\n+\n+const bucketDateToMoment = dateString => Moment(dateString, BUCKET_DATE_FORMAT);\n+const momentToBucketDate = moment => moment?.format(BUCKET_DATE_FORMAT);\n+const inputDateToMoment = dateString => Moment(dateString, INPUT_DATE_FORMAT);\n+const momentToInputDate = moment => moment?.format(INPUT_DATE_FORMAT);\n+\n+const DATE_PICKER_POSITIONS = {\n+  BOTTOM_LEFT: css`\n+    position: absolute;\n+    left: 0%;\n+    top: 100%;\n+  `,\n+  BOTTOM_RIGHT: css`\n+    position: absolute;\n+    right: 0%;\n+    top: 100%;\n+  `,\n+  TOP_LEFT: css`\n+    position: absolute;\n+    left: 0%;\n+    bottom: 100%;\n+  `,\n+  TOP_RIGHT: css`\n+    position: absolute;\n+    right: 0%;\n+    bottom: 100%;\n+  `,\n+};\n+\n+const Arrow = ({ style }) => (\n+  <svg\n+    style={style}\n+    className=\"DayPickerNavigation_svg__horizontal DayPickerNavigation_svg__horizontal_1\"\n+    viewBox=\"0 0 1000 1000\"\n+  >\n+    <path d=\"M694.4 242.4l249.1 249.1c11 11 11 21 0 32L694.4 772.7c-5 5-10 7-16 7s-11-2-16-7c-11-11-11-21 0-32l210.1-210.1H67.1c-13 0-23-10-23-23s10-23 23-23h805.4L662.4 274.5c-21-21.1 11-53.1 32-32.1z\" />\n+  </svg>\n+);\n+\n+class DatesAgg extends React.Component {\n+  // needs ref...\n+\n+  render() {\n+    const {\n+      field = '',\n+      displayName = 'Unnamed Field',\n+      buckets = [],\n+      collapsible = true,\n+      handleDateChange = ({ generateNextSQON }) => null,\n+      startDateFromSqon = () => null,\n+      endDateFromSqon = () => null,\n+      datePickerPosition = 'BOTTOM_LEFT',\n+    } = this.props;\n+\n+    const onDatesSet = ({ startDate, endDate }) => {\n+      if (startDate && endDate) {\n+        handleDateChange({\n+          generateNextSQON: sqon =>\n+            replaceSQON(\n+              {\n+                op: 'and',\n+                content: [\n+                  {\n+                    op: '>=',\n+                    content: {\n+                      field,\n+                      value: momentToBucketDate(startDate.startOf('day')),\n+                    },\n+                  },\n+                  {\n+                    op: '<=',\n+                    content: {\n+                      field,\n+                      value: momentToBucketDate(endDate.endOf('day')),\n+                    },\n+                  },\n+                ],\n+              },\n+              sqon,\n+            ),\n+        });\n+      }\n+    };\n+\n+    const getDateFromSqon = dateToGet => sqon =>\n+      sqon?.content\n+        ?.filter(({ content: { field: sqonField } }) => {\n+          return sqonField === field;\n+        })\n+        ?.find(\n+          ({ op }) => op === (dateToGet === START_DATE_INPUT ? '>=' : '<='),\n+        )?.content.value;\n+\n+    const getInitialRange = () => {\n+      const bucketWithMoment = buckets.map(({ key_as_string, ...rest }) => ({\n+        ...rest,\n+        key_as_string,\n+        moment: bucketDateToMoment(key_as_string),\n+      }));\n+      const minBucket = minBy(bucketWithMoment, ({ moment }) =>\n+        moment.valueOf(),\n+      );\n+      const maxBucket = maxBy(bucketWithMoment, ({ moment }) =>\n+        moment.valueOf(),\n+      );\n+\n+      const startFromSqon = startDateFromSqon({\n+        getDateFromSqon: getDateFromSqon(START_DATE_INPUT),\n+      });\n+      const endFromSqon = endDateFromSqon({\n+        getDateFromSqon: getDateFromSqon(END_DATE_INPUT),\n+      });\n+      return {\n+        startDate:\n+          (startFromSqon && bucketDateToMoment(startFromSqon)) ||\n+          minBucket?.moment,\n+        endDate:\n+          (startFromSqon && bucketDateToMoment(endFromSqon)) ||\n+          maxBucket?.moment,\n+      };\n+    };\n+\n+    const initialRange = getInitialRange();\n+\n+    return (\n+      <AggsWrapper {...{ displayName, collapsible }}>\n+        <Component","path":"modules/components/src/Aggs/DatesAgg.js","position":149,"original_position":149,"commit_id":"1ee521aebdbe6f0f13a4d7457352d280781d5a21","original_commit_id":"1ee521aebdbe6f0f13a4d7457352d280781d5a21","user":{"login":"Jephuff","id":3953093,"avatar_url":"https://avatars0.githubusercontent.com/u/3953093?v=4","gravatar_id":"","url":"https://api.github.com/users/Jephuff","html_url":"https://github.com/Jephuff","followers_url":"https://api.github.com/users/Jephuff/followers","following_url":"https://api.github.com/users/Jephuff/following{/other_user}","gists_url":"https://api.github.com/users/Jephuff/gists{/gist_id}","starred_url":"https://api.github.com/users/Jephuff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Jephuff/subscriptions","organizations_url":"https://api.github.com/users/Jephuff/orgs","repos_url":"https://api.github.com/users/Jephuff/repos","events_url":"https://api.github.com/users/Jephuff/events{/privacy}","received_events_url":"https://api.github.com/users/Jephuff/received_events","type":"User","site_admin":false},"body":"Can you refactor some of this logic to be outside the render? it's getting a bit busy.\r\nThis state can be moved to the class, and the functions using it can be moved to class methods :) ","created_at":"2018-03-22T18:33:13Z","updated_at":"2018-03-22T18:33:20Z","html_url":"https://github.com/overture-stack/arranger/pull/292#discussion_r176529010","pull_request_url":"https://api.github.com/repos/overture-stack/arranger/pulls/292","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/overture-stack/arranger/pulls/comments/176529010"},"html":{"href":"https://github.com/overture-stack/arranger/pull/292#discussion_r176529010"},"pull_request":{"href":"https://api.github.com/repos/overture-stack/arranger/pulls/292"}}},"pull_request":{"url":"https://api.github.com/repos/overture-stack/arranger/pulls/292","id":176026630,"html_url":"https://github.com/overture-stack/arranger/pull/292","diff_url":"https://github.com/overture-stack/arranger/pull/292.diff","patch_url":"https://github.com/overture-stack/arranger/pull/292.patch","issue_url":"https://api.github.com/repos/overture-stack/arranger/issues/292","number":292,"state":"open","locked":false,"title":"Date agg component","user":{"login":"hlminh2000","id":11821106,"avatar_url":"https://avatars3.githubusercontent.com/u/11821106?v=4","gravatar_id":"","url":"https://api.github.com/users/hlminh2000","html_url":"https://github.com/hlminh2000","followers_url":"https://api.github.com/users/hlminh2000/followers","following_url":"https://api.github.com/users/hlminh2000/following{/other_user}","gists_url":"https://api.github.com/users/hlminh2000/gists{/gist_id}","starred_url":"https://api.github.com/users/hlminh2000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hlminh2000/subscriptions","organizations_url":"https://api.github.com/users/hlminh2000/orgs","repos_url":"https://api.github.com/users/hlminh2000/repos","events_url":"https://api.github.com/users/hlminh2000/events{/privacy}","received_events_url":"https://api.github.com/users/hlminh2000/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-03-19T21:11:00Z","updated_at":"2018-03-22T18:33:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8c321fd6e9c9d6c7b4f7813fdcebe8551a19932e","assignee":{"login":"hlminh2000","id":11821106,"avatar_url":"https://avatars3.githubusercontent.com/u/11821106?v=4","gravatar_id":"","url":"https://api.github.com/users/hlminh2000","html_url":"https://github.com/hlminh2000","followers_url":"https://api.github.com/users/hlminh2000/followers","following_url":"https://api.github.com/users/hlminh2000/following{/other_user}","gists_url":"https://api.github.com/users/hlminh2000/gists{/gist_id}","starred_url":"https://api.github.com/users/hlminh2000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hlminh2000/subscriptions","organizations_url":"https://api.github.com/users/hlminh2000/orgs","repos_url":"https://api.github.com/users/hlminh2000/repos","events_url":"https://api.github.com/users/hlminh2000/events{/privacy}","received_events_url":"https://api.github.com/users/hlminh2000/received_events","type":"User","site_admin":false},"assignees":[{"login":"hlminh2000","id":11821106,"avatar_url":"https://avatars3.githubusercontent.com/u/11821106?v=4","gravatar_id":"","url":"https://api.github.com/users/hlminh2000","html_url":"https://github.com/hlminh2000","followers_url":"https://api.github.com/users/hlminh2000/followers","following_url":"https://api.github.com/users/hlminh2000/following{/other_user}","gists_url":"https://api.github.com/users/hlminh2000/gists{/gist_id}","starred_url":"https://api.github.com/users/hlminh2000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hlminh2000/subscriptions","organizations_url":"https://api.github.com/users/hlminh2000/orgs","repos_url":"https://api.github.com/users/hlminh2000/repos","events_url":"https://api.github.com/users/hlminh2000/events{/privacy}","received_events_url":"https://api.github.com/users/hlminh2000/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":828025894,"url":"https://api.github.com/repos/overture-stack/arranger/labels/COMPONENTS","name":"COMPONENTS","color":"8aea83","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/overture-stack/arranger/pulls/292/commits","review_comments_url":"https://api.github.com/repos/overture-stack/arranger/pulls/292/comments","review_comment_url":"https://api.github.com/repos/overture-stack/arranger/pulls/comments{/number}","comments_url":"https://api.github.com/repos/overture-stack/arranger/issues/292/comments","statuses_url":"https://api.github.com/repos/overture-stack/arranger/statuses/1ee521aebdbe6f0f13a4d7457352d280781d5a21","head":{"label":"overture-stack:feat/date_agg","ref":"feat/date_agg","sha":"1ee521aebdbe6f0f13a4d7457352d280781d5a21","user":{"login":"overture-stack","id":32498250,"avatar_url":"https://avatars3.githubusercontent.com/u/32498250?v=4","gravatar_id":"","url":"https://api.github.com/users/overture-stack","html_url":"https://github.com/overture-stack","followers_url":"https://api.github.com/users/overture-stack/followers","following_url":"https://api.github.com/users/overture-stack/following{/other_user}","gists_url":"https://api.github.com/users/overture-stack/gists{/gist_id}","starred_url":"https://api.github.com/users/overture-stack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/overture-stack/subscriptions","organizations_url":"https://api.github.com/users/overture-stack/orgs","repos_url":"https://api.github.com/users/overture-stack/repos","events_url":"https://api.github.com/users/overture-stack/events{/privacy}","received_events_url":"https://api.github.com/users/overture-stack/received_events","type":"Organization","site_admin":false},"repo":{"id":114295302,"name":"arranger","full_name":"overture-stack/arranger","owner":{"login":"overture-stack","id":32498250,"avatar_url":"https://avatars3.githubusercontent.com/u/32498250?v=4","gravatar_id":"","url":"https://api.github.com/users/overture-stack","html_url":"https://github.com/overture-stack","followers_url":"https://api.github.com/users/overture-stack/followers","following_url":"https://api.github.com/users/overture-stack/following{/other_user}","gists_url":"https://api.github.com/users/overture-stack/gists{/gist_id}","starred_url":"https://api.github.com/users/overture-stack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/overture-stack/subscriptions","organizations_url":"https://api.github.com/users/overture-stack/orgs","repos_url":"https://api.github.com/users/overture-stack/repos","events_url":"https://api.github.com/users/overture-stack/events{/privacy}","received_events_url":"https://api.github.com/users/overture-stack/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/overture-stack/arranger","description":"🚧 Data Portal Generation","fork":false,"url":"https://api.github.com/repos/overture-stack/arranger","forks_url":"https://api.github.com/repos/overture-stack/arranger/forks","keys_url":"https://api.github.com/repos/overture-stack/arranger/keys{/key_id}","collaborators_url":"https://api.github.com/repos/overture-stack/arranger/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/overture-stack/arranger/teams","hooks_url":"https://api.github.com/repos/overture-stack/arranger/hooks","issue_events_url":"https://api.github.com/repos/overture-stack/arranger/issues/events{/number}","events_url":"https://api.github.com/repos/overture-stack/arranger/events","assignees_url":"https://api.github.com/repos/overture-stack/arranger/assignees{/user}","branches_url":"https://api.github.com/repos/overture-stack/arranger/branches{/branch}","tags_url":"https://api.github.com/repos/overture-stack/arranger/tags","blobs_url":"https://api.github.com/repos/overture-stack/arranger/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/overture-stack/arranger/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/overture-stack/arranger/git/refs{/sha}","trees_url":"https://api.github.com/repos/overture-stack/arranger/git/trees{/sha}","statuses_url":"https://api.github.com/repos/overture-stack/arranger/statuses/{sha}","languages_url":"https://api.github.com/repos/overture-stack/arranger/languages","stargazers_url":"https://api.github.com/repos/overture-stack/arranger/stargazers","contributors_url":"https://api.github.com/repos/overture-stack/arranger/contributors","subscribers_url":"https://api.github.com/repos/overture-stack/arranger/subscribers","subscription_url":"https://api.github.com/repos/overture-stack/arranger/subscription","commits_url":"https://api.github.com/repos/overture-stack/arranger/commits{/sha}","git_commits_url":"https://api.github.com/repos/overture-stack/arranger/git/commits{/sha}","comments_url":"https://api.github.com/repos/overture-stack/arranger/comments{/number}","issue_comment_url":"https://api.github.com/repos/overture-stack/arranger/issues/comments{/number}","contents_url":"https://api.github.com/repos/overture-stack/arranger/contents/{+path}","compare_url":"https://api.github.com/repos/overture-stack/arranger/compare/{base}...{head}","merges_url":"https://api.github.com/repos/overture-stack/arranger/merges","archive_url":"https://api.github.com/repos/overture-stack/arranger/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/overture-stack/arranger/downloads","issues_url":"https://api.github.com/repos/overture-stack/arranger/issues{/number}","pulls_url":"https://api.github.com/repos/overture-stack/arranger/pulls{/number}","milestones_url":"https://api.github.com/repos/overture-stack/arranger/milestones{/number}","notifications_url":"https://api.github.com/repos/overture-stack/arranger/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/overture-stack/arranger/labels{/name}","releases_url":"https://api.github.com/repos/overture-stack/arranger/releases{/id}","deployments_url":"https://api.github.com/repos/overture-stack/arranger/deployments","created_at":"2017-12-14T20:54:13Z","updated_at":"2018-03-22T14:38:14Z","pushed_at":"2018-03-22T17:56:02Z","git_url":"git://github.com/overture-stack/arranger.git","ssh_url":"git@github.com:overture-stack/arranger.git","clone_url":"https://github.com/overture-stack/arranger.git","svn_url":"https://github.com/overture-stack/arranger","homepage":null,"size":2132,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":69,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0"},"forks":0,"open_issues":69,"watchers":4,"default_branch":"master"}},"base":{"label":"overture-stack:master","ref":"master","sha":"e30e16d9dd307f95397fa23cfe5f78d1ae93ecfa","user":{"login":"overture-stack","id":32498250,"avatar_url":"https://avatars3.githubusercontent.com/u/32498250?v=4","gravatar_id":"","url":"https://api.github.com/users/overture-stack","html_url":"https://github.com/overture-stack","followers_url":"https://api.github.com/users/overture-stack/followers","following_url":"https://api.github.com/users/overture-stack/following{/other_user}","gists_url":"https://api.github.com/users/overture-stack/gists{/gist_id}","starred_url":"https://api.github.com/users/overture-stack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/overture-stack/subscriptions","organizations_url":"https://api.github.com/users/overture-stack/orgs","repos_url":"https://api.github.com/users/overture-stack/repos","events_url":"https://api.github.com/users/overture-stack/events{/privacy}","received_events_url":"https://api.github.com/users/overture-stack/received_events","type":"Organization","site_admin":false},"repo":{"id":114295302,"name":"arranger","full_name":"overture-stack/arranger","owner":{"login":"overture-stack","id":32498250,"avatar_url":"https://avatars3.githubusercontent.com/u/32498250?v=4","gravatar_id":"","url":"https://api.github.com/users/overture-stack","html_url":"https://github.com/overture-stack","followers_url":"https://api.github.com/users/overture-stack/followers","following_url":"https://api.github.com/users/overture-stack/following{/other_user}","gists_url":"https://api.github.com/users/overture-stack/gists{/gist_id}","starred_url":"https://api.github.com/users/overture-stack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/overture-stack/subscriptions","organizations_url":"https://api.github.com/users/overture-stack/orgs","repos_url":"https://api.github.com/users/overture-stack/repos","events_url":"https://api.github.com/users/overture-stack/events{/privacy}","received_events_url":"https://api.github.com/users/overture-stack/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/overture-stack/arranger","description":"🚧 Data Portal Generation","fork":false,"url":"https://api.github.com/repos/overture-stack/arranger","forks_url":"https://api.github.com/repos/overture-stack/arranger/forks","keys_url":"https://api.github.com/repos/overture-stack/arranger/keys{/key_id}","collaborators_url":"https://api.github.com/repos/overture-stack/arranger/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/overture-stack/arranger/teams","hooks_url":"https://api.github.com/repos/overture-stack/arranger/hooks","issue_events_url":"https://api.github.com/repos/overture-stack/arranger/issues/events{/number}","events_url":"https://api.github.com/repos/overture-stack/arranger/events","assignees_url":"https://api.github.com/repos/overture-stack/arranger/assignees{/user}","branches_url":"https://api.github.com/repos/overture-stack/arranger/branches{/branch}","tags_url":"https://api.github.com/repos/overture-stack/arranger/tags","blobs_url":"https://api.github.com/repos/overture-stack/arranger/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/overture-stack/arranger/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/overture-stack/arranger/git/refs{/sha}","trees_url":"https://api.github.com/repos/overture-stack/arranger/git/trees{/sha}","statuses_url":"https://api.github.com/repos/overture-stack/arranger/statuses/{sha}","languages_url":"https://api.github.com/repos/overture-stack/arranger/languages","stargazers_url":"https://api.github.com/repos/overture-stack/arranger/stargazers","contributors_url":"https://api.github.com/repos/overture-stack/arranger/contributors","subscribers_url":"https://api.github.com/repos/overture-stack/arranger/subscribers","subscription_url":"https://api.github.com/repos/overture-stack/arranger/subscription","commits_url":"https://api.github.com/repos/overture-stack/arranger/commits{/sha}","git_commits_url":"https://api.github.com/repos/overture-stack/arranger/git/commits{/sha}","comments_url":"https://api.github.com/repos/overture-stack/arranger/comments{/number}","issue_comment_url":"https://api.github.com/repos/overture-stack/arranger/issues/comments{/number}","contents_url":"https://api.github.com/repos/overture-stack/arranger/contents/{+path}","compare_url":"https://api.github.com/repos/overture-stack/arranger/compare/{base}...{head}","merges_url":"https://api.github.com/repos/overture-stack/arranger/merges","archive_url":"https://api.github.com/repos/overture-stack/arranger/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/overture-stack/arranger/downloads","issues_url":"https://api.github.com/repos/overture-stack/arranger/issues{/number}","pulls_url":"https://api.github.com/repos/overture-stack/arranger/pulls{/number}","milestones_url":"https://api.github.com/repos/overture-stack/arranger/milestones{/number}","notifications_url":"https://api.github.com/repos/overture-stack/arranger/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/overture-stack/arranger/labels{/name}","releases_url":"https://api.github.com/repos/overture-stack/arranger/releases{/id}","deployments_url":"https://api.github.com/repos/overture-stack/arranger/deployments","created_at":"2017-12-14T20:54:13Z","updated_at":"2018-03-22T14:38:14Z","pushed_at":"2018-03-22T17:56:02Z","git_url":"git://github.com/overture-stack/arranger.git","ssh_url":"git@github.com:overture-stack/arranger.git","clone_url":"https://github.com/overture-stack/arranger.git","svn_url":"https://github.com/overture-stack/arranger","homepage":null,"size":2132,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":69,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0"},"forks":0,"open_issues":69,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/overture-stack/arranger/pulls/292"},"html":{"href":"https://github.com/overture-stack/arranger/pull/292"},"issue":{"href":"https://api.github.com/repos/overture-stack/arranger/issues/292"},"comments":{"href":"https://api.github.com/repos/overture-stack/arranger/issues/292/comments"},"review_comments":{"href":"https://api.github.com/repos/overture-stack/arranger/pulls/292/comments"},"review_comment":{"href":"https://api.github.com/repos/overture-stack/arranger/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/overture-stack/arranger/pulls/292/commits"},"statuses":{"href":"https://api.github.com/repos/overture-stack/arranger/statuses/1ee521aebdbe6f0f13a4d7457352d280781d5a21"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"Jephuff"}}