{"action":"created","comment":{"url":"https://api.github.com/repos/livepeer/livepeerjs/pulls/comments/208048976","pull_request_review_id":143778756,"id":208048976,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwODA0ODk3Ng==","diff_hunk":"@@ -0,0 +1,494 @@\n+import axios from 'axios'\n+import * as React from 'react'\n+import { Link } from 'react-router-dom'\n+import MerkleMiner from '@livepeer/merkle-miner'\n+import { Button } from '../../components'\n+import { MineProofForm } from './mineProofForm'\n+\n+const BN = require('bn.js')\n+\n+const Abi = require('./Abi.json')\n+\n+/**\n+ * Defines contract addresses for\n+ * MerkleMine, MultiMerkleMine and LPT\n+ * currently contracts are only deployed on\n+ * MainNet and Rinkeby which holds the positions\n+ * 1 and 4. If contracts gets deployed on ropsten = 2\n+ * or Kovan = 3, then those filed could be placed here\n+ */\n+const netAddresses = {\n+  '1': {\n+    merkleMine: '0x8e306b005773bee6ba6a6e8972bc79d766cc15c8',\n+    multiMerkleMine: '0x182ebf4c80b28efc45ad992ecbb9f730e31e8c7f',\n+    token: '0x58b6a8a3302369daec383334672404ee733ab239',\n+  },\n+  '2': {\n+    merkleMine: '',\n+    multiMerkleMine: '',\n+    token: '',\n+  },\n+  '3': {\n+    merkleMine: '',\n+    multiMerkleMine: '',\n+    token: '',\n+  },\n+  '4': {\n+    merkleMine: '0x3bb5c927b9dcf20c1dca97b93397d22fda4f5451',\n+    multiMerkleMine: '0x2ec3202aaeff2d3f7dd8571fe4a0bfc195ef6a17',\n+    token: '0x750809dbdb422e09dabb7429ffaa94e42021ea04',\n+  },\n+}\n+\n+const numAddresses = 20\n+\n+class TokenMiner extends React.Component {\n+  static defaultProps = {\n+    defaultAddress: '',\n+    allowManualEntry: false,\n+  }\n+  state = {\n+    address: this.props.defaultAddress,\n+    addresses: [],\n+    tokensRemaining: 0,\n+    done: false,\n+    progressBar: -1,\n+    ready: false,\n+    error: '',\n+    proof: '',\n+    estimatedCost: 0,\n+    gas: 0,\n+    progress: null,\n+    editGas: false,\n+    balance: '',\n+    contract: '',\n+  }\n+\n+  async componentDidMount() {\n+    await window.web3.version.getNetwork((err, res) => {\n+      if (err === null) {\n+        this.setState({ netAddresses: netAddresses[res] })\n+        return\n+      }\n+      this.setState({\n+        netAddresses: {\n+          merkleMine: process.env.REACT_APP_MERKLE_MINE_CONTRACT,\n+          multiMerkleMine: process.env.REACT_APP_MULTI_MERKLE_MINE_CONTRACT,\n+          token: process.env.REACT_APP_TOKEN_ADDRESS,\n+        },\n+      })\n+    })\n+    try {\n+      window.onbeforeunload = () => true\n+      const { worker } = this.props\n+      const { address } = this.state\n+      this.miner = await new MerkleMiner({\n+        gateway: 'https://gateway.ipfs.io/ipfs',\n+        workerHash: worker,\n+        onResolveHash: this.onResolveHash,\n+        onConstructTree: this.onConstructTree,\n+        onError: this.onError,\n+      })\n+      this.setState({ ready: true })\n+      await this.getAccountBal()\n+      await this.getCurrentGasPrices()\n+      await this.determineEstimetedCost()\n+      await this.getAmountLpt()\n+    } catch (err) {\n+      this.setState({\n+        error: err.message,\n+      })\n+    }\n+    this.state.contract = window.web3.eth\n+      .contract(Abi.MultiMerkleMine)\n+      .at(this.state.netAddresses.multiMerkleMine)\n+    this.getBalance()\n+  }\n+\n+  componentWillUnmount() {\n+    window.onbeforeunload = null\n+  }\n+\n+  componentWillReceiveProps(nextProps) {\n+    const { address } = this.state\n+    if (address && address == nextProps.defaultAddress) {\n+      this.reset()\n+      this.setState({ address: nextProps.defaultAddress }, () =>\n+        this.componentDidMount(),\n+      )\n+    }\n+  }\n+  // This function gets the amount of token that miner addres will be allocated\n+  getAmountLpt = async () => {\n+    window.web3.eth.getBlockNumber(async (err, res) => {\n+      if (err === null) {\n+        const con = window.web3.eth\n+          .contract(Abi.MerkleMine)\n+          .at(this.state.netAddresses.merkleMine)\n+        con.callerTokenAmountAtBlock(res, (err, res) => {\n+          if (err === null) {\n+            this.setState({\n+              amtLpt: (\n+                res.mul(\n+                  new BN(numAddresses || process.env.REACT_APP_NUM_ADDRESS),\n+                ) / Math.pow(10, 18)\n+              ).toString(10),\n+            })\n+            return\n+          }\n+          this.setState({ amtLpt: 0 })\n+        })\n+        return\n+      }\n+      this.setState({ amtLpt: 0 })\n+    })\n+  }\n+  /**\n+   * This is a helper method used for preparing\n+   * the proofs to be passed to multiGenerate smart contract\n+   */\n+  encodeProofSize = proof => {\n+    const proofSize = proof.length / 2\n+\n+    let res = proofSize.toString('16')\n+    let len = res.length\n+\n+    while (len < 64) {\n+      res = '0' + res\n+      len++\n+    }\n+\n+    return res\n+  }\n+  // Used to get ether amount to display\n+  getAccountBal = async () => {\n+    await window.web3.eth.getBalance(","path":"packages/explorer/src/views/Mining/TokenMiner.js","position":165,"original_position":165,"commit_id":"7c5c183e0d6120b7645e86bc0985edd974e8e123","original_commit_id":"7c5c183e0d6120b7645e86bc0985edd974e8e123","user":{"login":"yondonfu","id":5933273,"node_id":"MDQ6VXNlcjU5MzMyNzM=","avatar_url":"https://avatars0.githubusercontent.com/u/5933273?v=4","gravatar_id":"","url":"https://api.github.com/users/yondonfu","html_url":"https://github.com/yondonfu","followers_url":"https://api.github.com/users/yondonfu/followers","following_url":"https://api.github.com/users/yondonfu/following{/other_user}","gists_url":"https://api.github.com/users/yondonfu/gists{/gist_id}","starred_url":"https://api.github.com/users/yondonfu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yondonfu/subscriptions","organizations_url":"https://api.github.com/users/yondonfu/orgs","repos_url":"https://api.github.com/users/yondonfu/repos","events_url":"https://api.github.com/users/yondonfu/events{/privacy}","received_events_url":"https://api.github.com/users/yondonfu/received_events","type":"User","site_admin":false},"body":"I think we can drop the `await` here since `window.web3.eth.getBalance()` does not return a promise and is instead a callback based async call","created_at":"2018-08-06T22:33:33Z","updated_at":"2018-08-06T22:52:08Z","html_url":"https://github.com/livepeer/livepeerjs/pull/159#discussion_r208048976","pull_request_url":"https://api.github.com/repos/livepeer/livepeerjs/pulls/159","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/livepeer/livepeerjs/pulls/comments/208048976"},"html":{"href":"https://github.com/livepeer/livepeerjs/pull/159#discussion_r208048976"},"pull_request":{"href":"https://api.github.com/repos/livepeer/livepeerjs/pulls/159"}}},"pull_request":{"url":"https://api.github.com/repos/livepeer/livepeerjs/pulls/159","id":204671191,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA0NjcxMTkx","html_url":"https://github.com/livepeer/livepeerjs/pull/159","diff_url":"https://github.com/livepeer/livepeerjs/pull/159.diff","patch_url":"https://github.com/livepeer/livepeerjs/pull/159.patch","issue_url":"https://api.github.com/repos/livepeer/livepeerjs/issues/159","number":159,"state":"open","locked":false,"title":"MultiMerkleMine Feature","user":{"login":"Randy1Burrell","id":10135939,"node_id":"MDQ6VXNlcjEwMTM1OTM5","avatar_url":"https://avatars0.githubusercontent.com/u/10135939?v=4","gravatar_id":"","url":"https://api.github.com/users/Randy1Burrell","html_url":"https://github.com/Randy1Burrell","followers_url":"https://api.github.com/users/Randy1Burrell/followers","following_url":"https://api.github.com/users/Randy1Burrell/following{/other_user}","gists_url":"https://api.github.com/users/Randy1Burrell/gists{/gist_id}","starred_url":"https://api.github.com/users/Randy1Burrell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Randy1Burrell/subscriptions","organizations_url":"https://api.github.com/users/Randy1Burrell/orgs","repos_url":"https://api.github.com/users/Randy1Burrell/repos","events_url":"https://api.github.com/users/Randy1Burrell/events{/privacy}","received_events_url":"https://api.github.com/users/Randy1Burrell/received_events","type":"User","site_admin":false},"body":"<!-------------------------------------------------------------------------\r\n | Thanks for send a pull request! 🎉\r\n | First, please make sure you familiar with the contribution guidelines\r\n | https://github.com/livepeer/livepeerjs/blob/master/CONTRIBUTING.md\r\n -------------------------------------------------------------------------->\r\n\r\n**What does this pull request do? Explain your changes. (required)**\r\n<!-- A clear and concise description of what this pull request does. -->\r\nAdded a page in Livepeer's explorer that enables user to do multiple merkle mining with just one click\r\n \r\n**Specific updates (required)**\r\n<!--- List out all significant updates your code introduces -->\r\n\r\n\r\n**How did you test each of these updates (required)**\r\n<!-- A detailed description of how you tested your code changes. Include details of your testing environment, and the tests you ran to see how your change affects other areas of the code, etc. -->\r\n\r\n**Does this pull request close any open issues?**\r\n<!-- Fixes # -->\r\n\r\n**Screenshots (optional):**\r\n<!-- Drag some screenshots here, if applicable -->\r\n\r\n**Checklist:**\r\n<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->\r\n<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\r\n- [x] I have read the **CONTRIBUTING** document.\r\n- [ ] My change requires a change to the documentation.\r\n- [ ] I have updated the documentation accordingly.\r\n- [x] I have added tests to cover my changes.\r\n","created_at":"2018-07-30T00:46:21Z","updated_at":"2018-08-06T22:52:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d965888166126cd5218981950f6901500ce8eef9","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/livepeer/livepeerjs/pulls/159/commits","review_comments_url":"https://api.github.com/repos/livepeer/livepeerjs/pulls/159/comments","review_comment_url":"https://api.github.com/repos/livepeer/livepeerjs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/livepeer/livepeerjs/issues/159/comments","statuses_url":"https://api.github.com/repos/livepeer/livepeerjs/statuses/7c5c183e0d6120b7645e86bc0985edd974e8e123","head":{"label":"Randy1Burrell:dev","ref":"dev","sha":"7c5c183e0d6120b7645e86bc0985edd974e8e123","user":{"login":"Randy1Burrell","id":10135939,"node_id":"MDQ6VXNlcjEwMTM1OTM5","avatar_url":"https://avatars0.githubusercontent.com/u/10135939?v=4","gravatar_id":"","url":"https://api.github.com/users/Randy1Burrell","html_url":"https://github.com/Randy1Burrell","followers_url":"https://api.github.com/users/Randy1Burrell/followers","following_url":"https://api.github.com/users/Randy1Burrell/following{/other_user}","gists_url":"https://api.github.com/users/Randy1Burrell/gists{/gist_id}","starred_url":"https://api.github.com/users/Randy1Burrell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Randy1Burrell/subscriptions","organizations_url":"https://api.github.com/users/Randy1Burrell/orgs","repos_url":"https://api.github.com/users/Randy1Burrell/repos","events_url":"https://api.github.com/users/Randy1Burrell/events{/privacy}","received_events_url":"https://api.github.com/users/Randy1Burrell/received_events","type":"User","site_admin":false},"repo":{"id":140629814,"node_id":"MDEwOlJlcG9zaXRvcnkxNDA2Mjk4MTQ=","name":"livepeerjs","full_name":"Randy1Burrell/livepeerjs","owner":{"login":"Randy1Burrell","id":10135939,"node_id":"MDQ6VXNlcjEwMTM1OTM5","avatar_url":"https://avatars0.githubusercontent.com/u/10135939?v=4","gravatar_id":"","url":"https://api.github.com/users/Randy1Burrell","html_url":"https://github.com/Randy1Burrell","followers_url":"https://api.github.com/users/Randy1Burrell/followers","following_url":"https://api.github.com/users/Randy1Burrell/following{/other_user}","gists_url":"https://api.github.com/users/Randy1Burrell/gists{/gist_id}","starred_url":"https://api.github.com/users/Randy1Burrell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Randy1Burrell/subscriptions","organizations_url":"https://api.github.com/users/Randy1Burrell/orgs","repos_url":"https://api.github.com/users/Randy1Burrell/repos","events_url":"https://api.github.com/users/Randy1Burrell/events{/privacy}","received_events_url":"https://api.github.com/users/Randy1Burrell/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Randy1Burrell/livepeerjs","description":"JavaScript tools and applications that interact with Livepeer's smart contracts and peer-to-peer network","fork":true,"url":"https://api.github.com/repos/Randy1Burrell/livepeerjs","forks_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/forks","keys_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/teams","hooks_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/hooks","issue_events_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/issues/events{/number}","events_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/events","assignees_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/assignees{/user}","branches_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/branches{/branch}","tags_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/tags","blobs_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/git/refs{/sha}","trees_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/statuses/{sha}","languages_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/languages","stargazers_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/stargazers","contributors_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/contributors","subscribers_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/subscribers","subscription_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/subscription","commits_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/commits{/sha}","git_commits_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/git/commits{/sha}","comments_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/comments{/number}","issue_comment_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/issues/comments{/number}","contents_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/contents/{+path}","compare_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/merges","archive_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/downloads","issues_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/issues{/number}","pulls_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/pulls{/number}","milestones_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/milestones{/number}","notifications_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/labels{/name}","releases_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/releases{/id}","deployments_url":"https://api.github.com/repos/Randy1Burrell/livepeerjs/deployments","created_at":"2018-07-11T21:35:25Z","updated_at":"2018-07-30T00:26:08Z","pushed_at":"2018-08-04T02:50:25Z","git_url":"git://github.com/Randy1Burrell/livepeerjs.git","ssh_url":"git@github.com:Randy1Burrell/livepeerjs.git","clone_url":"https://github.com/Randy1Burrell/livepeerjs.git","svn_url":"https://github.com/Randy1Burrell/livepeerjs","homepage":"https://livepeer.github.io/livepeerjs/","size":63546,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"livepeer:master","ref":"master","sha":"bbbe20df28fa5fa9c62117c14b3f6b293e5fbedf","user":{"login":"livepeer","id":25355022,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1MzU1MDIy","avatar_url":"https://avatars2.githubusercontent.com/u/25355022?v=4","gravatar_id":"","url":"https://api.github.com/users/livepeer","html_url":"https://github.com/livepeer","followers_url":"https://api.github.com/users/livepeer/followers","following_url":"https://api.github.com/users/livepeer/following{/other_user}","gists_url":"https://api.github.com/users/livepeer/gists{/gist_id}","starred_url":"https://api.github.com/users/livepeer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/livepeer/subscriptions","organizations_url":"https://api.github.com/users/livepeer/orgs","repos_url":"https://api.github.com/users/livepeer/repos","events_url":"https://api.github.com/users/livepeer/events{/privacy}","received_events_url":"https://api.github.com/users/livepeer/received_events","type":"Organization","site_admin":false},"repo":{"id":111160192,"node_id":"MDEwOlJlcG9zaXRvcnkxMTExNjAxOTI=","name":"livepeerjs","full_name":"livepeer/livepeerjs","owner":{"login":"livepeer","id":25355022,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1MzU1MDIy","avatar_url":"https://avatars2.githubusercontent.com/u/25355022?v=4","gravatar_id":"","url":"https://api.github.com/users/livepeer","html_url":"https://github.com/livepeer","followers_url":"https://api.github.com/users/livepeer/followers","following_url":"https://api.github.com/users/livepeer/following{/other_user}","gists_url":"https://api.github.com/users/livepeer/gists{/gist_id}","starred_url":"https://api.github.com/users/livepeer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/livepeer/subscriptions","organizations_url":"https://api.github.com/users/livepeer/orgs","repos_url":"https://api.github.com/users/livepeer/repos","events_url":"https://api.github.com/users/livepeer/events{/privacy}","received_events_url":"https://api.github.com/users/livepeer/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/livepeer/livepeerjs","description":"JavaScript tools and applications that interact with Livepeer's smart contracts and peer-to-peer network","fork":false,"url":"https://api.github.com/repos/livepeer/livepeerjs","forks_url":"https://api.github.com/repos/livepeer/livepeerjs/forks","keys_url":"https://api.github.com/repos/livepeer/livepeerjs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/livepeer/livepeerjs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/livepeer/livepeerjs/teams","hooks_url":"https://api.github.com/repos/livepeer/livepeerjs/hooks","issue_events_url":"https://api.github.com/repos/livepeer/livepeerjs/issues/events{/number}","events_url":"https://api.github.com/repos/livepeer/livepeerjs/events","assignees_url":"https://api.github.com/repos/livepeer/livepeerjs/assignees{/user}","branches_url":"https://api.github.com/repos/livepeer/livepeerjs/branches{/branch}","tags_url":"https://api.github.com/repos/livepeer/livepeerjs/tags","blobs_url":"https://api.github.com/repos/livepeer/livepeerjs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/livepeer/livepeerjs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/livepeer/livepeerjs/git/refs{/sha}","trees_url":"https://api.github.com/repos/livepeer/livepeerjs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/livepeer/livepeerjs/statuses/{sha}","languages_url":"https://api.github.com/repos/livepeer/livepeerjs/languages","stargazers_url":"https://api.github.com/repos/livepeer/livepeerjs/stargazers","contributors_url":"https://api.github.com/repos/livepeer/livepeerjs/contributors","subscribers_url":"https://api.github.com/repos/livepeer/livepeerjs/subscribers","subscription_url":"https://api.github.com/repos/livepeer/livepeerjs/subscription","commits_url":"https://api.github.com/repos/livepeer/livepeerjs/commits{/sha}","git_commits_url":"https://api.github.com/repos/livepeer/livepeerjs/git/commits{/sha}","comments_url":"https://api.github.com/repos/livepeer/livepeerjs/comments{/number}","issue_comment_url":"https://api.github.com/repos/livepeer/livepeerjs/issues/comments{/number}","contents_url":"https://api.github.com/repos/livepeer/livepeerjs/contents/{+path}","compare_url":"https://api.github.com/repos/livepeer/livepeerjs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/livepeer/livepeerjs/merges","archive_url":"https://api.github.com/repos/livepeer/livepeerjs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/livepeer/livepeerjs/downloads","issues_url":"https://api.github.com/repos/livepeer/livepeerjs/issues{/number}","pulls_url":"https://api.github.com/repos/livepeer/livepeerjs/pulls{/number}","milestones_url":"https://api.github.com/repos/livepeer/livepeerjs/milestones{/number}","notifications_url":"https://api.github.com/repos/livepeer/livepeerjs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/livepeer/livepeerjs/labels{/name}","releases_url":"https://api.github.com/repos/livepeer/livepeerjs/releases{/id}","deployments_url":"https://api.github.com/repos/livepeer/livepeerjs/deployments","created_at":"2017-11-17T23:25:43Z","updated_at":"2018-08-06T15:39:44Z","pushed_at":"2018-08-06T15:45:13Z","git_url":"git://github.com/livepeer/livepeerjs.git","ssh_url":"git@github.com:livepeer/livepeerjs.git","clone_url":"https://github.com/livepeer/livepeerjs.git","svn_url":"https://github.com/livepeer/livepeerjs","homepage":"https://livepeer.github.io/livepeerjs/","size":37004,"stargazers_count":34,"watchers_count":34,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":20,"mirror_url":null,"archived":false,"open_issues_count":39,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":20,"open_issues":39,"watchers":34,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/livepeer/livepeerjs/pulls/159"},"html":{"href":"https://github.com/livepeer/livepeerjs/pull/159"},"issue":{"href":"https://api.github.com/repos/livepeer/livepeerjs/issues/159"},"comments":{"href":"https://api.github.com/repos/livepeer/livepeerjs/issues/159/comments"},"review_comments":{"href":"https://api.github.com/repos/livepeer/livepeerjs/pulls/159/comments"},"review_comment":{"href":"https://api.github.com/repos/livepeer/livepeerjs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/livepeer/livepeerjs/pulls/159/commits"},"statuses":{"href":"https://api.github.com/repos/livepeer/livepeerjs/statuses/7c5c183e0d6120b7645e86bc0985edd974e8e123"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"yondonfu"}}